OSDN Git Service

2009-11-20 Paul Brook <paul@codesourcery.com>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-11-20  Paul Brook  <paul@codesourcery.com>
2
3         * doc/invoke.texi: Document ARM -mcpu=cortex-a5.
4         * config/arm/arm-cores.def: Add cortex-a5.
5         * config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a5.
6         * config/arm/arm-tune.md: Regenerate.
7
8 2009-11-20 Olga Golovanevsky <olga@il.ibm.com>
9
10         PR middle-end/39960
11         * ipa-struct-reorg.c (find_pos_in_stmt): New parameter.
12         (ref_pos): New field in structure.
13         (insert_new_var_in_stmt): New function.
14
15
16 2009-11-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
17
18         * config.gcc (alpha*-dec-osf[45]*): Set use_gcc_stdint.
19         * config/alpha/osf.h (SIG_ATOMIC_TYPE): Define.
20         (INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE): Define.
21         (UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
22         (INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
23         (INT_LEAST64_TYPE): Define.
24         (UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
25         UINT_LEAST64_TYPE): Define.
26         (INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
27         INT_FAST64_TYPE): Define.
28         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
29         UINT_FAST64_TYPE): Define.
30         (INTPTR_TYPE, UINTPTR_TYPE): Define.
31
32 2009-11-20  Julian Brown  <julian@codesourcery.com>
33
34         * config/arm/arm.h (ASM_OUTPUT_REG_PUSH): Handle STATIC_CHAIN_REGNUM
35         specially for Thumb-1.
36         (ASM_OUTPUT_REG_POP): Likewise.
37
38 2009-11-19  Jason Merrill  <jason@redhat.com>
39
40         * dwarf2out.c (get_context_die): Take TYPE_MAIN_VARIANT.
41
42 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
43             Rafael Avila de Espindola  <espindola@google.com>
44
45         * doc/plugins.texi (Plugin initialization): Added advices for
46         retrieving the version of GCC at plugin compilation and loading
47         times.
48
49 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
50
51         * plugin.c (FMT_FOR_PLUGIN_EVENT): added definition.
52         (dump_active_plugins): output to file everything. Use
53         internationalized dump & FMT_FOR_PLUGIN_EVENT.
54
55 2009-11-19  Richard Guenther  <rguenther@suse.de>
56
57         * gimple.c (canonicalize_cond_expr_cond): Strip conversions
58         around truth-valued expressions.
59         * tree.c (free_lang_data): Untangle check for LTO frontend.
60
61 2009-11-19  Jakub Jelinek  <jakub@redhat.com>
62
63         * tree.c (need_assembler_name_p): Use cgraph_get_node instead
64         of cgraph_node_for_decl.
65         * cgraph.h (cgraph_node_for_decl): Remove prototype.
66         * cgraph.c (cgraph_node_for_decl): Remove.
67         (cgraph_get_node): Just return NULL if !cgraph_hash.
68
69 2009-11-19  Paul Brook  <paul@codesourcery.com>
70
71         * config.gcc: Add new ARM --with-fpu options.
72         * doc/invoke.texi: Docuent ARM -mfpu=fpv4-sp-d16.
73         * config/arm/arm.c (all_fpus): Add fpv4-sp-d16.
74
75 2009-11-18  Richard Guenther  <rguenther@suse.de>
76
77         * gimple.h (union gimple_statement_d): Add gsmembase member.
78         (gimple_vuse_op): Use gsmembase for access.
79         (gimple_vdef_op): Likewise.
80         (gimple_vuse): Likewise.
81         (gimple_vdef): Likewise.
82         (gimple_vuse_ptr): Likewise.
83         (gimple_vdef_ptr): Likewise.
84         (gimple_set_vuse): Likewise.
85         (gimple_set_vdef): Likewise.
86         * gsstruct.def (GSS_WITH_MEM_OPS_BASE): Add.
87
88 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
89
90         * doc/arm-neon-intrinsics.texi: Regenerated.
91
92 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
93
94         * config/arm/neon-docgen.ml (analyze_shape_elt): Handle
95         Alternatives.
96
97 2009-11-18  Paul Brook  <paul@codesourcery.com>
98         Daniel Jacobowitz  <dan@codesourcery.com>
99
100         * config/arm/arm.c (FL_ARCH7EM, FL_FOR_ARCH7EM): Define.
101         (arm_arch7em): New variable.
102         (all_architectures): Add armv7e-m.
103         (arm_override_options): Set arm_arch7em.
104         * config/arm/arm.h (TARGET_DSP_MULTIPLY, TARGET_INT_SIMD):
105         Include arm_arch7em.
106         (arm_arch7em): Declare.
107
108 2009-11-18  Richard Guenther  <rguenther@suse.de>
109
110         * lto-streamer-in.c (input_gimple_stmt): Assert that we find
111         a valid field decl if checking is enabled.
112
113 2009-11-18  Martin Jambor  <mjambor@suse.cz>
114
115         * ipa-prop.h (struct ipa_param_call_note): New field lto_stmt_uid.
116         (lto_ipa_fixup_call_notes): Declare.
117         * ipa-prop.c (ipa_note_param_call): Store gimple uid.
118         (update_call_notes_after_inlining): Copy call stmt uid to the new
119         edge.
120         (ipa_write_param_call_note): New function.
121         (ipa_read_param_call_note): New function
122         (ipa_write_node_info): Write also param call notes.  Removed a bogus
123         comment, reformatted to fit 80 columns.
124         (ipa_read_node_info): Read also param call notes. Removed a bogus
125         comment.  Remove ipa_edge_args_vector growth.
126         (lto_ipa_fixup_call_notes): New function.
127         * ipa-cp.c (pass_ipa_cp): Add stmt_fixup hook.
128         * ipa-inline.c (cgraph_mark_inline_edge): Perform indirect
129         inlining regardless of flag_wpa.
130         (cgraph_decide_inlining_of_small_functions): Likewise.
131         (cgraph_decide_inlining): Likewise.
132         (inline_read_summary): Likewise.
133
134 2009-11-18  Jan Hubicka  <jh@suse.cz>
135
136         * predict.c (compute_function_frequency): Export.
137         * predict.h (compute_function_frequency): Declare.
138         * tree-optimize.c (execute_fixup_cfg): Rescale frequencies.
139
140 2009-11-18  Martin Jambor  <mjambor@suse.cz>
141
142         * passes.c (ipa_write_summaries): Call renumber_gimple_stmt_uids
143         on all nodes we write summaries for.
144
145 2009-11-18  Shujing Zhao  <pearly.zhao@oracle.com>
146         
147         PR middle-end/22201
148         * params.def (PARAM_INLINE_UNIT_GROWTH)
149         PARAM_IPCP_UNIT_GROWTH)
150         (PARAM_EARLY_INLINING_INSNS, PARAM_IRA_MAX_LOOPS_NUM)
151         (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE)
152         (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP)
153         (PARAM_MIN_INSN_TO_PREFETCH_RATIO)
154         (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO)
155         PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Uppercase the first letter of the
156         description string.
157
158 2009-11-18  Jakub Jelinek  <jakub@redhat.com>
159
160         * dwarf2out.c (loc_list_from_tree): Don't call rtl_for_decl_location
161         unnecessarily.
162         (rtl_for_decl_location): Try harder to get a rtl for TREE_STATIC vars.
163
164         PR c++/3187
165         * cgraph.h (struct cgraph_node): Add same_body and same_body_alias
166         fields.
167         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
168         prototypes.
169         * cgraphunit.c (cgraph_expand_function, cgraph_emit_thunks,
170         cgraph_materialize_all_clones): Handle same_body aliases.
171         * cgraph.c (cgraph_allocate_node): New function.
172         (cgraph_create_node): Use it.
173         (cgraph_node_for_decl, cgraph_node, cgraph_get_node,
174         cgraph_node_for_asm, cgraph_remove_node): Handle same_body aliases.
175         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
176         functions.
177         * lto-cgraph.c (lto_output_node): Stream out same_body aliases.
178         (input_node): Stream in same_body aliases.
179         * lto-symtab.c (lto_cgraph_replace_node): Clear node pointers
180         for same_body aliases.
181         (lto_symtab_merge_cgraph_nodes_1): Handle same_body aliases.
182
183 2009-11-18  Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
184
185         PR other/39888
186         * config/darwin.h: Use the extension stub libraries to access
187         current libgcc_s features.
188
189 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
190
191         PR debug/41926
192         * tree-vect-loop.c (vect_loop_kill_debug_uses): New.
193         (vect_transform_loop): Call it.
194
195 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
196
197         * tree-ssa.c (insert_debug_temp_for_var_def): Fix handling of
198         released SSA names.
199
200 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
201
202         PR debug/41888
203         PR debug/41886
204         * graphite-scop-detection.c (stmt_simple_for_scop_p): Debug stmts
205         are ok.
206         * graphite-sese-to-poly.c (graphite_stmt_p): Likewise.
207         (try_generate_gimple_bb): Skip debug stmts when finding data refs.
208         * sese.c (sese_build_liveouts_bb): Skip debug stmts.
209         (sese_bad_liveouts_use): New.
210         (sese_reset_debug_liveouts_bb): New.
211         (sese_build_liveouts): Use it.
212         (rename_variables_in_stmt): Reset debug stmts rather than creating
213         new vars for them.
214         (expand_scalar_variable_stmt): Likewise.
215
216 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
217
218         * df-scan.c (df_ref_create): Don't mark BB as dirty on debug insns.
219         (df_ref_remove): Likewise.
220
221 2009-11-17  Jan Hubicka  <jh@suse.cz>
222
223         * ipa-struct-reorg.c (update_cgraph_with_malloc_call): Fix profile
224         info.
225
226 2009-11-17  Eric Botcazou  <ebotcazou@adacore.com>
227
228         * toplev.c (process_options): Remove dead code.
229         * doc/invoke.texi (-frename-registers): Mention -fpeel-loops.
230
231 2009-11-17  Rafael Avila de Espindola  <espindola@google.com>
232
233         * lto-symtab.c (lto_symtab_resolve_symbols): Always initialize the
234         nodes.
235
236 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
237
238         PR tree-optimization/41857
239         * tree-ssa-address.c (move_hint_to_base): Use void pointer to
240         TYPE's address space instead of pointer to TYPE.
241
242 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
243
244         * reload.c (find_reloads_address): Fix typo.
245
246 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
247
248         * config/spu/spu.c (get_pic_reg): Use LAST_ARG_REGNUM as PIC
249         registers in leaf functions if possible.
250
251 2009-11-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
252
253         * config/m68k/m68k-devices.def: Add MCF5441x family.
254
255 2009-11-17  Jan Hubicka  <jh@suse.cz>
256
257         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Do not access
258         removed node.
259         * cgraphunit.c (verify_cgraph_node): Verify frequencies for match.
260
261 2009-11-17  Uros Bizjak  <ubizjak@gmail.com>
262
263         * config/i386/predicates.md (x86_64_szext_general_operand): Do not
264         nest ior expressions.
265         (x86_64_szext_nonmemory_operand): Ditto.
266         (call_insn_operand): Ditto.
267
268 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
269
270         * stmt.c (expand_asm_stmt): Get locus from stmt.
271
272 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
273
274         * tree-cfg.c (gimple_redirect_edge_and_branch) <case GIMPLE_ASM>:
275         Create the decl label for the new dest block on demand.  Require
276         a fallthrough edge if no asm labels were redirected.
277
278 2009-11-16  Uros Bizjak  <ubizjak@gmail.com>
279
280         * config/i386/i386.md (cbranchsi4): Use nonimmediate_operand for
281         operand 1 predicate.
282         (cstoresi4): Ditto for operand 2.
283         (cbranch<mode>4): Macroize expander from cbranch{qi,hi,si,di,ti}4
284         patterns using SDWIM mode iterator.
285         (cstore<mode>4): Macroize expander from cstore{qi,hi,si,di}4 patterns
286         using SWIM mode iterator.
287         (cmpdi_1): Rename from cmpdi_1_rex64.
288         (cmp<mode>_1): Macroize expander from cmp{si,di}_1 patterns using
289         SWI48 mode iterator.
290         (*cmp<mode>_1): Macroize insn from *cmp{qi,hi,si,di}_1_insn using SWI
291         mode iterator.
292         (*cmp<mode>_ccno_1): Ditto from *cmp{qi,hi,si,di}_ccno_1.
293         (*cmp<mode>_minus_1): Ditto from *cmp{qi,hi,si,di}_minus_1.
294         (*cmpqi_ext_3_insn): Make private.
295         (*cmpqi_ext_3_insn_rex64): Make private.
296         (cmpstrnsi): Update for renamed cmpdi_1_rex64.
297         * config/i386/predicates.md (cmpsi_operand): Remove.
298
299 2009-11-16  Paul Brook  <paul@codesourcery.com>
300
301         * doc/invoke.texi: Document ARM VFPv4 based FPUs.
302         * config/arm/arm.c (all_fpus): Add VFPv4 entries.
303
304 2009-11-14  Jan Hubicka  <jh@suse.cz>
305
306         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use proper
307         ENTRY_BLOCK_PTR.
308         * cgraph.c (cgraph_clone_edge): Avoid freq_scale 0 to completely
309         zero out all callees.
310         * cgraphunit.c (verify_cgraph_node): Verify cgraph nodes for
311         frequency and count match.
312         * ipa-inline.c (update_noncloned_frequencies): New function.
313         (cgraph_clone_inlined_nodes): Use it.
314         * tree-inline.c (copy_bb): Fix frequency scaling; output
315         diagnostic on frequency mismatches to dump file.
316         (initialize_cfun): Do not scale frequency; fix count scaling;
317         initialize entry and exit block frequencies; copy profile info.
318         (copy_cfg_body): Use frequency_scale as argument; fix count scaling.
319         (copy_body): Use frequency_scale as argument.
320         (expand_call_inline): Compute frequency scale and output diagnostic
321         to dump file.
322         (delete_unreachable_blocks_update_callgrah): Remove checking that
323         has to be done after edge redirection.
324         (tree_function_versioning): Update initialize_cfun and copy_body call.
325
326 2009-11-14  Jan Hubicka  <jh@suse.cz>
327
328         * cgraph.c (cgraph_release_function_body): Update use of
329         ipa_transforms_to_apply.
330         (cgraph_remove_node): Remove ipa_transforms_to_apply.
331         * cgraph.h (struct cgraph_node): Add ipa_transforms_to_apply.
332         * cgraphunit.c (save_inline_function_body): Clear ipa_transforms for
333         copied body.
334         (cgraph_materialize_clone): Remove original if dead.
335         * lto-streamer-in.c (lto_read_body): Remove FIXME and
336         ipa_transforms_to_apply hack.
337         * function.h (struct function): Add ipa_transforms_to_apply.
338         * ipa.c (cgraph_remove_unreachable_nodes): Handle dead clone originals.
339         * tree-inline.c (copy_bb): Update sanity check.
340         (initialize_cfun): Do not copy ipa_transforms_to_apply.
341         (expand_call_inline): remove dead clone originals.
342         (tree_function_versioning): Merge transformation queues.
343         * passes.c (add_ipa_transform_pass): Remove.
344         (execute_one_ipa_transform_pass): Update ipa_transforms_to_apply
345         tracking.
346         (execute_all_ipa_transforms): Update.
347         (execute_one_pass): Update.
348
349 2009-11-14  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
350
351         PR target/21078, 21080
352         * config/avr/avr.c (avr_return_addr_rtx): New function for
353         builtin_return_address.
354         (expand_prologue): Calculate stack usage.
355         (avr_asm_function_end_prologue): Output stack size and offset label.
356         * config/avr/avr.h (RETURN_ADDR_RTX): Replace.
357         (machine_function): Add stack_usage.
358         * config/avr/avr-protos.h (avr_return_addr_rtx): New function.
359
360 2009-11-14  Anatoly Sokolov  <aesok@post.ru>
361
362         * config/iq2000/iq2000.c (iq2000_function_value): Make static, add
363         new 'outgoing' argument.
364         (iq2000_libcall_value, iq2000_function_value_regno_p): New functions.
365         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
366         * config/iq2000/iq2000.h (FUNCTION_VALUE_REGNO_P): Redefine, use
367         iq2000_function_value_regno_p.
368         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
369         * config/iq2000/iq2000-protos.h (iq2000_function_value_regno_p):
370         Declare.
371
372 2009-11-14  Richard Earnshaw  <rearnsha@arm.com>
373
374         PR target/42031
375         * arm.md (adddi_sesidi_di): Place tied contraint first.
376         (adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise
377         (subdi_zesidi_di, subdi_sesidi_di): Likewise.
378         (mulsi3_compare0, mulsi_compare0_scratch): Likewise.
379         (mulsi3addsi, mulsi3addsi_compare0): Likewise.
380         (mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise.
381         (umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise.
382         (anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise.
383         (andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise.
384         (arm_lshrdi3_1bit, one_cmpldi2): Likewise.
385
386 2009-11-14  Uros Bizjak  <ubizjak@gmail.com>
387
388         * config/i386/predicates.md (call_register_no_elim_operand):
389         New predicate.  Reject stack register as valid call operand
390         for 32bit targets.
391         (call_insn_operand): Use call_register_no_elim_operand.
392
393 2009-11-13  Richard Henderson  <rth@redhat.com>
394
395         * function.c (stack_protect_prologue): Don't bypass expand_expr
396         for stack_protect_guard and guard_decl.
397         (stack_protect_epilogue): Likewise.
398
399 2009-11-13  Jan Hubicka  <jh@suse.cz>
400
401         * ipa.c (function_and_variable_visibility): Clear COMDAT on functions
402         when to PUBLIC is set.
403
404 2009-11-13  Jakub Jelinek  <jakub@redhat.com>
405
406         PR middle-end/42029
407         * gimplify.c (gimplify_omp_atomic): Set DECL_GIMPLE_REG_P on
408         tmp_load if needed.
409
410 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
411
412         PR target/41900
413         * config/i386/i386.md (*call_pop_1, *call_1, *call_value_pop_1,
414         *call_value_1): Use "lsm" as operand 1 constraint.
415         * config/i386/predicates.md (call_insn_operand): Depend on
416         index_register_operand to avoid %esp register.
417
418 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
419
420         Revert:
421         2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
422
423         PR target/41900
424         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
425         (TARGET_CALL_ESP): New define.
426         * config/i386/i386.c (initial_ix86_tune_features): Initialize
427         X86_ARCH_CALL_ESP.
428         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
429         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
430         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
431         TARGET_CALL_ESP.
432         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
433         New patterns, use "lsm" as operand 1 constraint.
434         * config/i386/predicates.md (call_insn_operand): Depend on
435         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
436
437 2009-11-13  Jason Merrill  <jason@redhat.com>
438
439         PR debug/26965
440         * dwarf2out.c (gen_variable_die): Don't worry about DECL_COMDAT.
441         Don't emit a second declaration at any scope.
442
443 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
444
445         PR rtl-optimization/41697
446         * sel-sched-ir.c (fallthru_bb_of_jump): Bail out when a block with
447         a conditional jump has a single successor.
448
449 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
450
451         * sched-deps.c (init_deps): New parameter lazy_reg_last.  Don't
452         allocate reg_last when in case lazy_reg_last is true.
453         (init_deps_reg_last): New.
454         (free_deps): When max_reg is 0, this context is already freed.
455         * sched-int.h (init_deps_reg_last): Export.
456         (init_deps): Update prototype.
457         * sched-ebb.c (schedule_ebb): Update the call to init_deps.
458         * sched-rgn.c (sched_rgn_compute_dependencies): Likewise.
459         * ddg.c (build_intra_loop_deps): Likewise.
460         * sel-sched-ir.c (copy_deps_context, create_deps_context,
461         reset_deps_context, deps_init_id): Likewise.
462         (init_first_time_insn_data): Lazy allocate INSN_DEPS_CONTEXT.
463         (free_data_for_scheduled_insn): New, break down from ...
464         (free_first_time_insn_data): ... here.
465         (has_dependence_p): Allocate reg_last now, when it is needed.
466         (extend_insn_data): When maximal LUID is big enough, allocate
467         per-insn data in smaller chunks.
468         * sel-sched-ir.h (free_data_for_scheduled_insn): Export.
469         * sel-sched.c (update_seqnos_and_stage): Free INSN_DEPS_CONTEXT
470         in scheduled insn.
471
472 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
473
474         * config/i386/i386.md (call_value): Fix comment.
475         (sibcall_value): Ditto.
476
477 2009-11-13  Eric Botcazou  <ebotcazou@adacore.com>
478
479         * config/i386/linux-unwind.h (x86_frob_update_context): New function.
480         (MD_FROB_UPDATE_CONTEXT): Define.
481
482 2009-11-12  Eric Botcazou  <ebotcazou@adacore.com>
483             Laurent GUERBY  <laurent@guerby.net>
484
485         * config/sparc/linux-unwind.h (sparc64_fallback_frame_state): Tidy.
486         Do not schedule an %sp restore.  Compensate for RETURN_ADDR_OFFSET.
487         (sparc_fallback_frame_state): Tidy.  Compensate for RETURN_ADDR_OFFSET.
488
489 2009-11-12  Jan Hubicka  <jh@suse.cz>
490
491         * ipa.c (function_and_variable_visibility): Fix my accidentail commit
492         and clear DECL_COMMON on localized declarations.
493
494 2009-11-12  Bernd Schmidt  <bernd.schmidt@analog.com>
495
496         PR rtl-opt/38582
497         * regrename.c (struct du_head): New structure; some elements moved
498         from...
499         (struct du_chain): ... this one.
500         (open_chains, closed_chains): Now of type struct du_head *.
501         (do_replace): Accept du_head argument, not du_chain.  All callers
502         changed.  Modified code to match new data structures.
503         (build_def_use): Return a list of du_head structures.  Modified code
504         to match new data structures.
505         (dump_def_use_chain): Accept du_head argument, not du_chain.  All
506         callers changed.  Modified code to match new data structures.
507         (merge_overlapping_regs): Accept du_head argument, not du_chain.  All
508         callers changed.  Modified code to match new data structures.
509         (scan_rtx_reg): Change type of this_regno and this_nregs to unsigned.
510         Allocate a du_head structure as well as a du_chain when creating a
511         new chain.  Modified other code to match new data structures.
512
513 2009-11-12  Jan Hubicka  <jh@suse.cz>
514
515         * cgraph.h (varpool_node_name): Declare.
516         * cgraphunit.c (process_function_and_variable_attributes): Set
517         force_output flag on used variables.
518         * ipa.c (function_and_variable_visibility): Dump externally visible
519         and needed variables.
520         * varpool.c (varpool_node_name): Export.
521         (decide_is_variable_needed): Check COMDAT for externally visible vars;
522         ignore needed flag.
523
524 2009-11-12  Uros Bizjak  <ubizjak@gmail.com>
525
526         PR middle-end/41930
527         * simplify-rtx.c (simplify_replace_fn_rtx) <case 'e'>: Skip
528         processing if XEXP (x, i) is NULL.
529
530 2009-11-12  Jan Hubicka  <jh@suse.cz>
531
532         * ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON
533         imply PUBLIC || EXTERNAL.
534
535 2009-11-11  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
536
537         PR middle-end/41440
538         * cfgexpand.c (expand_gimple_basic_block): Append NOP to a fallthru,
539         single successor block, ending with jump created by RTL expander.
540
541 2009-11-11  Jan Hubicka  <jh@suse.cz>
542
543         PR middle-end/41729
544         * ipa.c (function_and_variable_visibility): Do not privatize COMDAT
545         and WEAK variables at -fwhole-program.
546
547         PR middle-end/41735
548         * ipa.c (whole_program_function_and_variable_visility): COMDAT
549         functions/variables are not needed even if they are externally visible.
550
551 2009-11-11  Jan Hubicka  <jh@suse.cz>
552
553         (patch by Richard Guenther)
554         * lto-streamer-out.c (output_function): Output head of argument list
555         earlier.
556         * lto-streamer-in.c (input_function): Re-map arguments into merged
557         declaration.
558
559 2009-11-11  Jan Hubicka  <jh@suse.cz>
560
561         * lto-cgraph.c: Include gcov-io.h
562         (output_profile_summary): New function.
563         (output_cgraph): Use it.
564         (input_profile_summary): New function.
565         (input_cgraph): Use it.
566         * coverage.c (build_ctr_info_value): Use varpool; initalize
567         DECL_ASSEMBLER_NAME.
568         (create_coverage): Likewise.
569         * tree-profile.c (tree_init_ic_make_global_vars): Likewise.
570         (tree_init_edge_profiler): Likewise.
571         * Makefile.in (lto-cgraph.o): Add dependency on gcov-io.h.
572
573 2009-11-11  Kai Tietz  <kai.tietz@onevision.com>
574
575         * config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
576         * c-pragma.c (def_pragma_macro_value): Likewise.
577         (def_pragma_macro): Likewise.
578         (pushed_macro_table): Likewise.
579         (HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded code.
580         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
581
582 2009-11-11  Basile Starynkevitch  <basile@starynkevitch.net>
583
584         * doc/plugins.texi (Registering custom attributes): section
585         renamed as (Registering custom attributes or pragmas).
586         Mentions custom attributes & pragmas, and c_register_pragma, with
587         a small example.
588         * doc/cpp.texi (Pragmas): Mentions that plugins can provide their
589         pragmas.
590         * doc/extend.texi (Function Attributes): Mentions that plugin can
591         provide their attributes.
592
593 2009-11-11  Jon Beniston  <jon@beniston.com>
594
595         * config.gcc: Add lm32 elf and uclinux targets.
596         * config/lm32: New directory.
597         * config/lm32/lm32.c: New file.
598         * config/lm32/lm32.h: New file.
599         * config/lm32/lm32.md: New file.
600         * config/lm32/lm32.opt: New file.
601         * config/lm32/lm32-protos.h: New file.
602         * config/lm32/constraints.md: New file.
603         * config/lm32/predicates.md: New file.
604         * config/lm32/sfp-machine.h: New file.
605         * config/lm32/t-fprules-softfp: New file.
606         * config/lm32/uclinux-elf.h: New file.
607         * doc/invoke.texi: Document lm32 options.
608         * doc/contrib.texi: Document lm32 porter.
609         * doc/install.texi: Document lm32 targets.
610
611 2009-11-11  Martin Jambor  <mjambor@suse.cz>
612
613         PR lto/41932
614         * ipa-prop.c (ipa_update_after_lto_read): Call
615         ipa_check_create_node_params and ipa_check_create_edge_args.  Also
616         call ipa_initialize_node_params instead of ipa_populate_param_decls.
617
618 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
619
620         * config/arm/arm.c (neon_vdup_constant, neon_make_constant): New.
621         (neon_expand_vector_init): Use them.  Also handle non-constant
622         vectors with identical elements and vectors with only one
623         non-constant element.
624         (arm_print_operand): Handle 'y' modifier.
625         * config/arm/arm-protos.h (neon_make_constant): Declare.
626         * config/arm/neon.md (neon_vdup_n<mode>): Split into two
627         patterns.  Use VX instead of VDQW for the first one.  Allow
628         a VFP alternative and V32 modes for the second one.
629         * config/arm/neon.ml (shape_elt): Add Alternatives.
630         (ops): Use Alternatives for vdup lane instructions.
631         * config/arm/neon-testgen.ml (analyze_shape): Handle Alternatives.
632         * config/arm/vec-common.md (mov<mode>): Use neon_make_constant.
633
634 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
635
636         * config/arm/neon.md (*neon_mov<mode>): Reject two non-register
637         operands.
638         (movti, mov<mode>): Call force_reg on one operand if required.
639         * config/arm/vec-common.md (mov<mode>): Likewise.
640
641 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
642
643         * config/arm/arm.c (arm_override_options): Enable scheduling for
644         Thumb-2.
645
646 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
647
648         PR target/10127
649         PR ada/20548
650         * expr.h (anti_adjust_stack_and_probe): Declare.
651         * explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
652         parameter and rewrite head comment.
653         (allocate_dynamic_stack_space): Adjust call to above function.
654         * function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
655
656         * tree.h (dwarf2out_args_size): Delete.
657         * dwarf2out.c (dwarf2out_args_size): Make static and move around.
658         (dwarf2out_args_size_adjust): Delete prototype and move around.
659         (dwarf2out_frame_debug_expr): Do not record arg size adjustments for
660         ACCUMULATE_OUTGOING_ARGS targets.
661
662 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
663
664         * config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
665         DECL_SIZE of DECL_RESULT before evaluating it.
666
667 2009-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
668
669         PR tree-optimization/41987
670         * fold-const.c (const_binop): Avoid using fold_buildN().
671
672 2009-11-10  Martin Jambor  <mjambor@suse.cz>
673
674         * tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field.
675         (execute_all_ipa_stmt_fixups): Declare.
676         * ipa-cp.c (pass_ipa_cp): Added stmt_fixup value.
677         * ipa-inline.c (pass_ipa_inline): Likewise.
678         * ipa-pure-const.c (pass_ipa_pure_cons): Likewise.
679         * ipa-reference.c (pass_ipa_reference): Likewise.
680         * ipa.c (pass_ipa_whole_program_visibility): Likewise.
681         * lto-streamer-out.c (pass_ipa_lto_gimple_out): Likewise.
682         (pass_ipa_lto_finish_out): Likewise.
683         * lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Likewise.
684         * passes.c (execute_ipa_stmt_fixups): New function.
685         (execute_all_ipa_stmt_fixups): New function.
686         * lto-streamer-in.c (input_function): Call execute_all_ipa_stmt_fixups.
687
688 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
689
690         PR ada/20548
691         * explow.c (probe_stack_range): Fix typo.
692         * config/sparc/sparc.md (probe_stack): New expander.
693
694 2009-11-09  Dave Korn  <dave.korn.cygwin@gmail.com>
695
696         * config/i386/cygwin.h (LINK_SPEC): Add -tsaware flag if !mno-cygwin.
697
698 2009-11-09  Jason Merrill  <jason@redhat.com>
699
700         * gdbinit.in (pgq): New function for printing gimple sequence.
701
702 2009-11-09  Paul Brook  <paul@codesourcery.com>
703             Daniel Jacobowitz  <dan@codesourcery.com>
704             Sandra Loosemore  <sandra@codesourcery.com>
705
706         * doc/extend.texi (Half-Precision): Update wording to reflect
707         that there are now multiple -mfpu options that enable fp16
708         hardware support.
709         * doc/invoke.texi: Update list of ARM -mfpu= options.
710         * config.gcc: Update ARM --with-fpu option list.
711         * config/arm/arm.c (all_fpus): Add vfpv3-fp16, vfpv3-d16-fp16,
712         vfpv3xd and vfpv3xd-fp16.
713         (use_vfp_abi): New function.
714         (aapcs_vfp_is_call_or_return_candidate): Avoid double precision regs
715         when undesirable.
716         (aapcs_vfp_is_return_candidate, aapcs_vfp_is_call_candidate,
717         aapcs_vfp_allocate_return_reg): Use use_vfp_abi.
718         (arm_rtx_costs_1, arm_size_rtx_costs, arm_fastmul_rtx_costs,
719         arm_9e_rtx_costs): Only expect double-precision operations if the FPU
720         provides them.
721         (coproc_secondary_reload_class): Reload HFmode via GENERAL_REGS if no
722         NEON.
723         (arm_print_operand): Handle 'p' modifier.
724         (arm_hard_regno_mode_ok): : Allow HFmode in VFP registers if
725         TARGET_FP16.
726         * config/arm/arm.h (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Define.
727         (TARGET_FP16): Define.
728         * config/arm/vfp.md: Disable double-precision patterns if the FPU
729         does not provide them.
730         (arm_movdi_vfp, thumb2_movdi_vfp): Use fcpys to move
731         double-precision values on a single-precision FPU.
732         (movdf_vfp, thumb2_movdf_vfp): Likewise.  Use "Dy" for
733         double-precision constants.
734         (movhf_vfp_neon): New pattern (was movhf_vfp).
735         (movhf_vfp): Remove NEON instructions.
736         * config/arm/constraints.md: Add new "Dy" constraint for
737         double-precision constants.  Update description of "Dv".
738         * config/arm/arm.md: Disable double-precision patterns if the FPU
739         does not provide them
740
741 2009-11-09  Jakub Jelinek  <jakub@redhat.com>
742
743         * config/i386/i386.c (print_operand) <case 'D'>: Fix formatting.
744         (print_operand) <case 'Y'>: Likewise.  Fix a pasto in operand lossage
745         diagnostics.
746
747 2009-11-08  H.J. Lu  <hongjiu.lu@intel.com>
748
749         * collect2.c (main): Search PLUGIN_LD for plugin linker.
750
751         * configure.ac (--with-plugin-ld): New.  Default to ld.
752         * configure: Regenerated.
753         * config.in: Likewise.
754
755         * exec-tool.in (ORIGINAL_PLUGIN_LD_FOR_TARGET): New.
756         (collect-ld): Use ORIGINAL_PLUGIN_LD_FOR_TARGET for -plugin.
757
758 2009-11-08  Jonathan Gray  <jsg@openbsd.org>
759
760         * config/openbsd-stdint.h: Change to reflect what
761         c_common_nodes_and_builtins expects.
762
763 2009-11-08  Paolo Carlini  <paolo.carlini@oracle.com>
764
765         * builtins.c (apply_args_reg_offset): Remove commented out delaration.
766
767 2009-11-08  Jakub Jelinek  <jakub@redhat.com>
768
769         PR target/41985
770         * config/i386/i386.c (get_some_local_dynamic_name): Don't assert
771         function contains at least one local dynamic name.
772         (print_operand) <case '&'>: Instead output operand lossage diagnostics
773         here if that happens.
774
775 2009-11-08  Zbigniew Chamski  <zbigniew.chamski@gmail.com>
776             Joern Rennecke  <amylaar@spamcop.net>
777
778         * cfgrtl.c (pass_free_cfg): Add pass name.
779         * cgraphbuild.c (pass_build_cgraph_edges): Likewise.
780         (pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
781         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
782         * df-core.c (pass_df_initialize_no_opt): Likewise.
783         * except.c (pass_rtl_eh): Likewise.
784         * function.c (pass_init_function, pass_leaf_regs): Likewise.
785         * gcse.c (pass_rtl_pre): Change pass name.
786         * passes.c (pass_postreload): Add pass name.
787         (make_pass_instance): Don't use duplicate-tracking logic for
788         names starting with '*'.
789         (next_pass_1): Assert that pass has a name.
790         (register_one_dump_file): If there is an space in the name,
791         skip past it.
792         * predict.c (pass_strip_predict_hints): Add pass name.
793         * reg-stack.c (pass_stack_regs): Likewise.
794         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
795         * tree-cfg.c (pass_warn_function_return,
796         pass_warn_function_noreturn): Add pass name.
797         * tree-dfa.c (pass_referenced_vars): Likewise.
798         * tree-optimize.c (pass_cleanup_cfg_post_optimizing):
799         Fix whitespace before comment.
800         (pass_fixup_cfg): Add pass name, fix whitespace before comment.
801         (pass_init_datastructures): Add pass name.
802         * tree-ssa-loop.c (pass_record_bounds): Likewise.
803         * tree-ssa.c (pass_early_warn_uninitialized,
804         pass_late_warn_uninitialized): Likewise.
805         * tree.c (pass_ipa_free_lang_data): Likewise.
806         * doc/passes.texi (pass manager): Document how to disambiguate
807         pass names.
808
809 2009-11-08  Paolo Bonzini  <bonzini@gnu.org>
810
811         * df-problems.c: Fix documentation for forward simulation of LR.
812         (df_simulate_one_insn_forwards): Use df_simulate_find_defs.
813         (df_simulate_finalize_forwards): Remove.
814         * df.h (df_simulate_finalize_forwards): Remove.
815
816 2009-11-08  Richard Guenther  <rguenther@suse.de>
817
818         * tree-ssa-structalias.c (build_succ_graph): Properly make
819         variables escape if they are stored to anything.
820
821 2009-11-08  Richard Guenther  <rguenther@suse.de>
822
823         PR rtl-optimization/41928
824         * loop-invariant.c (free_loop_data): If we didn't allocate
825         loop data do not try to free it.
826
827 2009-11-07  Jason Merrill  <jason@redhat.com>
828
829         * tree.c (reconstruct_complex_type): Preserve attributes.
830
831 2009-11-07  Richard Guenther  <rguenther@suse.de>
832
833         * tree-ssa-structalias.c (build_succ_graph): Feed stores
834         to anything only to variables that can take pointers.
835         (get_constraint_for_ssa_var): Properly exclude full
836         variables from expanding.
837         (first_vi_for_offset): Avoid overflow in arithmetic.
838         (first_or_preceding_vi_for_offset): Likewise.
839         (count_num_arguments): Fix implementation.
840         (gate_ipa_pta): Do not run when not optimizing.
841
842 2009-11-07  David Binderman <dcb314@hotmail.com>
843
844         * builtins.c (apply_args_size, expand_builtin_mathfn, expand_powi,
845         expand_builtin_expect, maybe_emit_sprintf_chk_warning): Remove some
846         set but not used variables.
847         (apply_args_reg_offset): Comment out as unused.
848         * calls.c (flags_from_decl_or_type): Likewise.
849         * genautomata.c (check_regexp_units_distribution): Likewise.
850
851 2009-11-07  Uros Bizjak  <ubizjak@gmail.com>
852
853         * config/i386/sse.md (xop_pmacsww, xop_pmacssww, xop_pmacsdd,
854         xop_pmacssdd, xop_pmacssdql, xop_pmacssdqh, xop_pmacsdql,
855         *xop_pmacsdql_mem, xop_pmacsdqh, *xop_pmacsdqh_mem, xop_pmacsswd,
856         xop_pmacswd, xop_pmadcsswd, xop_pmadcswd, xop_pcmov_<mode>,
857         xop_pcmov_<mode>256, xop_pperm, xop_pperm_pack_v2di_v4si,
858         xop_pperm_pack_v4si_v8hi, xop_pperm_pack_v8hi_v16qi): Compress
859         operand alternatives.
860
861 2009-11-06  Michael Matz  <matz@suse.de>
862
863         PR middle-end/41963
864         * tree-ssa-math-opts.c (execute_cse_reciprocals): Check all uses
865         of a potential reciprocal to really be reciprocals.
866
867 2009-11-06  Jakub Jelinek  <jakub@redhat.com>
868
869         * config/i386/x86intrin.h: Include fma4intrin.h, xopintrin.h and
870         lwpintrin.h after immintrin.h.
871         * config/i386/fma4intrin.h (__v8sf, __v4df, __m256, __m256d): Remove
872         typedefs.
873
874         PR middle-end/41935
875         * c-common.c (fold_offsetof_1) <case ARRAY_REF>: Don't crash for VLAs
876         or non-constant index, allow index one past the last element and
877         allow exceeding array bound in arrays that might be used as flexible
878         array members.
879
880 2009-11-05  Richard Henderson  <rth@redhat.com>
881
882         * config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
883
884 2009-11-05  Paul Brook  <paul@codesourcery.com>
885
886         * config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
887         (arm_fpu_desc): New.
888         (all_fpus): Add FPU details.
889         (fp_model_for_fpu): Remove.
890         (arm_override_options): Set and use arm_fpu_desc and arm_fpu_attr.
891         (arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2.
892         (arm_file_start): Use arm_fpu_desc.
893         * config/arm/arm.h (TARGET_FPA, TARGET_MAVERICK, TARGET_VFP,
894         TARGET_VFPD32, TARGET_VFP3, TARGET_NEON_FP16, TARGET_NEON): Use
895         arm_fpu_desc.
896         (TARGET_FPA_EMU2): Define.
897         (arm_fp_model, fputype, arm_fpu_tune): Remove.
898         (vfp_reg_type, arm_fpu_desc): New.
899         * config/arm/arm.md (attr fpu): Simplify.
900         * config/arm/fpa.md (movxf_fpa): Use TARGET_FPA_EMU2.
901         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Use string value.
902         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Use string value.
903         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Use string value.
904         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Use string value.
905
906 2009-11-05  Michael Matz  <matz@suse.de>
907
908         * config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency
909         on TARGET_RECIP.
910         * doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip
911         for 1/sqrtf.
912
913 2009-11-04  Jason Merrill  <jason@redhat.com>
914
915         PR c++/36912
916         * varasm.c (initializer_constant_valid_p): A PLUS_EXPR
917         or MINUS_EXPR of REAL_TYPE is not a valid constant initializer.
918         (output_constant): Avoid crash after error.
919
920 2009-11-05  Martin Jambor  <mjambor@suse.cz>
921
922         * tree-sra.c (struct access): Changed comment of next_sibling field.
923         (analyze_modified_params): Loop over accesses of a group rather than
924         over all with the ame base, pass a common bitmap to
925         walk_aliased_vdefs.
926         (unmodified_by_ref_scalar_representative): Build link lists of
927         accesses of a group.
928         (splice_param_accesses): Likewise.
929
930 2009-11-04  Kenneth Zadeck  <zadeck@naturalbridge.com>
931
932         * df-scan.c (df-uses-record): Add case zero_extract of mem.
933
934 2009-11-04  Eric Botcazou  <ebotcazou@adacore.com>
935
936         PR target/10127
937         PR ada/20548
938         * config/i386/i386.md (probe_stack): New expander.
939         (logical operation peepholes): Do not split stack checking probes.
940
941 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
942             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
943
944         * doc/invoke.texi (-mlwp): Add documentation.
945         * doc/extend.texi (x86 intrinsics): Add LWP intrinsics.
946         * config.gcc (i[34567]86-*-*): Include lwpintrin.h.
947         (x86_64-*-*): Ditto.
948         * config/i386/lwpintrin.h: New file, provide x86 compiler
949         intrinisics for LWP.
950         * config/i386/cpuid.h (bit_LWP): Define LWP bit.
951         * config/i386/x86intrin.h: Add LWP check and lwpintrin.h.
952         * config/i386/i386-c.c (ix86_target_macros_internal): Check
953         ISA_FLAG for LWP.
954         * config/i386/i386.h (TARGET_LWP): New macro for LWP.
955         * config/i386/i386.opt (-mlwp): New switch for LWP support.
956         * config/i386/i386.c (OPTION_MASK_ISA_LWP_SET): New.
957         (OPTION_MASK_ISA_LWP_UNSET): New.
958         (ix86_handle_option): Handle -mlwp.
959         (isa_opts): Handle -mlwp.
960         (enum pta_flags): Add PTA_LWP.
961         (override_options): Add LWP support.
962         (IX86_BUILTIN_LLWPCB16): New for LWP intrinsic.
963         (IX86_BUILTIN_LLWPCB32): Ditto.
964         (IX86_BUILTIN_LLWPCB64): Ditto.
965         (IX86_BUILTIN_SLWPCB16): Ditto.
966         (IX86_BUILTIN_SLWPCB32): Ditto.
967         (IX86_BUILTIN_SLWPCB64): Ditto.
968         (IX86_BUILTIN_LWPVAL16): Ditto.
969         (IX86_BUILTIN_LWPVAL32): Ditto.
970         (IX86_BUILTIN_LWPVAL64): Ditto.
971         (IX86_BUILTIN_LWPINS16): Ditto.
972         (IX86_BUILTIN_LWPINS32): Ditto.
973         (IX86_BUILTIN_LWPINS64): Ditto.
974         (enum  ix86_special_builtin_type): Add LWP intrinsic support.
975         (builtin_description): Ditto.
976         (ix86_init_mmx_sse_builtins): Ditto.
977         (ix86_expand_special_args_builtin): Ditto.
978         * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC): Add new UNSPEC for
979         LWP support.
980         (UNSPEC_SLWP_INTRINSIC): Ditto.
981         (UNSPECV_LWPVAL_INTRINSIC): Ditto.
982         (UNSPECV_LWPINS_INTRINSIC): Ditto.
983         (lwp_llwpcbhi1): New lwp pattern.
984         (lwp_llwpcbsi1): Ditto.
985         (lwp_llwpcbdi1): Ditto.
986         (lwp_slwpcbhi1): Ditto.
987         (lwp_slwpcbsi1): Ditto.
988         (lwp_slwpcbdi1): Ditto.
989         (lwp_lwpvalhi3): Ditto.
990         (lwp_lwpvalsi3): Ditto.
991         (lwp_lwpvaldi3): Ditto.
992         (lwp_lwpinshi3): Ditto.
993         (lwp_lwpinssi3): Ditto.
994         (lwp_lwpinsdi3): Ditto.
995
996 2009-11-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
997             Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
998
999         PR rtl-opt/41833
1000         * simplify-rtx.c (simplify_binary_operation_1): Simplify vec_select of
1001         a vec_duplicate.
1002
1003 2009-11-04  Richard Guenther  <rguenther@suse.de>
1004             Rafael Avila de Espindola  <espindola@google.com>
1005
1006         * gcc.c (process_command): Handle arguments name@offset.
1007
1008 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
1009             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1010
1011         * config.gcc (i[34567]86-*-*): Include xopintrin.h.
1012         (x86_64-*-*): Ditto.
1013         * config/i386/xopintrin.h: New file, provide common x86 compiler
1014         intrinisics for XOP.
1015         * config/i386/cpuid.h (bit_XOP): Define XOP bit.
1016         * config/i386/x86intrin.h: Add XOP check and xopintrin.h.
1017         * config/i386/i386-c.c(ix86_target_macros_internal): Check
1018         ISA_FLAG for XOP.
1019         * config/i386/i386.h(TARGET_XOP): New macro for XOP.
1020         * config/i386/i386.opt (-mxop): New switch for XOP support.
1021         * config/i386/i386.md (UNSPEC_XOP_UNSIGNED_CMP)
1022         (UNSPEC_XOP_TRUEFALSE)
1023         (UNSPEC_XOP_PERMUTE)
1024         (UNSPEC_FRCZ): Add new UNSPEC for XOP support.
1025         (PPERM_*): New constants for vpperm instruction.
1026         (xop_pcmov_<mode>): Add XOP conditional mov instructions.
1027         * config/i386/i386.c (OPTION_MASK_ISA_XOP_SET): New.
1028         (OPTION_MASK_ISA_XOP_UNSET): New.
1029         (OPTION_MASK_ISA_XOP_UNSET): Change definition to depend on XOP.
1030         (ix86_handle_option): Handle -mxop.
1031         (isa_opts): Handle -mxop.
1032         (enum pta_flags): Add PTA_XOP.
1033         (override_options): Add XOP support.
1034         (print_operand): Add code for XOP compare instructions.
1035         (ix86_expand_sse_movcc): Extend for XOP conditional move instruction.
1036         (ix86_expand_int_vcond): Extend for XOP compare instruction.
1037
1038         (IX86_BUILTIN_VPCMOV): New for XOP intrinsic.
1039         (IX86_BUILTIN_VPCMOV_V2DI): Ditto.
1040         (IX86_BUILTIN_VPCMOV_V4SI): Ditto.
1041         (IX86_BUILTIN_VPCMOV_V8HI): Ditto.
1042         (IX86_BUILTIN_VPCMOV_V16QI): Ditto.
1043         (IX86_BUILTIN_VPCMOV_V4SF): Ditto.
1044         (IX86_BUILTIN_VPCMOV_V2DF): Ditto.
1045
1046         (IX86_BUILTIN_VPCMOV256): Ditto.
1047         (IX86_BUILTIN_VPCMOV_V4DI256): Ditto.
1048         (IX86_BUILTIN_VPCMOV_V8SI256): Ditto.
1049         (IX86_BUILTIN_VPCMOV_V16HI256): Ditto.
1050         (IX86_BUILTIN_VPCMOV_V32QI256): Ditto.
1051         (IX86_BUILTIN_VPCMOV_V8SF256): Ditto.
1052         (IX86_BUILTIN_VPCMOV_V4DF256): Ditto.
1053
1054         (IX86_BUILTIN_VPPERM): Ditto.
1055
1056         (IX86_BUILTIN_VPMACSSWW): Ditto.
1057         (IX86_BUILTIN_VPMACSWW): Ditto.
1058         (IX86_BUILTIN_VPMACSSWD): Ditto.
1059         (IX86_BUILTIN_VPMACSWD): Ditto.
1060         (IX86_BUILTIN_VPMACSSDD): Ditto.
1061         (IX86_BUILTIN_VPMACSDD): Ditto.
1062         (IX86_BUILTIN_VPMACSSDQL): Ditto.
1063         (IX86_BUILTIN_VPMACSSDQH): Ditto.
1064         (IX86_BUILTIN_VPMACSDQL): Ditto.
1065         (IX86_BUILTIN_VPMACSDQH): Ditto.
1066         (IX86_BUILTIN_VPMADCSSWD): Ditto.
1067         (IX86_BUILTIN_VPMADCSWD): Ditto.
1068
1069         (IX86_BUILTIN_VPHADDBW): Ditto.
1070         (IX86_BUILTIN_VPHADDBD): Ditto.
1071         (IX86_BUILTIN_VPHADDBQ): Ditto.
1072         (IX86_BUILTIN_VPHADDWD): Ditto.
1073         (IX86_BUILTIN_VPHADDWQ): Ditto.
1074         (IX86_BUILTIN_VPHADDDQ): Ditto.
1075         (IX86_BUILTIN_VPHADDUBW): Ditto.
1076         (IX86_BUILTIN_VPHADDUBD): Ditto.
1077         (IX86_BUILTIN_VPHADDUBQ): Ditto.
1078         (IX86_BUILTIN_VPHADDUWD): Ditto.
1079         (IX86_BUILTIN_VPHADDUWQ): Ditto.
1080         (IX86_BUILTIN_VPHADDUDQ): Ditto.
1081         (IX86_BUILTIN_VPHSUBBW): Ditto.
1082         (IX86_BUILTIN_VPHSUBWD): Ditto.
1083         (IX86_BUILTIN_VPHSUBDQ): Ditto.
1084
1085         (IX86_BUILTIN_VPROTB): Ditto.
1086         (IX86_BUILTIN_VPROTW): Ditto.
1087         (IX86_BUILTIN_VPROTD): Ditto.
1088         (IX86_BUILTIN_VPROTQ): Ditto.
1089         (IX86_BUILTIN_VPROTB_IMM): Ditto.
1090         (IX86_BUILTIN_VPROTW_IMM): Ditto.
1091         (IX86_BUILTIN_VPROTD_IMM): Ditto.
1092         (IX86_BUILTIN_VPROTQ_IMM): Ditto.
1093
1094         (IX86_BUILTIN_VPSHLB): Ditto.
1095         (IX86_BUILTIN_VPSHLW): Ditto.
1096         (IX86_BUILTIN_VPSHLD): Ditto.
1097         (IX86_BUILTIN_VPSHLQ): Ditto.
1098         (IX86_BUILTIN_VPSHAB): Ditto.
1099         (IX86_BUILTIN_VPSHAW): Ditto.
1100         (IX86_BUILTIN_VPSHAD): Ditto.
1101         (IX86_BUILTIN_VPSHAQ): Ditto.
1102
1103         (IX86_BUILTIN_VFRCZSS): Ditto.
1104         (IX86_BUILTIN_VFRCZSD): Ditto.
1105         (IX86_BUILTIN_VFRCZPS): Ditto.
1106         (IX86_BUILTIN_VFRCZPD): Ditto.
1107         (IX86_BUILTIN_VFRCZPS256): Ditto.
1108         (IX86_BUILTIN_VFRCZPD256): Ditto.
1109
1110         (IX86_BUILTIN_VPCOMEQUB): Ditto.
1111         (IX86_BUILTIN_VPCOMNEUB): Ditto.
1112         (IX86_BUILTIN_VPCOMLTUB): Ditto.
1113         (IX86_BUILTIN_VPCOMLEUB): Ditto.
1114         (IX86_BUILTIN_VPCOMGTUB): Ditto.
1115         (IX86_BUILTIN_VPCOMGEUB): Ditto.
1116         (IX86_BUILTIN_VPCOMFALSEUB): Ditto.
1117         (IX86_BUILTIN_VPCOMTRUEUB): Ditto.
1118
1119         (IX86_BUILTIN_VPCOMEQUW): Ditto.
1120         (IX86_BUILTIN_VPCOMNEUW): Ditto.
1121         (IX86_BUILTIN_VPCOMLTUW): Ditto.
1122         (IX86_BUILTIN_VPCOMLEUW): Ditto.
1123         (IX86_BUILTIN_VPCOMGTUW): Ditto.
1124         (IX86_BUILTIN_VPCOMGEUW): Ditto.
1125         (IX86_BUILTIN_VPCOMFALSEUW): Ditto.
1126         (IX86_BUILTIN_VPCOMTRUEUW): Ditto.
1127
1128         (IX86_BUILTIN_VPCOMEQUD): Ditto.
1129         (IX86_BUILTIN_VPCOMNEUD): Ditto.
1130         (IX86_BUILTIN_VPCOMLTUD): Ditto.
1131         (IX86_BUILTIN_VPCOMLEUD): Ditto.
1132         (IX86_BUILTIN_VPCOMGTUD): Ditto.
1133         (IX86_BUILTIN_VPCOMGEUD): Ditto.
1134         (IX86_BUILTIN_VPCOMFALSEUD): Ditto.
1135         (IX86_BUILTIN_VPCOMTRUEUD): Ditto.
1136
1137         (IX86_BUILTIN_VPCOMEQUQ): Ditto.
1138         (IX86_BUILTIN_VPCOMNEUQ): Ditto.
1139         (IX86_BUILTIN_VPCOMLTUQ): Ditto.
1140         (IX86_BUILTIN_VPCOMLEUQ): Ditto.
1141         (IX86_BUILTIN_VPCOMGTUQ): Ditto.
1142         (IX86_BUILTIN_VPCOMGEUQ): Ditto.
1143         (IX86_BUILTIN_VPCOMFALSEUQ): Ditto.
1144         (IX86_BUILTIN_VPCOMTRUEUQ): Ditto.
1145
1146         (IX86_BUILTIN_VPCOMEQB): Ditto.
1147         (IX86_BUILTIN_VPCOMNEB): Ditto.
1148         (IX86_BUILTIN_VPCOMLTB): Ditto.
1149         (IX86_BUILTIN_VPCOMLEB): Ditto.
1150         (IX86_BUILTIN_VPCOMGTB): Ditto.
1151         (IX86_BUILTIN_VPCOMGEB): Ditto.
1152         (IX86_BUILTIN_VPCOMFALSEB): Ditto.
1153         (IX86_BUILTIN_VPCOMTRUEB): Ditto.
1154
1155         (IX86_BUILTIN_VPCOMEQW): Ditto.
1156         (IX86_BUILTIN_VPCOMNEW): Ditto.
1157         (IX86_BUILTIN_VPCOMLTW): Ditto.
1158         (IX86_BUILTIN_VPCOMLEW): Ditto.
1159         (IX86_BUILTIN_VPCOMGTW): Ditto.
1160         (IX86_BUILTIN_VPCOMGEW): Ditto.
1161         (IX86_BUILTIN_VPCOMFALSEW): Ditto.
1162         (IX86_BUILTIN_VPCOMTRUEW): Ditto.
1163
1164         (IX86_BUILTIN_VPCOMEQD): Ditto.
1165         (IX86_BUILTIN_VPCOMNED): Ditto.
1166         (IX86_BUILTIN_VPCOMLTD): Ditto.
1167         (IX86_BUILTIN_VPCOMLED): Ditto.
1168         (IX86_BUILTIN_VPCOMGTD): Ditto.
1169         (IX86_BUILTIN_VPCOMGED): Ditto.
1170         (IX86_BUILTIN_VPCOMFALSED): Ditto.
1171         (IX86_BUILTIN_VPCOMTRUED): Ditto.
1172
1173         (IX86_BUILTIN_VPCOMEQQ): Ditto.
1174         (IX86_BUILTIN_VPCOMNEQ): Ditto.
1175         (IX86_BUILTIN_VPCOMLTQ): Ditto.
1176         (IX86_BUILTIN_VPCOMLEQ): Ditto.
1177         (IX86_BUILTIN_VPCOMGTQ): Ditto.
1178         (IX86_BUILTIN_VPCOMGEQ): Ditto.
1179         (IX86_BUILTIN_VPCOMFALSEQ): Ditto.
1180         (IX86_BUILTIN_VPCOMTRUEQ): Ditto.
1181
1182         (enum multi_arg_type): New enum for describing the various XOP
1183         intrinsic argument types.
1184         (bdesc_multi_arg): New table for XOP intrinsics.
1185         (ix86_init_mmx_sse_builtins): Add XOP intrinsic support.
1186         (ix86_expand_multi_arg_builtin): New function for creating XOP
1187         intrinsics.
1188
1189         * config/i386/sse.md (sserotatemax): New mode attribute for XOP.
1190         (xop_pmacsww): Ditto.
1191         (xop_pmacssww): Ditto.
1192         (xop_pmacsdd): Ditto.
1193         (xop_pmacssdd): Ditto.
1194         (xop_pmacssdql): Ditto.
1195         (xop_pmacssdqh): Ditto.
1196         (xop_pmacsdql): Ditto.
1197         (xop_pmacsdql_mem): Ditto.
1198         (xop_mulv2div2di3_low): Ditto.
1199         (xop_pmacsdqh): Ditto.
1200         (xop_pmacsdqh_mem): Ditto.
1201         (xop_mulv2div2di3_high): Ditto.
1202         (xop_pmacsswd): Ditto.
1203         (xop_pmacswd): Ditto.
1204         (xop_pmadcsswd): Ditto.
1205         (xop_pmadcswd): Ditto.
1206         (xop_pcmov_<mode>): Ditto.
1207         (xop_pcmov_<mode>256): Ditto.
1208         (xop_phaddbw): Ditto.
1209         (xop_phaddbd): Ditto.
1210         (xop_phaddbq): Ditto.
1211         (xop_phaddwd): Ditto.
1212         (xop_phaddwq): Ditto.
1213         (xop_phadddq): Ditto.
1214         (xop_phaddubw): Ditto.
1215         (xop_phaddubd): Ditto.
1216         (xop_phaddubq): Ditto.
1217         (xop_phadduwd): Ditto.
1218         (xop_phadduwq): Ditto.
1219         (xop_phaddudq): Ditto.
1220         (xop_phsubbw): Ditto.
1221         (xop_phsubwd): Ditto.
1222         (xop_phsubdq): Ditto.
1223         (xop_pperm): Ditto.
1224         (rotl<mode>3): Ditto.
1225         (rotr<mode>3): Ditto.
1226         (xop_rotl<mode>3): Ditto.
1227         (xop_rotr<mode>3): Ditto.
1228         (vrotr<mode>3): Ditto.
1229         (vrotl<mode>3): Ditto.
1230         (xop_vrotl<mode>3): Ditto.
1231         (vlshr<mode>3): Ditto.
1232         (vashr<mode>3): Ditto.
1233         (vashl<mode>3
1234         (xop_ashl<mode>3): Ditto.
1235         (xop_lshl<mode>3): Ditto.
1236         (ashlv16qi3): Ditto.
1237         (lshlv16qi3): Ditto.
1238         (ashrv16qi3): Ditto.
1239         (ashrv2di3): Ditto.
1240         (xop_frcz<mode>2): Ditto.
1241         (xop_vmfrcz<mode>2): Ditto.
1242         (xop_frcz<mode>2256): Ditto.
1243         (xop_maskcmp<mode>3): Ditto.
1244         (xop_maskcmp_uns<mode>3): Ditto.
1245         (xop_maskcmp_uns2<mode>3): Ditto.
1246         (xop_pcom_tf<mode>3): Ditto.
1247
1248         * doc/invoke.texi (-mxop): Add documentation.
1249         * doc/extend.texi (x86 intrinsics): Add XOP intrinsics.
1250
1251 2009-11-03  Mark Mitchell  <mark@codesourcery.com>
1252
1253         PR driver/11810
1254         * gcc.c (SWITCHES_NEED_SPACES): Define to "o".
1255         * config/alpha/osf.h (SWITCHES_NEED_SPACES): Remove here.
1256         * config/mips/iris.h (SWITCHES_NEED_SPACES): Remove here.
1257
1258 2009-11-04  Richard Earnshaw  <rearnsha@arm.com>
1259
1260         PR target/40835
1261         * arm.md (peephole2 patterns for move and compare): New.
1262
1263 2009-11-04  Nick Clifton  <nickc@redhat.com>
1264
1265         * defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
1266         Make sure that it does not allow CONST_DOUBLEs.
1267         * doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
1268         * config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
1269         * config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
1270         * config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
1271         * config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
1272         * config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
1273         * config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
1274         * config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
1275         * config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
1276         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
1277         * config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
1278         * config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
1279         * config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
1280         * config/score/score.h (CONSTANT_ADDRESS_P): Delete.
1281         * config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.
1282
1283 2009-11-04  Richard Guenther  <rguenther@suse.de>
1284
1285         PR tree-optimization/41919
1286         * tree-vrp.c (test_for_singularity): Properly compare values.
1287
1288 2009-11-04  Revital Eres  <eres@il.ibm.com>
1289
1290         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
1291         Consider peeling for alignment only for stores and remove
1292         redundant assignment.
1293
1294 2009-11-04  Maxim Kuvyrkov  <maxim@codesourcery.com>
1295
1296         PR target/41302
1297         * config/m68k/m68k.c (m68k_reg_present_p): New static function.
1298         (m68k_ok_for_sibcall_p): Handle different result return locations.
1299
1300 2009-11-04  Richard Guenther  <rguenther@suse.de>
1301
1302         * c-opts.c (c_common_post_options): Move LTO option processing
1303         code ...
1304         * opts.c (decode_options): ... here.
1305
1306 2009-11-04  Jakub Jelinek  <jakub@redhat.com>
1307
1308         * c-common.c (fold_offsetof_1): Use %wd instead of
1309         HOST_WIDE_INT_PRINT_DEC.
1310
1311 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
1312
1313         * config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
1314         __pic__ or __PIC__.
1315
1316 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
1317
1318         * config.gcc (vax-*-linux*): Keep the original contents of
1319         tmake_file while adding vax/t-linux.
1320
1321 2009-11-03  Eric Botcazou  <ebotcazou@adacore.com>
1322
1323         PR target/10127
1324         PR ada/20548
1325         * expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
1326         (STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
1327         (STACK_CHECK_MOVING_SP): Likewise.
1328         * system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
1329         * doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
1330         Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
1331         * doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
1332         Document PROBE_STACK.
1333         * explow.c (anti_adjust_stack_and_probe): New function.
1334         (allocate_dynamic_stack_space): Do not directly allocate space if
1335         STACK_CHECK_MOVING_SP, instead invoke above function.
1336         (emit_stack_probe): Handle probe_stack insn.
1337         (PROBE_INTERVAL): New macro.
1338         (STACK_GROW_OPTAB): Likewise.
1339         (STACK_GROW_OFF): Likewise.
1340         (probe_stack_range): Use Pmode and memory_address consistently.  Fix
1341         loop condition in the small constant case.  Rewrite in the general
1342         case to be immune to wraparounds.  Make sure the address of probes
1343         is valid.  Try to use [base + disp] addressing mode if possible.
1344         * ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
1345         checking is enabled and STACK_CHECK_MOVING_SP.
1346         * rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
1347         return 1 for volatile references to the stack pointer.
1348         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
1349         __builtin_alloca if stack checking is enabled.
1350         * unwind-dw2.c (uw_identify_context): Take into account whether the
1351         context is that of a signal frame or not.
1352         * config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
1353         * config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
1354
1355 2009-11-03  Jakub Jelinek  <jakub@redhat.com>
1356
1357         PR rtl-optimization/41917
1358         * rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
1359         operand isn't known to be 0, return 1.
1360
1361 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
1362
1363         * config/mips/mips.md: Fix typos.
1364
1365 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
1366
1367         * doc/invoke.texi: Fix typo.
1368
1369 2009-11-03  Paul Brook  <paul@codesourcery.com>
1370
1371         * config/arm/neon.ml (vectype): Add T_floatSF.
1372         (string_of_vectype): Ditto.
1373         * config/arm/neon-gen.ml (signed_ctype): Add T_floatSF.
1374         (deftypes): Use float for float32_t.
1375         * config/arm/arm_neon.h: Regenerate.
1376
1377 2009-11-03  Nick Clifton  <nickc@redhat.com>
1378             Kevin Buettner  <kevinb@redhat.com>
1379
1380         * config/rx/predicates.md (rx_store_multiple_vector): Reverse
1381         order of expected registers.
1382         (rx_load_multiple_vector): Likewise.
1383         (rx_rtsd_vector): Likewise.
1384         * config/rx/rx.c (rx_cpu_type): New variable.
1385         (rx_print_operand): Fix bug printing 64-bit constant values.
1386         (rx_emit_stack_pushm): Reverse order of pushed registers.
1387         (gen_rx_store_vector): Likewise.
1388         (is_fast_interrupt_func): Only accept "fast_interrupt" as the
1389         attribute name.
1390         (is_exception_func): Rename to is_interrupt_func and only accept
1391         "interrupt" as the attribute name.
1392         (rx_get_stack_layout): Use new function name.
1393         (rx_func_attr_inlinable): Likewise.
1394         (rx_attribute_table): Remove "exception".
1395         (rx_expand_prologue): If necessary push the accumulator register
1396         in the prologue of interrupt functions.
1397         (rx_expand_epilogue): If necessary pop the accumulator.
1398         (rx_builtins): Add RX_BUILTIN_MVTIPL.
1399         (rx_expand_builtin_stz): Remove.
1400         (rx_expand_builtin_mvtipl): New function.
1401         (rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
1402         (rx_expand_builtin): Likewise.
1403         (rx_enable_fpu): New variable.
1404         (rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
1405         * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
1406         on rx_cpu_type.  Define __RX_FPU_INSNS__ if FPU insns are allowed.
1407         (enum rx_cpu_types): Define.
1408         (ASM_SPEC): Pass -m32bit-doubles on to assembler.
1409         (INCOMING_FRAME_SP_OFFSET): Define.
1410         (ARG_POINTER_CFA_OFFSET): Define.
1411         (FRAME_POINTER_CFA_OFFSET): Define.
1412         (OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
1413         (ALLOW_RX_FPU_INSNS): Define.
1414         * config/rx/rx.md: Test ALLOW_RX_FPU_INSNS instead of
1415         fast_math_flags_set_p.
1416         (UNSPEC_BUILTIN_MVTIPL): Define.
1417         (revl): Rename to bswapsi2.
1418         (bswaphi2): New pattern.
1419         (mvtachi): Mark as volatile because it uses a register unknown to GCC.
1420         (mvtaclo): Likewise.
1421         (racw): Likewise.
1422         (mvtc): Remove clobber of cc0.
1423         (mvtcp): Delete.
1424         (opecp): Delete.
1425         * config/rx/rx.opt (mieee): Remove.
1426         (fpu): Add.
1427         (nofpu): Add.
1428         (mcpu=): Add.
1429         (patch=): Add.
1430         (msave-acc-in-interrupts): Add.
1431         * config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
1432         (MULTILIB_DIRS): Likewise.
1433         (MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
1434         * doc/extend.texi: Remove description of "exception" function
1435         attribute.
1436         * doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
1437         -msave-acc-in-interrupts options.
1438
1439 2009-11-03  Richard Guenther  <rguenther@suse.de>
1440
1441         * c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.
1442
1443 2009-11-03  Dodji Seketeli  <dodji@redhat.com>
1444
1445         PR c++/38699
1446         * c-common.c (fold_offsetof_1): Issue errors when the member
1447         designator of the offsetof expression is not legitimate.
1448
1449 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
1450
1451         * config/i386/i386.md (*call_value_1_rex64_ms_sysv): Use register
1452         names instead of numerical constants.
1453         (sse_prologue_save): Ditto.
1454         (*sse_prologue_save_insn): Ditto.
1455
1456 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
1457
1458         PR target/41900
1459         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
1460         (TARGET_CALL_ESP): New define.
1461         * config/i386/i386.c (initial_ix86_tune_features): Initialize
1462         X86_ARCH_CALL_ESP.
1463         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
1464         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
1465         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
1466         TARGET_CALL_ESP.
1467         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
1468         New patterns, use "lsm" as operand 1 constraint.
1469         * config/i386/predicates.md (call_insn_operand): Depend on
1470         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
1471
1472 2009-11-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1473
1474         PR tree-optimization/41857
1475         * tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
1476         * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
1477         to create_mem_ref.
1478         * tree-ssa-address.c (move_hint_to_base): New function.
1479         (most_expensive_mult_to_index): Add TYPE argument.  Use mode and
1480         address space associated with TYPE.
1481         (addr_to_parts): Add TYPE and BASE_HINT arguments.  Pass TYPE to
1482         most_expensive_mult_to_index.  Call move_hint_to_base.
1483         (create_mem_ref): Add BASE_HINT argument.  Pass BASE_HINT and
1484         TYPE to addr_to_parts.
1485
1486 2009-11-02  Martin Jambor  <mjambor@suse.cz>
1487
1488         PR tree-optimization/41750
1489         * tree-sra.c (analyze_modified_params): Loop over all
1490         representatives of components of a parameter.
1491
1492 2009-11-02  Jakub Jelinek  <jakub@redhat.com>
1493
1494         PR tree-optimization/41841
1495         * ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
1496         local variables of not yet materialized clones.
1497
1498         PR debug/41893
1499         * cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
1500         for a VOIDmode variable.
1501
1502         PR c++/41774
1503         * c-pragma.c (visstack): Change into vector of ints rather than
1504         enum symbol_visibility.
1505         (push_visibility): Add kind argument, push default_visibility together
1506         with kind.
1507         (pop_visibility): Add kind argument, return true if successful, fail
1508         if visibility stack is empty or if stack top is of different kind.
1509         (handle_pragma_visibility): Don't check length of visstack, instead
1510         call pop_visibility and issue diagnostics if it failed.  Pass 0
1511         as last argument to push_visibility and pop_visibility.
1512         * c-pragma.h (push_visibility): Add kind argument.
1513         (pop_visibility): Likewise.  Return bool instead of void.
1514
1515 2009-11-01  Eric Botcazou  <ebotcazou@adacore.com>
1516
1517         * tree.def (TARGET_MEM_REF): Update comment.
1518         * alias.c (get_alias_set): Retrieve the original memory reference for
1519         a TARGET_MEM_REF before proceeding.
1520
1521 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
1522
1523         * config/frv/frv.c (frv_function_value, frv_libcall_value,
1524         frv_function_value_regno_p): New functions.
1525         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1526         * config/frv/frv.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
1527         (FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
1528         * config/frv/frv-protos.h (frv_function_value_regno_p): Declare.
1529
1530 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
1531
1532         * config/mn10300/mn10300.c (mn10300_function_value): Make static, add
1533         new 'outgoing' argument.
1534         (mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
1535         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1536         * config/mn10300/mn10300.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
1537         LIBCALL_VALUE): Remove.
1538         (FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
1539         * config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
1540         (mh10300_function_value_regno_p): Declare.
1541
1542 2009-10-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1543
1544         * config/arm/cortex-a9.md: New - integer pipeline description.
1545
1546 2009-10-31  Eric Botcazou  <ebotcazou@adacore.com>
1547
1548         * tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
1549         aborting if the sizes of the two references don't match.
1550
1551 2009-10-31  Toon Moene  <toon@moene.org>
1552
1553         * ipa-inline.c (cgraph_decide_inlining):
1554         Include reason for not inlining called-once functions in dump file.
1555
1556 2009-10-30  Daniel Gutson  <dgutson@codesourcery.com>
1557
1558         * config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
1559         * config/arm/bpapi.h (BE8_LINK_SPEC): New define.
1560         (LINK_SPEC): BE_LINK_SPEC added.
1561
1562 2009-10-30  Richard Guenther  <rguenther@suse.de>
1563
1564         PR lto/41858
1565         * lto-streamer.h (struct lto_file_decl_data): Remove fd member.
1566
1567 2009-10-30  Nathan Sidwell  <nathan@codesourcery.com>
1568
1569         * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
1570         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused
1571         label.
1572
1573 2009-10-30  Martin Jambor  <mjambor@suse.cz>
1574
1575         * tree-sra.c (build_ref_for_offset_1): Remove a comment.
1576
1577 2009-10-30  H.J. Lu  <hongjiu.lu@intel.com>
1578
1579         PR target/40838
1580         * cfgexpand.c (expand_stack_alignment): Call update_stack_boundary
1581         first.  Move assert on stack_alignment_estimated just before
1582         setting stack_realign_needed.
1583         (gimple_expand_cfg): Initialize stack_alignment_estimated to 0.
1584         Don't call update_stack_boundary.
1585
1586         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New.
1587         (verride_options): Don't check ix86_force_align_arg_pointer here.
1588         (ix86_function_ok_for_sibcall): Use it.
1589         (ix86_update_stack_boundary): Likewise.
1590
1591         * config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments.
1592
1593 2009-10-30  Richard Earnshaw  <rearnsha@arm.com>
1594
1595         * arm.md (QHSI): New mode iterator.
1596         (movqi): If generating for thumb, then truncate any immediate to
1597         8 bits.
1598         * thumb2.md (thumb2_movsi_shortim and peephole2 generator): Replace
1599         with...
1600         (thumb2_mov<mode>_shortim and peephole2 generator): ... iterator based
1601         version.
1602
1603 2009-10-29  Cary Coutant  <ccoutant@google.com>
1604
1605         PR debug/41700
1606         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two
1607         locations in the source).
1608         (store_vcall_insn): New function.
1609         (lookup_vcall_insn): New function.
1610         (dwarf2out_virtual_call_token): Use store_vcall_insn.
1611         (dwarf2out_copy_call_info): New function.
1612         (dwarf2out_virtual_call): Use lookup_vcall_insn.
1613         * emit-rtl.c (try_split): Call copy_call_info debug hook.
1614         * debug.h (struct gcc_debug_hooks): Add copy_call_info hook.
1615         * debug.c (do_nothing_debug_hooks): Add dummy entry for new hook.
1616         (debug_nothing_rtx_rtx): New dummy hook.
1617         * dbxout.c (dbx_debug_hooks): Add dummy entry for new hook.
1618         (xcoff_debug_hooks): Likewise.
1619         * sdbout.c (sdb_debug_hooks): Likewise.
1620         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
1621
1622 2009-10-29  David Daney  <ddaney@caviumnetworks.com>
1623
1624         * doc/invoke.texi (mmcount-ra-address): Document new command line
1625         option.
1626         * config/mips/mips.opt (mmcount-ra-address): New option.
1627         * config/mips/mips-protos.h (mips_function_profiler): Declare new
1628         function.
1629         * config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset
1630         member.
1631         (mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset.
1632         (mips_function_profiler): Moved from FUNCTION_PROFILER, and
1633         rewritten.
1634         * config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to
1635         mips_function_profiler.
1636
1637 2009-10-29  Steve Ellcey  <sje@cup.hp.com>
1638
1639         PR middle-end/37565
1640         PR target/38018
1641         * doc/tm.texi (OVERRIDE_OPTIONS): Update.
1642         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1643         * optc-gen.awk (cl_target_option_restore): Include call to
1644         targetm.override_options_after_change.
1645         * target-def.h (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1646         * target.h (override_options_after_change): New.
1647         * c-common.c (parse_optimize_options): Call
1648         targetm.override_options_after_change.
1649         * config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1650         (ia64_override_options_after_change): New.
1651         (ia64_override_options) Add call to above.
1652
1653 2009-10-29  Michael Matz  <matz@suse.de>
1654
1655         * tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
1656         (gate_convert_to_rsqrt): Ditto.
1657         (pass_convert_to_rsqrt): Ditto.
1658         * tree-pass.h (pass_convert_to_rsqrt): Don't declare.
1659         * passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
1660         to pass list.
1661
1662         * config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
1663
1664 2009-10-29  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1665
1666         * config/arm/arm.c (find_best_start): Fix type of remainder to be
1667         unsigned.
1668
1669 2009-10-29  Martin Jambor  <mjambor@suse.cz>
1670
1671         PR tree-optimization/41775
1672         * tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL.
1673         (generate_subtree_copies): Do not unshare agg.
1674         (load_assign_lhs_subreplacements): Do not unshare rhs.
1675         (sra_modify_assign): Do not unshare exprs.
1676         (propagate_subacesses_accross_link): Renamed to
1677         propagate_subaccesses_across_link.
1678
1679 2009-10-29  Richard Earnshaw  <rearnsha@arm.com>
1680
1681         * arm.c (count_insns_for_constant): Rework to support counting for
1682         thumb2 immediates as well.
1683         (find_best_start): Split out from arm_gen_constant.
1684         (arm_gen_constant): Rework to support XOR with immediate.
1685
1686 2009-10-29  Chao-ying Fu  <fu@mips.com>
1687
1688         * config/mips/mips.c (mips_emit_unary, mips_force_unary): New
1689         functions.
1690         (mips_expand_synci_loop):  Use the length rtx to control the
1691         synci loop from the begin rtx that points to the first byte of
1692         the cache line.
1693
1694 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
1695
1696         * doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin.
1697
1698 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
1699
1700         * dbxout.c (dbxout_common_check): Accept non public trees.
1701         * dwarf2out.c (fortran_common): Accept non public trees.
1702
1703 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
1704
1705         * common.opt (fuse-linker-plugin): New option.
1706         * gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to
1707         fuse-linker-plugin.
1708         * opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin.
1709
1710 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1711
1712         PR rtl-optimization/39715
1713         * config/arm/arm.md (cstoresi4): Use gen_cstoresi_ltu_thumb1.
1714         (gen_cstoresi_ltu_thumb1): New splitter.
1715
1716 2009-10-28  Richard Guenther  <rguenther@suse.de>
1717
1718         PR lto/41808
1719         PR lto/41839
1720         * tree-ssa.c (useless_type_conversion_p): Do not treat
1721         conversions to pointers to incomplete types as useless.
1722         * gimple.c (gimple_types_compatible_p): Compare struct tags,
1723         not typedef names.
1724
1725 2009-10-28  Jakub Jelinek  <jakub@redhat.com>
1726
1727         * var-tracking.c (emit_note_insn_var_location): Don't call the second
1728         vt_expand_loc unnecessarily when location is not a register nor
1729         memory.
1730
1731         PR middle-end/41837
1732         * ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if
1733         fields don't have DECL_NAME.
1734
1735         PR debug/41801
1736         * builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode,
1737         call convert_memory_address on addr.
1738
1739         PR target/41762
1740         * config/i386/i386.c (ix86_pic_register_p): Don't call
1741         rtx_equal_for_cselib_p for VALUEs discarded as useless.
1742
1743 2009-10-28  Richard Sandiford  <rdsandiford@googlemail.com>
1744
1745         * var-tracking.c (emit_note_insn_var_location): Get the mode of
1746         a variable part from its REG, MEM or VALUE.
1747
1748 2009-10-28  Richard Guenther  <rguenther@suse.de>
1749
1750         * gimple.c (gimple_get_alias_set): Fix comment typo.
1751
1752 2009-10-28  Richard Guenther  <rguenther@suse.de>
1753
1754         * tree.c (free_lang_data_in_type): Do not call get_alias_set.
1755         (free_lang_data): Unconditionally compute alias sets for all
1756         standard integer types.  Bail out if gate bailed out previously.
1757         Do not reset the types_compatible_p langhook.
1758         (gate_free_lang_data): Remove.
1759         (struct pass_ipa_free_lang_data): Enable unconditionally.
1760         * gimple.c (gimple_get_alias_set): Use the same alias-set for
1761         all pointer types.
1762
1763 2009-10-28  Richard Guenther  <rguenther@suse.de>
1764
1765         PR middle-end/41855
1766         * tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs
1767         (ref_maybe_used_by_call_p_1): Fix bcopy handling.
1768         (call_may_clobber_ref_p_1): Likewise.
1769         * tree-ssa-structalias.c (find_func_aliases): Likewise.
1770         * alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs.
1771
1772 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1773
1774         PR rtl-optimization/41812
1775
1776         Revert:
1777         2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
1778
1779         * df-problems.c (df_md_scratch): New.
1780         (df_md_alloc, df_md_free): Allocate/free it.
1781         (df_md_local_compute): Only include live registers in init.
1782         (df_md_transfer_function): Prune the in-set computed by
1783         the confluence function, and the gen-set too.
1784
1785 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1786
1787         PR rtl-optimization/39715
1788         * combine.c (simplify_comparison): Use extensions to
1789         widen comparisons.  Try an ANDing first.
1790
1791 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1792
1793         PR rtl-optimization/40741
1794         * config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with
1795         a small constant is cheap.
1796         * config/arm/arm.md (andsi3, iorsi3): Try to place the result of
1797         force_reg on the LHS.
1798         (xorsi3): Likewise, and split the XOR if the constant is complex
1799         and not in Thumb mode.
1800
1801 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1802
1803         * expmed.c (emit_store_flag): Check costs before
1804         transforming to the opposite representation.
1805
1806 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1807
1808         * config/sh/sh.md (cbranchfp4_media): Remove hack extending
1809         cstore result to DImode.
1810
1811 2009-10-28  Kaz Kojima  <kkojima@gcc.gnu.org>
1812
1813         * config/sh/sh.md (stuff_delay_slot): Move const_int pattern
1814         inside the unspec vector.
1815
1816 2009-10-27  Richard Henderson  <rth@redhat.com>
1817
1818         * cgraphunit.c (cgraph_optimize): Maintain timevar stack properly.
1819
1820 2009-10-27  Richard Henderson  <rth@redhat.com>
1821
1822         PR c++/41819
1823         * tree-eh.c (eh_region_may_contain_throw_map): Rename from
1824         eh_region_may_contain_throw; update users.
1825         (eh_region_may_contain_throw): New function.
1826         (lower_catch): Check flag_exceptions before creating exception region.
1827         (lower_eh_filter, lower_eh_must_not_throw): Likewise.
1828         (lower_cleanup): Tidy existing flag_exceptions check to match.
1829
1830 2009-10-27  Kai Tietz <kai.tietz@onevision.com>
1831
1832         PR/41799
1833         * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
1834         * config/i386/mingw.opt: Add fset-stack-executable.
1835         * config/i386/i386.c (ix86_trampoline_init): Make call to
1836         emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
1837         defined and its value is not zero.
1838         * doc/invoke.texi
1839
1840 2009-10-27  Richard Guenther  <rguenther@suse.de>
1841
1842         * tree-ssa-structalias.c (find_func_aliases): In IPA mode
1843         handle calls to externally visible functions like in regular mode.
1844         (create_variable_info_for): Do not create function infos here.
1845         (have_alias_info): Remove write-only variable.
1846         (solve_constraints): New function split out from common code
1847         in compute_points_to_sets and ipa_pta_execute.
1848         (compute_points_to_sets): Adjust.
1849         (ipa_pta_execute): Likewise.  Handle clones and externally visible
1850         functions like in non-IPA mode.
1851
1852 2009-10-27  Jakub Jelinek  <jakub@redhat.com>
1853
1854         PR c/41842
1855         * c-typeck.c (convert_arguments): Return -1 if any of the arguments is
1856         error_mark_node.
1857
1858 2009-10-27  Richard Guenther  <rguenther@suse.de>
1859
1860         * tree-complex.c (expand_complex_div_wide): Check for
1861         INTEGER_CST, not TREE_CONSTANT on comparison folding result.
1862
1863 2009-10-27  Revital Eres  <eres@il.ibm.com>
1864
1865         PR tree-optimization/40648
1866         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
1867         Change decision of when to peel for alignment.
1868
1869 2009-10-27  Richard Guenther  <rguenther@suse.de>
1870
1871         PR lto/41821
1872         * gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE.
1873
1874 2009-10-27  Aldy Hernandez  <aldyh@redhat.com>
1875
1876         PR bootstrap/41451
1877         * fold-const.c (fold_binary_loc): Do not call
1878         protected_set_expr_location.
1879
1880 2009-10-27  Wei Guozhi  <carrot@google.com>
1881
1882         PR target/41705
1883         * target.h (have_conditional_execution): Add a new target hook
1884         function.
1885         * target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise.
1886         * targhooks.h (default_have_conditional_execution): Likewise.
1887         * targhooks.c (default_have_conditional_execution): Likewise.
1888         * doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it.
1889         * config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it.
1890         (arm_have_conditional_execution): New function.
1891         * ifcvt.c (noce_process_if_block, find_if_header,
1892         cond_exec_find_if_block, dead_or_predicable): Change the usage of
1893         macro HAVE_conditional_execution to a target hook call.
1894         * recog.c (peephole2_optimize): Likewise.
1895         * sched-rgn.c (add_branch_dependences): Likewise.
1896         * final.c (asm_insn_count, final_scan_insn): Likewise.
1897         * bb-reorder.c (HAVE_conditional_execution): Remove it.
1898
1899 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1900             Michael Meissner  <meissner@linux.vnet.ibm.com>
1901             Ulrich Weigand  <uweigand@de.ibm.com>
1902
1903         * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers.
1904         * config/spu/spu_cache.h: New file.
1905
1906         * config/spu/cachemgr.c: New file.
1907         * config/spu/cache.S: New file.
1908
1909         * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define.
1910         (ADDR_SPACE_EA): Define.
1911         (TARGET_ADDR_SPACE_KEYWORDS): Define.
1912         * config/spu/spu.c (EAmode): New macro.
1913         (TARGET_ADDR_SPACE_POINTER_MODE): Define.
1914         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
1915         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise.
1916         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
1917         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
1918         (TARGET_ADDR_SPACE_CONVERT): Likewise.
1919         (TARGET_ASM_SELECT_SECTION): Likewise.
1920         (TARGET_ASM_UNIQUE_SECTION): Likewise.
1921         (TARGET_ASM_UNALIGNED_SI_OP): Likewise.
1922         (TARGET_ASM_ALIGNED_DI_OP): Likewise.
1923         (ea_symbol_ref): New function.
1924         (spu_legitimate_constant_p): Handle __ea qualified addresses.
1925         (spu_addr_space_legitimate_address_p): New function.
1926         (spu_addr_space_legitimize_address): Likewise.
1927         (cache_fetch): New global.
1928         (cache_fetch_dirty): Likewise.
1929         (ea_alias_set): Likewise.
1930         (ea_load_store): New function.
1931         (ea_load_store_inline): Likewise.
1932         (expand_ea_mem): Likewise.
1933         (spu_expand_mov): Handle __ea qualified memory references.
1934         (spu_addr_space_pointer_mode): New function.
1935         (spu_addr_space_address_mode): Likewise.
1936         (spu_addr_space_subset_p): Likewise.
1937         (spu_addr_space_convert): Likewise.
1938         (spu_section_type_flags): Handle "._ea" section.
1939         (spu_select_section): New function.
1940         (spu_unique_section): Likewise.
1941         * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__
1942         and __EA64__ predefined macros.
1943         * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and
1944         -matomic-updates switches.
1945
1946         * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define.
1947         (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a,
1948         libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a,
1949         libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a.
1950         ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target.
1951         ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o,
1952         $(T)cache128k.o): Likewise.
1953         ($(T)libgcc_%.a): Likewise.
1954
1955         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION.
1956         * config/spu/spu.opt (-mea32/-mea64): Add switches.
1957         (-maddress-space-conversion): Likewise.
1958         (-mcache-size=): Likewise.
1959         (-matomic-updates): Likewise.
1960         * doc/invoke.texi (-mea32/-mea64): Document.
1961         (-maddress-space-conversion): Likewise.
1962         (-mcache-size=): Likewise.
1963         (-matomic-updates): Likewise.
1964
1965 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1966             Michael Meissner  <meissner@linux.vnet.ibm.com>
1967             Ulrich Weigand  <uweigand@de.ibm.com>
1968
1969         * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document.
1970
1971         * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is
1972         defined, add the named address space keywords.
1973         (c_addr_space_name): New function.
1974         (complete_array_type): Preserve named address space.
1975         (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode
1976         instead of targetm.valid_pointer_mode.
1977
1978         * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15,
1979         RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE.
1980         (ADDR_SPACE_KEYWORD): New macro.
1981         (c_addr_space_name): Add prototype.
1982
1983         * c-tree.h (struct c_declspecs): Add address_space member.
1984         (declspecs_add_addrspace): Add prototype.
1985
1986         * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces.
1987
1988         * c-parser.c (c_parse_init): Add assertion.
1989         (typedef enum c_id_kind): Add C_ID_ADDRSPACE.
1990         (c_lex_one_token): Handle address space keywords.
1991         (c_token_starts_typename): Likewise.
1992         (c_token_starts_declspecs): Likewise.
1993         (c_parser_declspecs): Likewise.
1994         (c_parser_postfix_expression_after_paren_type): Diagnose compound
1995         literal within function qualified with named address space.
1996
1997         * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named
1998         address space qualifiers.
1999         (shadow_tag_warned): Warn about useless address space qualifiers.
2000         (quals_from_declspecs): Handle address space qualifiers.
2001         (grokdeclarator): Likewise.
2002         (build_null_declspecs): Likewise.
2003         (declspecs_add_addrspace): New function.
2004
2005         * c-typeck.c (addr_space_superset): New function.
2006         (qualify_type): Handle named address spaces.
2007         (composite_type): Likewise.
2008         (common_pointer_type): Likewise.
2009         (comp_target_types): Likewise.
2010         (build_conditional_expr): Likewise.
2011         (handle_warn_cast_qual): Likewise.
2012         (build_c_cast): Likewise.
2013         (convert_for_assignment): Likewise.
2014         (build_binary_op): Likewise.
2015         (pointer_diff): Handle named address spaces.  Use intermediate
2016         integer type of sufficient size if required.
2017
2018 2009-10-26  Ben Elliston  <bje@au.ibm.com>
2019             Michael Meissner  <meissner@linux.vnet.ibm.com>
2020             Ulrich Weigand  <uweigand@de.ibm.com>
2021
2022         * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.
2023         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
2024         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
2025
2026         * target.h (struct target_def): Add pointer_mode, address_mode,
2027         and valid_pointer_mode to addr_space substructure.
2028         * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
2029         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
2030         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
2031         (TARGET_ADDR_SPACE_HOOKS): Add them.
2032         * targhooks.c (target_default_pointer_address_modes_p): New function.
2033         * target.h (target_default_pointer_address_modes_p): Add prototype.
2034         * targhooks.c (default_addr_space_pointer_mode): New function.
2035         (default_addr_space_address_mode): Likewise.
2036         (default_addr_space_valid_pointer_mode): Likewise.
2037         * targhooks.h (default_addr_space_pointer_mode): Add prototype.
2038         (default_addr_space_address_mode): Likewise.
2039         (default_addr_space_valid_pointer_mode): Likewise.
2040         * output.h (default_valid_pointer_mode): Move to ...
2041         * targhooks.h (default_valid_pointer_mode): ... here.
2042         * varasm.c (default_valid_pointer_mode): Move to ...
2043         * targhooks.c (default_valid_pointer_mode): ... here.
2044
2045         * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
2046         instead of targetm.valid_pointer_mode.
2047
2048         * fold-const.c (fit_double_type): Use int_or_pointer_precision.
2049         * tree.c (integer_pow2p): Likewise.
2050         (tree_log2): Likewise.
2051         (tree_floor_log2): Likewise.
2052         (signed_or_unsigned_type_for): Support pointer type of different size.
2053         (int_or_pointer_precision): New function.
2054         * tree.h (int_or_pointer_precision): Add prototype.
2055         * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
2056         * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
2057         incoming pointer type instead of POINTER_SIZE.
2058
2059         * tree.c (build_pointer_type): Use appropriate pointer mode
2060         instead of ptr_mode.
2061         (build_reference_type): Likewise.
2062         * expr.c (store_expr): Likewise.
2063         (expand_expr_addr_expr): Likewise.
2064         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
2065         * cfgexpand.c (expand_debug_expr): Likewise.
2066
2067         * auto-inc-dec.c: Include "target.h".
2068         (try_merge): Use appropriate address mode instead of Pmode.
2069         (find_inc): Likewise.
2070         * combine.c (find_split_point): Likewise.
2071         * cselib.c (cselib_record_sets): Likewise.
2072         * dse.c (replace_inc_dec): Likewise.
2073         (canon_address): Likewise.
2074         * var-tracking.c (replace_expr_with_values): Likewise.
2075         (count_uses): Likewise.
2076         (add_uses): Likewise.
2077         (add_stores): Likewise.
2078         * emit-rtl.c: Include "target.h".
2079         (adjust_address_1): Use appropriate address mode instead of Pmode.
2080         (offset_address): Likewise.
2081         * explow.c (break_out_memory_refs): Likewise.
2082         (memory_address_addr_space): Likewise.
2083         (promote_mode): Likewise.
2084         * expr.c (move_by_pieces): Likewise.
2085         (emit_block_move_via_loop): Likewise.
2086         (store_by_pieces): Likewise.
2087         (store_by_pieces_1): Likewise.
2088         (expand_assignment): Likewise.
2089         (store_constructor): Likewise.
2090         (expand_expr_addr_expr): Likewise.
2091         (expand_expr_real_1): Likewise.
2092         * cfgexpand.c (expand_debug_expr): Likewise.
2093         * ifcvt.c (noce_try_cmove_arith): Likewise.
2094         * regcprop.c (kill_autoinc_value): Likewise.
2095         * regmove.c (try_auto_increment): Likewise.
2096         * reload.c (find_reloads): Likewise.
2097         (find_reloads_address): Likewise.
2098         (find_reloads_address_1): Likewise.
2099         * sched-deps.c: Include "target.h".
2100         (sched_analyze_1): Use appropriate address mode instead of Pmode.
2101         (sched_analyze_2): Likewise.
2102         * sel-sched-dump.c: Include "target.h".
2103         (debug_mem_addr_value): Use appropriate address mode instead of Pmode.
2104         * stor-layout.c (layout_type): Likewise.
2105         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
2106         (multiplier_allowed_in_address_p): Likewise.
2107         (get_address_cost): Likewise.
2108         * varasm.c (make_decl_rtl): Likewise.
2109
2110         * expr.c (expand_assignment): Always convert offsets to appropriate
2111         address mode.
2112         (store_expr): Likewise.
2113         (store_constructor): Likewise.
2114         (expand_expr_real_1): Likewise.
2115
2116         * reload.h (form_sum): Add MODE argument.
2117         * reload.c (form_sum): Add MODE argument, use it instead of Pmode.
2118         Update recursive calls.
2119         (subst_indexed_address): Update calls to form_sum.
2120
2121         * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
2122         * tree-ssa-address.c: Include "target.h".
2123         (templates): Replace by ...
2124         (mem_addr_template_list): ... this new vector.
2125         (TEMPL_IDX): Handle address space numbers.
2126         (gen_addr_rtx): Add address mode argument, use it instead of Pmode.
2127         (addr_for_mem_ref): Add ADDRSPACE argument.  Use per-address-space
2128         instead of global cache.  Update call to gen_addr_rtx.
2129         (valid_mem_ref_p): Update call to addr_for_mem_ref.
2130         * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref.
2131
2132         * rtl.h (convert_memory_address_addr_space): Add prototype.
2133         (convert_memory_address): Define as macro.
2134         * explow.c (convert_memory_address): Rename to ...
2135         (convert_memory_address_addr_space): ... this.  Add ADDRSPACE argument.
2136         Use appropriate pointer and address modes instead of ptr_mode / Pmode.
2137         Update recursive calls.
2138         (memory_address_addr_space): Call convert_memory_address_addr_space.
2139         * expmed.c (make_tree): Likewise.
2140         * expr.c (expand_assignment): Likewise.
2141         (expand_expr_addr_expr_1): Likewise.  Also, add ADDRSPACE argument.
2142         (expand_expr_addr_expr): Likewise.  Also, update call.
2143
2144         * alias.c (find_base_value): Guard pointer size optimizations.
2145         (find_base_term): Likewise.
2146         * rtlanal.c (nonzero_bits1): Likewise.
2147         (num_sign_bit_copies1): Likewise.
2148         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
2149
2150         * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency.
2151         (emit-rtl.o): Likewise.
2152         (auto-inc-dec.o): Likewise.
2153         (sched-deps.o): Likewise.
2154
2155 2009-10-26  Ben Elliston  <bje@au.ibm.com>
2156             Michael Meissner  <meissner@linux.vnet.ibm.com>
2157             Ulrich Weigand  <uweigand@de.ibm.com>
2158
2159         * doc/extend.texi (Named Address Spaces): New section.
2160         * coretypes.h (addr_space_t): New type.
2161         (ADDR_SPACE_GENERIC): New define.
2162         (ADDR_SPACE_GENERIC_P): New macro.
2163
2164         * doc/tm.texi (Named Address Spaces): New section.
2165         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document.
2166         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document.
2167         (TARGET_ADDR_SPACE_SUBSET_P): Document.
2168         (TARGET_ADDR_SPACE_CONVERT): Document.
2169         * target.h (struct gcc_target): Add addr_space substructure.
2170         * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define.
2171         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
2172         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
2173         (TARGET_ADDR_SPACE_CONVERT): Likewise.
2174         (TARGET_ADDR_SPACE_HOOKS): Likewise.
2175         (TARGET_INITIALIZER): Initialize addr_space hooks.
2176         * targhooks.c (default_addr_space_legitimate_address_p): New function.
2177         (default_addr_space_legitimize_address): Likewise.
2178         (default_addr_space_subset_p): Likewise.
2179         (default_addr_space_convert): Likewise.
2180         * targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
2181         (default_addr_space_legitimize_address): Likewise.
2182         (default_addr_space_subset_p): Likewise.
2183         (default_addr_space_convert): Likewise.
2184
2185         * doc/rtl.texi (MEM_ADDR_SPACE): Document.
2186         * rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
2187         (MEM_ADDR_SPACE): New macro.
2188         * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
2189         address space memory attribute.
2190         (mem_attrs_htab_hash): Handle address space memory attribute.
2191         (mem_attrs_htab_eq): Likewise.
2192         (set_mem_attributes_minus_bitpos): Likewise.
2193         (set_mem_alias_set): Likewise.
2194         (set_mem_align): Likewise.
2195         (set_mem_expr): Likewise.
2196         (set_mem_offset): Likewise.
2197         (set_mem_size): Likewise.
2198         (adjust_address_1): Likewise.
2199         (offset_address): Likewise.
2200         (widen_memoy_address): Likewise.
2201         (get_spill_slot_decl): Likewise.
2202         (set_mem_attrs_for_spill): Likewise.
2203         (set_mem_addr_space): New function.
2204         * emit-rtl.h (set_mem_addr_space): Add prototype.
2205         * print-rtl.c (print_rtx): Print address space memory attribute.
2206         * expr.c (expand_assignment): Set address space memory attribute
2207         of generated MEM RTXes as appropriate.
2208         (expand_expr_real_1): Likewise.
2209         * cfgexpand.c (expand_debug_expr): Likewise.
2210         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
2211
2212         * tree.h (struct tree_base): Add address_space bitfield.  Reduce
2213         size of "spare" bitfield.
2214         (TYPE_ADDR_SPACE): New macro.
2215         (ENCODE_QUAL_ADDR_SPACE): Likewise.
2216         (DECODE_QUAL_ADDR_SPACE): Likewise.
2217         (CLEAR_QUAL_ADDR_SPACE): Likewise.
2218         (KEEP_QUAL_ADDR_SPACE): Likewise.
2219         (TYPE_QUALS): Encode type address space.
2220         (TYPE_QUALS_NO_ADDR_SPACE): New macro.
2221         * tree.c (set_type_quals): Set type address space.
2222         (build_array_type): Inherit array address space from element type.
2223         * print-tree.c (print_node_brief): Print type address space.
2224         (print_node): Likewise.
2225         * tree-pretty-print.c (dump_generic_node): Likewise.
2226
2227         * explow.c (memory_address): Rename to ...
2228         (memory_address_addr_space): ... this.  Add ADDRSPACE argument.
2229         Use address-space aware variants of memory address routines.
2230         * recog.c (memory_address_p): Rename to ...
2231         (memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
2232         Use address-space aware variants of memory address routines.
2233         (offsettable_address_p): Rename to ...
2234         (offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
2235         Use address-space aware variants of memory address routines.
2236         * reload.c (strict_memory_address_p): Rename to ...
2237         (strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
2238         Use address-space aware variants of memory address routines.
2239         (maybe_memory_address_p): Rename to ...
2240         (maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
2241         Use address-space aware variants of memory address routines.
2242         * expr.h (memory_address_addr_space): Add prototype.
2243         (memory_address): Define as macro.
2244         * recog.h (memory_address_addr_space_p): Add prototype.
2245         (memory_address_p): Define as macro.
2246         (offsettable_address_addr_space_p): Add prototype.
2247         (offsettable_address_p): Define as macro.
2248         (strict_memory_address_addr_space_p): Add prototype.
2249         (strict_memory_address_p): Define as macro.
2250
2251         * combine.c (find_split_point): Use address-space aware variants
2252         of memory address routines.
2253         * emit-rtl.c (operand_subword): Likewise.
2254         (change_address_1): Likewise.
2255         (adjust_address_1): Likewise.
2256         (offset_address): Likewise.
2257         * expr.c (emit_move_insn): Likewise.
2258         (expand_assignment): Likewise.
2259         (expand_expr_real_1): Likewise.
2260         * recog.c (verify_changes): Likewise.
2261         (general_operand): Likewise.
2262         (offsettable_memref_p): Likewise.
2263         (offsettable_nonstrict_memref_p): Likewise.
2264         (constrain_operands): Likewise.
2265         * reload.c (get_secondary_mem): Likewise.
2266         (find_reloads_toplev): Likewise.
2267         (find_reloads_address): Likewise.
2268         (find_reloads_subreg_address): Likewise.
2269         * reload1.c (reload): Likewise.
2270         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
2271         * rtl.h (address_cost): Add ADDRSPACE argument.
2272         * rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
2273         aware variant of memory address routines.
2274         * loop-invariant.c (create_new_invariant): Update address_cost call.
2275         * tree-ssa-loop-ivopts.c (computation_cost): Likewise.
2276         * fwprop.c (should_replace_address): Add ADDRSPACE argument.
2277         Use address-space aware variant of memory address routines.
2278         (propagate_rtx_1): Update call to should_replace_address.
2279         * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
2280         argument.
2281         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
2282         ADDRSPACE argument.  Use per-address-space instead of global cache.
2283         Use address-space aware variant of memory address routines.
2284         (get_address_cost): Likewise.
2285         (get_computation_cost_at): Update calls.
2286         * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
2287         Use address-space aware variant of memory address routines.
2288         (create_mem_ref_raw): Update call to valid_mem_ref_p.
2289         (most_expensive_mult_to_index): Update call to
2290         multiplier_allowed_in_address_p.
2291
2292         * dwarf2out.c (modified_type_die): Output DW_AT_address_class
2293         attribute to indicate named address spaces.
2294
2295         * varasm.c (get_variable_section): DECLs in named address spaces
2296         cannot be "common".
2297
2298         * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
2299         for addresses in a non-generic address space.
2300
2301         * expr.c (emit_block_move_hints): Do not use libcalls for
2302         memory in non-generic address spaces.
2303         (clear_storage_hints): Likewise.
2304         (expand_assignment): Likewise.
2305
2306         * fold-const.c (operand_equal_p): Expressions refering to different
2307         address spaces are not equivalent.
2308
2309         * rtl.c (rtx_equal_p_cb): MEMs refering to different address
2310         spaces are not equivalent.
2311         (rtx_equal_p): Likewise.
2312         * cse.c (exp_equiv_p): Likewise.
2313         * jump.c (rtx_renumbered_equal_p): Likewise.
2314         * reload.c (operands_match_p): Likewise.
2315
2316         * alias.c (nonoverlapping_memrefs_p): MEMs refering to different
2317         address spaces may alias.
2318         (true_dependence): Likewise.
2319         (canon_true_dependence): Likewise.
2320         (write_dependence_p): Likewise.
2321
2322         * dse.c (canon_address): Handle named address spaces.
2323         * ifcvt.c (noce_try_cmove_arith): Likewise.
2324
2325         * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
2326         * expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
2327         * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
2328         to handle conversions between different address spaces.
2329         * fold-const.c (fold_convert_loc): Likewise.
2330         (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
2331         * tree-pretty-print.c (dump_generic_node): Likewise.
2332         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
2333         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
2334         * tree-inline.c (estimate_operator_cost): Likewise.
2335         * tree-ssa.c (useless_type_conversion_p): Conversions between pointers
2336         to different address spaces are not useless.
2337
2338 2009-10-26  Jakub Jelinek  <jakub@redhat.com>
2339
2340         PR bootstrap/41345
2341         * cfgcleanup.c (trivially_empty_bb_p): New function.
2342         (try_optimize_bb): Use it instead of checking BB_HEAD == BB_END.
2343
2344         PR debug/41828
2345         * dwarf2out.c (add_pubname, add_pubtype, generic_parameter_die,
2346         add_name_and_src_coords_attributes, gen_namespace_die,
2347         dwarf2out_set_name): Handle dwarf2_name returning NULL.
2348
2349 2009-10-26  Nick Clifton  <nickc@redhat.com>
2350
2351         * config.gcc: Add support for RX target.
2352         * config/rx: New directory.
2353         * config/rx/constraints.md: New file.
2354         * config/rx/predicates.md: New file.
2355         * config/rx/rx.c: New file.
2356         * config/rx/rx.h: New file.
2357         * config/rx/rx.md: New file.
2358         * config/rx/rx.opt: New file.
2359         * config/rx/rx-protos.h: New file.
2360         * config/rx/t-rx: New file.
2361         * doc/extend.texi: Document RX function attributes.
2362         * doc/invoke.texi: Document RX specific command line options.
2363         * doc/contrib.texi: Document RX contribution.
2364         * doc/md.texi: Document RX constraints.
2365         * doc/install.texi: Document RX support.
2366
2367 2009-10-26  Michael Matz  <matz@suse.de>
2368
2369         PR tree-optimization/41783
2370         * tree-ssa-alias.c (get_continuation_for_phi): Export, add a special
2371         case for simple diamonds.
2372         * tree-ssa-alias.h (get_continuation_for_phi): Declare.
2373         * tree-ssa-pre.c (translate_vuse_through_block): Add same_valid
2374         argument, use alias oracle to skip some vdefs.
2375         (phi_translate_1): Change call to above, don't allocate new
2376         value ids if they can stay the same.
2377         (compute_avail): Allow vuse walking when looking up references.
2378
2379 2009-10-26  Richard Guenther  <rguenther@suse.de>
2380
2381         PR tree-optimization/41826
2382         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Avoid
2383         access to re-allocated vector fields.
2384
2385 2009-10-26  Richard Guenther  <rguenther@suse.de>
2386
2387         * graphite-sese-to-poly.c (check_poly_representation): Fix
2388         compile without checking.
2389
2390 2009-10-26  Janus Weil  <janus@gcc.gnu.org>
2391
2392         PR fortran/41714
2393         * gimple.h (tree_annotate_all_with_location): Remove prototype.
2394         * gimplify.c (tree_should_carry_location_p,
2395         tree_annotate_one_with_location,tree_annotate_all_with_location):
2396         Remove obsolete functions.
2397
2398 2009-10-25  Kaz Kojima  <kkojima@gcc.gnu.org>
2399
2400         PR target/41813
2401         * config/sh/sh.md (stuff_delay_slot): Don't set T_REG in pattern.
2402
2403 2009-10-25  Richard Guenther  <rguenther@suse.de>
2404
2405         * lto-streamer-in.c (unpack_ts_decl_common_value_fields):
2406         Stream DECL_RESTRICTED_P.
2407         * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
2408
2409 2009-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
2410
2411         * config/mips/mips.c (mips_restore_gp_from_cprestore_slot): Emit
2412         a note when expanding to nothing.
2413
2414 2009-10-25  Richard Guenther  <rguenther@suse.de>
2415
2416         PR middle-end/41814
2417         * tree.c (find_decls_types_r): Deal with Java overloading
2418         BINFO_VIRTUALS for its own purpose.
2419
2420 2009-10-24  Adam Nemet  <anemet@caviumnetworks.com>
2421
2422         * config/mips/predicates.md (hilo_operand): New predicate.
2423         * config/mips/mips.md (<u>mulsidi3_64bit): Change it to a
2424         define_insn.  Correct !ISA_HAS_EXT_INS length from 24 to 28.  Move
2425         splitter part from here ...:
2426         (<u>mulsidi3_64bit splitter for !ISA_HAS_EXT_INS): ... to here.  Swap
2427         op0 and op4 to match the DINS case.
2428         (<u>mulsidi3_64bit splitter for ISA_HAS_EXT_INS): New splitter.
2429
2430 2009-10-24  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2431
2432         PR middle-end/19154
2433         * avr.md (QIDI): Add new mode iterator.
2434         (sbrx_branch<mode>): Create new zero extract bit, test and jump
2435         patterns for all QI thru DI modes combinations.
2436         (sbrx_and_branch<mode>): Create new and based bit test and jump
2437         patterns for QI thru SI modes.
2438         avr.c (avr_out_sbxx_branch): Use only bit number.
2439
2440 2009-10-24  Jan Hubicka  <jh@suse.cz>
2441
2442         * ipa-reference.c (check_call): Noreturn notrhow calls do not write
2443         to memory.
2444         (analyze_function): When analyzing noreturn nothrow call, do not
2445         compute written stats; free bitmaps of vars early if possible.
2446         (generate_summary): Only update bitmaps if computed.
2447         (propagate): Only dump bitmaps if computed.
2448         (ipa_reference_read_summary): Fix pasto.
2449
2450 2009-10-24  Eric Botcazou  <ebotcazou@adacore.com>
2451
2452         * tree-ssa-alias.c (nonaliasing_component_refs_p): Rename into...
2453         (aliasing_component_refs_p): ...this.  Return true if there is no
2454         common base and the base access types have the same alias set.
2455         (indirect_ref_may_alias_decl_p): Adjust for above renaming.
2456         (indirect_refs_may_alias_p): Likewise.
2457
2458 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
2459
2460         PR c/40033
2461         * c-typeck.c (c_finish_stmt_expr): Do not wrap error_mark_node in
2462         a C_MAYBE_CONST_EXPR.
2463
2464 2009-10-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
2465
2466         PR target/41787
2467         * config/rs6000/rs6000.c (struct machine_function): Add
2468         vsx_or_altivec_used_p to record if vector types are used.
2469         (rs6000_expand_to_rtl_hook): Rename from
2470         rs6000_alloc_sdmode_stack_slot.  If VSX, check to see if there are
2471         any vector operations, so if there are, we can set VRSAVE to
2472         non-zero when only floating point vector registers are used.
2473         (TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook.
2474         (rs6000_check_vector_mode): Inner function to check if vector
2475         types are used in the code.
2476         (compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if
2477         vector instructions are used.
2478
2479         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED):
2480         Indicate that VSX registers which overlap floating point
2481         registers, can't be used across a call, since the ABI only states
2482         the scalar part of the register will be saved and restored.
2483
2484 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
2485
2486         PR c/41673
2487         * alias.c (get_alias_set): Call langhook before returning 0 for
2488         types with structural equality.
2489         * c-common.c (c_common_get_alias_set): Use alias set of element
2490         type for arrays with structural comparison.
2491
2492 2009-10-23  Richard Guenther  <rguenther@suse.de>
2493
2494         PR middle-end/41805
2495         * cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and
2496         gimple_call_nothrow_p.
2497
2498 2009-10-23  Richard Guenther  <rguenther@suse.de>
2499
2500         PR tree-optimization/41778
2501         * tree-ssa-pre.c (do_regular_insertion): Only insert if a
2502         redundancy along a path in the CFG we want to optimize for speed
2503         is going to be removed.
2504         (execute_pre): Do partial-PRE only if the function is to be
2505         optimized for speed.
2506         (gate_pre): Do not turn off all of PRE when not optimizing a
2507         function for speed.
2508
2509 2009-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2510
2511         * builtins.c (fold_builtin_cabs): Use validate_arg().
2512         (fold_builtin_cexp): Fix if-logic.
2513         (fold_builtin_1): Check subtype for BUILT_IN_CIMAG.
2514
2515 2009-10-22  Jeff Law  <law@redhat.com>
2516
2517         * ira-lives.c (process_single_reg_class_operands): Update the
2518         hard reg costs for all the hard registers desired by the
2519         single reg class operand.
2520
2521 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
2522
2523         * simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
2524         for rtxes that aren't handled specially.
2525
2526 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
2527
2528         * rtl.h (shallow_copy_rtvec): Declare.
2529         * rtl.c (shallow_copy_rtvec): New function.
2530         * cselib.c (cselib_subst_to_values): Use it.  Only modify an
2531         rtx field if the subrtx has changed.
2532
2533 2009-10-22  Anatoly Sokolov  <aesok@post.ru>
2534
2535         * config/m32c/m32c.c (m32c_function_value_regno_p): New function.
2536         (m32c_function_value): Make static, add new 'outgoing' argument.
2537         (m32c_libcall_value): Make static, add new 'fun' argument.
2538         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2539         * config/m32c/m32c.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
2540         (FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p.
2541         * config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare.
2542         (m32c_function_value, m32c_libcall_value): Delete declaration.
2543
2544 2009-10-22  Diego Novillo  <dnovillo@google.com>
2545
2546         * Makefile.in (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H.
2547
2548 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
2549
2550         * tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white
2551         space.
2552
2553 2009-10-22  Richard Guenther  <rguenther@suse.de>
2554
2555         * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Declare.
2556         * lto-symtab.c (struct lto_symtab_entry_def): Add node member.
2557         (lto_symtab_merge): Do not merge cgraph nodes here.
2558         (lto_symtab_resolve_can_prevail_p): Simplify.
2559         (lto_symtab_resolve_symbols): Store cgraph node.
2560         (lto_symtab_merge_decls_1): Simplify.  Do not drop non-prevailing
2561         functions from the symtab.
2562         (lto_symtab_merge_cgraph_nodes_1): New function.
2563         (lto_symtab_merge_cgraph_nodes): Likewise.
2564
2565 2009-10-22  Richard Guenther  <rguenther@suse.de>
2566
2567         PR lto/41791
2568         * lto-streamer-out.c (lto_output_location): Stream the
2569         system header flag.
2570         * lto-streamer-in.c (lto_input_location): Likewise.
2571
2572 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
2573
2574         * cfgloopmanip.c (duplicate_subloops): Export.
2575         * tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
2576         (transform_to_exit_first_loop): Duplicate bbs starting from
2577         header up to loop->latch instead of exit->src.
2578         Initialize control variable to the correct number of iterations.
2579         (gather_scalar_reductions): Do not register double reductions.
2580         (parallelize_loops): Dump which loop is tested.
2581         Indicate whether the parallelized loop is inner or not.
2582         Remove the innermost-loop requirement.
2583         * cfgloop.h (duplicate_subloops): Export.
2584         * tree-cfg.c (add_phi_args_after_redirect): New function.
2585         (gimple_duplicate_sese_tail): Remove the no-subloops constraint.
2586         Call duplicate_subloops.
2587         Update number of iterations at the exit condition.
2588         Don't redirect nexits always to the loop exit.
2589         Redirect copied edges from latch to the loop exit.
2590
2591 2009-10-22  Jan Hubicka  <jh@suse.cz>
2592
2593         * ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
2594         flag_ltrans check.
2595         * ipa-inline.c (cgraph_mark_inline_edge,
2596         cgraph_decide_inlining_of_small_function,
2597         cgraph_decide_inlining, inline_read_summary): Disable indirect
2598         inlining for WPA for time being.
2599
2600         PR tree-optimize/40556
2601         * ipa-inline.c (cgraph_early_inlining): Fix iterations condition.
2602
2603 2009-10-22  Richard Guenther  <rguenther@suse.de>
2604
2605         * lto-streamer.h (lto_symtab_clear_resolution): Remove.
2606         * lto-symtab.c (lto_symtab_clear_resolution): Likewise.
2607
2608 2009-10-22  Jan Hubicka  <jh@suse.cz>
2609
2610         PR lto/41730
2611         * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
2612         global vars.
2613         (check_call): Handle only indirect calls.
2614         (propagate_bits): Update comment.
2615         (write_node_summary_p): Turn bogus check to assert.
2616         (ipa_reference_write_summary): Stream calls_read_all properly.
2617         (ipa_reference_read_summary): Stream in calls_read_all properly.
2618         (read_write_all_from_decl): New function.
2619         (propagate): Handle OVERWRITABLE nodes and external calls here.
2620         * ipa-pre-const.c (check_call): In IPA mode handle indirect
2621         calls only.
2622         (analyze_function): Do not check visibility here.
2623         (add_new_function): We summary OVERWRITABLE too.
2624         (generate_summary): Stream OVERWRITABLE nodes too.
2625         (propagate): Handle external calls and OVERWRITABLE nodes here.
2626         (local_pure_const): Check visibility here.
2627
2628 2009-10-22  Jan Hubicka  <jh@suse.cz>
2629
2630         * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
2631         (pass_ipa_cp): Register them.
2632         (ipcp_init_stage): Analyze all functions for whopr/lto.
2633         (ipcp_propagate_stage): Skip external calls.
2634         (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
2635         * ipa-reference.c (write_node_summary_p): Fix thinko about
2636         availability.
2637         * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
2638         when in ltrans, skip executing of ipa passes since everything
2639         should've been done.
2640         * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
2641         (inline_generate_summary): Likewise.
2642         (inline_read_summary): New function.
2643         (inline_write_summary): New function.
2644         (pass_ipa_inline): Register new hooks.
2645         * ipa-prop.c: Inlcude lto-streamer.h
2646         (ipa_edge_args_vector): Update declaration.
2647         (ipa_count_arguments, ipa_compute_jump_functions,
2648         ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
2649         (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
2650         ipa_read_node_info): New static functions.
2651         (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
2652         (duplicate_array): Use xmalloc.
2653         (duplicate_ggc_array): New.
2654         (ipa_edge_duplication_hook): Use it.
2655         (ipa_update_after_lto_read): New function.
2656         * ipa-prop.h (ipa_prop_write_jump_functions,
2657         ipa_prop_read_jump_functions): Declare.
2658         (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
2659         jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
2660         (ipa_edge_args_vector): Move into GGC.
2661         (ipa_check_create_edge_args): Update.
2662         (ipa_update_after_lto_read): New.
2663         * passes.c (ipa_write_summaries_1): When in wpa, do not write
2664         summaries.
2665         (ipa_read_summaries): When in ltrans, so not read summaries.
2666         * lto-streamer.c (lto_get_section_name): Add
2667         LTO_section_jump_functions.
2668         * lto-streamer.h (LTO_section_jump_functions): New section.
2669         (produce_asm): Declare.
2670         * lto-cgraph.c (output_cgraph): Output edges in reverse order.
2671         * lto-streamer-out.c (produce_asm): Export.
2672         * lto-streamer-in.c: Include tree-pass.h
2673         (input_function): Free dominance info when done.
2674         (lto_read_body): Push ipa_inline in ltrans stage.
2675         * gengtype.c (open_base_files): Add ipa-prop.h into includes.
2676         * Makefile.in (GTFILES): Add ipa-prop.h
2677
2678 2009-10-22  Matthias Klose  <doko@ubuntu.com>
2679
2680         * doc/install.texi: Document --enable-browser-plugin.
2681
2682 2009-10-21  Vladimir Makarov  <vmakarov@redhat.com>
2683
2684         * doc/invoke.texi (fira-loop-pressure): Update default value.
2685         * opts.c (decode_options): Remove default value setting for
2686         flag_ira_loop_pressure.
2687         * config/ia64/ia64.c (ia64_override_options): Set
2688         flag_ira_loop_pressure up for -O3.
2689         * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
2690
2691 2009-10-21  Sebastian Pop  <sebastian.pop@amd.com>
2692
2693         PR tree-optimization/41497
2694         * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
2695         chrec_dont_know if the evolution function returned by follow_ssa_edge
2696         is constant in the analyzed loop and is not compatible with the
2697         initial value before the loop.
2698         * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
2699
2700 2009-10-21  Joseph Myers  <joseph@codesourcery.com>
2701
2702         * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
2703
2704 2009-10-21  Jakub Jelinek  <jakub@redhat.com>
2705
2706         PR other/25507
2707         * doc/invoke.texi: Document -print-multi-os-directory.
2708
2709 2009-10-21  Jack Howarth  <howarth@bromo.med.uc.edu>
2710
2711         PR c++/41313
2712         * gcc/config/darwin10.h: Use default_emit_unwind_label.
2713         * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
2714         when darwin_emit_unwind_label is used.
2715
2716 2009-10-21  Eric Botcazou  <ebotcazou@adacore.com>
2717
2718         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
2719         order of checks.
2720
2721 2009-10-20  Richard Henderson  <rth@redhat.com>
2722
2723         * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
2724         before emit_post_landing_pad.
2725
2726 2009-10-20  Adam Nemet  <anemet@caviumnetworks.com>
2727
2728         * config/mips/mips.c (mips_binary_cost): Add new argument speed.
2729         Use when calling rtx_costs.
2730         (mips_rtx_costs): Fix formatting.  Use argument speed rather than the
2731         global optimize_size.  Pass speed to mips_binary_cost.
2732
2733 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
2734
2735         * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
2736         of TREE_CONSTANT.
2737
2738 2009-10-20  Richard Sandiford  <rdsandiford@googlemail.com>
2739
2740         * rtl.h (simplify_replace_fn_rtx): Declare.
2741         (wrap_constant, unwrap_constant): Delete.
2742         * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
2743         (expand_debug_expr): Don't call wrap_constant.
2744         * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
2745         (auto_adjust_pair): Fold into...
2746         (propagate_for_debug_subst): ...here.  Only define for AUTO_INC_DEC.
2747         Just return a new value.
2748         (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
2749         otherwise use simplify_replace_rtx.
2750         * cselib.c (wrap_constant): Reinstate old definition.
2751         (cselib_expand_value_rtx_1): Don't wrap constants.
2752         * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
2753         simplify_replace_rtx.
2754         (bypass_block): Fix formatting in calls to simplify_replace_rtx.
2755         * reload1.c (reload): Skip all uses for an insn before adjusting it.
2756         Use simplify_replace_rtx.
2757         * simplify-rtx.c (simplify_replace_fn_rtx): New function,
2758         adapted from...
2759         (simplify_replace_rtx): ...here.  Turn into a wrapper for
2760         simplify_replace_fn_rtx.
2761         (simplify_unary_operation): Don't unwrap CONSTs.
2762         * var-tracking.c (check_wrap_constant): Delete.
2763         (vt_expand_loc_callback): Don't call it.
2764         (vt_expand_loc): Likewise.
2765
2766 2009-10-20  Pascal Obry  <obry@adacore.com>
2767             Eric Botcazou  <ebotcazou@adacore.com>
2768
2769         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
2770
2771 2009-10-20  Michael Matz  <matz@suse.de>
2772
2773         * loop-invariant.c (create_new_invariant): Use different magic number.
2774
2775 2009-10-20  Richard Earnshaw  <rearnsha@arm.com>
2776
2777         PR target/39247
2778         * arm.c (arm_override_options): Forcibly disable hot/cold block
2779         partitioning.
2780
2781 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
2782
2783         PR debug/41739
2784         * haifa-sched.c (try_ready): Skip debug deps updating speculation
2785         status.
2786
2787 2009-10-20  Richard Guenther  <rguenther@suse.de>
2788
2789         * ggc-page.c: Include cfgloop.h.
2790         (struct max_alignment): Drop long double, add void *.
2791         (extra_order_size_table): Add low non-power-of-two multiples
2792         of MAX_ALIGNMENT.  Drop small type-based entries, add
2793         tree_type, cgraph_node and loop.
2794         * alloc-pool.c (struct allocation_object_def): Drop long double
2795         aligning element.
2796
2797 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
2798
2799         PR debug/41340
2800         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
2801         referenced just in DEBUG_INSNs.
2802
2803 2009-10-20  Richard Guenther  <rguenther@suse.de>
2804
2805         PR lto/41761
2806         * gimple.c (gimple_register_type): Make sure we register
2807         the types main variant first.
2808
2809 2009-10-20  Richard Guenther  <rguenther@suse.de>
2810
2811         * gimple.c (gimple_types_compatible_p): Simplify.  Move
2812         cheap checks before hashtable queries.  Add checks for
2813         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
2814
2815 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
2816
2817         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
2818         without size or with size that can't be represented as a host integer.
2819
2820 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
2821
2822         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
2823         the removal of a debug stmt as a significant change.
2824
2825 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
2826
2827         * config/s390/s390.md: Added agen condition to operand
2828         forwarding bypasses.  Added bypass for early address generation
2829         use of int results.  Updated comments.
2830
2831 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
2832
2833         * config/i386/i386.c: Remove signal.h #include.
2834
2835 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
2836
2837         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
2838         * doc/rtl.texi: Document ss_abs.
2839
2840 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
2841
2842         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
2843         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
2844         instead of C_LEX_RAW_STRINGS.
2845         (lex_string): Handle CPP_UTF8STRING.
2846         * c-parser.c (c_parser_postfix_expression): Likewise.
2847         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
2848         (C_LEX_STRING_NO_JOIN): ... this.
2849
2850 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
2851
2852         * config/cris/cris.c (cris_function_value, cris_libcall_value,
2853         cris_function_value_regno_p): New functions.
2854         (cris_promote_function_mode): Update comment.
2855         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2856         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
2857         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
2858         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
2859
2860 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
2861
2862         * unwind-dw2.c (execute_stack_op): Fix operand order for
2863         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
2864
2865 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
2866
2867         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
2868         (lower_stmt) <GIMPLE_BIND>: Add comment.
2869         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
2870         and return.
2871         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
2872         Otherwise lower it and set cannot_fallthru to true.
2873         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
2874         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
2875         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
2876         to true for a noreturn call.  Do not remove statements.
2877         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
2878         Set cannot_fallthru to false on function exit.
2879         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
2880         <GIMPLE_ASSIGN>: Remove.
2881
2882 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2883
2884         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
2885
2886 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2887
2888         * config/s390/s390.c (s390_z10_optimize_cmp): Use
2889         next/prev_active_insn to skip DEBUG_INSNs as well.
2890
2891 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
2892
2893         * config/arm/arm.c (output_move_neon): Use DImode in call to
2894         adjust_address.
2895
2896 2009-10-19  Matthias Klose  <doko@ubuntu.com>
2897
2898         PR target/40134
2899         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
2900
2901 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
2902
2903         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
2904
2905 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2906
2907         PR middle-end/41738
2908         * optabs.c (expand_binop): Make mode of shift count expression mode
2909         of shift count not target.
2910         Remove indent nit.
2911
2912 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
2913
2914         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
2915         case.  Force using values to replace references within the statement.
2916         (convert_local_reference_stmt): Likewise.
2917
2918 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
2919
2920         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
2921         remove a subsequent GOTO or RETURN statement.
2922
2923 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
2924
2925         * config/avr.md (*movqi): Add zero as equally preferable constraint
2926         as general register.
2927         (*movhi): Ditto.
2928
2929 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
2930
2931         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
2932
2933 2009-10-17  Richard Guenther  <rguenther@suse.de>
2934
2935         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
2936
2937 2009-10-17  Richard Guenther  <rguenther@suse.de>
2938
2939         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
2940         operands in COMPONENT_REFs.
2941
2942 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
2943
2944         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
2945         if not defined. Change type of second argument to const_rtx.
2946         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
2947         macro not defined.
2948         * targhooks.h (default_libcall_value): Update prototype.
2949         * target.h (struct gcc_target): Change type of second argument of
2950         libcall_value to const_rtx.
2951         * config/arm/arm.c (arm_libcall_value): Change type of second argument
2952         to const_rtx.
2953         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
2954         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
2955
2956 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
2957
2958         PR debug/40521
2959         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
2960         * cgraphunit.c (cgraph_optimize): Call it.
2961         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
2962         (dwarf2out_assembly_start): ... here.  New hook.
2963         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
2964         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
2965         hook.
2966         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
2967         * sdbout.c (sdb_debug_hooks): Likewise.
2968         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
2969         (vmsdbgout_assembly_start): New hook.
2970
2971 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
2972
2973         * rtl.h (RTL_LOCATION): Fix typo.
2974
2975 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
2976
2977         * print-rtl.c (print_rtx): Print locators in asm_operands
2978         and asm_input.
2979
2980 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
2981
2982         PR debug/41535
2983         * sched-deps.c (depl_on_debug_p): New.
2984         (attach_dep_link): Reject debug deps before nondebug deps.
2985         (add_to_deps_list): Insert debug deps after nondebug deps.
2986         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
2987         deps.
2988         (sd_add_dep): Do not reject debug deps.
2989         (add_insn_mem_dependence): Don't count debug deps.
2990         (remove_from_deps): Likewise.
2991         (sched_analyze_2): Set up mem deps on debug insns.
2992         (sched_analyze_insn): Record reg uses for deps on debug insns.
2993         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
2994         try_ready nondebug insn after debug insn.
2995         * ddg.c (create_ddg_dep_from_intra_loop_link,
2996         create_ddg_dep_no_link): Don't reject debug deps.
2997
2998 2009-10-16  Richard Guenther  <rguenther@suse.de>
2999
3000         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
3001         (maybe_merge_incomplete_and_complete_type): Likewise.
3002         (lto_symtab_merge): Do not call them.  Do not warn for
3003         complete vs. incomplete compatible types.
3004         (lto_symtab_merge_decls_2): Simplify.
3005         * gimple.c (gimple_force_type_merge): Remove.
3006         (gimple_types_compatible_p): Make it static.
3007         * gimple.h (gimple_force_type_merge): Remove.
3008         (gimple_types_compatible_p): Likewise.
3009
3010 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
3011
3012         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
3013         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
3014
3015 2009-10-16  Richard Guenther  <rguenther@suse.de>
3016
3017         PR tree-optimization/41728
3018         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
3019         if fold_stmt did anything.
3020
3021 2009-10-16  Richard Guenther  <rguenther@suse.de>
3022
3023         PR lto/41715
3024         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
3025         (maybe_fixup_handled_component): New function.
3026         (input_gimple_stmt): Fixup mismatched decl replacements.
3027
3028 2009-10-16  Richard Guenther  <rguenther@suse.de>
3029
3030         PR lto/41713
3031         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
3032         the same as VAR_DECL.
3033
3034 2009-10-16  Richard Guenther  <rguenther@suse.de>
3035
3036         * gimple.c (iterative_hash_gimple_type): For integer types
3037         also hash their minimum and maximum values and the string flag.
3038         For array types hash their domain and the string flag.
3039
3040 2009-10-16  Richard Guenther  <rguenther@suse.de>
3041
3042         * gimple.c (gimple_types_compatible_p): Restrict completing
3043         types to record or unions.  Simplify completion.
3044         Do not merge records or unions with different
3045         TYPE_STRUCTURAL_EQUALITY_P tag.
3046         (iterative_hash_gimple_type): Restrict non-recursing into
3047         pointer targets for records and unions.
3048
3049 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
3050
3051         PR debug/41717
3052         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
3053         * dwarf2out.c (mem_loc_descriptor): Don't handle
3054         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
3055         punt if it is not lowpart subreg or if inner mode isn't
3056         MODE_INT.
3057
3058 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3059
3060         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
3061         investigating previous or next insns.
3062
3063 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
3064
3065         * tree-sra.c (build_ref_for_offset_1): Update comment.
3066
3067 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
3068
3069         * config/s390/s390.md (atype): Added missing values.
3070
3071 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3072
3073         PR target/41702
3074         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
3075         (casesi64p): Update pattern to reflect above.
3076
3077 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
3078
3079         PR rtl-optimization/41697
3080         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
3081
3082 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
3083
3084         PR target/23983
3085         * config/rs6000/predicates.md: Update copyright year.
3086         * config/rs6000/altivec.md: Ditto.
3087
3088         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
3089         (MD_INCLUDES): Add a2.md.
3090
3091         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
3092         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
3093         (builtin_classify): New static vector to classify various builtins
3094         to get the tree attributes correct.
3095         (def_builtin): Set the attributes of builtins based on what the
3096         builtin does (i.e. memory operation, floating point, saturation
3097         need special attributes, others are pure functions).
3098
3099         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
3100         the builtins.
3101         (enum rs6000_builtins): Include rs6000-builtin.def to define the
3102         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
3103         RS6000_BUILTIN_COUNT.
3104         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
3105         MAX_RS6000_BUILTINS.
3106
3107         * config/rs6000/rs6000-builtin.def: New file that combines the
3108         builtin enumeration name and attributes.
3109
3110 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
3111
3112         * config/i386/linux.h (ASM_SPEC): Add --32.
3113
3114 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
3115
3116         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
3117         and DW_TAG_template_alias.
3118         (dwarf_attr_name): Handle DW_AT_main_subprogram,
3119         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
3120         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
3121         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
3122         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
3123         and DW_AT_GNU_odr_signature.
3124         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
3125         DW_FORM_flag_present and DW_FORM_ref_sig8.
3126         (output_signature): Only print name on the first byte.
3127         (output_die): Likewise for dw_val_class_data8.
3128
3129 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
3130
3131         * doc/invoke.texi: Clarify that most optimizations are not enabled
3132         without -O.
3133
3134 2009-10-15  Richard Guenther  <rguenther@suse.de>
3135
3136         PR lto/41668
3137         * gimple.c (compare_type_names_p): Handle anonymous names
3138         differently based on new mode argument.
3139         (gimple_types_compatible_p): For structs also compare the tags.
3140         (iterative_hash_type_name): Rename to ...
3141         (iterative_hash_name): ... this.  Hash all names.
3142         (iterative_hash_gimple_type): Fix hashing the struct tag of
3143         pointer targets.  Hash field decl names.
3144
3145 2009-10-15  Richard Guenther  <rguenther@suse.de>
3146
3147         PR lto/41669
3148         * gimple.c (gimple_get_alias_set): Avoid recursing on
3149         invalid type topology.
3150
3151 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3152
3153         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
3154
3155 2009-10-15  Richard Guenther  <rguenther@suse.de>
3156
3157         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
3158
3159 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
3160
3161         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
3162         add --with-tune{,-32,-64} configured default for -mtune if explicit
3163         -mcpu is used.
3164
3165 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
3166
3167         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
3168
3169 2009-10-14  DJ Delorie  <dj@redhat.com>
3170
3171         * config/h8300/h8300.c (F): New.
3172         (Fpa): New.
3173         (h8300_emit_stack_adjustment): Call them.
3174         (push): Likewise.
3175         (h8300_push_pop): Likewise.
3176         (h8300_expand_prologue): Likewise.
3177         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
3178         (MUST_USE_SJLJ_EXCEPTIONS): Define.
3179         (INCOMING_RETURN_ADDR_RTX): Define.
3180         (INCOMING_FRAME_SP_OFFSET): Define.
3181         (DWARF_CIE_DATA_ALIGNMENT): Define.
3182
3183 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
3184
3185         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
3186         fields in builtin structs.
3187         (finalize_record_size): Likewise.
3188
3189 2009-10-14  Richard Guenther  <rguenther@suse.de>
3190
3191         * gimple.c (gtc_ob): New global.
3192         (struct type_pair_d): Replace pointers with type UIDs.
3193         (type_pair_hash): Adjust.
3194         (type_pair_eq): Likewise.
3195         (lookup_type_pair): Likewise.  Allocate from an obstack.
3196         (gimple_force_type_merge): Adjust.
3197         (gimple_types_compatible_p): Likewise.
3198         (free_gimple_type_tables): Free the obstack.
3199
3200 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
3201
3202         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
3203         stmts setting DEBUG_EXPR_DECLs.
3204
3205         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
3206         Don't crash if mode1 is VOIDmode.
3207
3208 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
3209
3210         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
3211         * params.h (IRA_LOOP_RESERVED_REGS): New.
3212         * tree-pass.h (pass_subregs_of_mode_init,
3213         pass_subregs_of_mode_finish): Remove.
3214         * passes.c (pass_subregs_of_mode_init,
3215         pass_subregs_of_mode_finish): Remove.
3216         (pass_reginfo_init): Move before loop optimizations.
3217         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
3218         * common.opt (fira-loop-pressure): New.
3219         * toplev.h (flag_ira_loop_pressure): New.
3220         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
3221         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
3222         Make external and void type functions.
3223         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
3224         pass_subregs_of_mode_finish): Remove.
3225         * ira-costs.c (init_costs): Call init_subregs_of_mode.
3226         * regmove.c: Include ira.h.
3227         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
3228         register pressure calculation in loops.
3229         * loop-invariant.c: Include REGS_H and ira.h.
3230         (struct loop_data): New members max_reg_pressure, regs_ref, and
3231         regs_live.
3232         (struct invariant): New member orig_regno.
3233         (curr_loop): New variable.
3234         (find_exits): Initialize regs_ref and regs_live.
3235         (create_new_invariant): Initialize orig_regno.
3236         (get_cover_class_and_nregs): New.
3237         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
3238         array.  Add code for flag_ira_loop_pressure.
3239         (gain_for_invariant): Make new_regs an array.  Add code for
3240         flag_ira_loop_pressure.
3241         (best_gain_for_invariant): Ditto.
3242         (set_move_mark): New parameter gain.  Use it for debugging output.
3243         (find_invariants_to_move): Make regs_needed and new_regs an array.
3244         Add code for flag_ira_loop_pressure.
3245         (move_invariant_reg): Set up orig_regno.
3246         (move_invariants): Set up reg classes for pseudos for
3247         flag_ira_loop_pressure.
3248         (free_loop_data): Clear regs_ref and regs_live.
3249         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
3250         get_regno_cover_class, change_pressure, mark_regno_live,
3251         mark_regno_death, mark_reg_store, mark_reg_clobber,
3252         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
3253         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
3254         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
3255         register pressure calculation in loops if new regs were added.
3256         Call finish_subregs_of_mode.
3257         * opts.c (decode_options): Set up flag_ira_loop_pressure.
3258         * Makefile.in (loop-invariant.o): Add ira.h.
3259         (regmove.o): Ditto.
3260         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
3261         Describe.
3262         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
3263
3264 2009-10-14  Richard Guenther  <rguenther@suse.de>
3265
3266         * lto-symtab.c (lto_symtab_compatible): Fold in ...
3267         (lto_symtab_merge): ... here.  Rewrite both to take the
3268         prevailing and a to-be-merged entry and to queue diagnostics properly.
3269         (lto_symtab_resolve_replaceable_p): New predicate for
3270         symbol resolution.
3271         (lto_symtab_resolve_can_prevail_p): Likewise.
3272         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
3273         handles merging commons by choosing the largest decl.  Fold
3274         in code that gives ODR errors.
3275         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
3276         diagnostics here.
3277         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
3278         case of no prevailing decl here.  Diagnose mismatches
3279         in object types here.  Drop all but the prevailing decls.
3280         (lto_symtab_prevailing_decl): Return the single prevailing decl.
3281         * lto-streamer-in.c (lto_input_tree_ref): Deal with
3282         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
3283
3284 2009-10-14  Richard Guenther  <rguenther@suse.de>
3285
3286         PR lto/41521
3287         * lto-streamer-in.c (input_bb): Replace debug stmts with
3288         nops instead of dropping them.
3289
3290 2009-10-14  Nick Clifton  <nickc@redhat.com>
3291
3292         * gcc/doc/extended.texi: Replace the dash character with @minus{}
3293         in situations where it is being used as a minus symbol.
3294         * gcc/doc/tm.texi: Likewise.
3295         * gcc/doc/md.texi: Likewise.
3296
3297 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
3298
3299         PR preprocessor/41543
3300         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
3301         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
3302         * tree.c: Include intl.h.
3303         (expand_location): Handle BUILTINS_LOCATION.
3304         * Makefile.in (tree.o): Depend on intl.h.
3305
3306         PR debug/41695
3307         * dwarf2out.c (dwarf2out_var_location): Always clear
3308         last_postcall_label when changing last_label.
3309
3310 2009-10-14  Pascal Obry  <obry@adacore.com>
3311
3312         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
3313         (process_command): Handle -E as done with -c and -S.  Do not add
3314         the target executable suffix to the output file when -E is used.
3315         (main): Adjust error message accordingly.
3316
3317 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
3318
3319         PR debug/41343
3320         PR debug/41447
3321         PR debug/41264
3322         PR debug/41338
3323         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
3324         decl with rtl.
3325         (tree_code_size): Likewise.
3326
3327 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3328
3329         * builtins.c (fold_builtin_1): Support complex "arc" functions.
3330         * real.h (HAVE_mpc_arc): Define.
3331
3332 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
3333
3334         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
3335         (struct builtin_description): Add fndecl field.
3336         (bdesc): Remove const qualifier.  Update initializer.
3337         (sh_media_init_builtins): Remove const qualifier for d.  Record
3338         the result of add_builtin_function to the fndecl field.
3339         (sh_builtin_decl): New.
3340         (sh_media_builtin_decl): New.
3341
3342 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
3343
3344         PR target/38948
3345         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
3346         requests between special registers.
3347
3348 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
3349
3350         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
3351
3352 2009-10-13  Richard Henderson  <rth@redhat.com>
3353
3354         PR tree-optimization/41377
3355         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
3356         (cleanup_empty_eh_merge_phis): New change_region parameter;
3357         pass it on to redirect_eh_edge_1.  Update callers.
3358         (cleanup_empty_eh_unsplit): Don't require an existing EH label
3359         at the destination block.
3360
3361 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
3362
3363         * passes.c (register_pass): Replaced gcc_unreachable by
3364         fatal_error on failure. Mentions plugins in comments & messages.
3365
3366 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
3367
3368         PR target/41693
3369         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
3370         * sched-vis.c (print_value): Use it.
3371         * cselib.c (cselib_hash_rtx): Likewise.
3372         * print-rtl.c (print_rtx): Likewise.
3373         * cfgexpand.c (expand_debug_rtx): Likewise.
3374         * var-tracking.c (vt_expand_loc_callback): Likewise.
3375
3376 2009-10-13  Richard Guenther  <rguenther@suse.de>
3377
3378         PR lto/41565
3379         * opts.c (handle_option): Split out code to handle setting
3380         the options flag var ...
3381         (set_option): ... here.
3382         * opts.h (set_option): Declare.
3383         * lto-opts.c (register_user_option_p): Include -fexceptions
3384         and all position independent code variants.
3385         (handle_common_option): Remove.
3386         (lto_reissue_options): Use set_option.
3387
3388 2009-10-13  Martin Jambor  <mjambor@suse.cz>
3389
3390         PR tree-optimization/41661
3391         * ipa-prop.c (compute_complex_pass_through): Allow only operations
3392         that are tcc_comparisons or do not change the type in any
3393         un-usleless way.
3394         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
3395         folding tcc_comparison operations.
3396
3397 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3398
3399         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
3400         properly.
3401
3402 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
3403
3404         PR debug/41343
3405         PR debug/41447
3406         PR debug/41264
3407         PR debug/41338
3408         * tree.def (DEBUG_EXPR_DECL): New.
3409         * rtl.def (DEBUG_EXPR): New.
3410         * gengtype.c (adjust_field_rtx_def): Handle it.
3411         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
3412         (insert_debug_temp_for_var_def): ... this.  Drop support for
3413         moving.  Take iterator for def stmt; insert debug stmt before it.
3414         Scan early for use count and kind in debug stmts.
3415         (propagate_defs_into_debug_stmts): Rename to...
3416         (insert_debug_temps_for_defs): ... this.  Likewise.
3417         * tree.h (DEBUG_TEMP_UID): New.
3418         * tree.c (next_debug_decl_uid): New.
3419         (make_node_stat): Count debug decls separately.
3420         (copy_node_stat): Likewise.
3421         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
3422         * var-tracking.c (dv_is_decl_p): Recognize it.
3423         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
3424         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
3425         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
3426         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
3427         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
3428         (cselib_hash_rtx): Likewise.
3429         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
3430         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
3431         debug bind stmts.
3432         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
3433         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
3434         * rtl.c (copy_rtx): Likewise.
3435         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
3436         * print-rtl.c (print_rtx): Likewise.
3437         * sched-vis.c (print_value): Likewise.
3438         (print_insn): Handle DEBUG_EXPR_DECL.
3439         * tree-dump.c (dequeue_and_dump): Likewise.
3440         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
3441         * gimple-iterator (gsi_replace): Check for same lhs.
3442         (gsi_remove): Insert debug temps.
3443         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
3444         (move_computations_stmt): Drop explicit propagation into debug stmts.
3445         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
3446         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
3447         * tree-ssa-sink.c (statement_sink_location): Likewise.
3448         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
3449         * tree-ssanames.c (release_ssa_name): Adjust for rename.
3450         * tree-flow.h: Likewise.
3451         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
3452         debug temps without values.
3453         (eliminate_unnecessary_stmts): Don't discard just-inserted
3454         debug stmts.
3455
3456 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
3457
3458         PR target/26515
3459         * config/cris/cris.md (andu): Check that operand 1 is one of the
3460         general registers.  Fix typo in head comment.
3461
3462 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
3463
3464         * config/i386/i386.md (vswapmov): New.
3465         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
3466         (ix86_function_ms_hook_prologue): New.
3467         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
3468         * configure.ac: Test for swap suffix support in as.
3469         * configure: Rebuild.
3470
3471 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
3472
3473         PR target/41680
3474         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
3475         paradoxical subregs to prevent partial register stalls if the inner
3476         mode is integer mode.
3477
3478 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
3479
3480         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
3481
3482 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
3483
3484         PR c++/41570
3485         * gcc/dwarf2out.c (template_parameter_pack_die,
3486         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
3487
3488 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
3489
3490         PR debug/41616
3491         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
3492         on updates too.
3493         (maybe_register_def): Likewise.  Take stmt iterator.
3494         (rewrite_update_stmt): Take stmt iterator and pass it on.
3495         (rewrite_update_enter_block): Pass stmt iterator.
3496
3497 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3498
3499         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
3500         (spu_builtin_decl): New function.
3501
3502 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
3503
3504         * config/i386/i386.md (SWIM): New mode iterator.
3505         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
3506         using SWIM mode iterator.
3507         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
3508         patterns using SWI48 mode iterator.
3509         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
3510         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
3511         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
3512         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
3513         patterns using SWI248 mode iterator.
3514         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
3515         gen_x86_movdicc_0_m1_rex64 for renamed function
3516
3517 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
3518             Eric Botcazou  <ebotcazou@adacore.com>
3519
3520         PR target/33743
3521         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
3522         * config/sparc/sol2-unwind.h: New file.
3523
3524 2009-10-11  Olivier Hainque  <hainque@adacore.com>
3525             Eric Botcazou  <ebotcazou@adacore.com>
3526
3527         PR target/33743
3528         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
3529         * config/i386/sol2-unwind.h: New file.
3530
3531 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
3532
3533         PR target/41665
3534         * config/i386/i386.md (addsi_1_zext): Get the proper second
3535         operand for lea.
3536
3537 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
3538
3539         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
3540         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
3541         replacement value.
3542
3543 2009-10-11  Richard Guenther  <rguenther@suse.de>
3544
3545         * gimple.c (iterative_hash_type_name): Do not handle special
3546         anonymous names.
3547
3548 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
3549
3550         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
3551         (*setcc_si_1_and): Ditto.
3552         (*setcc_si_1_movzbl): Ditto.
3553         (*setcc_<mode>_2): Ditto.
3554         (*setcc_qi): Rename from *setcc_1.
3555         (*setcc_qi_slp): Rename from *setcc_2.
3556
3557         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
3558         (*zero_extendqisi2_movzbw_and splitter): Ditto.
3559
3560         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
3561         "if" condition, there is already assert with reload_completed present.
3562
3563 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
3564
3565         * plugin.c (try_init_one_plugin): Improve constness of variable err.
3566
3567 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
3568
3569         * doc/install.texi (Final install): Refer to
3570         http://gcc.gnu.org/bugs/ for bug reporting.
3571
3572 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
3573
3574         * configure.ac: Add test for dci instruction.
3575         * configure: Regenerate.
3576         * config.in: Likewise.
3577         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
3578         * doc/invoke.texi: Add cpu_type 476 and 476fp.
3579         (-mmulhw): Add 476 to description.
3580         (-mdlmzb): Likewise.
3581         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
3582         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
3583         (processor_target_table): Add 476 and 476fp entries.
3584         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
3585         (rs6000_issue_rate): Add CPU_PPC476.
3586         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
3587         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
3588         (processor_type): Add PROCESSOR_PPC476.
3589         (EXTRA_SPECS): Add asm_cpu_476 string.
3590         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
3591         (define_attr "cpu"): Add ppc476.
3592         Include 476.md.
3593         Update comments for 476.
3594         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
3595         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
3596         Update copyright year.
3597         * config/rs6000/476.md: New file.
3598         * config/rs6000/40x.md: Add description for "isel" attribute.
3599         Update copyright year.
3600         * config/rs6000/440.md: Likewise.
3601         * config/rs6000/603.md: Likewise.
3602         * config/rs6000/6xx.md: Likewise.
3603         * config/rs6000/7450.md: Likewise.
3604         * config/rs6000/7xx.md: Likewise.
3605         * config/rs6000/8540.md: Likewise.
3606         * config/rs6000/cell.md: Likewise.
3607         * config/rs6000/e300c2c3.md: Likewise.
3608         * config/rs6000/e500mc.md: Likewise.
3609         * config/rs6000/mpc.md: Likewise.
3610         * config/rs6000/power4.md: Likewise.
3611         * config/rs6000/power5.md: Likewise.
3612         * config/rs6000/power6.md: Likewise.
3613         * config/rs6000/power7.md: Likewise.
3614         * config/rs6000/rios1.md: Likewise.
3615         * config/rs6000/rios2.md: Likewise.
3616         * config/rs6000/rs64.md: Likewise.
3617
3618 2009-10-10  Richard Guenther  <rguenther@suse.de>
3619
3620         PR tree-optimization/41654
3621         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
3622         a cond expr before calling gimple_cond_set_condition_from_tree.
3623         (ifcombine_iforif): Likewise.
3624
3625 2009-10-09  Ian Lance Taylor  <iant@google.com>
3626
3627         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
3628         * configure: Rebuild.
3629
3630 2009-10-09  Neil Vachharajani <nvachhar@google.com>
3631
3632         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
3633         deprecated.
3634
3635 2009-10-09  Richard Guenther  <rguenther@suse.de>
3636
3637         PR lto/41638
3638         * target-def.h (TARGET_BUILTIN_DECL): Define.
3639         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
3640         * target.h (struct gcc_target): Add builtin_decl target hook.
3641         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
3642         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
3643         target builtins.
3644         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
3645         not gcc_unreachable.
3646         (lto_output_builtin_tree): Sorry if the target does not support
3647         streaming target builtins.
3648         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
3649         (rs6000_builtin_decl): New function.
3650         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
3651         (ix86_builtin_decl): New function.
3652
3653 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
3654
3655         PR preprocessor/41445
3656         * c-ppoutput.c (do_line_change): New function.
3657         (cb_line_change): Use it.
3658         (scan_translation_unit): Call do_line_change if
3659         avoid_paste or PREV_WHITE and token location is on a different line
3660         than print.src_line.
3661
3662         PR debug/40521
3663         * dwarf2out.c (dwarf2out_init): Test whether
3664         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
3665         it is defined.
3666
3667         PR rtl-optimization/41646
3668         * calls.c (expand_call): For BLKmode types returned in registers
3669         avoid likely spilled hard regs in copy_blkmode_from_reg generated
3670         insns.
3671
3672 2009-10-09  Richard Guenther  <rguenther@suse.de>
3673
3674         PR tree-optimization/41634
3675         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
3676         we remove the correct elements.
3677         (optimize_stmt): Make sure to update stmt operands before
3678         optimizing redundancies.
3679
3680 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3681
3682         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
3683
3684 2009-10-09  Richard Guenther  <rguenther@suse.de>
3685
3686         PR driver/41637
3687         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
3688         globals.
3689         (lto_wrapper_exit): New function.
3690         (fatal): Use it.
3691         (fatal_perror): Likewise.
3692         (fork_execute): Use global args_name, do not free it.
3693         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
3694         * lto-streamer.h: Remove duplicate prototypes.
3695
3696 2009-10-09  Richard Guenther  <rguenther@suse.de>
3697
3698         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
3699         before calling stmt_can_throw_external.
3700
3701 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
3702
3703         PR tree-optimization/40071
3704         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
3705         pointer if the original data reference doesn't conflict with the
3706         created vector data reference.  Fix long line.
3707
3708 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
3709
3710         * config/i386/i386.md (any_div): New code iterator.
3711         (u): Handle div and udiv.
3712         (sgnprefix): Ditto.
3713         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
3714         code iterator.
3715         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
3716         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
3717         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
3718         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
3719
3720 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
3721
3722         * gcc.c (main): Remove trailing "." from diagnostics.
3723
3724 2009-10-08  Cary Coutant  <ccoutant@google.com>
3725
3726         Add support for debugging with ICF (Identical Code Folding).
3727         * calls.c (debug.h): New #include.
3728         (emit_call_1): Call virtual_call_token debug hook.
3729         * common.opt (-fenable-icf-debug): New option.
3730         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
3731         locations in the source).
3732         (poc_label_num): New variable.
3733         (dcall_entry, vcall_entry): New typedefs.
3734         (dcall_table, vcall_table): New variables.
3735         (struct vcall_insn): New type.
3736         (vcall_insn_table): New variable.
3737         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
3738         (size_of_dcall_table): New function.
3739         (output_dcall_table): New function.
3740         (size_of_vcall_table): New function.
3741         (output_vcall_table): New function.
3742         (dwarf2out_direct_call): New function.
3743         (vcall_insn_table_hash): New function.
3744         (vcall_insn_table_eq): New function.
3745         (dwarf2out_virtual_call_token): New function.
3746         (dwarf2out_virtual_call): New function.
3747         (dwarf2out_init): Allocate new tables and sections.
3748         (prune_unused_types): Mark DIEs referenced from direct call table.
3749         (dwarf2out_finish): Output direct and virtual call tables.
3750         * final.c (final_scan_insn): Call direct_call and virtual_call
3751         debug hooks.
3752         * debug.h (struct gcc_debug_hooks): Add direct_call,
3753         virtual_call_token, virtual_call hooks.
3754         (debug_nothing_uid): New function.
3755         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
3756         (debug_nothing_uid): New function.
3757         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
3758         (xcoff_debug_hooks): Likewise.
3759         * sdbout.c (sdb_debug_hooks): Likewise.
3760         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
3761         * doc/invoke.texi (-fenable-icf-debug): New option.
3762
3763 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
3764
3765         PR debug/41353
3766         * regmove.c (regmove_backward_pass): Replace src with dst in the
3767         debug insn, and check for dst before rather than after.
3768
3769 2009-10-08  Janis Johnson <janis187@us.ibm.com>
3770
3771         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
3772         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
3773
3774 2009-10-08  Jan Hubicka  <jh@suse.cz>
3775
3776         PR middle-end/41626
3777         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
3778         do not mark cgraph nodes as needed.
3779         (record_references_in_initializer): Add new only_vars parameter.
3780         * cgraph.h (record_references_in_initializer): New parameter.
3781         * varasm.c (assemble_variable): Update call.
3782         * varpool.c (varpool_analyze_pending_decls): Always look for
3783         referenced vars.
3784
3785 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
3786
3787         * config/avr/avr.c (last_insn_address) Remove variable.
3788         (expand_prologue): Don't initialise last_insn_address variable.
3789         (final_prescan_insn): Don't output insn size.
3790         * config/avr/avr.opt (msize): Remove switch.
3791         * doc/invoke.texi (AVR Options): Remove documentation of -msize
3792         switch.
3793
3794 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
3795
3796         * combine.c (label_tick_ebb_start): Fix comment.
3797         (combine_instructions): Set label_tick and label_tick_ebb_start before
3798         calling setup_incoming_promotions.  Start them from 1.  Increment
3799         label_tick instead of deriving it from the BB index.  Rather than
3800         comparing ticks use the block from the previous iteration to decide
3801         whether to start a new EBB.  Remove empty lines before function.
3802
3803 2009-10-08  Michael Matz  <matz@suse.de>
3804
3805         PR middle-end/41573
3806         * builtins.c (fold_builtin_isascii): Use fold_build2.
3807         (fold_builtin_isdigit): Ditto.
3808         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
3809         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
3810         remove_useless_stmts_cond, remove_useless_stmts_tf,
3811         remove_useless_stmts_tc, remove_useless_stmts_bind,
3812         remove_useless_stmts_goto, remove_useless_stmts_label,
3813         remove_useless_stmts_1, remove_useless_stmts,
3814         pass_remove_useless_stmts): Remove.
3815         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
3816         * passes.c (init_optimization_passes): Don't add
3817         pass_remove_useless_stmts.
3818         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
3819         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
3820         static constants.
3821         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
3822         for static constants.
3823         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
3824         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
3825
3826 2009-10-08  Richard Guenther  <rguenther@suse.de>
3827
3828         * gimple.c (free_gimple_type_tables): New function.
3829         * gimple.h (free_gimple_type_tables): Declare.
3830
3831 2009-10-07  Mark Heffernan  <meheff@google.com>
3832
3833         * ipa-prop.c (ipa_print_node_params) Only print
3834         names of named arguments.
3835
3836 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
3837
3838         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
3839         being statically linked.
3840
3841 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3842
3843         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
3844
3845 2009-10-08  Jan Hubicka  <jh@suse.cz>
3846
3847         PR bootstrap/41620
3848         * ipa.c (cgraph_externally_visible_p,
3849         function_and_variable_visibility,
3850         whole_program_function_and_variable_visibility): Skip non-finalized
3851         nodes.
3852
3853 2009-10-08  Nick Clifton  <nickc@redhat.com>
3854
3855         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
3856         CONST_DOUBLEs.
3857
3858 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
3859
3860         PR bootstrap/37739
3861         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
3862
3863 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
3864
3865         PR c/41182
3866         * c-common.c (c_fully_fold_internal): Strip nops from the result
3867         of recursive calls to c_fully_fold_internal.
3868         (c_wrap_maybe_const): New.
3869         (c_save_expr): Use c_wrap_maybe_const.
3870         * c-common.h (c_wrap_maybe_const): Declare.
3871         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
3872         build_binary_op): Use c_wrap_maybe_const.
3873
3874 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3875
3876         * real.c: Fix comment to reflect actual exponent size.
3877
3878 2009-10-08  Ben Elliston  <bje@au.ibm.com>
3879
3880         * config/rs6000/a2.md: Add FSF comment header.
3881
3882 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
3883
3884         * config/i386/i386.md (any_extend): New code iterator.
3885         (u, s): New code attributes.
3886         (sgnprefix): Ditto.
3887         (DWIH): Rewrite as code iterator for SI and DI modes.
3888         (DWI): Rewrite as mode attribute.
3889         (dwi): New mode attribute.
3890         (di): Depend on SI mode and DI mode.
3891         (doubleint_general_operand): Remove mode attribute.
3892
3893         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
3894         DWIH mode iterator.
3895
3896         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
3897         (*sub<mode>3_doubleword): Ditto.
3898
3899         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
3900         using SWIM248 mode iterator.
3901         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
3902         using SWI48 mode iterator.
3903         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
3904         patterns using DWIH mode iterator and any_extend code iterator.
3905         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
3906         using any_extend code iterator.
3907         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
3908         patterns using DWIH mode iterator and any_extend code iterator.
3909         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
3910         using any_extend code iterator.
3911         (<s>mul<mode>3_highpart): Macroize expander from
3912         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
3913         and any_extend code iterator.
3914         (*<s>muldi3_highpart_1): Macroize insn from
3915         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
3916         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
3917         patterns using any_extend code iterator.
3918         (*<s>mulsi3_highpart_zext): Macroize insn from
3919         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
3920
3921 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
3922
3923         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
3924         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
3925         refering to a DIE with DW_AT_const_value.
3926
3927 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
3928
3929         PR middle-end/22072
3930         * ira-lives.c (check_and_make_def_conflict): Process all operands.
3931
3932 2009-10-06  Jan Hubicka  <jh@suse.cz>
3933
3934         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
3935         correctly.
3936
3937 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
3938
3939         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
3940         *lea_2_rex64): Move before *add<mode>_1 pattern.
3941
3942 2009-10-07  Jan Hubicka  <jh@suse.cz>
3943
3944         * collect2.c (main): Add -fno-whole-program.
3945         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
3946
3947 2009-10-07  Jan Hubicka  <jh@suse.cz>
3948
3949         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
3950         has no address taken.
3951         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
3952         never needed.
3953         (cgraph_clone_node): Clear externally_visible flag for clones.
3954         * cgraph.h (cgraph_only_called_directly_p,
3955         cgraph_can_remove_if_no_direct_calls_p): New predicates.
3956         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
3957         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
3958         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
3959         ipcp_insert_stage): Likwise.
3960         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
3961         externally_visible flag.
3962         (verify_cgraph_node): Verify that inline clones look right.
3963         (process_function_and_variable_attributes): Do not set
3964         externally_visible flags.
3965         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
3966         been already run.
3967         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
3968         boundaries.
3969         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
3970         clear externally_visible when turning into inline clones
3971         (cgraph_mark_inline_edge): Use new predicates.
3972         (cgraph_estimate_growth): Likewise.
3973         (cgraph_decide_inlining): Likewise.
3974         * ipa.c (cgraph_postorder): Likewise.
3975         (cgraph_remove_unreachable_nodes): Likewise; sanity check
3976         that inline clones are not needed.
3977         (cgraph_externally_visible_p): New predicate.
3978         (function_and_variable_visibility): Add whole_program parameter;
3979         always set externally_visible flag; handle COMDAT function
3980         privatization.
3981         (local_function_and_variable_visibility): New function.
3982         (gate_whole_program_function_and_variable_visibility): New function.
3983         (whole_program_function_and_variable_visibility): New function.
3984         (pass_ipa_whole_program_visibility): New function.
3985         * passes.c  (init_optimization_passes): Add whole program visibility
3986         pass.
3987         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
3988         not care about needed/reachable flags.
3989         * varpool.c: Include flags.h
3990         (decide_is_variable_needed): When doing LTO assume whole-program mode.
3991         (varpool_finalize_decl): When we are in LTO read-back, all variables
3992         are analyzed.
3993         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
3994
3995 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3996
3997         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
3998         add MASK_HARD_DFP.
3999
4000 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4001
4002         * config.gcc: Don't include the makefile fragments intended for
4003         libgcc.
4004         * config/s390/fixdfdi.h: File removed.
4005         * config/s390/libgcc-glibc.ver: File removed.
4006         * config/s390/s390.h: Remove the fixdfdi.h hack.
4007         * config/s390/t-crtstuff: File moved to libgcc dir.
4008         * config/s390/t-linux: Likewise.
4009         * config/s390/t-tpf: libgcc specific parts removed.
4010         * config/s390/t-linux64: Likewise.
4011
4012 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
4013
4014         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
4015         (lto-compress.o): Likewise.
4016
4017 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
4018
4019         PR target/41512
4020         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
4021         dllexport to class members here.
4022         (i386_pe_determine_dllimport_p): Only check static class data for
4023         definition.
4024         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
4025         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
4026         functions for vague linkage.
4027         (i386_pe_type_dllexport_p): Fix formatting.
4028         (maybe_add_dllexport) New function.
4029         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
4030         to class members.
4031
4032 2009-10-07  Ben Elliston  <bje@au.ibm.com>
4033
4034         * config/rs6000/a2.md: Remove duplicated lines.
4035
4036 2009-10-07  Ben Elliston  <bje@au.ibm.com>
4037
4038         * config.gcc (powerpc*-*-*): Handle a2.
4039         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
4040         * config/rs6000/a2.md: New file.
4041         * config/rs6000/rs6000.opt (mno-update): New.
4042         (mupdate): Return to using a mask, not a var.
4043         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
4044         (enum processor_type): Add PROCESSOR_PPCA2.
4045         * config/rs6000/rs6000.c (ppca2_cost): New costs.
4046         (rs6000_override_options): Add "a2" to processor_target_table.
4047         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
4048         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
4049
4050 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
4051
4052         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
4053         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
4054         reference to nonexistent gen_truncxfxf2 function.
4055
4056 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
4057
4058         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
4059         (DWIH, g, di, doubleint_general_operand): New mode attributes.
4060         (general_operand): Handle TI mode.
4061         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
4062         using SDWIM mode iterator.
4063         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
4064         pattern from *add{di,ti}3_1 patterns and corresponding splitters
4065         using DWI mode iterator.
4066         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
4067         patterns using SWI mode iterator.
4068         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
4069         using SWI48 mode iterator.
4070         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
4071         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
4072         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
4073         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
4074         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
4075         using SDWIM mode iterator.
4076         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
4077         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
4078         using DWI mode iterator.
4079         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
4080         patterns using SWI mode iterator.
4081         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
4082         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
4083         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
4084         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
4085         patterns using plusminus code iterator.
4086         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
4087         sub<mode>3 patterns using plusminus code iterator.
4088         * config/i386/i386.c (override_options): Update the call to
4089         gen_subdi_carry_rex64 for renamed function.
4090         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
4091         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
4092         calls to instruction expanders.
4093
4094 2009-10-06  Martin Jambor  <mjambor@suse.cz>
4095
4096         PR bootstrap/41395
4097         * opts.c (decode_options): Run IPA-SRA at -O2.
4098
4099 2009-10-06  Richard Guenther  <rguenther@suse.de>
4100
4101         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
4102
4103 2009-10-06  Tobias Burnus  <burnus@net-b.de>
4104
4105         PR lto/41591
4106         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
4107         -flto and -fwhole-program flags can be combined.
4108
4109 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
4110
4111         PR driver/41217
4112         * gcc.c (process_command): Check that -o argument was specified.
4113
4114 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
4115
4116         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
4117
4118 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4119
4120         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
4121         * doc/invoke.texi (Warning Options): Annotate allowed languages
4122         for -Wunsuffixed-float-constants.
4123
4124 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
4125
4126         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
4127         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
4128         same name and isn't the main variant.
4129
4130         PR debug/41558
4131         * dwarf2out.c (loc_by_reference): Removed.
4132         (dw_loc_list_1): New function.
4133         (dw_loc_list): Remove toplev argument, add want_address argument.
4134         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
4135         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
4136         want_address == 2 to dw_loc_list.  For successful dw_loc_list
4137         set have_address to 1 only if want_address is not 0.
4138
4139 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
4140
4141         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
4142         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
4143         a code block followed by two pointers.
4144         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
4145         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
4146         (MIPS_MOVE): Likewise.
4147         (MIPS_LUI): Likewise.
4148         (MIPS_JR): Likewise.
4149         (MIPS_BAL): Likewise.
4150         (MIPS_NOP): Likewise.
4151         (mips_asm_trampoline_template): Delete.
4152         (mips_trampoline_code_size): New function.
4153         (mips_trampoline_init): Add shorter sequences for all cases
4154         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
4155         Calculate the opcodes directly, rather than copying from a template.
4156         Only flush the code part of the trampoline.
4157         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
4158
4159 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
4160
4161         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
4162         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
4163         (INCOMING_RETURN_ADDR_RTX): Likewise.
4164         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
4165         with AT_REGNUM.
4166         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
4167         with RETURN_ADDR_REGNUM.
4168         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
4169         * config/mips/mips.c (mips16_build_call_stub): Replace
4170         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
4171         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
4172         (mips_print_operand_punctuation): Likewise.
4173         (mips_frame_set): Likewise.
4174         (mips16e_output_save_restore): Likewise.
4175         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
4176         (mips_save_reg_p): Likewise.
4177         (mips_return_addr): Likewise.
4178         (mips_set_return_address): Likewise.
4179         (mips_direct_save_slot_move_p): Likewise.
4180         (mips_output_function_prologue): Likewise.
4181         (mips_restore_reg): Likewise.
4182         (mips_expand_epilogue): Likewise.
4183         (mips_epilogue_uses): Likewise.
4184         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
4185         (*mov<mode>_ra): Use it instead of a hard-coded 31.
4186         (clear_hazard_<mode>): Likewise.
4187         (call_internal): Likewise.
4188         (call_internal_direct): Likewise.
4189         (call_direct_split): Likewise.
4190         (call_value_internal): Likewise.
4191         (call_value_split): Likewise.
4192         (call_value_internal_direct): Likewise.
4193         (call_value_direct_split): Likewise.
4194         (call_value_multiple_internal): Likewise.
4195         (call_value_multiple_split): Likewise.
4196
4197 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
4198             Jakub Jelinek  <jakub@redhat.com>
4199
4200         PR rtl-optimization/41511
4201         * combine.c (record_value_for_reg): Pass explicit values as argument
4202         to get_last_value_validate.
4203         (get_last_value_validate): Document INSN parameter.
4204         For non-readonly MEMs, assume they might have been modified if INSN
4205         was in another basic block.
4206         (get_last_value): Minor reformatting.
4207
4208 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4209
4210         PR tree-opt/40992
4211         * final.c (asm_str_count): Split out from asm_insn_count.
4212         * rtl.h (asm_str_count): New prototype.
4213         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
4214         asm_str_count.
4215
4216 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
4217
4218         * doc/plugins.texi: Change plugin_pass to register_pass_info.
4219
4220 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
4221             Rafael Espindola  <espindola@google.com>
4222
4223         * gengtype.c (write_types): Moved call to write_func_for_structure
4224         into seperate loops.
4225
4226 2009-10-05  Richard Guenther  <rguenther@suse.de>
4227
4228         PR lto/41281
4229         * lto-cgraph.c (output_cgraph): Output toplevel asms.
4230         (input_cgraph_1): Input toplevel asms.
4231
4232 2009-10-05  Richard Guenther  <rguenther@suse.de>
4233
4234         PR lto/40902
4235         * lto-symtab.c (lto_compatible_attributes_p): Remove.
4236         (external_aggregate_decl_p): Likewise.
4237         (lto_symtab_compatible): Re-structure.  Remove dead code.
4238         For variables ignore toplevel qualifiers when comparing types.
4239         Issue warnings, not errors for mismatched user-alignment.
4240
4241 2009-10-05  Richard Guenther  <rguenther@suse.de>
4242
4243         PR lto/41552
4244         PR lto/41487
4245         * lto-symtab.c (struct lto_symtab_base_def): Remove.
4246         (struct lto_symtab_identifier_def): Likewise.
4247         (struct lto_symtab_decl_def): Likewise.
4248         (struct lto_symtab_entry_def): New.
4249         (lto_symtab_identifier_t): Rename to ...
4250         (lto_symtab_entry_t): ... this.
4251         (lto_symtab_decls): Remove.
4252         (lto_symtab_base_hash): Rename to ...
4253         (lto_symtab_entry_hash): ... this.
4254         (lto_symtab_base_eq): Rename to ...
4255         (lto_symtab_entry_eq): ... this.
4256         (lto_symtab_base_marked_p): Rename to ...
4257         (lto_symtab_entry_marked_p): ... this.
4258         (lto_symtab_identifier_marked_p): Remove.
4259         (lto_symtab_decl_marked_p): Likewise.
4260         (lto_symtab_maybe_init_hash_tables): Rename to ...
4261         (lto_symtab_maybe_init_hash_table): ... this.
4262         (lto_symtab_set_resolution_and_file_data): Remove.
4263         (lto_symtab_register_decl): New function.
4264         (lto_symtab_get_identifier): Remove.
4265         (lto_symtab_get): New function.
4266         (lto_symtab_get_resolution): Adjust.
4267         (lto_symtab_get_identifier_decl): Remove.
4268         (lto_symtab_set_identifier_decl): Likewise.
4269         (lto_symtab_merge_decl): Rename to ...
4270         (lto_symtab_merge): ... this.  Rewrite.
4271         (lto_symtab_merge_var): Remove.
4272         (lto_symtab_merge_fn): Likewise.
4273         (lto_symtab_prevailing_decl): Adjust.
4274         (lto_cgraph_replace_node): New function.
4275         (lto_symtab_merge_decls_2): Likewise.
4276         (lto_symtab_merge_decls_1): Likewise.
4277         (lto_symtab_fixup_var_decls): Likewise.
4278         (lto_symtab_resolve_symbols): Likewise.
4279         (lto_symtab_merge_decls): Likewise.
4280         (lto_symtab_prevailing_decl): Adjust.
4281         (lto_symtab_get_symtab_def): Remove.
4282         (lto_symtab_get_file_data): Likewise.
4283         (lto_symtab_clear_resolution): Adjust.
4284         (lto_symtab_clear_resolution): Likewise.
4285         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
4286         (input_cgraph_1): Likewise.
4287         * lto-streamer-in.c (get_resolution): Do not provide fake
4288         symbol resolutions here.
4289         (deferred_global_decls): Remove.
4290         (lto_register_deferred_decls_in_symtab): Likewise.
4291         (lto_register_var_decl_in_symtab): Change signature, register
4292         variable via lto_symtab_register_decl.
4293         (lto_register_function_decl_in_symtab): Likewise.
4294         (lto_read_tree): Adjust.
4295         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
4296         (lto_symtab_merge_var): Likewise.
4297         (lto_symtab_merge_fn): Likewise.
4298         (lto_symtab_register_decl): Declare.
4299         (lto_symtab_merge_decls): Likewise.
4300
4301 2009-10-05  Richard Guenther  <rguenther@suse.de>
4302
4303         PR tree-optimization/23821
4304         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
4305         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
4306         simple IV increments.
4307
4308 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4309
4310         * config/arm/arm.c (arm_override_options): Really initialize
4311         flag_dwarf2_cfi_asm to 0.
4312
4313 2009-10-05  Doug Kwan  <dougkwan@google.com>
4314
4315         PR rtl-optimization/41574
4316         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
4317         floating point and we are not doing unsafe math optimizations.
4318
4319 2009-10-03  Simon Baldwin  <simonb@google.com>
4320             Cary Coutant  <ccoutant@google.com>
4321             Rafael Espindola  <espindola@google.com>
4322             Richard Guenther  <rguenther@suse.de>
4323             Jan Hubicka  <jh@suse.cz>
4324             Doug Kwan <dougkwan@google.com>
4325             H.J. Lu  <hongjiu.lu@intel.com>
4326             Bill Maddox  <maddox@google.com>
4327             Ryan Mansfield  <rmansfield@qnx.com>
4328             Diego Novillo  <dnovillo@google.com>
4329             Ollie Wild  <aaw@google.com>
4330             Kenneth Zadeck <zadeck@naturalbridge.com>
4331
4332         * lto-cgraph.c: New file.
4333         * lto-compress.c: New file.
4334         * lto-compress.h: New file.
4335         * lto-opts.c: New file.
4336         * lto-section-in.c: New file.
4337         * lto-section-out.c: New file.
4338         * lto-streamer-in.c: New file.
4339         * lto-streamer-out.c: New file.
4340         * lto-streamer.c: New file.
4341         * lto-streamer.h: New file.
4342         * lto-symtab.c: New file.
4343         * lto-wpa-fixup.c: New file.
4344         * lto-wrapper.c: New file.
4345
4346 2009-10-03  Simon Baldwin  <baldwin@google.com>
4347             Ben Elliston  <bje@au.ibm.com>
4348             Rafael Espindola  <espindola@google.com>
4349             Nathan Froyd  <froydnj@codesourcery.com>
4350             Jan Hubicka  <jh@suse.cz>
4351             Doug Kwan  <dougkwan@google.com>
4352             Diego Novillo  <dnovillo@google.com>
4353             Kenneth Zadeck  <zadeck@naturalbridge.com>
4354
4355         * Makefile.in (enable_lto): New.
4356         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
4357         (LINKER_PLUGIN_API_H): Define.
4358         (LTO_SYMTAB_H): Define.
4359         (LTO_STREAMER_H): Define.
4360         (TREE_VECTORIZER_H): Define.
4361         (INCLUDES): Add LIBELFINC.
4362         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
4363         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
4364         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
4365         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
4366         (native): Add lto-wrapper$(exeext)
4367         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
4368         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
4369         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
4370         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
4371         (varasm.o): Add dependency on tree-iterator.h.
4372         (cgraph.o): Add dependency on cif-code.def.
4373         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
4374         (ipa-pure-const.o): Likewise.
4375         (GTFILES): Add lto-symtab.c.
4376         (install-lto-wrapper): New.
4377         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
4378         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
4379         * config.in: Regenerate.
4380
4381 2009-10-03  Rafael Espindola  <espindola@google.com>
4382             Diego Novillo  <dnovillo@google.com>
4383
4384         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
4385         ipa_write_summaries.
4386         Call execute_ipa_summary_passes for all_regular_ipa_passes and
4387         all_lto_gen_passes.
4388         (cgraph_optimize): Make extern.
4389
4390 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
4391             Kenneth Zadeck <zadeck@naturalbridge.com>
4392
4393         * toplev.c (in_lto_p): Declare.
4394         * collect2.c (scan_prog_file): Read all the output when reading
4395         information for LTO.
4396         (enum lto_mode_d): Declare.
4397
4398 2009-10-03  Richard Guenther  <rguenther@suse.de>
4399             Diego Novillo  <dnovillo@google.com>
4400
4401         * gimple.c: Include target.h and alias.h.
4402         (gimple_types): Declare.
4403         (type_hash_cache): Declare.
4404         (gimple_alloc_stat): Make extern.
4405         (gimple_build_eh_must_not_throw): Call
4406         gimple_eh_must_not_throw_set_fndecl.
4407         (struct type_pair_d): Declare.
4408         (type_pair_t): Declare.
4409         (type_pair_hash): New.
4410         (type_pair_eq): New.
4411         (lookup_type_pair): New.
4412         (gimple_force_type_merge): New.
4413         (compare_type_names_p): New.
4414         (compare_field_offset): New.
4415         (gimple_types_compatible_p): New.
4416         (struct sccs): Declare.
4417         (next_dfs_num): Declare.
4418         (iterative_hash_gimple_type): New.
4419         (visit): New.
4420         (iterative_hash_type_name): New.
4421         (iterative_hash_gimple_type): New.
4422         (gimple_type_hash): New.
4423         (gimple_type_eq): New.
4424         (gimple_register_type): New.
4425         (print_gimple_types_stats): New.
4426         (gimple_signed_or_unsigned_type): New.
4427         (gimple_unsigned_type): New.
4428         (gimple_signed_type): New.
4429         (gimple_get_alias_set): New.
4430         (gimple_decl_printable_name): Do not use DMGL_TYPES.
4431         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
4432         (gimple_force_type_merge): Declare.
4433         (gimple_types_compatible_p): Declare.
4434         (gimple_register_type): Declare.
4435         (print_gimple_types_stats): Declare.
4436         (gimple_unsigned_type): Declare.
4437         (gimple_signed_type): Declare.
4438         (gimple_get_alias_set): Declare.
4439         (gimple_eh_must_not_throw_set_fndecl): New.
4440
4441 2009-10-03  Jan Hubicka  <jh@suse.cz>
4442             Kenneth Zadeck <zadeck@naturalbridge.com>
4443
4444         * ipa-pure-const.c: Include lto-streamer.h.
4445         (register_hooks): Factor out of ...
4446         (generate_summary): ... here.
4447         (pure_const_write_summary): New.
4448         (pure_const_read_summary): New.
4449         (pass_ipa_pure_const): Add pure_const_write_summary and
4450         pure_const_read_summary.
4451         * ipa-reference.c: Include lto-streamer.h.
4452         (add_new_function): New.
4453         (remove_node_data): New.
4454         (duplicate_node_data): New.
4455         (ipa_init): Guard against multiple calls.
4456         Move hook setup from analyze_function.
4457         (write_node_summary_p): New.
4458         (ipa_reference_write_summary): New.
4459         (ipa_reference_read_summary): New.
4460         (pass_ipa_reference): Add ipa_reference_write_summary and
4461         ipa_reference_read_summary.
4462         * cgraph.h (cgraph_local_info): Add field lto_file_data.
4463         (struct cgraph_edge): Add fields lto_stmt_uid and
4464         call_stmt_cannot_inline_p.
4465         (cgraph_optimize): Declare.
4466         (cgraph_decide_is_function_needed): Declare.
4467         (reset_inline_failed): Declare.
4468         (enum LTO_cgraph_tags): Declare.
4469         (LTO_cgraph_tag_names): Declare.
4470         (LCC_NOT_FOUND): Define.
4471
4472 2009-10-03  Doug Kwan  <dougkwan@google.com>
4473             Rafael Espindola  <espindola@google.com>
4474             Jan Hubicka  <jh@suse.cz>
4475             Diego Novillo  <dnovillo@google.com>
4476             Kenneth Zadeck  <zadeck@naturalbridge.com>
4477
4478         * passes.c (all_regular_ipa_passes): New.
4479         (all_ipa_passes): Rename to all_small_ipa_passes.
4480         (init_optimization_passes): Init all_regular_ipa_passes.
4481         * tree-pass.h (all_regular_ipa_passes): New.
4482         (all_ipa_passes): Rename to all_small_ipa_passes.
4483         * passes.c (all_lto_gen_passes): New.
4484         (init_optimization_passes): Initialize all_lto_gen_passes.
4485         (execute_ipa_summary_passes): Make non-static.
4486         (ipa_write_summaries_1): New.
4487         (ipa_write_summaries_2): New.
4488         (ipa_write_summaries): New.
4489         (ipa_write_summaries_of_cgraph_node_set): New.
4490         (ipa_read_summaries_1): New.
4491         (ipa_read_summaries): New.
4492         (execute_ipa_pass_list): Call cgraph_process_new_functions.
4493         (execute_regular_ipa_pass_list): Remove.
4494         (init_optimization_passes): Schedule
4495         pass_rebuild_cgraph_edges and pass_early_inline outside
4496         of pass_all_early_optimizations.  Document reason.
4497         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
4498         pass_ipa_lto_finish_out): New pass.
4499         (pass_ipa_summary_passes): Start and stop timers if the pass has them.
4500         (execute_all_ipa_transforms): New.
4501         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
4502         (dump_properties, debug_properties): New.
4503         * tree-optimize.c (gate_all_early_local_passes): Return
4504         false if we are in lto1.
4505         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
4506         * tree-pass.h (execute_all_ipa_transforms): Declare.
4507         (pass_ipa_function_and_variable_visibility): Declare.
4508         (pass_ipa_early_inline): Declare.
4509         (pass_ipa_lto_gimple_out): Declare.
4510         (pass_ipa_lto_wpa_fixup): Declare.
4511         (pass_ipa_lto_finish_out): Declare.
4512         (all_small_ipa_passes, all_regular_ipa_passes,
4513         all_lto_gen_passes): Declare.
4514         (execute_ipa_summary_passes): Declare.
4515         (execute_all_ipa_transforms): Declare.
4516         (ipa_write_summaries): Declare
4517         (ipa_write_summaries_of_cgraph_node_set): Declare.
4518         (ipa_read_summaries): Declare.
4519
4520 2009-10-03  Doug Kwan  <dougkwan@google.com>
4521             Ollie Wild  <aaw@google.com>
4522
4523         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
4524
4525         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
4526         (lto_mode): New variable.
4527         (maybe_run_lto_and_relink): Handle the -fwpa option.
4528         (main): Handle the -fwpa option.
4529         (maybe_unlink_list): New function.
4530         * gcc.c (link_lto_options): Replace -flto with -fwpa.
4531         * common.opt (flto): New flag.
4532         * toplev.c (flag_generate_lto): Declare.
4533
4534 2009-10-03  Simon Baldwin  <simonb@google.com>
4535
4536         * common.opt (flto-compression-level): New flag.
4537
4538         * opts.c: Include lto-opts.h.
4539         (handle_option): Call lto_register_user_option for each
4540         valid option handled.
4541         (decode_options): Clear registered options before the options
4542         handling loop.
4543
4544 2009-10-03  Cary Coutant  <ccoutant@google.com>
4545
4546         * collect2.c (is_elf): New function.
4547         (scan_prog_file): Require LTO object to be in ELF format.
4548
4549 2009-10-03  Rafael Espindola  <espindola@google.com>
4550
4551         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
4552         libgcc to the linker.
4553
4554         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
4555
4556         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
4557         (collect_execute): Add flags argument. Pass flags to pex_run. Update
4558         all callers.
4559         * collect2.h (collect_execute): Add flags argument.
4560         * tlink.c (tlink_execute): Update call to collect_execute.
4561         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
4562         (use_linker_plugin): New.
4563         (use_linker_plugin_spec_function): New.
4564         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
4565         (linker_plugin_file_spec): New.
4566         (lto_wrapper_spec): New.
4567         (lto_gcc_spec): New.
4568         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
4569         (static_spec_functions): Add use-linker-plugin.
4570         (process_command): Handle -use-linker-plugin.
4571         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
4572         linker_plugin_file_spec and lto_gcc_spec.
4573         (use_linker_plugin_spec_function): New.
4574
4575 2009-10-03  Richard Guenther  <rguenther@suse.de>
4576
4577         PR lto/41547
4578         PR lto/41548
4579         * tree.h (is_lang_specific): Include LANG_TYPE.
4580         * tree.c (find_decls_types_r): Manually add interesting parts
4581         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
4582
4583         * gimple.c (type_pair_hash): Make symmetric.
4584         (type_pair_eq): Likewise.
4585         (lookup_type_pair): Increase initial hashtable size.
4586         (gimple_force_type_merge): Rely on type-pair symmetry.
4587         (visit): Remove excessive checking code.
4588         (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
4589         (gimple_register_type): Remove getenv calls, shrink initial
4590         hashtable size.
4591
4592         PR middle-end/41502
4593         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
4594         inline functions if not generating lto output.
4595
4596         PR lto/41379
4597         * toplev.c (finalize): In WPA mode remove the asm file.
4598
4599 2009-10-03  Doug Kwan  <dougkwan@google.com>
4600
4601         * ipa-inline.c (cgraph_mark_inline): Check
4602         edge->call_stmt_cannot_inline_p instead of calling
4603         gimple_call_cannot_inline_p.
4604         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
4605         (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
4606         (inline_generate_summary): Do nothing in LTRANS.
4607         * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
4608         exists before calling gimple_call_cannot_inline_p.
4609         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
4610         (cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
4611         Update new_edge->lto_stmt_uid.
4612         * cgraphbuild.c (reset_inline_failed): New.
4613
4614         * common.opt (fwpa): New flag.
4615         (fltrans): New option.
4616         * gcc.c (gcc_lto_option_t): New type.
4617         (current_lto_option): New variable.
4618         (lto_single_spec_function): Remove and is replaced by ..
4619         (lto_option_spec_function): New function.
4620         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
4621         passing the -flto flag.
4622         (cc1_options): Separate non-LTO related parts into ..
4623         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
4624         (lto1_options): New spec for lto FE.
4625         (link_lto_options): New spec for handling LTO flags in linker.
4626         (invoke_lto_single): Re-format to fit in 80 column.  Replace
4627         lto-single with lto-option.
4628         (static_specs): Add cc1_non_lto_options, lto1_options and
4629         link_lto_options.
4630         (static_spec_function): Replace lto-single with lto-option.
4631         (process_command): Handle -flto, -fwpa and -fltran by setting
4632         current_lto_option and not passing it to subprocess unconditionally.
4633
4634 2009-10-03  Bill Maddox  <maddox@google.com>
4635
4636         Add `gcc' driver support for link-time code generation (LTO).
4637
4638         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
4639         (lto_flag, lto_objects, lto_o_file): New variables.
4640         (struct lto_object, struct lto_object_list): New structures.
4641         (collect_exit, handler): Remove LTO temporary output file on exit.
4642         (add_lto_object): New function.
4643         (maybe_run_lto_and_relink): New function. Perform link time code
4644         generation and relinking for object files containing LTO information.
4645         (main): Invoke maybe_run_lto_and_relink().
4646         (dump_argv): New function.  For debugging, currently disabled.
4647         (scan_prog_file): Add LTO information pass.
4648         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
4649         collect2.
4650         * toplev.c (compile_file): Emit assembler directive to create
4651         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
4652
4653 2009-10-03  Diego Novillo  <dnovillo@google.com>
4654
4655         * c.opt: Add LTO to warn_abi and warn_psabi.
4656
4657         * tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
4658         inline function.  Ignore language-specific nodes.  Update all users.
4659         (find_decls_types_r): Do not traverse the subtrees of
4660         language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
4661         * tree.h (is_lang_specific): New.
4662         * langhooks.h (struct lang_hooks_for_decls): Remove
4663         may_need_assembler_name_p.  Update all users.
4664
4665         * c-common.c (set_builtin_user_assembler_name): Move ...
4666         * builtins.c (set_builtin_user_assembler_name): ... here.
4667         (is_builtin_name): Add comment
4668         (is_builtin_fn): New.
4669         * except.c (output_ttype): Only call
4670         lookup_type_for_runtime if TYPE is not a runtime type.
4671
4672         * passes.c (register_pass): Call position_pass on
4673         all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
4674         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
4675         (TV_IPA_LTO_DECL_IO): Define.
4676         (TV_IPA_LTO_CGRAPH_IO): Define.
4677         (TV_LTO): Define.
4678         (TV_WHOPR_WPA): Define.
4679         (TV_WHOPR_WPA_IO): Define.
4680         (TV_WHOPR_LTRANS): Define.
4681         (TV_WHOPR_WPA_FIXUP): Define.
4682         (TV_WHOPR_WPA_LTRANS_EXEC): Define.
4683         * tree-cfg.c (tree_node_can_be_shared): Make extern.
4684         * tree-flow.h (tree_node_can_be_shared): Declare.
4685         * tree-inline.c (tree_can_inline_p): Check that E has a
4686         statement associated with it.
4687         * tree.c (free_lang_data_in_binf): Factor out of ...
4688         (free_lang_data_in_type): ... here.
4689         Call RECORD_OR_UNION_TYPE_P.
4690         (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
4691         set.  Call lang_hooks.decls.may_need_assembler_name_p if set.
4692         (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
4693         (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE.  Set
4694         write_symbols to NO_DEBUG.  Set debug_hooks to do_nothing_debug_hooks.
4695         (gate_free_lang_data): Return true if flag_generate_lto is set.
4696         (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
4697         * c-common.h (set_builtin_user_assembler_name): Move ...
4698         * tree.h (set_builtin_user_assembler_name): ... here.
4699
4700         * common.opt (flto-report): New flag.
4701         * opts.c (complain_wrong_lang): Do not complain if running lto1.
4702         * collect2.c (scan_prog_file): Send the error output of
4703         'nm' to HOST_BIT_BUCKET.
4704
4705 2009-10-03  Ollie Wild  <aaw@google.com>
4706
4707         * langhooks-def.h (lhd_begin_section): New function declaration.
4708         (lhd_write_section): New function declaration.
4709         (lhd_end_section): New function declaration.
4710         (LANG_HOOKS_BEGIN_SECTION): New macro.
4711         (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
4712         (LANG_HOOKS_END_SECTION): New macro.
4713         (LANG_HOOKS_LTO): New macro.
4714         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
4715         * langhooks.c (output.h): Add include.
4716         (saved_section): New static variable.
4717         (lhd_begin_section): New function.
4718         (lhd_write_section_data): New function.
4719         (lhd_end_section): New function.
4720         * langhooks.h (struct lang_hooks_for_lto): New structure.
4721         (struct lang_hooks): Add member lto.
4722         * Makefile.in (langhooks.o): Add dependency on output.h.
4723
4724         * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
4725
4726 2009-10-03  Richard Guenther  <rguenther@suse.de>
4727
4728         * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
4729         Handle LTO.
4730
4731 2009-10-03  Simon Baldwin  <simonb@google.com>
4732             Richard Guenther  <rguenther@suse.de>
4733             Janis Johnson  <janis187@us.ibm.com>
4734             Doug Kwan  <dougkwan@google.com>
4735             Diego Novillo  <dnovillo@google.com>
4736             Ramana Radhakrishnan  <ramana.r@gmail.com>
4737             Ollie Wild  <aaw@google.com>
4738
4739         * doc/install.texi: Add documentation for libelf and --enable-lto.
4740         * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
4741         -flto-report, -flto-compression-level and -use-linker-plugin.
4742         * doc/sourcebuild.texi: Document use of zlib.  Document lto-plugin.
4743         Add section for LTO Testing.
4744
4745 2009-10-02  Cary Coutant  <ccoutant@google.com>
4746
4747         Add support for comdat type sections for DWARF v4.
4748         Merge from dwarf4 branch.
4749
4750         * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
4751         (dw_die_ref): Define vector type.
4752         (enum dw_val_class): Add dw_val_class_data8.
4753         (struct dw_val_struct): Add v.val_data8.
4754         (comdat_type_node_ref): New type.
4755         (struct die_struct): Move die_symbol into a union; add new field
4756         die_type_node.  Change all uses.
4757         (comdat_type_node): New type.
4758         (skeleton_chain_node): New type.
4759         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
4760         (comdat_type_list): New variable.
4761         (dwarf_tag_name): Add DW_TAG_type_unit.
4762         (dwarf_attr_name): Add DW_AT_signature.
4763         (add_AT_data8): New function.
4764         (replace_child): New function.
4765         (move_all_children): New function.
4766         (print_signature): New function.
4767         (print_die): Print signature information; add dw_val_class_data8.
4768         (attr_checksum): Support dw_val_class_data8.
4769         (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
4770         (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
4771         (checksum_sleb128, checksum_uleb128): New functions.
4772         (checksum_die_context): New function.
4773         (loc_checksum_ordered): New function.
4774         (attr_checksum_ordered): New function.
4775         (struct checksum_attributes): New structure.
4776         (collect_checksum_attributes): New function.
4777         (die_checksum_ordered): New function.
4778         (generate_type_signature): New function.
4779         (same_dw_val_p): Add dw_val_class_data8.
4780         (is_symbol_die): Use new is_declaration_die function.
4781         (is_declaration_die): New function.
4782         (should_move_die_to_comdat): New function.
4783         (clone_die): New function.
4784         (clone_tree): New function.
4785         (clone_as_declaration): New function.
4786         (copy_declaration_context): New function.
4787         (generate_skeleton_ancestor_tree): New function.
4788         (generate_skeleton_bottom_up): New function.
4789         (generate_skeleton): New function.
4790         (remove_child_or_replace_with_skeleton): New function.
4791         (break_out_comdat_types): New function.
4792         (struct decl_table_entry): New type.
4793         (htab_decl_hash): New function.
4794         (htab_decl_eq): New function.
4795         (htab_decl_del): New function.
4796         (copy_ancestor_tree): New function.
4797         (copy_decls_walk): New function.
4798         (copy_decls_for_unworthy_types): New function.
4799         (build_abbrev_table): Don't assert on missing die_symbol when doing
4800         comdat type sections.
4801         (size_of_die): Use DW_FORM_sig8 for external references.  Add
4802         dw_val_class_data8.
4803         (unmark_dies): Don't assert for unmarked dies when doing comdat
4804         type sections.
4805         (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
4806         (output_signature): New function.
4807         (output_die): Likewise.
4808         (output_compilation_unit_header): Mark output as DWARF version 3
4809         even if generating DWARF 4.
4810         (output_comdat_type_unit): New function.
4811         (output_line_info): Mark output as DWARF version 3 even if generating
4812         DWARF 4.
4813         (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
4814         DWARF-4.
4815         (dwarf2out_end_source_file): Likewise.
4816         (prune_unused_types_walk_attribs): Don't follow references into
4817         comdat type sections.
4818         (prune_unused_types_mark): When generating type units, do not mark
4819         children of non-defining declarations of types; do mark children of
4820         type entries.
4821         (prune_unused_types): Process comdat type sections.
4822         (htab_ct_hash): New function.
4823         (htab_ct_eq): New function.
4824         (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
4825         Add a pointer to the line table from type unit entries so
4826         DW_AT_decl_file has meaning.
4827         * varasm.c (default_elf_asm_named_section): Use identifier name as
4828         comdat key instead of lang hook.
4829
4830 2009-10-02  Neil Vachharajani  <nvachhar@google.com>
4831
4832         * gcov-io.c (gcov_open): Open files read-only when MODE < 0.
4833
4834 2009-10-02  Uros Bizjak  <ubizjak@gmail.com>
4835
4836         * config/i386/i386.md (SWIM248): New mode iterator.
4837         (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
4838         divmodhi4 patterns using SWIM248 macro.
4839         (*divmod<mode>4): Macroize insn_and_split pattern from
4840         *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
4841         and their corresponding splitters usign SWIM248 macro.  Split SImode
4842         insn to generate cltd and DImode insn to generate cqto instead of
4843         move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
4844         (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
4845         (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
4846         *divmodsi_noext patterns using SWIM248 macro.
4847         (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
4848         udivmodhi4 patterns using SWIM248 macro.
4849         (*udivmod<mode>4): Macroize insn_and_split pattern from
4850         *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
4851         corresponding splitters using SWIM248 macro.
4852         (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
4853         *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.
4854
4855 2009-10-02  Eric Botcazou  <ebotcazou@adacore.com>
4856
4857         * stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
4858         of zero-sized element is zero-sized regardless of its extent.
4859
4860 2009-10-02  Jakub Jelinek  <jakub@redhat.com>
4861
4862         PR debug/40521
4863         * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
4864         * configure: Regenerated.
4865         * config.in: Regenerated.
4866         * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
4867         !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
4868         (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
4869         not emitting .eh_frame, emit .cfi_sections .debug_frame
4870         directive.
4871
4872         PR debug/41404
4873         PR debug/41353
4874         * cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
4875         CONST_STRING if STRING_CST contains embedded '\0's or doesn't end
4876         with '\0'.
4877         (expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
4878         vars use DECL_RTL with resetting it back to NULL afterwards.
4879         * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
4880         rtx_equal_p instead of asserting it is a SYMBOL_REF.
4881         (value_format): For dw_val_class_addr only use DW_FORM_addr if
4882         the attribute type allows it, otherwise use DW_FORM_dataN.
4883         (mem_loc_descriptor): Handle CONST_STRING.
4884         (add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
4885         Handle MEM with CONST_STRING address using add_AT_string.
4886         (rtl_for_decl_init): Return MEM with CONST_STRING address instead of
4887         CONST_STRING for const arrays initialized with a string literal.
4888         (resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
4889         (dwarf2out_finish): Call resolve_addr.
4890
4891 2009-10-02  Andreas Schwab  <schwab@linux-m68k.org>
4892             Maxim Kuvyrkov  <maxim@codesourcery.com>
4893
4894         * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.
4895
4896 2009-10-02  Nick Clifton  <nickc@redhat.com>
4897
4898         * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
4899         (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
4900
4901 2009-10-01  Jan Hubicka  <jh@suse.cz>
4902
4903         * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
4904         (cgraph_create_virtual_clone): Just pass redirect_callers
4905         around.
4906         * cgraph.h (cgraph_clone_node): Update prototype.
4907         * ipa-pure-const.c (self_recursive_p): New function.
4908         (propagate): Use it.
4909         * ipa-inline.c (cgraph_clone_inlined_nodes,
4910         cgraph_decide_recursive_inlining): Update.
4911
4912 2009-10-01  David Daney  <ddaney@caviumnetworks.com>
4913
4914         * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
4915         instructions for TARGET_OCTEON.
4916
4917 2009-10-01  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4918
4919         * config/arm/arm.c (arm_override_options): Turn off
4920         flag_dwarf2_cfi_asm for AAPCS variants.
4921
4922 2009-10-01  Martin Jambor  <mjambor@suse.cz>
4923
4924         PR middle-end/12392
4925         * tree-sra.c (convert_callers): Do not call
4926         compute_inline_parameters on one caller more than once.
4927
4928 2009-10-01  Nick Clifton  <nickc@redhat.com>
4929
4930         * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
4931         an empty string if not already defined.
4932
4933 2009-10-01  Martin Jambor  <mjambor@suse.cz>
4934
4935         PR bootstrap/41395
4936         * tree-sra.c (is_va_list_type): New function.
4937         (find_var_candidates): Call is_va_list_type.
4938         (find_param_candidates): Check that the type or the type pointed
4939         to are not va_list types.
4940
4941 2009-10-01  Martin Jambor  <mjambor@suse.cz>
4942
4943         PR c++/41503
4944         * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
4945         DECL_ARTIFICIAL (param_decl) is true.
4946
4947 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
4948
4949         * tree.h (tree_decl_common::lang_flag_8): New.
4950         * c-common.c (c_common_reswords): Include "constexpr" as C++0x
4951         keyword.
4952         * c-common.h (RID_CONSTEXPR): New.
4953
4954 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
4955
4956         * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
4957         Use ref-all pointers.
4958         (alpha_gimplify_va_arg): Ditto.
4959
4960 2009-09-30  Jakub Jelinek  <jakub@redhat.com>
4961
4962         PR target/41279
4963         * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
4964         before insn counting loop now that BB_END (bb) is counted.  Ensure
4965         the return value isn't zero.
4966
4967 2009-09-30  Nick Clifton  <nickc@redhat.com>
4968
4969         * config.gcc (sh-symbianelf): Replace definition of extra_objs
4970         with separate definitions of c_target_objs and cxx_target_objs.
4971         * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
4972         and symbian-base.o.
4973         * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
4974         sh_symbian_import_export_class.
4975         * config/sh/sh-protos.h: Fix names of exported symbian functions.
4976         * config/sh/symbian.c: Delete, moving code into...
4977         * config/sh/symbian-base.c: ... here
4978         * config/sh/symbian-c.c: ... and here
4979         * config/sh/symbian-cxx.c: ... and here.
4980
4981 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
4982
4983         PR target/22093
4984         * config/alpha/alpha.md (unaligned_storehi_be): Force operand
4985         of plus RTX into register.
4986
4987 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4988
4989         * doc/install.texi: Linguistic and markup fixes.
4990         (Configuration) <--disable-cpp>: Remove description.
4991         <--enable-maintainer-mode>: Autotools files are affected, too.
4992         <--with-sysroot>: Improve description.
4993         (Building): Bump required GNU make version.
4994
4995 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
4996
4997         * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
4998         (x86_64-*-*): Ditto.
4999
5000         * config/i386/fma4intrin.h: New file, provide common x86 compiler
5001         intrinisics for FMA4.
5002         * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
5003         * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
5004         Add FMA4 check and fma4intrin.h.
5005         * config/i386/i386-c.c(ix86_target_macros_internal): Check
5006         ISA_FLAG for FMA4.
5007         * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
5008         * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
5009         constant for FMA4 support.
5010         (UNSPEC_FMA4_FMADDSUB): Ditto.
5011         (UNSPEC_FMA4_FMSUBADD): Ditto.
5012         * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
5013         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
5014         (ix86_expand_fma4_multiple_memory): Ditto.
5015         * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
5016         (OPTION_MASK_ISA_FMA4_UNSET): New.
5017         (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
5018         (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
5019         (ix86_handle_option): Handle -mfma4.
5020         (isa_opts): Handle -mfma4.
5021         (enum pta_flags): Add PTA_FMA4.
5022         (override_options): Add FMA4 support.
5023         (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
5024         (IX86_BUILTIN_VFMADDSD): Ditto.
5025         (IX86_BUILTIN_VFMADDPS): Ditto.
5026         (IX86_BUILTIN_VFMADDPD): Ditto.
5027         (IX86_BUILTIN_VFMSUBSS): Ditto.
5028         (IX86_BUILTIN_VFMSUBSD): Ditto.
5029         (IX86_BUILTIN_VFMSUBPS): Ditto.
5030         (IX86_BUILTIN_VFMSUBPD): Ditto.
5031         (IX86_BUILTIN_VFMADDSUBPS): Ditto.
5032         (IX86_BUILTIN_VFMADDSUBPD): Ditto.
5033         (IX86_BUILTIN_VFMSUBADDPS): Ditto.
5034         (IX86_BUILTIN_VFMSUBADDPD): Ditto.
5035         (IX86_BUILTIN_VFNMADDSS): Ditto.
5036         (IX86_BUILTIN_VFNMADDSD): Ditto.
5037         (IX86_BUILTIN_VFNMADDPS): Ditto.
5038         (IX86_BUILTIN_VFNMADDPD): Ditto.
5039         (IX86_BUILTIN_VFNMSUBSS): Ditto.
5040         (IX86_BUILTIN_VFNMSUBSD): Ditto.
5041         (IX86_BUILTIN_VFNMSUBPS): Ditto.
5042         (IX86_BUILTIN_VFNMSUBPD): Ditto.
5043         (IX86_BUILTIN_VFMADDPS256): Ditto.
5044         (IX86_BUILTIN_VFMADDPD256): Ditto.
5045         (IX86_BUILTIN_VFMSUBPS256): Ditto.
5046         (IX86_BUILTIN_VFMSUBPD256): Ditto.
5047         (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
5048         (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
5049         (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
5050         (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
5051         (IX86_BUILTIN_VFNMADDPS256): Ditto.
5052         (IX86_BUILTIN_VFNMADDPD256): Ditto.
5053         (IX86_BUILTIN_VFNMSUBPS256): Ditto.
5054         (IX86_BUILTIN_VFNMSUBPD256): Ditto.
5055         (enum multi_arg_type): New enum for describing the various FMA4
5056         intrinsic argument types.
5057         (bdesc_multi_arg): New table for FMA4 intrinsics.
5058         (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
5059         (ix86_expand_multi_arg_builtin): New function for creating FMA4
5060         intrinsics.
5061         (ix86_expand_builtin): Add FMA4 intrinsic support.
5062         (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
5063         operand instructions.
5064         (ix86_expand_fma4_multiple_memory): New function to split the
5065         second memory reference from FMA4 instructions.
5066         * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
5067         (ssemodesuffixf2s): Ditto.
5068         (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
5069         instructions.
5070         (fma4_fmsub<mode>4): Ditto.
5071         (fma4_fnmadd<mode>4): Ditto.
5072         (fma4_fnmsub<mode>4): Ditto.
5073         (fma4_vmfmadd<mode>4): Ditto.
5074         (fma4_vmfmsub<mode>4): Ditto.
5075         (fma4_vmfnmadd<mode>4): Ditto.
5076         (fma4_vmfnmsub<mode>4): Ditto.
5077         (fma4_fmadd<mode>4256): Ditto.
5078         (fma4_fmsub<mode>4256): Ditto.
5079         (fma4_fnmadd<mode>4256): Ditto.
5080         (fma4_fnmsub<mode>4256): Ditto.
5081         (fma4_fmaddsubv8sf4): Ditto.
5082         (fma4_fmaddsubv4sf4): Ditto.
5083         (fma4_fmaddsubv4df4): Ditto.
5084         (fma4_fmaddsubv2df4): Ditto.
5085         (fma4_fmsubaddv8sf4): Ditto.
5086         (fma4_fmsubaddv4sf4): Ditto.
5087         (fma4_fmsubaddv4df4): Ditto.
5088         (fma4_fmsubaddv2df4): Ditto.
5089         (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
5090         instructions for intrinsics.
5091         (fma4i_fmsub<mode>4): Ditto.
5092         (fma4i_fnmadd<mode>4): Ditto.
5093         (fma4i_fnmsub<mode>4): Ditto.
5094         (fma4i_vmfmadd<mode>4): Ditto.
5095         (fma4i_vmfmsub<mode>4): Ditto.
5096         (fma4i_vmfnmadd<mode>4): Ditto.
5097         (fma4i_vmfnmsub<mode>4): Ditto.
5098         (fma4i_fmadd<mode>4256): Ditto.
5099         (fma4i_fmsub<mode>4256): Ditto.
5100         (fma4i_fnmadd<mode>4256): Ditto.
5101         (fma4i_fnmsub<mode>4256): Ditto.
5102         (fma4i_fmaddsubv8sf4): Ditto.
5103         (fma4i_fmaddsubv4sf4): Ditto.
5104         (fma4i_fmaddsubv4df4): Ditto.
5105         (fma4i_fmaddsubv2df4): Ditto.
5106         (fma4i_fmsubaddv8sf4): Ditto.
5107         (fma4i_fmsubaddv4sf4): Ditto.
5108         (fma4i_fmsubaddv4df4): Ditto.
5109         (fma4i_fmsubaddv2df4): Ditto.
5110
5111         * doc/invoke.texi (-mfma4): Add documentation.
5112         * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
5113
5114 2009-09-29  Richard Henderson  <rth@redhat.com>
5115
5116         * tree-eh.c (unsplit_eh): Do not unsplit if there's already
5117         an edge to the new destination block.
5118
5119 2009-09-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5120
5121         PR target/41393
5122         * pa.c (hppa_profile_hook): Use
5123         make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
5124
5125 2009-09-29  Steve Ellcey  <sje@cup.hp.com>
5126             Alexander Monakov  <amonakov@ispras.ru>
5127
5128         PR target/41365
5129         * config/ia64/predicates.md (not_postinc_destination_operand): New.
5130         (not_postinc_memory_operand): New.
5131         (not_postinc_move_operand): New.
5132         * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
5133         (*cmovsi_internal): Ditto.
5134
5135 2009-09-29  Pat Haugen  <pthaugen@us.ibm.com>
5136
5137         * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
5138         restrict issue_rate in first pass when scheduling for register
5139         pressure.
5140
5141 2009-09-29  Basile Starynkevitch  <basile@starynkevitch.net>
5142             Rafael Avila de Espindola  <espindola@google.com>
5143
5144         * gengtype.c (plugin_output): New.
5145         (get_output_file_with_visibility): Return plugin_output for plugins.
5146         (main): Parse and use the -P option.
5147         * gty.texi: Update the command line format.
5148
5149 2009-09-29  Jakub Jelinek  <jakub@redhat.com>
5150
5151         PR debug/41438
5152         * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
5153         functions.
5154         (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
5155         out if !const_ok_for_output.
5156
5157         PR debug/41474
5158         * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
5159         case VAR_LOCATION>: Remove gcc_unreachable ().
5160
5161 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
5162
5163         * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
5164         (x86_64-*-*): Ditto.
5165         * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
5166         back to smmintrin.h.
5167         * config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
5168         * config/i386/x86intrin.h: Remove SSE5.
5169         * config/i386/mmintrin-common.h: Delete file.
5170         * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
5171
5172 2009-09-29  Richard Guenther  <rguenther@suse.de>
5173
5174         * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
5175         resulting from stack temporaries on STRICT_ALIGNMENT targets.
5176
5177 2009-09-29  Nick Clifton  <nickc@redhat.com>
5178
5179         * function.c (current_function_name): If there is no current
5180         function just return "<none>".
5181
5182 2009-09-28  Sriraman Tallam  <tmsriram@google.com>
5183
5184         * tree-pass.h (register_pass_info): New structure.
5185         (pass_positioning_ops): Move enum from gcc-plugin.h.
5186         (register_pass): New function.
5187         * gcc-plugin.h (plugin_pass): Delete structure.
5188         (pass_positioning_ops): Delete enum.
5189         * plugin.c (regsiter_pass): Delete function.
5190         (position_pass): Delete function.
5191         (added_pass_nodes): Delete variable.
5192         (prev_added_pass_nodes): Delete variable.
5193         (pass_list_node): Delete structure.
5194         * passes.c (make_pass_instance): New function.
5195         (next_pass_1): Change to call make_pass_instance.
5196         (pass_list_node): Move structure from gcc-plugin.h.
5197         (added_pass_nodes): Move variable from plugin.c.
5198         (prev_added_pass_nodes): Move variable from plugin.c.
5199         (position_pass): New function.
5200         (register_pass): New function.
5201
5202 2009-09-28  Easwaran Raman  <eraman@google.com>
5203
5204         * ifcvt.c (noce_try_abs): Recognize pattern and call
5205         expand_one_cmpl_abs_nojump.
5206         * optabs.c (expand_one_cmpl_abs_nojump): New function.
5207         * optabs.h (expand_one_cmpl_abs_nojump): Declare.
5208
5209 2009-09-28  Ian Lance Taylor  <iant@google.com>
5210
5211         PR middle-end/40500
5212         * c-opts.c (c_common_handle_option): Don't set
5213         warn_jump_misses_init for -Wall.
5214         * doc/invoke.texi (Warning Options): Update documentation.
5215
5216 2009-09-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5217
5218         * Makefile.in ($(out_object_file)): Depend on
5219         gt-$(basename $(notdir $(out_file))).h.
5220
5221 2009-09-28  Richard Henderson  <rth@redhat.com>
5222
5223         * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
5224         * except.c (gen_eh_region): Set it.
5225         (duplicate_eh_regions_1): Copy it.
5226         * tree-eh.c (lower_resx): Use it to determine which function
5227         to call to resume.
5228
5229         * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
5230         * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
5231         * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
5232         * tree.c (build_common_builtin_nodes): Remove parameter.  Build
5233         BUILT_IN_CXA_END_CLEANUP if necessary.
5234
5235         * c-common.c (c_define_builtins): Update call to
5236         build_common_builtin_nodes.
5237
5238 2009-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5239
5240         * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
5241
5242 2009-09-28  Michael Matz  <matz@suse.de>
5243
5244         * builtins.c (interclass_mathfn_icode): New helper.
5245         (expand_builtin_interclass_mathfn): Use it here, and split folding
5246         into ...
5247         (fold_builtin_interclass_mathfn): ... this new folder.
5248         (build_call_nofold_loc): New static helper.
5249         (build_call_nofold): New wrapper macro for above.
5250         (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
5251         (expand_builtin_pow): Ditto.
5252         (expand_builtin_memset_args): Ditto.
5253         (expand_builtin_printf): Ditto.
5254         (expand_builtin_fprintf): Ditto.
5255         (expand_builtin_sprintf): Ditto.
5256         (expand_builtin_memory_chk): Ditto.
5257         (expand_builtin_mempcpy_args): Ditto and don't call folders.
5258         (expand_builtin_stpcpy): Ditto.
5259         (expand_builtin_strcmp): Ditto.
5260         (expand_builtin_strncmp): Ditto.
5261         (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
5262         (expand_builtin_strcpy_args): Don't call folders.
5263         (expand_builtin_memcmp): Ditto.
5264         (expand_builtin_strncpy): Ditto, and use target.
5265         (expand_builtin_memcpy): Ditto.
5266         (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
5267         expand_builtin_strpbrk, expand_builtin_memmove,
5268         expand_builtin_memmove_args, expand_builtin_bcopy,
5269         expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
5270         expand_builtin_strspn, expand_builtin_strcspn,
5271         expand_builtin_fputs): Remove these.
5272         (expand_builtin): Don't call the above, change calls to other
5273         expanders that changed prototype.
5274         (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
5275         (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
5276         fold_builtin_interclass_mathfn.
5277         (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
5278         (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
5279
5280         * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
5281         * passes.c (init_optimization_passes): Move pass_fold_builtins
5282         after last phiopt pass.
5283         * tree-inline.c (fold_marked_statements): When folding builtins
5284         iterate over all instruction potentially generated.
5285         * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
5286         earlier.
5287         (fold_gimple_call): Use it to always fold calls (into potentially
5288         multiple instructions).
5289         * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
5290         calls into zero at this time.
5291         * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
5292         statements generated by builtin folding.
5293
5294 2009-09-28  Nick Clifton  <nickc@redhat.com>
5295
5296         * config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns.
5297
5298 2009-09-28  Duncan Sands  <baldrick@free.fr>
5299
5300         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
5301         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
5302         (register_callback): Dispatch it.
5303         (invoke_plugin_callbacks): Incorporate in sanity check.
5304         * ggc.h (ggc_register_cache_tab): Add declaration.
5305         * ggc-common.c (ggc_register_root_tab): Simplify.
5306         (const_ggc_cache_tab_t): New typedef.
5307         (extra_cache_vec): New vector of dynamically added cache tables.
5308         (ggc_register_cache_tab): New function.
5309         (ggc_scan_cache_tab): New function.
5310         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
5311         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
5312
5313 2009-09-27  Richard Henderson  <rth@redhat.com>
5314
5315         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
5316         which we remove __builtin_stack_restore.
5317
5318 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
5319
5320         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
5321         to test for GRD_INVARIANT.
5322         (simple_rhs_p): Anything that's function_invariant_p is fine.
5323
5324 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
5325
5326         * gengtype.c (main): Use plunge_files instead of plugin_output.
5327
5328 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
5329             Rafael Avila de Espindola  <espindola@google.com>
5330
5331         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
5332         Don't print pch related info if it is false.
5333         (main): Don't print pch info in plugin mode.
5334
5335 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
5336
5337         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
5338         with dw_val_class_const_double.
5339         (struct dw_val_struct): Replace val_long_long with val_double and
5340         adjust for above change.
5341         (output_loc_operands): Likewise.
5342         (add_AT_long_long): Rename into...
5343         (add_AT_double): ...this.
5344         (print_die): Replace dw_val_class_long_long with
5345         dw_val_class_const_double and adjust.
5346         (attr_checksum): Likewise.
5347         (same_dw_val_p): Likewise.
5348         (size_of_die): Likewise.
5349         (value_format): Likewise.
5350         (output_die): Likewise.
5351         (loc_descriptor) <CONST_DOUBLE>: Likewise.
5352         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
5353         instead of add_AT_long_long.
5354         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
5355         value with the precision of its type.
5356
5357 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
5358
5359         PR c/41476
5360         * c-typeck.c (build_conditional_expr): Use the readonly and
5361         volatile flags of the operand types, not of the operands itself.
5362
5363 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
5364
5365         * collect2.c (main): Look for -brtl before adding libraries.
5366
5367 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
5368
5369         * config.gcc: Update OpenBSD targets.
5370         * config/openbsd-stdint.h: New file.
5371         * config/openbsd-libpthread.h: New file.
5372         * config/openbsd.h: Update and break out LIB_SPEC definition.
5373         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
5374         * config/i386/openbsdelf.h: Correct types.
5375         * config/m68k/openbsd.h: Likewise.
5376         * config/mips/openbsd.h: Likewise.
5377         * config/vax/openbsd.h: Likewise.
5378
5379 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
5380
5381         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
5382         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
5383         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
5384         of the length and zero.
5385
5386 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5387
5388         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
5389         (FLAGS_H): Add options.h $(REAL_H).
5390         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
5391         (TREE_VECTORIZER_H): New.
5392         (EBITMAP_H): Renamed from EBIMAP_H.
5393         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
5394         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
5395         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
5396         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
5397         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
5398         (graphite-clast-to-gimple.o, graphite-dependences.o)
5399         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
5400         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
5401         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
5402         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
5403         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
5404         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
5405         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
5406         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
5407         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
5408         updated and fixed as per above changes and per
5409         check_makefile_deps.sh output.
5410
5411         PR bootstrap/40928
5412         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
5413         * configure: Regenerate.
5414
5415 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5416
5417         * doc/install.texi: Update minimum MPC version to 0.7.
5418
5419 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
5420
5421         * doc/install.texi (Binaries): Remove reference to the binary
5422         distribution CD-ROM from the FSF.
5423
5424 2009-09-26  Michael Matz  <matz@suse.de>
5425
5426         PR lto/40758
5427         PR middle-end/41470
5428         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
5429         that are mentioned in the body.
5430
5431 2009-09-26  Michael Matz  <matz@suse.de>
5432
5433         PR tree-optimization/41454
5434         * tree-ssa-dom (stmts_to_rescan): Remove variable.
5435         (tree_ssa_dominator_optimize): Don't allocate and free it.
5436         (dom_opt_leave_block): Don't iterate over it.
5437         (eliminate_redundant_computations): Don't return a value.
5438         (cprop_operand, cprop_into_stmt): Ditto.
5439         (optimize_stmt): Don't defer updating stmts.
5440
5441 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
5442
5443         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
5444         generic_parameter_die, template_parameter_pack_die,
5445         gen_formal_parameter_die, gen_subprogram_die): Adjust after
5446         renaming DW_TAG_formal_parameter_pack and
5447         DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack
5448         and DW_TAG_GNU_template_parameter_pack.
5449
5450 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
5451
5452         * config/v850/v850.h (FUNCTION_VALUE): Remove.
5453         * config/v850/v850.c (v850_function_value): New function.
5454         (TARGET_FUNCTION_VALUE): Define.
5455
5456 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
5457
5458         * tree-vect-stmts.c (vectorizable_call): Call
5459         mark_symbols_for_renaming after vect_finish_stmt_generation.
5460
5461         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
5462         to loc_descriptor_from_tree.
5463         (add_location_or_const_value_attribute): Pass 0 instead of 2
5464         for decl_by_reference_p decls.
5465
5466 2009-09-25  Richard Guenther  <rguenther@suse.de>
5467
5468         PR middle-end/41463
5469         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
5470         arrays again.
5471
5472 2009-09-25  Ben Elliston  <bje@au.ibm.com>
5473
5474         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
5475         after `power7'.
5476
5477 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
5478
5479         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
5480         form of instruction.
5481
5482 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5483
5484         PR middle-end/41435
5485         * fold-const.c (const_binop): Handle complex int division.
5486         * tree-complex.c (expand_complex_div_straight,
5487         expand_complex_div_wide): Update comments.
5488
5489 2009-09-24  DJ Delorie  <dj@redhat.com>
5490
5491         PR target/41456
5492         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
5493         (reg_class): Likewise.
5494         (REG_CLASS_NAMES): Likewise.
5495         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
5496         (m32c_override_options): Disable -fivopts for M32C.
5497
5498 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
5499
5500         * config/rs6000/predicates.md (indexed_or_indirect_operand):
5501         Delete VSX load/store with update support.
5502         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
5503         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
5504         (vsx_movti): Ditto.
5505         (VSX_U): Delete.
5506         (VSbit): Ditto.
5507         (VStype_load_update): Ditto.
5508         (VStype_store_update): Ditto.
5509         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
5510         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
5511
5512         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
5513         load/store with update builtins.
5514
5515 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
5516
5517         * libgcc2.c (L_trampoline): Prototype for getpagesize
5518         and mprotect in WINNT case.
5519
5520 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
5521
5522         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
5523         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
5524         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
5525         'outgoing' argument.
5526         (TARGET_FUNCTION_VALUE): Define.
5527
5528 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
5529
5530         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
5531
5532 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
5533
5534         PR bootstrap/41405
5535         * common.opt: Initialize dwarf_strict to -1.
5536         * toplev.c (process_options): Catch unset dwarf_strict
5537         and set to 0 for all targets not overriding.
5538         * config/darwin.c (darwin_override_options): Catch unset
5539         dwarf_strict and override to 1.
5540
5541 2009-09-24  Jeff Law  <law@redhat.com>
5542
5543         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
5544
5545 2009-09-24  Richard Guenther  <rguenther@suse.de>
5546
5547         PR tree-optimization/36143
5548         PR tree-optimization/38747
5549         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
5550         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
5551
5552 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
5553
5554         PR bootstrap/41457
5555         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
5556         return false instead of gcc_unreachable ().  For CONST return the
5557         value returned by recursive call instead of always returning true.
5558         (tree_add_const_value_attribute): Return the value returned by
5559         add_const_value_attribute instead of always returning true if rtl
5560         is non-NULL.
5561
5562 2009-09-23  Justin Seyster  <jrseys@gmail.com>
5563
5564         * Makefile.in (PLUGIN_HEADERS): Include real.h.
5565
5566 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
5567
5568         * cgraphunit.c (cgraph_lower_function): Revert last change.
5569         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
5570         instead of DECL_NO_STATIC_CHAIN.
5571         * tree-cfg.c (verify_gimple_call): Likewise.
5572         * tree-nested.c (get_chain_decl, get_chain_field,
5573         convert_tramp_reference_op, convert_gimple_call): Likewise.
5574         (convert_all_function_calls): Likewise.  Always set or clear
5575         DECL_STATIC_CHAIN initially, for !n->outer clear it.
5576         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
5577         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
5578         if nested.
5579         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
5580         DECL_NO_STATIC_CHAIN.
5581         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
5582         instead of DECL_NO_STATIC_CHAIN.
5583         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
5584         decl_function_context.
5585         * varasm.c (initializer_constant_valid_p): Likewise.
5586         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
5587         (DECL_STATIC_CHAIN): ... this.
5588         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
5589         instead of DECL_NO_STATIC_CHAIN.
5590
5591 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
5592             Rafael Avila de Espindola  <espindola@google.com>
5593
5594         * gengtype.c (nb_plugin_files): Make it unsigned to match
5595         num_gt_files. Adjust other variables to avoid warnings.
5596         (main): Allocate an all zero lang_bitmap before each plugin file name
5597         to match regular file names.
5598
5599 2009-09-23  Richard Henderson  <rth@redhat.com>
5600
5601         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
5602         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
5603         static chain passed in memory.
5604         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
5605         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
5606         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
5607         STATIC_CHAIN_REGNUM defined.
5608
5609         * config/picochip/picochip-protos.h: s/class/klass/.
5610         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
5611         (picochip_static_chain): New.
5612         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
5613         (STATIC_CHAIN_INCOMING): Remove.
5614
5615         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
5616         (xtensa_static_chain): New.
5617         * config/xtensa/xtensa.h (STATIC_CHAIN): Remove.
5618         (STATIC_CHAIN_INCOMING): Remove.
5619
5620 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
5621
5622         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
5623         * config/pa/pa-protos.h (function_value): Remove.
5624         * config/pa/pa.c (pa_function_value): Rename from function_value.
5625         Make static, add 'outgoing' argument.
5626         (TARGET_FUNCTION_VALUE): Define.
5627
5628 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
5629
5630         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
5631         instead of cfun->machine->is_leaf.
5632         * config/avr/avr.h (machine_function): Remove is_leaf field.
5633
5634 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
5635
5636         PR debug/41439
5637         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
5638         DW_OP_piece after DW_OP_stack_value, adjust size calculations
5639         for it, when DW_OP_stack_value and DW_OP_implicit_value has
5640         the same size, prefer DW_OP_stack_value.
5641         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
5642         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
5643
5644 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
5645
5646         PR debug/41353
5647         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
5648
5649 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
5650
5651         PR debug/41248
5652         * cfgexpand.c (convert_debug_memory_address): New.
5653         (expand_debug_expr): Convert base address and offset to the same
5654         mode.  Use it to convert addresses to other modes.  Accept
5655         ptr_mode addresses.
5656
5657 2009-09-23  Dodji Seketeli <dodji@redhat.com>
5658
5659         PR debug/41065
5660         * function.h (types_used_by_vars_hash): Declare new hash table.
5661         (types_used_by_vars_eq, types_used_by_var_decl_insert): Declare
5662         equality and hash function for the hash table.
5663         (types_used_by_cur_var_decl): Declare a new global chained list.
5664         (types_used_by_var_decl_insert): Declare new function.
5665         * function.c (types_used_by_vars_hash): Define the hashtable ...
5666         (types_used_by_vars_eq, types_used_by_vars_do_hash): ... as well as
5667         its equality and hash functions.
5668         (hash_types_used_by_vars_entry): New hash helper.
5669         (types_used_by_cur_var_decl): Define the global chained list.
5670         (used_types_insert): Update the list of types used by the global
5671         variable being parsed.
5672         (types_used_by_var_decl_insert): Define new function.
5673         * c-common.h (record_types_used_by_current_var_decl): Declare ...
5674         * c-common.c (record_types_used_by_current_var_decl): ... new
5675         function.
5676         * c-decl.c (finish_decl): Record the types used by the global
5677         variable declaration we've just parsed.
5678         * dwarf2out.c (premark_used_types): Insert a new line between
5679         comment and function.
5680         (premark_used_types_helper): Fix comment.
5681         (premark_types_used_by_global_vars_helper,
5682         premark_types_used_by_global_vars): New functions.
5683         (prune_unused_types): Do not prune types used by global variables.
5684
5685 2009-09-23  Richard Guenther  <rguenther@suse.de>
5686
5687         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
5688         produced for bigendian targets with promoted subregs.
5689
5690 2009-09-23  Richard Guenther  <rguenther@suse.de>
5691
5692         * value-prof.c (gimple_ic): Purge old EH edges only after building
5693         the new ones.
5694
5695 2009-09-23  Nick Clifton  <nickc@redhat.com>
5696
5697         * config/arc/arc.c (arc_trampoline_init): Fix typo.
5698
5699 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
5700
5701         PR bootstrap/41405
5702         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
5703
5704         PR bootstrap/41436
5705         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
5706         on non-nested functions.
5707
5708 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
5709             Jan Hubicka  <jh@suse.cz>
5710
5711         * dwarf2out.c (loc_list_plus_const): Only define if
5712         DWARF2_DEBUGGING_INFO.
5713         (address_of_int_loc_descriptor): Likewise.
5714
5715         PR debug/41411
5716         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
5717
5718 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
5719
5720         PR c/39779
5721         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
5722         constant is more than zero.
5723
5724 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
5725
5726         PR target/40473
5727         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
5728         call final to emit non-scheduled prologue, instead insert at entry.
5729
5730 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
5731             Joseph S. Myers  <joseph@codesourcery.com>
5732
5733         * doc/install.texi (*-*-freebsd*): Add proper format codes.
5734
5735 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
5736             Rafael Avila de Espindola  <espindola@google.com>
5737
5738         * gengtype.c (is_file_equal): New function.
5739         (close_output_files): Use is_file_equal. Free of->buf.
5740
5741 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
5742             Rafael Avila de Espindola  <espindola@google.com>
5743
5744         * gengtype.c (write_types, write_local): Add the output_header
5745         argument. Update all callers.
5746
5747 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
5748
5749         * dwarf2out.c (template_parameter_pack_die,
5750         gen_formal_parameter_pack_die ): New functions.
5751         (make_ith_pack_parameter_name): Remove this function.
5752         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
5753         DW_TAG_formal_parameter_pack.
5754         (gen_generic_params_dies): Represent each template parameter pack
5755         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
5756         represented by usual DW_TAG_template_*_parameter DIEs that are
5757         children of the DW_TAG_template_parameter_pack element DIE.
5758         (generic_parameter_die): This doesn't deal with parameter pack
5759         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
5760         of parameter pack DIEs.
5761         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
5762         in certain cases, e.g. for pack elements.
5763         (gen_formal_types_die, gen_decl_die): Adjust usage of
5764         gen_formal_parameter_die.
5765         (gen_subprogram_die): Represent each function parameter pack by a
5766         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
5767         represented by usual DW_TAG_formal_parameter DIEs that are children
5768         of the DW_TAG_formal_parameter_pack DIE. Remove references to
5769         ____builtin_va_alist decls as no part of the compiler uses those
5770         anymore.
5771         * langhooks.h (struct lang_hooks_for_decls): Add
5772         function_parm_expanded_from_pack_p, get_generic_function_decl
5773         and function_parameter_pack_p hooks.  Fix comment for
5774         get_innermost_generic_parms hook.
5775         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
5776         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
5777         macros and use them to initialize lang_hook.
5778
5779 2009-09-22  Richard Henderson  <rth@redhat.com>
5780
5781         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
5782         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
5783         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
5784         on TRAMPOLINE_TEMPLATE.
5785         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
5786         TRAMPOLINE_ADJUST_ADDRESS.
5787         * targhooks.c (default_asm_trampoline_template): Remove.
5788         (default_trampoline_adjust_address): Remove.
5789         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
5790         * targhooks.h: Update decls.
5791
5792 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
5793
5794         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
5795         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
5796         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
5797
5798 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
5799
5800         PR debug/41295
5801         * reload1.c (reload): Reset debug insns with pseudos without
5802         equivalences.
5803
5804 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
5805
5806         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
5807         unconditional true for decimal float modes.
5808         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
5809         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
5810
5811 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
5812
5813         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
5814         Enable a new case for __FreeBSD__ >= 7.
5815         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
5816         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
5817         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
5818         and USE_LD_AS_NEEDED.
5819
5820         * doc/install.texi (*-*-freebsd*): Update target information.
5821
5822 2009-09-22  Richard Guenther  <rguenther@suse.de>
5823
5824         PR middle-end/41395
5825         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
5826         arrays really properly.
5827
5828 2009-09-22  Richard Henderson  <rth@redhat.com>
5829
5830         PR target/41246
5831         * target.h (struct gcc_target): Add asm_out.trampoline_template,
5832         calls.static_chain, calls.trampoline_init,
5833         calls.trampoline_adjust_address.
5834         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5835         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
5836         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
5837         * builtins.c (expand_builtin_setjmp_receiver): Use
5838         targetm.calls.static_chain; only clobber registers.
5839         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
5840         set up memory attributes properly for the trampoline block.
5841         (expand_builtin_adjust_trampoline): Use
5842         targetm.calls.trampoline_adjust_address.
5843         * calls.c (prepare_call_address): Add fndecl argument.  Use
5844         targetm.calls.static_chain.
5845         * df-scan.c (df_need_static_chain_reg): Remove.
5846         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
5847         consolodate static chain handling.
5848         * doc/tm.texi: Document new hooks.
5849         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
5850         (init_emit_regs): Don't initialize them.
5851         * expr.h (prepare_call_address): Update decl.
5852         * final.c (profile_function): Use targetm.calls.static_chain.
5853         * function.c (expand_function_start): Likewise.
5854         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
5855         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
5856         only clobber registers.
5857         * targhooks.c (default_static_chain): New.
5858         (default_asm_trampoline_template, default_trampoline_init): New.
5859         (default_trampoline_adjust_address): New.
5860         * targhooks.h: Declare them.
5861         * varasm.c (assemble_trampoline_template): Use
5862         targetm.asm_out.trampoline_template.  Make the memory block const
5863         and set its size.
5864
5865         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
5866         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
5867         differences into the TARGET_ABI_OPEN_VMS code block.
5868         (TARGET_TRAMPOLINE_INIT): New.
5869         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
5870         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
5871         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
5872         (INITIALIZE_TRAMPOLINE): Remove.
5873
5874         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
5875         (TRAMPOLINE_TEMPLATE): Merge with ...
5876         (INITIALIZE_TRAMPOLINE): ... this and move ...
5877         * config/arc/arc.c (arc_trampoline_init): ... here.
5878         (TARGET_TRAMPOLINE_INIT): New.
5879
5880         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5881         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
5882         (arm_asm_trampoline_template): New.
5883         (arm_trampoline_init, arm_trampoline_adjust_address): New.
5884         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
5885         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
5886         code to arm_asm_trampoline_template.
5887         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
5888         arm_trampoline_adjust_address.
5889         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
5890         adjust for target hook parameters.
5891
5892         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
5893         Remove.
5894
5895         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
5896         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
5897         (bfin_trampoline_init): Rename from initialize_trampoline;
5898         make static; update for target hook parameters.
5899         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
5900         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
5901         bfin_asm_trampoline_template.
5902         (INITIALIZE_TRAMPOLINE): Remove.
5903
5904         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
5905         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
5906         cris_trampoline_init): New.
5907         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
5908         cris_asm_trampoline_template.
5909         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
5910         adjust for target hook parameters.
5911
5912         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
5913
5914         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
5915         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
5916         fr30_trampoline_init): New.
5917         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
5918         fr30_asm_trampoline_template.
5919         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
5920         adjust for target hook parameters.
5921
5922         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
5923         (frv_trampoline_init): Rename from frv_initialize_trampoline;
5924         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
5925         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
5926         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
5927
5928         * config/h8300/h8300.c (h8300_trampoline_init): New.
5929         (TARGET_TRAMPOLINE_INIT): New.
5930         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
5931         to h8300_trampoline_init and adjust for hook parameters.
5932
5933         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
5934         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
5935         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
5936         make static; adjust for hook parameters.
5937         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
5938
5939         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5940         (TARGET_TRAMPOLINE_INIT): New.
5941         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
5942         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
5943         iq2000_asm_trampoline_template.
5944         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
5945         (TRAMPOLINE_CODE_SIZE): New.
5946         (TRAMPOLINE_SIZE): Use it.
5947         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
5948
5949         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
5950         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
5951         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
5952         adjust for hook parameters.
5953         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
5954
5955         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
5956         (m32r_trampoline_init): New.
5957         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
5958         m32r_trampoline_init.
5959
5960         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
5961         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
5962         make static; update for hook parameters.
5963         * config/m68hc11/m68hc11-protos.h: Update.
5964         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
5965
5966         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5967         (TARGET_TRAMPOLINE_INIT): New.
5968         (mcore_function_value): Fix typo.
5969         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
5970         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
5971         to mcore_asm_trampoline_template.
5972         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
5973
5974         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
5975         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
5976         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
5977         update for hook parameters.
5978         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
5979
5980         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
5981         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
5982         mips_trampoline_init): New.
5983         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
5984         mips_asm_trampoline_template.
5985         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
5986         update for hook parameters.
5987
5988         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5989         (TARGET_TRAMPOLINE_INIT): New.
5990         (mmix_trampoline_size): Remove.
5991         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
5992         make static.  Remove out-of-date tetra vs octa comment.
5993         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
5994         make static; update for hook parameters.
5995         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
5996         (INITIALIZE_TRAMPOLINE): Remove.
5997         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
5998         (TRAMPOLINE_ALIGNMENT): New.
5999         * gcc/config/mmix/mmix-protos.h: Update.
6000
6001         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6002         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
6003         mn10300_trampoline_init): New.
6004         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
6005         mn10300_asm_trampoline_template.
6006         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
6007
6008         * config/moxie/moxie.c (moxie_static_chain,
6009         moxie_asm_trampoline_template, moxie_trampoline_init,
6010         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
6011         TARGET_TRAMPOLINE_INIT): New.
6012         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
6013         moxie_trampoline_init.
6014         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
6015         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
6016
6017         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6018         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
6019         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
6020         pa_trampoline_adjust_address): New.
6021         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
6022         pa_asm_trampoline_template.
6023         (TRAMPOLINE_ALIGNMENT): New.
6024         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
6025         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
6026         adjust for hook parameters.
6027         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
6028
6029         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
6030         (TARGET_TRAMPOLINE_INIT): New.
6031         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
6032         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
6033
6034         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
6035
6036         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
6037         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
6038         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
6039         make static; adjust parameters for the hook.
6040         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
6041
6042         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
6043         s390_trampoline_template; make static.
6044         (s390_trampoline_init): Rename from s390_initialize_trampoline;
6045         make static; adjust for target hook.
6046         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
6047         * config/s390/s390-protos.h: Remove trampoline decls.
6048         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
6049         (TRAMPOLINE_TEMPLATE): Remove.
6050         (TRAMPOLINE_ALIGNMENT): New.
6051
6052         * config/score/score-protos.h (score_initialize_trampoline): Remove.
6053         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6054         (TARGET_TRAMPOLINE_INIT): New.
6055         (score_asm_trampoline_template): New.
6056         (score_trampoline_init): Rename from score_initialize_trampoline;
6057         make static; adjust for hook parameters.
6058         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
6059         score[37]_asm_trampoline_template.
6060         (INITIALIZE_TRAMPOLINE): Remove.
6061         * config/score/score3.c (score3_asm_trampoline_template): New.
6062         (score3_trampoline_init): Rename from score3_initialize_trampoline;
6063         adjust for target hook.
6064         * config/score/score7.c (score7_asm_trampoline_template): New.
6065         (score7_trampoline_init): Rename from score7_initialize_trampoline;
6066         adjust for target hook.
6067         * config/score/score3.h, config/score/score7.h: Update.
6068
6069         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
6070         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
6071         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
6072         (sh_trampoline_init): Rename from sh_initialize_trampoline;
6073         make static; adjust for target hook parameters.
6074         (sh_trampoline_adjust_address): New.
6075         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
6076         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
6077
6078         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
6079         (sparc32_initialize_trampoline): Rename from
6080         sparc_initialize_trampoline; make static; replace tramp parameter
6081         with m_tramp and update memory accesses.
6082         (sparc64_initialize_trampoline): Similarly.
6083         (sparc_trampoline_init): New.
6084         * config/sparc/sparc-protos.h: Remove trampoline decls.
6085         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
6086         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
6087
6088         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
6089         (array_to_constant): Make ARR parameter const.
6090         (spu_trampoline_init): Rename from spu_initialize_trampoline;
6091         make static; update for hook parameters.
6092         * config/spu/spu-protos.h: Update decls.
6093         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
6094
6095         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
6096         from xstormy16_initialize_trampoline; make static; update for
6097         hook parameters.
6098         (TARGET_TRAMPOLINE_INIT): New.
6099         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
6100
6101         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6102         (TARGET_TRAMPOLINE_INIT): New.
6103         (v850_can_eliminate): Make static.
6104         (v850_asm_trampoline_template, v850_trampoline_init): New.
6105         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
6106         v850_asm_trampoline_template.
6107         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
6108         and adjust for target hook parameters.
6109
6110         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6111         (TARGET_TRAMPOLINE_INIT): New.
6112         (vax_asm_trampoline_template, vax_trampoline_init): New.
6113         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
6114         vax_asm_trampoline_template.
6115         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
6116
6117         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6118         (TARGET_TRAMPOLINE_INIT): New.
6119         (xtensa_asm_trampoline_template): Rename from
6120         xtensa_trampoline_template; make static.
6121         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
6122         make static; update for hook parameters.
6123         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
6124         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
6125         (INITIALIZE_TRAMPOLINE): Remove.
6126
6127         * config/i386/i386.c (ix86_function_regparm): Do not issue an
6128         error for nested functions with regparm=3.
6129         (ix86_compute_frame_layout): Adjust frame pointer offset for
6130         ix86_static_chain_on_stack.
6131         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
6132         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
6133         don't reset to UNITS_PER_WORD.
6134         (ix86_emit_leave): Adjust ix86_cfa_state.
6135         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
6136         (ix86_static_chain): New.
6137         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
6138         make static; update for target hook parameters; use ix86_static_chain.
6139         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
6140         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
6141         (INITIALIZE_TRAMPOLINE): Remove.
6142         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
6143         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
6144         to the end.  Add static_chain_on_stack.
6145         (ix86_static_chain_on_stack): New.
6146
6147         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
6148         (m68k_output_mi_thunk): Don't use static_chain_rtx.
6149         (m68k_trampoline_init): New.
6150         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
6151         m68k_trampoline_init and adjust for hook parameters.
6152         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
6153         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
6154
6155 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
6156
6157         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
6158         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
6159
6160         * reload1.c (reload): Call wrap_constant when substituting
6161         reg for equiv inside of DEBUG_INSNs.
6162
6163         PR bootstrap/41405
6164         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
6165         add_call_src_coords_attributes, add_high_low_attributes,
6166         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
6167         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
6168         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
6169         when -gdwarf-2 -gstrict-dwarf.
6170         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
6171         -gdwarf-[23] -gstrict-dwarf.
6172         (address_of_int_loc_descriptor, loc_descriptor,
6173         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
6174         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
6175         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
6176
6177 2009-09-22  Richard Guenther  <rguenther@suse.de>
6178
6179         PR tree-optimization/41428
6180         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
6181         (ccp_finalize): Pass it to substitute_and_fold.
6182
6183 2009-09-22  Richard Guenther  <rguenther@suse.de>
6184
6185         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
6186         (substitute_and_fold): Adjust prototype.
6187         * tree-vrp.c (vrp_evaluate_conditional): Make static.
6188         (simplify_stmt_using_ranges): Likewise.
6189         (fold_predicate_in): Move here from tree-ssa-propagate.c.
6190         (vrp_fold_stmt): New function.
6191         (vrp_finalize): Pass it to substitute_and_fold.
6192         * tree-flow.h (vrp_evaluate_conditional): Remove.
6193         (simplify_stmt_using_ranges): Likewise.
6194         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
6195         * tree-ssa-copy.c (fini_copy_prop): Likewise.
6196         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
6197         member.
6198         (fold_predicate_in): Move to tree-vrp.c.
6199         (substitute_and_fold): Use the callback instead of calling into
6200         tree-vrp.c functions directly.
6201
6202 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
6203
6204         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
6205         comparison warning on rs6000.
6206
6207         PR middle-end/41429
6208         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
6209         GIMPLE_EH_MUST_NOT_THROW cleanup.
6210         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
6211
6212 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
6213
6214         PR middle-end/41260
6215         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
6216         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
6217         LIB_SPEC for darwin10 and later since it always uses the unwinder in
6218         libSystem which is derived from the gcc 4.2.1 unwinder.
6219
6220 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
6221
6222         PR middle-end/41357
6223         * varasm.c (default_encode_section_info): Copy TLS model into
6224         sym_ref flags regardless of backend support for TLS, for all
6225         model types except TLS_MODEL_EMULATED.
6226
6227 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
6228
6229         PR bootstrap/41404
6230         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
6231         we can handle it correctly.
6232
6233 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
6234
6235         * doc/install.texi (os2): Remove section.
6236
6237 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
6238
6239         * doc/standards.texi (Objective-C): Adjust two URLs.
6240
6241 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
6242
6243         * tree-tailcall.c (process_assignment): Don't check if a
6244         multiplication or an addition are already present.
6245         (find_tail_calls): Combine multiple additions and multiplications.
6246         (adjust_accumulator_values): Emit accumulators.
6247
6248 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
6249
6250         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
6251         xmm register restore.
6252
6253 2009-09-21  Jan Hubicka  <jh@suse.cz>
6254
6255         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
6256         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
6257         restore at the end.
6258
6259 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
6260
6261         * stor-layout.c (layout_type): Remove obsolete code.
6262
6263 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
6264
6265         PR middle-end/41395
6266         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
6267
6268 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6269
6270         PR middle-end/30789
6271         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
6272         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
6273         (fold_builtin_2, do_mpc_arg1): Update accordingly.
6274         * fold-const.c (const_binop): Likewise.
6275         * real.h (do_mpc_arg2): Update prototype.
6276
6277 2009-09-20  Jan Hubicka  <jh@suse.cz>
6278
6279         * dwarf2out.c (add_const_value_attribute): Return true if successful.
6280         (add_location_or_const_value_attribute): Rewrite using
6281         loc_list_from_tree.
6282         (tree_add_const_value_attribute): Return true if successful.
6283         (tree_add_const_value_attribute_for_decl): Likewise.
6284
6285         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
6286         (loc_descriptor): ... here;
6287         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
6288         (cst_pool_loc_descr): Break out from ...; do not reffer constant
6289         pool items that was not marked for output.
6290         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
6291         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
6292         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
6293         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
6294         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
6295         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
6296         DW_OP_stack_value to get address of items that are not available
6297         as addresses.
6298         (dw_loc_list): Handle single element lists correctly.
6299
6300 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
6301             Pascal Obry  <obry@adacore.com>
6302
6303         * unwind-dw2-fde.c (classify_object_over_fdes):
6304         Cast the constant 1 to _Unwind_Ptr.
6305         (add_fdes): Likewise.
6306         (linear_search_fdes): Likewise.
6307
6308 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
6309
6310         * stor-layout.c (set_sizetype): Avoid useless type copy.
6311
6312 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
6313
6314         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
6315         feature check.
6316         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
6317         * configure, config.in: Regenerate.
6318         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
6319         DW_EH_PE_absptr.
6320         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
6321         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
6322         for global data if the output could be used in a shared library.
6323         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
6324         to 0 if TARGET_WRITABLE_EH_FRAME.
6325
6326 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
6327
6328         PR rtl-optimization/39886
6329         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
6330         just when insn is equal to BB_END (bb).
6331
6332 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
6333
6334         * config/mips/mips.opt (mrelax-pic-calls): New option.
6335         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
6336         the file.
6337         (mips_unspec_call): Change "unspec_call" expander into this.
6338         (mips_strip_unspec_call): New function.
6339         (mips_got_load): Call mips_unspec_call instead of
6340         gen_unspec_call<mode>.
6341         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
6342         MIPS_CALL.
6343         (mips_cfg_in_reorg): New function.
6344         (mips16_lay_out_constants): Use it to decide whether to call
6345         CFG-aware insn splitting.
6346         (r10k_insert_cache_barriers): Move CFG set-up code from here to
6347         mips_reorg.  Move DF set-up code from here ...
6348         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
6349         from here.
6350         (mips_reorg): Call mips_df_reorg instead of
6351         r10k_insert_cache_barriers.  Move CFG set-up code here from
6352         r10k_insert_cache_barriers.
6353         (mips_call_expr_from_insn): New function.
6354         (mips_pic_call_symbol_from_set): Likewise.
6355         (mips_find_pic_call_symbol): Likewise.
6356         (mips_annotate_pic_call_expr): Likewise.
6357         (mips_get_pic_call_symbol): Likewise.
6358         (mips_annotate_pic_calls): Likewise.
6359         (mips_override_options): Disable -mrelax-pic-calls unless PIC
6360         calls are used.
6361         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
6362         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
6363         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
6364         directive.
6365         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
6366         (unspec_call<mode>): Remove it.
6367         (sibcall_internal, sibcall_value_internal,
6368         sibcall_value_multiple_internal, call_internal, call_split,
6369         call_value_internal, call_value_split,
6370         call_value_multiple_internal, call_value_multiple_split): Pass
6371         SIZE_OPNO to MIPS_CALL.
6372         (call_internal_direct, call_direct_split,
6373         call_value_internal_direct, call_value_direct_split): Pass -1 as
6374         SIZE_OPNO to MIPS_CALL.
6375         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
6376         * configure: Regenerate.
6377         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
6378         and -mno-relax-pic-calls.
6379         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
6380
6381 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6382
6383         PR bootstrap/35619
6384         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
6385         in the directory this rule is called from, rather than the
6386         toplevel 'gcc' directory, to fix in-tree build.
6387
6388 2009-09-19  Chris Demetriou  <cgd@google.com>
6389
6390         PR preprocessor/28435:
6391         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
6392         to cpplib that the preprocessor output is needed.
6393
6394 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
6395
6396         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
6397         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
6398         *return_and_restore_fpregs_<mode>,
6399         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
6400
6401         PR bootstrap/41397
6402         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
6403         instead of assuming it has always a REG inside of it.
6404
6405 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
6406
6407         * config/freebsd.h: Update comment on types.
6408         (WINT_TYPE): Define.
6409
6410 2009-09-18  Jason Merrill  <jason@redhat.com>
6411
6412         * c.opt: Add -fno-deduce-init-list.
6413
6414 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
6415
6416         * value-prof.c (interesting_stringop_to_profile_p): Added output
6417         argument to indicate which parameter is the size parameter.
6418         * value-prof.c (gimple_stringop_fixed_value): Use
6419         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
6420         * value-prof.c (gimple_stringops_transform): Update call sites to
6421         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
6422
6423 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
6424
6425         PR target/38288
6426         From David Binderman <dcb314@hotmail.com>:
6427         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
6428         local variable f.  Remove stale comments.
6429         (ix86_compute_frame_layout): Remove useless local variable total_size.
6430         Remove #if 0'd code.
6431         (legitimate_address_p): Remove useless local variables
6432         reason_rtx and reason.
6433         (ix86_split_copysign_const): Remove useless local variable op1.
6434         (scale_counter): Remove useless local variable piece_size_mask.
6435
6436 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
6437
6438         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
6439         output decl.
6440
6441 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
6442
6443         PR target/40913
6444         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
6445
6446 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
6447
6448         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
6449         TYPE_STUB_DECL.
6450
6451 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
6452
6453         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
6454         DW_OP_implicit_value even without dwarf_version 4.
6455
6456 2009-09-17  Jan Hubicka  <jh@suse.cz>
6457
6458         * dwarf2out.c: Include tree-pass.h and gimple.h.
6459         (loc_list_plus_const): New function.
6460         (loc_descriptor_from_tree_1): Rename to ...
6461         (loc_descriptor_from_tree): ... remove original.
6462         (loc_list_from_tree): New function.
6463         (add_AT_location_description): Accept location list.
6464         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
6465         (concatn_mem_loc_descriptor): Remove.
6466         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
6467         returning NULL.
6468         (secname_for_decl): Move up.
6469         (hidden_reference_p): New function; break out from ...
6470         (loc_by_refernece): ... here; move up.
6471         (dw_loc_list): New function.
6472         (single_element_loc_list): New function.
6473         (single_element_loc_list_p): New function.
6474         (add_loc_descr_to_each): New function.
6475         (add_loc_list): New function.
6476         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
6477         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
6478         add diagnostics why expansion failed.
6479         (add_location_or_const_value_attribute): Support location lists.
6480         (add_bound_info): Likewise.
6481         (descr_info_loc): Update call of loc_descriptor_from_tree.
6482         (gen_variable_die): Work on location lists.
6483         * final.c (pass_final): Add dump file.
6484         * Makefile.in (dwarf2out.o): Add new dependencies.
6485
6486 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
6487
6488         PR c/41049
6489         * real.c decimal_from_integer, decimal_integer_string): New.
6490         (real_from_integer): Use them as special case for decimal float.
6491         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
6492         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
6493         Do not append zero after the decimal point in string to convert.
6494
6495 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
6496
6497         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
6498         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
6499
6500 2009-09-17  Martin Jambor  <mjambor@suse.cz>
6501
6502         * common.opt (fipa-sra): New switch.
6503         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
6504         * timevar.def (TV_IPA_SRA): New timevar.
6505         * params.def (ipa-sra-ptr-growth-factor): New parameter.
6506         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
6507         * tree-sra.c: Include cgraph.c.
6508         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
6509         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
6510         and grp_not_necessarilly_dereferenced.
6511         (func_param_count): New variable.
6512         (encountered_apply_args): New variable.
6513         (bb_dereferences): New variable.
6514         (final_bbs): New variable.
6515         (no_accesses_representant): New variable.
6516         (no_accesses_p): New function.
6517         (dump_access): Dump the new fields.
6518         (sra_initialize): Set encountered_apply_args to false.
6519         (get_ssa_base_param): New function.
6520         (mark_parm_dereference): New function.
6521         (create_access): Caring for INIDRECT_REFs and different handling of
6522         varialble length accesses in early IPA SRA.  Store the stmt - a new
6523         parameter - to the new access.
6524         (build_access_from_expr_1): New parameter stmt, passed to
6525         create_access.  Handle INDIRECT_REFs.
6526         (build_access_from_expr): Pass the current statement to
6527         build_access_from_expr_1.
6528         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
6529         passes.
6530         (build_accesses_from_assign): Pass the current statement to
6531         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
6532         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
6533         final_bbs when necessary.  Check for calls to __builtin_apply_args.
6534         Fixup EH info if anythng was changed.
6535         (is_unused_scalar_param): New function.
6536         (ptr_parm_has_direct_uses): New function.
6537         (find_param_candidates): New function.
6538         (mark_maybe_modified): New function.
6539         (analyze_modified_params): New function.
6540         (propagate_dereference_distances): New function.
6541         (dump_dereferences_table): New function.
6542         (analyze_caller_dereference_legality): New function.
6543         (unmodified_by_ref_scalar_representative): New function.
6544         (splice_param_accesses): New function.
6545         (decide_one_param_reduction): New function.
6546         (enum ipa_splicing_result): New type.
6547         (splice_all_param_accesses): New function.
6548         (get_param_index): New function.
6549         (turn_representatives_into_adjustments): New function.
6550         (analyze_all_param_acesses): New function.
6551         (get_replaced_param_substitute): New function.
6552         (get_adjustment_for_base): New function.
6553         (replace_removed_params_ssa_names): New function.
6554         (sra_ipa_reset_debug_stmts): New function.
6555         (sra_ipa_modify_expr): New function.
6556         (sra_ipa_modify_assign): New function.
6557         (convert_callers): New function.
6558         (modify_function): New function.
6559         (ipa_sra_preliminary_function_checks): New function.
6560         (ipa_early_sra): New function.
6561         (ipa_early_sra_gate): New function.
6562         (pass_early_ipa_sra): New variable.
6563         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
6564
6565 2009-09-17  Michael Matz  <matz@suse.de>
6566
6567         PR middle-end/41347
6568         * tree.c (build_type_attribute_qual_variant): Export.
6569         * tree.h (build_type_attribute_qual_variant): Declare.
6570         * tree-inline.c (remap_type_1): Use it to build variants with
6571         the original qualifiers and attributes.
6572
6573 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
6574
6575         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
6576         without a fallthrough edge.
6577
6578 2009-09-16  DJ Delorie  <dj@redhat.com>
6579
6580         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
6581         chip and ignore the "fast_interrupt" attribute if so.
6582
6583 2009-09-16  Richard Henderson  <rth@redhat.com>
6584
6585         PR middle-end/41360
6586         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
6587         barrier fix.
6588
6589 2009-09-16  Richard Henderson  <rth@redhat.com>
6590
6591         PR target/41246
6592         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
6593         is set only if DECL_NO_STATIC_CHAIN is unset.
6594         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
6595         (FOR_EACH_NEST_INFO): New.
6596         (walk_all_functions): Use it.
6597         (finalize_nesting_tree): Likewise.
6598         (unnest_nesting_tree): Likewise.
6599         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
6600         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
6601         (convert_gimple_call): Early out if gimple_call_chain already set.
6602         (convert_all_function_calls): Iterate until no new functions
6603         require a static chain.
6604         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
6605         when building a trampoline.  Use dump_function_to_file instead
6606         of dump_function.
6607         (lower_nested_functions): Open dump_file.  Validate that decls
6608         that have DECL_NO_STATIC_CHAIN from the front end don't have that
6609         bit reset by this pass.
6610
6611 2009-09-16  Michael Matz  <matz@suse.de>
6612
6613         PR fortran/41212
6614         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
6615         shorten decl_common_unused.
6616         (DECL_RESTRICTED_P): New accessor.
6617         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
6618         to disambiguate marked decls and restrict pointers.
6619
6620 2009-09-16  Richard Henderson  <rth@redhat.com>
6621
6622         PR middle-end/41360
6623         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
6624
6625 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
6626
6627         * integrate.c (set_block_abstract_flags): Call
6628         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
6629
6630 2009-09-16  Richard Guenther  <rguenther@suse.de>
6631
6632         PR middle-end/34011
6633         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
6634         as non-aliased.
6635
6636 2009-09-16  DJ Delorie  <dj@redhat.com>
6637             Kaz Kojima  <kkojima@gcc.gnu.org>
6638
6639         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
6640         (sh_expand_prologue): Update calls to output_stack_adjust.
6641         (sh_expand_epilogue): Likewise.
6642
6643 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
6644
6645         PR bootstrap/41349
6646         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
6647         trying to limit the extent of searches in the insn stream.
6648
6649 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
6650             Jakub Jelinek  <jakub@redhat.com>
6651
6652         PR target/41175
6653         PR target/40677
6654         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
6655         problem.
6656         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
6657         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
6658         (rs6000_savres_strategy): Always save FP registers inline if the
6659         target doesn't support hardware double-precision.  Set the above
6660         bits in return value when needed.
6661         (rs6000_savres_routine_sym): Fix computation for cache selector.
6662         Mark the generated symbol as a function.  Rename exitp argument to
6663         lr.  Move code for determining the name of the symbol...
6664         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
6665         getting the names right on AIX and 64-bit Linux.
6666         (savres_routine_name): New variable.
6667         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
6668         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
6669         on what the target routine uses as a base register.  If savep && lr
6670         describe saving of r0 into memory slot.
6671         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
6672         line calls for AIX ABI.
6673         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
6674         determine FP save/restore functions.
6675         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
6676         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
6677         gen_addsi3.
6678         (rs6000_emit_epilogue): Adjust computation of restore_lr.
6679         Duplicate restoration of LR and execute the appropriate one
6680         depending on whether GPRs are being restored inline.  Set r11 from
6681         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
6682         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
6683         Fix out of line calls for AIX ABI.
6684         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
6685         New insn.
6686         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
6687         register 11.
6688         (*restore_gpregs_spe): Likewise.
6689         (*return_and_restore_gpregs_spe): Likewise.
6690         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
6691         Define to empty string unconditionally.
6692         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
6693         Define to empty string unconditionally.
6694         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
6695         !TARGET_64BIT.
6696
6697 2009-09-15  Jan Hubicka  <jh@suse.cz>
6698
6699         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
6700         * params.def (inline-insns-auto): Likewise.
6701
6702 2009-09-15  Martin Jambor  <mjambor@suse.cz>
6703
6704         * ipa-inline.c (estimate_function_body_sizes): Dump info about
6705         individual statements only at TDF_DETAILS dump level.  Format
6706         source for 80 characters per line.
6707
6708 2009-09-15  Christian Bruel  <christian.bruel@st.com>
6709
6710         * regrename.c (do_replace): Update REG_DEAD notes.
6711
6712 2009-09-15  Revital Eres  <eres@il.ibm.com>
6713
6714         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
6715         * targhooks.c (default_builtin_support_vector_misalignment):
6716         New builtin function.
6717         * targhooks.h (default_builtin_support_vector_misalignment):
6718         Declare.
6719         * target.h (builtin_support_vector_misalignment):
6720         New field in struct gcc_target.
6721         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
6722         new builtin function.
6723         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
6724         Define.
6725         * config/rs6000/rs6000.c
6726         (rs6000_builtin_support_vector_misalignment): New function.
6727         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
6728
6729 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
6730
6731         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
6732         instead of INSN_P.
6733         (bfin_optimize_loop): Likewise.
6734         (bfin_gen_bundles): Likewise.
6735         (workaround_speculation): Likewise.
6736         (find_load): Return NULL_RTX for debug_insn.
6737
6738 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
6739
6740         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
6741         (sminsf3): Ditto.
6742
6743 2009-09-14  DJ Delorie  <dj@redhat.com>
6744
6745         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
6746         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
6747         VLIW mode.
6748
6749 2009-09-14  Richard Henderson  <rth@redhat.com>
6750             Jakub Jelinek  <jakub@redhat.com>
6751
6752         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
6753         * cfgbuild.c (make_edges): Handle asm goto.
6754         * cfglayout.c (fixup_reorder_chain): Likewise.
6755         * cfgrtl.c (patch_jump_insn): Likewise.
6756         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
6757         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
6758         (gimple_build_asm_vec): Add and use labels parameter.
6759         (gimple_build_asm): Remove.
6760         (walk_gimple_asm): Walk labels too.
6761         * gimple.def (GIMPLE_ASM): Update docs.
6762         * gimple.h: Update decls.
6763         (struct gimple_statement_asm): Change nc to use unsigned char;
6764         add nl member.
6765         (gimple_asm_nlabels): New.
6766         (gimple_asm_label_op, gimple_asm_set_label_op): New.
6767         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
6768         into gimple_build_asm_vec.
6769         * jump.c (mark_jump_label_asm): New.
6770         (mark_jump_label): Use it.
6771         (redirect_jump_1): Handle asm goto.
6772         (invert_jump_1): Soft fail if X is null.
6773         * recog.c (extract_asm_operands): New.
6774         (asm_noperands): Use it; handle asm labels.
6775         (decode_asm_operands): Use extract_asm_operands.
6776         (asm_operand_ok): Properly handle empty string.
6777         * reg-stack.c (get_asm_operands_in_out): Rename from
6778         get_asm_operand_n_inputs; use extract_asm_operands; return both
6779         inputs and outputs by reference; update all callers.
6780         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
6781         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
6782         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
6783         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
6784         (extract_asm_operands): Declare.
6785         * stmt.c (expand_asm_operands): Add and use labels parameter.
6786         (check_unique_operand_names): Likewise.
6787         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
6788         (expand_asm_stmt): Handle asm labels.
6789         * tree-cfg.c (make_gimple_asm_edges): New.
6790         (make_edges): Use it.
6791         (cleanup_dead_labels): Handle asm labels.
6792         (is_ctrl_altering_stmt): Likewise.
6793         (gimple_redirect_edge_and_branch): Likewise.
6794         * tree.def (ASM_EXPR): Add 5th operand.
6795         * tree.h (ASM_LABELS): New.
6796         (resolve_asm_operand_names): Update decl.
6797
6798         * c-parser.c (c_parser_asm_statement): Parse asm goto.
6799         (c_parser_asm_goto_operands): New.
6800         * c-tree.h (build_asm_expr): Update decl.
6801         * c-typeck.c (build_asm_expr): Add and use labels parameter.
6802         * doc/extend.texi: Document asm goto.
6803
6804 2009-09-14  Richard Henderson  <rth@redhat.com>
6805
6806         * except.h: Update declarations.
6807         (struct pointer_map_t): Forward declare.
6808         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
6809         (struct eh_landing_pad_d, eh_landing_pad): New.
6810         (struct eh_catch_d, eh_catch): New.
6811         (struct eh_region_d): Remove next_region_sharing_label, aka,
6812         label, tree_label, landing_pad, post_landing_pad, resume,
6813         may_contain_throw.  Rename region_number to index.  Remove
6814         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
6815         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
6816         (VEC(eh_landing_pad,gc)): New.
6817         (struct eh_status): Remove last_region_number.  Add lp_array,
6818         throw_stmt_table, ttype_data, ehspec_data.
6819         (ehr_next, FOR_ALL_EH_REGION_AT): New.
6820         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
6821         * except.c (lang_protect_cleanup_actions): Return tree.
6822         (struct ehl_map_entry): Remove.
6823         (init_eh_for_function): Push zero entries for region and lp_array.
6824         (gen_eh_region): Add to region_array immediately.
6825         (gen_eh_region_catch): Operate on eh_catch objects.
6826         (gen_eh_landing_pad): New.
6827         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
6828         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
6829         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
6830         (get_eh_landing_pad_from_number_fn): New.
6831         (get_eh_landing_pad_from_number): New.
6832         (get_eh_region_from_lp_number_fn): New.
6833         (get_eh_region_from_lp_number): New.
6834         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
6835         (get_exception_pointer, get_exception_filter): Remove.
6836         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
6837         (current_function_has_exception_handlers): Simplify.
6838         (bring_to_root, eh_region_replaceable_by_p): Remove.
6839         (replace_region, hash_type_list, hash_eh_region): Remove.
6840         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
6841         (label_to_region_map, num_eh_regions): Remove.
6842         (get_next_region_sharing_label, must_not_throw_labels): Remove.
6843         (find_exception_handler_labels): Remove.
6844         (duplicate_eh_regions_0, find_prev_try): Remove.
6845         (struct duplicate_eh_regions_data): New.
6846         (duplicate_eh_regions_1): Rewrite.
6847         (duplicate_eh_regions): Return a pointer map instead of an
6848         integer offset.
6849         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
6850         (redirect_eh_edge_to_label): Remove.
6851         (eh_region_outermost): Rewrite using eh_region pointers
6852         instead of integers.
6853         (add_ttypes_entry): Update for ttype_data move to eh_status.
6854         (add_ehspec_entry): Rewrite with VEC instead of varray.
6855         (assign_filter_values): Likewise.  Export.
6856         (build_post_landing_pads, connect_post_landing_pads): Remove.
6857         (dw2_build_landing_pads): Rewrite to use lp_array.
6858         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
6859         (sjlj_assign_call_site_values): Rewrite to use lp_array.
6860         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
6861         (sjlj_mark_call_sites): Update for landing pad numbers.
6862         (finish_eh_generation): Rewrite.
6863         (gate_handle_eh): Do nothing for no eh tree.
6864         (pass_rtl_eh): Move up near finish_eh_generation.
6865         (remove_eh_landing_pad): New.
6866         (remove_eh_handler): Export.
6867         (remove_eh_region, remove_eh_handler_and_replace): Remove.
6868         (for_each_eh_label): Rewrite to use lp_array.
6869         (make_reg_eh_region_note): New.
6870         (make_reg_eh_region_note_nothrow_nononlocal): New.
6871         (insn_could_throw_p): New.
6872         (copy_reg_eh_region_note_forward): New.
6873         (copy_reg_eh_region_note_backward): New.
6874         (check_handled, add_reachable_handler): Remove.
6875         (reachable_next_level, foreach_reachable_handler): Remove.
6876         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
6877         (get_eh_region_and_lp_from_rtx): New.
6878         (get_eh_region_from_rtx): New.
6879         (can_throw_internal_1, can_throw_external_1): Remove.
6880         (can_throw_internal): Use get_eh_region_from_rtx.
6881         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
6882         (insn_nothrow_p, can_nonlocal_goto): New.
6883         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
6884         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
6885         (add_action_record): Use VEC not varray.
6886         (collect_one_action_chain): Update for eh_region changes.
6887         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
6888         Use get_eh_region_and_lp_from_rtx.
6889         (gate_convert_to_eh_region_ranges): New.
6890         (pass_convert_to_eh_region_ranges): Use it.
6891         (push_uleb128, push_sleb128): Use VEC not varray.
6892         (output_one_function_exception_table): Likewise.
6893         (dump_eh_tree): Update for eh_region changes.
6894         (verify_eh_tree): Likewise.
6895         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
6896         * tree-eh.c: Include target.h.
6897         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
6898         Don't disallow GIMPLE_RESX; adjust argument check.
6899         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
6900         (record_stmt_eh_region): Update for landing pad numbers;
6901         generate a landing pad if necessary.
6902         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
6903         (remove_stmt_from_eh_lp_fn): Similarly.
6904         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
6905         Update for lp numbers; don't special case missing throw_stmt_table.
6906         (lookup_expr_eh_lp): Similarly.
6907         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
6908         (eh_seq, eh_region_may_contain_throw): New.
6909         (struct leh_state): Add ehp_region.
6910         (struct leh_tf_state): Remove eh_label.
6911         (emit_post_landing_pad): New.
6912         (emit_resx, emit_eh_dispatch): New.
6913         (note_eh_region_may_contain_throw): New.
6914         (frob_into_branch_around): Take eh_region not eh label;
6915         emit eh code into eh_seq.
6916         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
6917         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
6918         lower_eh_must_not_throw.  Emit code to eh_seq.
6919         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
6920         (lower_try_finally_onedest): Likewise.
6921         (lower_try_finally_copy): Likewise.
6922         (lower_try_finally_switch): Likewise.
6923         (lower_try_finally): Initialize ehp_region.
6924         (lower_catch): Update for eh_catch objects.
6925         (lower_eh_filter): Don't handle must_not_throw.
6926         (lower_eh_must_not_throw): New.
6927         (lower_cleanup): Don't set eh_label.
6928         (lower_eh_constructs_2): Resolve eh builtins.
6929         Handle GIMPLE_EH_MUST_NOT_THROW.
6930         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
6931         Add eh_seq to the end of the function body.
6932         (make_eh_dispatch_edges): New.
6933         (make_eh_edge): Remove.
6934         (make_eh_edges): Simplify for landing pads.
6935         (redirect_eh_edge_1): New.
6936         (redirect_eh_edge): Use it.
6937         (redirect_eh_dispatch_edge): New.
6938         (stmt_could_throw_p): Use a switch.  Allow RESX.
6939         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
6940         (stmt_can_throw_internal): Likewise.
6941         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
6942         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
6943         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
6944         (gate_refactor_eh): New.
6945         (pass_refactor_eh): Use it.
6946         (lower_resx, execute_lower_resx, pass_lower_resx): New.
6947         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
6948         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
6949         (remove_unreachable_handlers): Rename from
6950         tree_remove_unreachable_handlers; rewrite for landing pads;
6951         call remove_eh_handler directly.
6952         (remove_unreachable_handlers_no_lp): New.
6953         (unsplit_eh, unsplit_all_eh): New.
6954         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
6955         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
6956         (cleanup_empty_eh_unsplit): New.
6957         (cleanup_empty_eh): Rewrite.
6958         (cleanup_all_empty_eh): New.
6959         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
6960         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
6961         (gate_cleanup_eh): New.
6962         (pass_cleanup_eh): Use it.
6963         (verify_eh_edges): Move later in file.  Expect one EH edge.
6964         (verify_eh_dispatch_edge): New.
6965
6966         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
6967         (gtype-desc.o): Add TARGET_H.
6968         (tree.o): Use EXCEPT_H, not except.h.
6969         (cfgbuild.o): Add EXPR_H.
6970         (GTFILES): Add vecprim.h.
6971         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
6972         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
6973         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
6974         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
6975         * calls.c (emit_call_1): Use make_reg_eh_region_note.
6976         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
6977         calls to can_throw_internal.
6978         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
6979         (make_edges): Don't handle RESX; use can_nonlocal_goto.
6980         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
6981         (expand_gimple_stmt): Use make_reg_eh_region_note.
6982         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
6983         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
6984         or find_exception_handler_labels.
6985         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
6986         there is exacly one EH edge.  Use can_nonlocal_goto and
6987         can_throw_internal.
6988         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
6989         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
6990         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
6991         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
6992         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
6993         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
6994         * dse.c (scan_insn): Use insn_could_throw_p.
6995         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
6996         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
6997         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
6998         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
6999         EXC_PTR_EXPR or FILTER_EXPR.
7000         (tree_expr_nonzero_warnv_p): Likewise.
7001         * function.h: Include vecprim.h, not varray.h
7002         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
7003         move ttype_data and ehspec_data members to struct eh_status; change
7004         action_record_data member to a VEC.
7005         * gcse.c (hash_scan_set): Use can_throw_internal.
7006         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
7007         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
7008         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
7009         (block_may_fallthru): Don't handle RESX_EXPR.
7010         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
7011         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
7012         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
7013         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
7014         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
7015         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
7016         (gimple_size): Likewise.
7017         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
7018         (gimple_build_resx): Use gimple_build_with_ops.
7019         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
7020         (is_gimple_val): Likewise.
7021         (is_gimple_stmt): Remove RESX_EXPR.
7022         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
7023         (GIMPLE_RESX): Reorder with other EH constructs.
7024         * gimple.h (struct gimple_statement_eh_mnt): New.
7025         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
7026         (gimple_eh_filter_must_not_throw): Remove.
7027         (gimple_eh_filter_set_must_not_throw): Remove.
7028         (gimple_eh_must_not_throw_fndecl): New.
7029         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
7030         (is_gimple_resx): New.
7031         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
7032         Don't copy EH_FILTER_MUST_NOT_THROW.
7033         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
7034         * ipa-inline.c (estimate_function_body_sizes): Don't try to
7035         handle must_not_throw_labels specially.
7036         * ipa-pure-const.c (check_call): Update debug statement for LP.
7037         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
7038         * ipa-utils.c (get_base_var): Likewise.
7039         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
7040         * lower-subreg.c (move_eh_region_note): Remove.
7041         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
7042         * omp-low.c (new_omp_context): Update for eh_lp_nr.
7043         (create_task_copyfn): Likewise.
7044         (maybe_catch_exception): Use gimple_build_eh_filter.
7045         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
7046         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
7047         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
7048         and pass_lower_resx.
7049         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
7050         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
7051         can_throw_internal, can_nonlocal_goto.
7052         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
7053         copy_reg_eh_region_note_forward.
7054         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
7055         (emit_output_reload_insns): Likewise.
7056         (copy_eh_notes): Remove.
7057         * rtl.def (RESX): Remove.
7058         * rtl.h: Update declarations.
7059         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
7060         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
7061         (update_eh_label): Remove.
7062         (cleanup_dead_labels_eh): New.
7063         (cleanup_deal_labels): Use it instead of update_eh_label.
7064         (gimple_merge_blocks): Update landing pad data structure when
7065         removing a landing pad label.
7066         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
7067         test; handle GIMPLE_EH_MUST_NOT_THROW.
7068         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
7069         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
7070         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
7071         (verify_stmt): Likewise.  Verify landing pads.
7072         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
7073         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
7074         (struct move_stmt_d): Add eh_map.
7075         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
7076         (move_stmt_r): Remap eh region numbers in builtin calls,
7077         resx and eh_dispatch.
7078         (move_block_to_fn): Remove eh_offset parameter.  Use
7079         maybe_duplicate_eh_stmt_fn.
7080         (find_outermost_region_in_block): Operate on eh_region pointers
7081         instead of region numbers.
7082         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
7083         duplicate_eh_regions.
7084         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
7085         test earlier.  Disallow EH landing pads.
7086         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
7087         * tree-flow.h: Update declarations.
7088         (struct tree_ann_common_d): Replace rn with lp_nr.
7089         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
7090         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
7091         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
7092         resx and eh_dispatch.
7093         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
7094         (copy_edges_for_bb): Use make_eh_dispatch_edges.
7095         (copy_cfg_body): Expect eh_map instead of eh_region_offset
7096         from duplicate_eh_regions.
7097         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
7098         update RESX; handle EH_DISPATCH.
7099         (expand_call_inline): Set eh_lp_nr, not eh_region.
7100         (maybe_inline_call_in_expr): Likewise.
7101         * tree-inline.h (struct copy_body_data): Replace eh_region with
7102         eh_lp_nr, eh_region_offset with eh_map.
7103         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
7104         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
7105         * tree-pretty-print.c (dump_generic_node): Don't handle
7106         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
7107         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
7108         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
7109         EXC_PTR_EXPR, FILTER_EXPR.
7110         * tree-ssa-operands.c (get_expr_operands): Likewise.
7111         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
7112         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
7113         (ao_ref_init_from_vn_reference): Likewise.
7114         * tree-ssa-sink.c (statement_sink_location): Likewise.
7115         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
7116         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
7117         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
7118         EXC_PTR_EXPR, FILTER_EXPR.
7119         (is_exception_related): Remove.
7120         (compute_avail): Don't call it.
7121         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
7122         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
7123         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
7124         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
7125         Build EH builtins.
7126         (build_resx): Remove.
7127         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
7128         * tree.h: Update declarations.
7129         (EH_FILTER_MUST_NOT_THROW): Remove.
7130         (struct tree_label_decl): Add eh_landing_pad_nr.
7131         (EH_LANDING_PAD_NR): New.
7132         * value-prof.c (gimple_ic): Tidy variable names.  Update for
7133         landing pad numbers.
7134         (gimple_stringop_fixed_value): Tidy variable names.  Assert
7135         that neither call stmt can throw.
7136         * vecprim.h (uchar): New.
7137         (VEC(uchar,heap), VEC(uchar,gc)): New.
7138
7139         * c-common.c (c_define_builtins): Update call to
7140         build_common_builtin_nodes.
7141         * c-parser.c (c_parse_file): Don't call
7142         default_init_unwind_resume_libfunc.
7143
7144 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
7145
7146         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
7147         (mips_cprestore_address_p): Likewise.
7148         (mips_save_gp_to_cprestore_slot): Likewise.
7149         (mips_restore_gp): Rename to...
7150         (mips_restore_gp_from_cprestore_slot): ...this.
7151         (mips_must_initialize_gp_p): Declare.
7152         (mips_emit_save_slot_move): Likewise.
7153         (mips_output_load_label): Return nothing.
7154         (mips_eh_uses): Declare.
7155         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
7156         (TARGET_CPRESTORE_DIRECTIVE): New macro.
7157         (TARGET_ABSOLUTE_JUMPS): Likewise.
7158         (EH_USES): Likewise.
7159         (FIRST_PSEUDO_REGISTER): Update comment.
7160         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
7161         (MIPS_CALL): ...here.
7162         (REGISTER_NAMES): Add $cprestore.
7163         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
7164         Add load_label_length, has_inflexible_gp_insn_p,
7165         has_flexible_gp_insn_p, must_initialize_gp_p and
7166         must_restore_gp_when_clobbered_p.
7167         (mips_expand_call): Don't generate split instructions here.
7168         (mips_split_call): Update the call to mips_restore_gp after
7169         the above name change.
7170         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
7171         (mips_find_gp_ref): New function.
7172         (mips_insn_has_inflexible_gp_ref_p): Likewise.
7173         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
7174         (mips_insn_has_flexible_gp_ref_p): Likewise.
7175         (mips_cfun_has_flexible_gp_ref_p): Likewise.
7176         (mips_function_has_gp_insn): Delete.
7177         (mips_global_pointer): Drop the df_regs_ever_live_p check.
7178         Use the new functions above.  Only return INVALID_REGNUM
7179         for TARGET_ABSOLUTE_JUMPS.
7180         (mips_must_initialize_gp_p): New function.
7181         (mips_get_cprestore_base_and_offset): New function, extracted from...
7182         (mips_cprestore_slot): ...here.  Take a bool parameter.
7183         (mips_cfun_has_cprestore_slot_p): New function.
7184         (mips_cprestore_address_p): Likewise.
7185         (mips_save_gp_to_cprestore_slot): Likewise.
7186         (mips_restore_gp): Rename to...
7187         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
7188         epilogue_completed.  Update the call to mips_cprestore_slot.
7189         Test cfun->machine->must_restore_gp_when_clobbered_p.
7190         (mips_direct_save_slot_move_p): New function.
7191         (mips_emit_save_slot_move): Likewise.
7192         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
7193         of cfun->machine->global_pointer.
7194         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
7195         (mips_save_reg): Use mips_emit_save_slot_move.
7196         (mips_expand_prologue): Set must_initialize_gp_p.
7197         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
7198         for all cprestore saves.  Emit a use_cprestore instruction after
7199         setting up the cprestore slot.
7200         (mips_restore_reg): Use mips_emit_save_slot_move.
7201         (mips_process_load_label): New function.
7202         (mips_load_label_length): Likewise.
7203         (mips_output_load_label): Don't return asm: output it here instead.
7204         Use mips_process_load_label.
7205         (mips_adjust_insn_length): Adjust the length of branch instructions
7206         that have length MAX_PIC_BRANCH_LENGTH.
7207         (mips_output_conditional_branch): Update the call to
7208         mips_output_load_label.  Assume the branch target is OPERANDS[0]
7209         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
7210         (mips_output_order_conditional_branch): Swap the meaning of
7211         OPERANDS[0] and OPERANDS[1].
7212         (mips_variable_issue): Don't count ghost instructions.
7213         (mips_expand_ghost_gp_insns): New function.
7214         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
7215         (mips_output_mi_thunk): Set must_initialize_gp_p.
7216         (mips_eh_uses): New function.
7217         * config/mips/predicates.md (cprestore_save_slot_operand)
7218         (cprestore_load_slot_operand): New predicates.
7219         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
7220         (UNSPEC_MOVE_GP): Likewise.
7221         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
7222         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
7223         (CPRESTORE_SLOT_REGNUM): New register.
7224         (MAX_PIC_BRANCH_LENGTH): New constant.
7225         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
7226         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
7227         branches.  Fix commentary.
7228         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
7229         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
7230         Change type to "ghost".
7231         (loadgp_absolute_<mode>): Likewise.
7232         (loadgp_rtp_<mode>): Likewise.
7233         (copygp_mips16): Likewise.
7234         (loadgp_blockage): Remove redundant mode attribute.
7235         (potential_cprestore): New instruction.
7236         (cprestore): Turn into an unspec set.
7237         (use_cprestore): New instruction.
7238         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
7239         (*branch_fp_inverted): Likewise.
7240         (*branch_order<mode>): Likewise.
7241         (*branch_order<mode>_inverted): Likewise.
7242         (*branch_equality<mode>): Likewise.
7243         (*branch_equality<mode>_inverted): Likewise.
7244         (*branch_bit<bbv><mode>): Likewise.
7245         (*branch_bit<bbv><mode>_inverted): Likewise.
7246         (*branch_equality<mode>_mips16): Remove redundant mode.
7247         (jump): Turn into a define_expand.
7248         (*jump_absolute): New instruction.
7249         (*jump_pic): Likewise.
7250         (*jump_mips16): Rename previously-unnamed pattern.  Remove
7251         redundant mode attribute.
7252         (restore_gp): Split on epilogue_completed rather than
7253         reload_completed.  Change type to "ghost".
7254         (move_gp<mode>): New instruction.
7255         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
7256         Remove redundant mode attribute.
7257         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
7258         (bc1any4f, bc1any2t, bc1any2f): Likewise.
7259         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
7260
7261 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
7262
7263         PR target/41210
7264         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
7265         are returned in the same register (vs34 or v2) that Altivec vector
7266         types are returned in.
7267         (rs6000_libcall_value): Ditto.
7268
7269         PR target/41331
7270         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
7271         instead of explicit addsi3/adddi3 calls.
7272         (rs6000_split_multireg_move): Ditto.
7273         (rs6000_emit_allocate_stack): Ditto.
7274         (rs6000_emit_prologue): Ditto.
7275         (rs6000_output_mi_thunk): Ditto.
7276
7277         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
7278         size is 64 bits if we can use 64-bit registers.
7279
7280 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
7281
7282         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
7283         symbols.
7284
7285         From Jie Zhang <jie.zhang@analog.com>:
7286         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
7287         save FP and RETS with saveall attribute.
7288         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
7289         with saveall attribute.
7290
7291         * config/bfin/bfin.c (bfin_expand_builtin,
7292         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
7293         operands.
7294
7295         From Jie Zhang <jie.zhang@analog.com>:
7296         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
7297         before use in two places.
7298         * config/bfin/bfin.md (AREG): Define mode iterator.
7299         (reload_in, reload_out): Use mode iterator AREG.
7300
7301 2009-09-14  Richard Guenther  <rguenther@suse.de>
7302
7303         PR middle-end/41350
7304         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
7305         EH personality path.
7306
7307 2009-09-13  Richard Guenther  <rguenther@suse.de>
7308             Rafael Avila de Espindola  <espindola@google.com>
7309
7310         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
7311         (LANG_HOOKS_EH_PERSONALITY): Likewise.
7312         (LANG_HOOKS_INITIALIZER): Adjust.
7313         (lhd_pass_through_t): Declare.
7314         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
7315         eh_personality.
7316         * langhooks.c (lhd_pass_through_t): New function.
7317         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
7318         dwarf2out_begin_prologue): Use personality from current_function_decl.
7319         * expr.h (get_personality_function): Declare.
7320         * expr.c (get_personality_function): New function.
7321         (build_personality_function): Likewise.
7322         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
7323         (eh_personality_libfunc): Remove.
7324         * optabs.c (build_libfunc_function): New function split out from ...
7325         (init_one_libfunc): ... here.
7326         * tree.h (DECL_FUNCTION_PERSONALITY): New.
7327         (tree_function_decl): Add personality.
7328         (lhd_gcc_personality): Declare.
7329         (build_personality_function): Likewise.
7330         * tree.c (gcc_eh_personality_decl): New.
7331         (lhd_gcc_personality): New function.
7332         * except.h (lang_eh_runtime_type): Remove.
7333         (enum eh_personality_kind): New.
7334         (build_personality_function): Declare.
7335         (function_needs_eh_personality): Declare.
7336         * except.c (lang_eh_runtime_type): Remove.
7337         (function_needs_eh_personality): New function.
7338         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
7339         (sjlj_emit_function_enter, output_function_exception_table):
7340         Use personality from current_function_decl.
7341         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
7342         * tree-inline.c (tree_can_inline_p): Do not inline across different
7343         EH personalities.
7344         (expand_call_inline): Likewise.  Adjust the callers EH personality.
7345         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
7346         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
7347         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
7348         (c-parser.o): Likewise
7349         * c-tree.h (c_eh_initialized_p): Remove.
7350         (c_maybe_initialize_eh): Likewise.
7351         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
7352         (finish_decl): Don't call c_maybe_initialize_eh.
7353         (c_eh_initialized_p): Remove.
7354         (c_maybe_initialize_eh): Likewise.
7355         * c-parser.c (c_parser_omp_construct): Likewise.
7356         (c_parse_file): Initialize exception handling.
7357
7358 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
7359
7360         * config.gcc (tm_file): Remove i386/biarch32.h
7361         for i?86-w64-mingw* case.
7362         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
7363         support.
7364         * config.host: Set for x64 mingw the option
7365         use_long_long_for_widest_fast_int to yes.
7366
7367 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
7368
7369         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
7370         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
7371         (dbxout_begin_function): Likewise.
7372         * final.c (dwarf2_debug_info_emitted_p): New predicate.
7373         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
7374         set on the function.
7375         (final_end_function): Likewise.
7376         (final_scan_insn): Likewise.
7377         (rest_of_handle_final): Likewise.
7378         * varasm.c (assemble_start_function): Likewise.
7379         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
7380
7381 2009-09-12  Jason Merrill  <jason@redhat.com>
7382
7383         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
7384         * opts.c (common_handle_option): constify.
7385
7386 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
7387
7388         * doc/install.texi (avr): Remove obsolete reference site.
7389
7390 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
7391
7392         * doc/install.texi (Binaries): Adjust AIX link.
7393
7394 2009-09-12  Akim Demaille  <demaille@gostai.com>
7395
7396         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
7397         Use an imperative sentence.
7398
7399 2009-09-11  Richard Henderson  <rth@redhat.com>
7400
7401         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
7402         structure-name and has-tree-operands arguments; update all entries.
7403         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
7404         update all entries.
7405         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
7406         (gsstruct_code_size): New.
7407         (gss_for_code_): New.
7408         (gss_for_code): Remove.
7409         (gimple_size): Rewrite using gsstruct_code_size.
7410         (gimple_statement_structure): Move to gimple.h.
7411         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
7412         (gss_for_code, gimple_statement_structure): New.
7413         (gimple_ops): Use new arrays; tidy.
7414
7415 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7416
7417         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
7418         operand to be a PLUS expression.
7419         * config/pa/pa.c (pa_secondary_reload): Likewise.
7420
7421 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
7422
7423         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
7424
7425         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
7426         XEXP (in_rtx, 8).
7427
7428 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
7429
7430         From Jie Zhang <jie.zhang@analog.com>:
7431         * doc/extend.texi (node Function Attributes): Document l2
7432         function attribute.
7433         (node Blackfin Variable Attributes): Document l2 variable attributes.
7434
7435 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
7436
7437         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
7438         to match the system compiler's configuration at inflection point.
7439         Add comment to remark a remaining difference with system compiler.
7440
7441         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
7442         * configure: Regenerate.
7443
7444 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
7445
7446         From Jie Zhang <jie.zhang@analog.com>:
7447         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
7448         (bfin_handle_l2_attribute): New.
7449         (bfin_attribute_table): Add l2 attribute.
7450
7451 2009-09-11  Michael Matz  <matz@suse.de>
7452
7453         PR middle-end/41275
7454         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
7455         on the local_decls list.
7456
7457 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
7458
7459         PR debug/41276
7460         PR debug/41307
7461         * cselib.c (cselib_expand_value_rtx_cb): Document callback
7462         interface.
7463         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
7464         for VALUEs, to implement the documented interface.
7465         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
7466         Adjust for VALUEs and anything else, to implement the
7467         documented interface.
7468
7469 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
7470
7471         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
7472         with actual SPE/paired vector modes before using 64-bit alignment.
7473         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
7474
7475 2009-09-10  DJ Delorie  <dj@redhat.com>
7476
7477         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
7478         emitted.
7479
7480         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
7481         * config/mep/mep.c (mep_legitimate_constant_p): New.
7482         * config/mep/mep-protos.h: Prototype it.
7483
7484 2009-09-10  Richard Henderson  <rth@redhat.com>
7485
7486         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
7487
7488 2009-09-10  Jason Merrill  <jason@redhat.com>
7489
7490         * tree.c (chain_index): New fn.
7491         * tree.h: Declare it.
7492
7493 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
7494
7495         * config/sol2-c.c (cmn_err_length_specs): Initialize
7496         scalar_identity_flag.
7497
7498 2009-09-10  Richard Henderson  <rth@redhat.com>
7499
7500         * tree.h (struct tree_decl_common): Move align member earlier;
7501         move label_decl_uid member ...
7502         (struct tree_label_decl): ... here.
7503         (LABEL_DECL_UID): Update to match.
7504
7505         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
7506         not TDF_DETAILS.
7507
7508         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
7509         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
7510
7511         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
7512         dest_prev if the edge is complex.
7513
7514         * tree-cfg.c (is_ctrl_stmt): Use a switch.
7515
7516         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
7517         loop latch tests earlier.
7518
7519         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
7520         before GIMPLE_RETURN, not after its predecessor; insert
7521         before GIMPLE_RESX.
7522
7523         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
7524         gimple_seq_empty_p to test for no PHI nodes.
7525         * tree-cfg.c (split_critical_edges): Likewise.
7526
7527         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
7528
7529 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
7530
7531         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
7532         introduced by the VTA branch merge.
7533
7534 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
7535
7536         * ira-conflicts.c: Use fputs or putc instead of fprintf
7537         where appropriate.
7538         * cfg.c: Ditto.
7539         * toplev.c: Ditto.
7540         * tree-switch-conversion.c: Ditto.
7541
7542 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
7543
7544         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
7545         introduced by the VTA branch merge.
7546
7547 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
7548
7549         Revert:
7550         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
7551
7552         PR rtl-optimization/39779
7553         * expr.c (convert_modes): Return when mode == oldmode after
7554         CONST_INTs are processed.
7555
7556 2009-09-10  Nick Clifton  <nickc@redhat.com>
7557
7558         * config/mep/mep.c (mep_encode_section_info): Copy weakness
7559         attribute and referring decl when creating renamed symbol.
7560
7561 2009-09-10  Richard Guenther  <rguenther@suse.de>
7562
7563         PR middle-end/41257
7564         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
7565         reachable nodes.
7566         (cgraph_finalize_compilation_unit): Compute reachability
7567         before emitting thunks.  Properly process aliases before
7568         possibly removing unreachable nodes.
7569
7570 2009-09-10  Richard Guenther  <rguenther@suse.de>
7571
7572         PR middle-end/41254
7573         * tree.c (struct free_lang_data_d): Add worklist member.
7574         (find_decls_types_r): Push onto the worklist instead of recursing.
7575         Handle TREE_BINFOs properly.
7576         (find_decls_types): New function wrapped around find_decls_types_r
7577         to process the worklist.
7578         (find_decls_types_in_eh_region): Use it.
7579         (find_decls_types_in_node): Likewise.
7580         (find_decls_types_in_var): Likewise.
7581         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
7582         * tree.h (RECORD_OR_UNION_TYPE_P): New.
7583         (AGGREGATE_TYPE_P): Adjust.
7584
7585 2009-09-09  Jason Merrill  <jason@redhat.com>
7586
7587         * configure.ac: Check glibc version even if we have an in-tree
7588         assembler.
7589
7590 2009-09-09  Anthony Green  <green@moxielogic.com>
7591
7592         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
7593         the constant 0 when appropriate.
7594         * config/moxie/constraints.md: Add constraint O.
7595
7596         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
7597         to pass up to 6 32-bit argument values in registers.
7598         (moxie_function_arg): Ditto.
7599         (moxie_arg_partial_bytes): Ditto.
7600         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
7601         (REG_PARM_STACK_SPACE): Ditto.
7602         (FUNCTION_ARG_REGNO_P): Ditto.
7603
7604         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
7605         instruction to allocate stack space.
7606
7607 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
7608
7609         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
7610         unnecessarily stringent constraints.  Fix address
7611         calculation in the splitters.
7612
7613 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
7614
7615         PR rtl-optimization/39779
7616         * expr.c (convert_modes): Return when mode == oldmode after
7617         CONST_INTs are processed.
7618
7619 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
7620
7621         PR/41315
7622         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
7623         (ix86_expand_prologue): Take frame.padding0 into logic of
7624         to_allocate checks.
7625         (ix86_expand_epilogue): Likewise.
7626
7627 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
7628
7629         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
7630         New variables.
7631         (SHLIB_LINK, SHLIB_INSTALL): Use them.
7632         * config/t-slibgcc-libgcc: New file.
7633         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
7634
7635 2009-09-09  Martin Jambor  <mjambor@suse.cz>
7636
7637         PR tree-optimization/41089
7638         * tree-sra.c (find_var_candidates): Do not consider va_lists in
7639         early SRA.
7640
7641 2009-09-09  Richard Henderson  <rth@redhat.com>
7642
7643         * gimple.h (CASE_GIMPLE_OMP): New.
7644         (is_gimple_omp): Use it.
7645         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
7646         (verify_gimple_debug): Likewise.
7647
7648 2009-09-09  Richard Guenther  <rguenther@suse.de>
7649
7650         PR tree-optimization/41101
7651         * tree-ssa-pre.c (maximal_set): Remove.
7652         (compute_antic_aux): Treat the maximal set as implicitly all ones.
7653         Defer all blocks we didn't visit at least one successor.
7654         (add_to_exp_gen): Do not add to the maximal set.
7655         (make_values_for_phi): Likewise.
7656         (compute_avail): Likewise.
7657         (init_pre): Do not allocate the maximal set.
7658         (execute_pre): Do not dump it.
7659
7660 2009-09-09  Martin Jambor  <mjambor@suse.cz>
7661
7662         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
7663         an SSA_NAME rather than a is_gimple_variable.
7664
7665 2009-09-09  Richard Guenther  <rguenther@suse.de>
7666
7667         PR middle-end/41317
7668         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
7669         code dealing with plain pointer bases.
7670         (maybe_fold_offset_to_reference): Likewise.
7671         (maybe_fold_stmt_addition): Adjust.
7672
7673 2009-09-09  Richard Guenther  <rguenther@suse.de>
7674
7675         * tree.c (free_lang_data_in_type): Do not free the type variant
7676         chains.
7677         (free_lang_data): Merge char_type_node with its properly signed
7678         variant.
7679         (pass_ipa_free): Collect after freeing language specific data.
7680
7681 2009-09-09  Michael Matz  <matz@suse.de>
7682
7683         PR middle-end/41268
7684         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
7685         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
7686         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
7687         to reflect reality.
7688
7689 2009-09-08  DJ Delorie  <dj@redhat.com>
7690
7691         * config/mep/mep.c (conversions[]): Add "ml" pattern.
7692
7693 2009-09-04  Jason Merrill  <jason@redhat.com>
7694
7695         * tree.c (tree_find_value): Remove.
7696         * tree.h: Remove prototype.
7697         * varasm.c (assemble_external): Use value_member instead.
7698
7699 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7700
7701         * toplev.c (process_options): Choose default debugging type when
7702         gtoggle enables debug info and type is unset.
7703
7704 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7705
7706         PR debug/41276
7707         PR debug/41307
7708         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
7709         invalid subreg.
7710
7711 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7712
7713         * configure: Rebuilt with modified libtool.m4.
7714
7715 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7716
7717         PR debug/41229
7718         PR debug/41291
7719         PR debug/41300
7720         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
7721
7722 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7723
7724         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
7725         (remove_statement): Likewise.
7726         (rewrite_use_nonlinear_expr): Adjust.
7727         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
7728         * tree-ssa.c (release_defs_bitset): ... this.  New.
7729         * tree-flow.h (release_defs_bitset): Declare.
7730
7731 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7732
7733         PR debug/41232
7734         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
7735         in the middle block.
7736
7737 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
7738
7739         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
7740         via intptr_t to long type.
7741         (insert_operand_rank): Cast long type via intptr_t to
7742         pointer type.
7743         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
7744         pointer to scalar.
7745         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
7746         from pointer to unsigned via uintptr_t.
7747
7748         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
7749         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
7750         and HAVE_INTPTR_T.
7751         * configure: Regenerated.
7752         * config.in: Regenerated
7753         * system.h (stdint.h): Add include.
7754         (inttypes.h): Likewise.
7755         * Makefile.in (aclocal): Add config/stdint.m4.
7756         * aclocal.m4: Regenerated.
7757
7758 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
7759
7760         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
7761         variables.
7762         (note_np_check_stores): New function.
7763         (harmless_null_pointer_p): New function.
7764         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
7765         changed.  Take into account whether we're in the shadow of a condjump
7766         that tested NP_REG for NULL.
7767         Lose all code that tested for SEQUENCEs.
7768         (workaround_speculation): Avoid inserting NOPs for loads that are
7769         either always executed or a NULL pointer.
7770
7771 2009-09-08  Jan Hubicka  <jh@suse.cz>
7772
7773         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
7774         * params.def (early-inlining-insns): Likewise.
7775
7776 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
7777
7778         PR rtl-optimization/41239
7779         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
7780         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
7781         lists.
7782         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
7783         across calls, as the calls might not always return normally.
7784         (call_may_noreturn_p): New function.
7785         (deps_analyze_insn): Update last_function_call_may_noreturn list.
7786         (init_deps): Initialize it.
7787         (remove_from_deps): Also remove calls from
7788         last_function_call_may_noreturn list.
7789
7790 2009-09-07  Richard Henderson  <rth@redhat.com>
7791
7792         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
7793         more VR->OPERANDS than LHS operands.  Free LHS before returning.
7794
7795 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
7796
7797         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
7798         (attr "addrtype"): New member "spreg".
7799         Use it if mem_spfp_address_operand is true for the address.
7800         (attr "type"): New entry "stall".
7801         (cpu_unit "load"): New.
7802         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
7803         "load".
7804         (insn_reservation "loadsp"): New.
7805         (insn_reservation "load_stall1"): New.
7806         (insn_reservation "load_stall3"): New.
7807         (stall): New insn.
7808         * config/bfin/predicates.md (const1_operand, const3_operand): New.
7809         (mem_p_address_operand): Exclude stack and frame pointer based
7810         addresses.
7811         (mem_spfp_address_operand): New; match them here.
7812         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
7813         (bfin_reorg): Call it if scheduling insns.
7814         (bfin_gen_bundles): Remove dummy insns created by
7815         add_sched_insns_for_speculation.
7816
7817         From Jie Zhang <jie.zhang@analog.com>:
7818         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
7819         bfin_si_revision, bfin_workarounds): Move these ...
7820         * config/bfin/bfin.h: ... here.
7821
7822         From Mike Frysinger  <michael.frysinger@analog.com>
7823         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
7824         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
7825         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
7826         bf547m, bf548m, and bf549m.
7827         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
7828         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
7829         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
7830         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
7831         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
7832         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
7833         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
7834         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
7835         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
7836         bf542m, bf544m, bf547m, bf548m, and bf549m.
7837
7838         From Jie Zhang <jie.zhang@analog.com>:
7839         * config/bfin/predicates.md (p_register_operand): New predicate.
7840         (dp_register_operand): New predicate.
7841         * config/bfin/bfin-protos.h (WA_05000074): Define.
7842         (ENABLE_WA_05000074): Define.
7843         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
7844         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
7845         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
7846         (define_attr addrtype): Allow load/store register to be P register.
7847         (define_attr storereg): New.
7848         (define_cpu_unit anomaly_05000074): New.
7849         (define_insn_reservation dsp32shiftimm): New.
7850         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
7851         (define_insn_reservation loadp): Cannot use slot2.
7852         (define_insn_reservation loadsp): Cannot use slot2.
7853         (define_insn_reservation storep): Cannot use slot2. Does not
7854         apply when working around 05000074.
7855         (define_insn_reservation storep_anomaly_05000074): New.
7856         (define_insn_reservation storei): Does not apply when working
7857         around 05000074.
7858         (define_insn_reservation storei_anomaly_05000074): New.
7859         (define_attr length): Add dsp32shiftimm case.
7860         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
7861         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
7862         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
7863         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
7864         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
7865
7866 2009-09-07  Martin Jambor  <mjambor@suse.cz>
7867
7868         PR middle-end/41282
7869         * tree-sra.c (create_artificial_child_access): Return NULL if
7870         build_ref_for_offset fails.
7871         (propagate_subacesses_accross_link): Allow build_ref_for_offset
7872         and create_artificial_child_access to fail.
7873
7874 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
7875
7876         PR c++/41214
7877         * unwind-dw2.c (uw_init_context_1): Mark noinline.
7878         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
7879         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
7880
7881 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
7882
7883         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
7884         block, ensure it has an exit edge.  Emit a barrier after a jump.
7885
7886 2009-09-07  Nick Clifton  <nickc@redhat.com>
7887
7888         * gcc.c (this_is_linker_script): New variable.  Like
7889         this_is_library_file but for the %T constructor.
7890         (end_going_arg): If this_is_linker_script is set then locate the
7891         script and insert a --script switch before it
7892         (do_spec_2): Initialise this_is_linker_script.
7893         (do_spec_1): Likewise.  Handle %T construct.
7894         (eval_spec_function): Preserve this_is_linker_script.
7895         * doc/invoke.texi: Document %T construct in spec files.
7896         * config/m32c/m32c.h (LIB_SPEC): Use it.
7897
7898 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
7899
7900         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
7901         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
7902         when volatile flag is set.
7903         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
7904
7905 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
7906
7907         PR bootstrap/41241
7908         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
7909         (combine_stack_adjustments_for_block): Allow insns between stack
7910         adjustments and stores with corresponding pre-(dec|inc)rement or
7911         pre-modify operation.
7912
7913 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
7914
7915         PR bootstrap/41241
7916         * combine-stack-adj.c (struct csa_memlist): Rename to...
7917         (struct csa_reflist): ... this.  Rename mem field to ref.
7918         (free_csa_memlist): Rename to...
7919         (free_csa_reflist): ... this.
7920         (record_one_stack_memref): Rename to...
7921         (record_one_stack_ref): ... this.  Handle also REG_P.
7922         (try_apply_stack_adjustment): Handle also REG_P.
7923         (struct record_stack_memrefs_data): Rename to...
7924         (struct record_stack_refs_data): ... this.  Rename memlist field to
7925         reflist.
7926         (record_stack_memrefs): Rename to...
7927         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
7928         subexpressions instead of failing when a MEM contains SP references.
7929         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
7930         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
7931
7932 2009-09-06  Richard Guenther  <rguenther@suse.de>
7933
7934         PR middle-end/41144
7935         * tree.c (build_array_type): Do not record types marked
7936         with structural equality in the canonical type hashtable.
7937
7938 2009-09-06  Richard Guenther  <rguenther@suse.de>
7939
7940         PR middle-end/41261
7941         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
7942
7943 2009-09-05  Richard Guenther  <rguenther@suse.de>
7944
7945         PR middle-end/41181
7946         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
7947
7948 2009-09-05  Richard Guenther  <rguenther@suse.de>
7949
7950         PR debug/41273
7951         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
7952
7953 2009-09-05  Richard Guenther  <rguenther@suse.de>
7954
7955         PR middle-end/41271
7956         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
7957         before comparing function argument types.
7958
7959 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
7960
7961         PR target/41024
7962         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
7963         the assembler.
7964
7965 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
7966
7967         Revert:
7968         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
7969
7970         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
7971         locators before emit_insn is called.
7972
7973 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
7974
7975         PR bootstrap/41241
7976         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
7977         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
7978         (reginfo_init): Don't call allocate_reg_info.
7979
7980 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
7981
7982         PR target/41262
7983         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
7984         NONDEBUG_INSN_P instead of INSN_P.
7985
7986 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
7987
7988         PR debug/41225
7989         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
7990
7991 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
7992
7993         PR target/41252
7994         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
7995         pattern of the split.
7996
7997 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
7998
7999         * toplev.c (process_options): Move setter of flag_var_tracking
8000         before other tests that depend on it.  Move down setter of
8001         flag_rename_registers.  Don't enable var-tracking-assignments
8002         by default if selective scheduling is enabled.  Warn if both
8003         are enabled.
8004
8005 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8006
8007         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
8008         comment.  Use switch statement to catch overlaps between rtx
8009         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
8010         (IS_DECL_CODE): ... here. Remove.
8011         (check_value_is_not_decl): Remove.
8012         (dv_from_decl, dv_from_value): Check after conversion.
8013
8014 2009-09-04  Richard Guenther  <rguenther@suse.de>
8015
8016         PR middle-end/41257
8017         * (cgraph_finalize_compilation_unit): Move finalizing aliases
8018         after emitting tunks.  Move emitting thunks and ctors from ...
8019         (cgraph_optimize): ... here.  Remove redundant
8020         cgraph_analyze_functions.
8021         * varasm.c (find_decl_and_mark_needed): Remove no longer
8022         necessary check.
8023         (finish_aliases_1): Adjust check for thunk aliases.
8024
8025 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
8026
8027         * config/arm/arm.md (ctzsi2): Added braces
8028         to avoid warning that broke booststrap.
8029
8030 2009-09-04  Martin Jambor  <mjambor@suse.cz>
8031
8032         PR tree-optimization/41112
8033         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
8034         handle variable-bounded arrays.
8035         (expr_with_var_bounded_array_refs_p): New function.
8036         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
8037
8038 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
8039
8040         * config/s390/2097.md: Removed two incorrect bypasses.
8041         (z10_fsimpdf): Fixed latency.
8042         (z10_fhex): New insn_reservation.
8043         (z10_floaddf): Fixed latency.
8044         (z10_floadsf): Fixed latency.
8045         (z10_ftrunctf): Fixed latency.
8046         (z10_ftruncdf): Fixed latency.
8047         * config/s390/s390.c (z10_cost): Fixed values.
8048         (s390_adjust_priority): Added z10 path.
8049         * config/s390/s390.md (type): Added fhex.
8050         (*mov<mode>_64dfp): Updated type attribute.
8051         (*mov<mode>_64): Updated type attribute.
8052         (*mov<mode>_31): Updated type attribute.
8053         (*mov<mode>"): Likewise.
8054         * config/s390/2084.md (x_fsimpdf): Updated condition.
8055
8056 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
8057
8058         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
8059         RTXs in the predicate for operand 1.
8060
8061 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
8062
8063         * config/arm/arm.md (UNSPEC_RBIT): New constant.
8064         (rbitsi2): New insn.
8065         (ctzsi2): New expand.
8066         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
8067
8068 2009-09-03  Martin Jambor  <mjambor@suse.cz>
8069
8070         * tree-sra.c (duplicate_expr_for_different_base): Removed.
8071         (create_artificial_child_access): Use build_ref_for_offset instead
8072         of duplicate_expr_for_different_base.
8073         (propagate_subacesses_accross_link): Likewise.
8074
8075 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
8076
8077         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
8078         of INSN_P.
8079         (mips16e_collect_argument_saves): Skip debug instructions.
8080         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
8081         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
8082         (r10k_insert_cache_barriers): Likewise.
8083         (mips_reorg_process_insns): Likewise.
8084
8085 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
8086
8087         PR bootstrap/41241
8088         * ira.c (update_equiv_reg): Remove check on class likely spill.
8089
8090 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
8091
8092         PR debug/41236
8093         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
8094         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
8095         it or SUBREG.
8096
8097         PR debug/41238
8098         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
8099         the stack slot if it is passed by invisible reference.
8100         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
8101         by invisible reference.
8102
8103 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
8104
8105         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
8106         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
8107         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
8108         0.
8109         * config/bfin/sync.md: New file.
8110         * config/bfin/bfin.md: Include it.
8111         (UNSPEC_ATOMIC): New.
8112         (UNSPEC_ONES): Provide a unique number.
8113
8114         From Jie Zhang <jie.zhang@analog.com>:
8115         * config/bfin/bfin.c (ret_regs): New.
8116         (must_save_fp_p): Don't return true because of frame_pointer_needed.
8117         (must_save_rets_p): New.
8118         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
8119         current_function_is_leaf.
8120         (do_link): Likewise.
8121         (do_unlink): Likewise.
8122         (expand_interrupt_handler_prologue): Use ret_regs array.
8123         (expand_interrupt_handler_epilogue): Use ret_regs array and
8124         pass return register to gen_return_internal.
8125         (bfin_expand_epilogue): Pass return register to
8126         gen_return_internal.
8127         (bfin_expand_call): Explicitly clobber RETS.
8128         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
8129         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
8130         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
8131         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
8132         RETS.
8133         (return_internal): Take a reg rtx rather than the register number.
8134
8135 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
8136
8137         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
8138         when comparing against estimated_loop_iterations_int return.
8139
8140 2009-09-03  Richard Guenther  <rguenther@suse.de>
8141
8142         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
8143         eh_personality_libfunc.
8144
8145 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
8146
8147         * tree-parloops.c (separate_decls_in_region): Add space.
8148
8149 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
8150
8151         * tree-parloops.c (separate_decls_in_region): Change the condition
8152         checking if there are reductions in the loop.
8153
8154 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
8155
8156         PR tree-optimization/38275
8157         * tree-parloops.c (parallelize_loops): Replace profitability condition
8158         for expected number of iterations.
8159
8160 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
8161
8162         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
8163         (bootstrap-debug): Explain conditions in which it becomes default.
8164         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
8165         make it add to it.
8166
8167 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
8168
8169         * doc/invoke.texi (Optimize Options): Move
8170         -finline-small-functions to the -O2 list.
8171
8172 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
8173
8174         * toplev.c (process_options): Enable var-tracking-assignments
8175         by default if var-tracking is enabled.
8176
8177 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
8178
8179         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
8180         barrier.
8181         * emit-rtl.c (prev_nonnote_insn_bb): New function.
8182         * rtl.h (prev_nonnote_insn_bb): Declare it.
8183
8184 2009-09-03  Diego Novillo  <dnovillo@google.com>
8185
8186         * cgraph.c (cgraph_node_for_decl): New.
8187         * cgraph.h (cgraph_node_for_decl): Declare.
8188         * tree.c (host_integerp): Return 0 if T is NULL.
8189
8190 2009-09-03  Diego Novillo  <dnovillo@google.com>
8191
8192         * tree.h (struct alias_pair): Move from varasm.c.
8193         (alias_pairs): Likewise.
8194         (TYPE_MAXVAL): Define.
8195         (TYPE_MINVAL): Define.
8196         (iterative_hash_host_wide_int): Declare.
8197         (remove_unreachable_alias_pairs): Declare.
8198         * tree-pass.h (pass_ipa_free_lang_data): Declare.
8199         * diagnostic.c (default_diagnostic_starter): Make extern.
8200         (default_diagnostic_finalizer): Make extern.
8201         * diagnostic.h (default_diagnostic_starter): Declare.
8202         (default_diagnostic_finalizer): Declare.
8203         (default_tree_printer): Declare.
8204         * toplev.c (default_tree_printer): Make extern.
8205
8206 2009-09-03  Richard Guenther  <rguenther@suse.de>
8207             Diego Novillo  <dnovillo@google.com>
8208
8209         * cgraph.c (cgraph_add_new_function): Remove gimplification.
8210         * cgraphunit.c (cgraph_expand_function): Do not emit
8211         associated thunks from here.
8212         (cgraph_emit_thunks): New.
8213         (cgraph_optimize): Call it.
8214         Return if any IPA pass finds an error.
8215         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
8216         by thunks.
8217
8218 2009-09-03  Simon Baldwin  <simonb@google.com>
8219             Rafael Espindola  <espindola@google.com>
8220             Richard Guenther  <rguenther@suse.de>
8221             Doug Kwan  <dougkwan@google.com>
8222             Diego Novillo  <dnovillo@google.com>
8223
8224         * tree.c: Include tree-pass.h, langhooks-def.h,
8225         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
8226         (free_lang_data_in_type): New.
8227         (need_assembler_name_p): New.
8228         (free_lang_data_in_block): New.
8229         (free_lang_data_in_decl): New.
8230         (struct free_lang_data_d): New.
8231         (add_tree_to_fld_list): New.
8232         (find_decls_types_r): New.
8233         (get_eh_types_for_runtime): New.
8234         (find_decls_types_in_eh_region): New.
8235         (find_decls_types_in_node): New.
8236         (find_decls_types_in_var): New.
8237         (free_lang_data_in_cgraph): New.
8238         (free_lang_data): New.
8239         (gate_free_lang_data): New.
8240         (pass_ipa_free_lang_data): New.
8241
8242 2009-09-03  Diego Novillo  <dnovillo@google.com>
8243
8244         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
8245         * langhooks.h (struct lang_hooks): Add field free_lang_data.
8246         (lang_hooks): Remove const qualifier.
8247         * ipa.c (cgraph_remove_unreachable_nodes): Call
8248         remove_unreachable_alias_pairs.
8249         * except.c (add_type_for_runtime): Check if TYPE has
8250         already been converted.
8251         (lookup_type_for_runtime): Likewise.
8252         (check_handled): Handle converted types.
8253         * varasm.c (remove_unreachable_alias_pairs): New.
8254         * gimple.c: Include demangle.h.
8255         (gimple_decl_printable_name): New.
8256         (gimple_fold_obj_type_ref): New.
8257         * gimple.h (gimple_decl_printable_name): Declare.
8258         (gimple_fold_obj_type_ref): Declare.
8259         * passes.c (init_optimization_passes): Add pass
8260         pass_ipa_free_lang_data.
8261         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
8262         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
8263
8264 2009-09-03  Diego Novillo  <dnovillo@google.com>
8265
8266         * c-lang.c (lang_hooks): Remove const qualifier.
8267
8268 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
8269
8270         * doc/install.texi (*-*-freebsd*): Update target information.
8271
8272 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
8273
8274         * hard-reg-set.h (call_fixed_regs): Remove.
8275         * reginfo.c (call_fixed_regs): Remove.
8276         (init_reg_sets_1): Remove initialization of call_fixed_regs.
8277         (globalize_reg): Don't use call_fixed_regs.
8278         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
8279         call_fixed_regs.
8280
8281 2009-09-01  Michael Matz  <matz@suse.de>
8282
8283         * expr.h (emit_storent_insn, expand_expr_real_1,
8284         expand_expr_real_2): Declare.
8285         * expr.c (emit_storent_insn, expand_expr_real_1,
8286         expand_expr_real_2): Export.
8287         (store_expr): Setting and evaluating dont_return_target is useless.
8288         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
8289         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
8290         * except.c (expand_resx_expr): Rename to ...
8291         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
8292         * except.h (expand_resx_stmt): Declare.
8293         * stmt.c: Add include gimple.h
8294         (expand_asm_expr): Rename to ...
8295         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
8296         (expand_case): Rewrite to take gimple statement.
8297         * tree.h (expand_asm_stmt): Declare.
8298         (expand_case): Change prototype.
8299         * Makefile.in (stmt.o): Depend on gimple.h.
8300         * builtins.c (expand_builtin_synchronize): Build gimple asm
8301         statement, not an ASM_EXPR.
8302         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
8303         gimple_to_tree, release_stmt_tree): Remove.
8304         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
8305         ggc_free, but hold comparison code and operands separately.
8306         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
8307         (expand_call_stmt, expand_gimple_stmt_1,
8308         expand_gimple_stmt): New helpers.
8309         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
8310         release_stmt_tree.  Call expand_gimple_stmt instead.
8311         (expand_gimple_basic_block): Ditto.
8312
8313         * calls.c (emit_call_1): Don't look at EH regions here, make
8314         fntree parameter useless.
8315         (expand_call): New local rettype for TREE_TYPE(exp), use it
8316         throughout.  Remove local p, use addr instead.
8317         Don't look at EH regions here.
8318
8319 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
8320
8321         * doc/invoke.texi (-fsched-pressure): Document it.
8322         (-fsched-reg-pressure-heuristic): Remove it.
8323
8324         * reload.c (ira.h): Include.
8325         (find_reloads): Add choosing reload on number of small spilled
8326         classes.
8327
8328         * haifa-sched.c (ira.h): Include.
8329         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
8330         saved_reg_pressure, curr_reg_live, saved_reg_live,
8331         region_ref_regs): New variables.
8332         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
8333         initiate_reg_pressure_info, setup_ref_regs,
8334         initiate_bb_reg_pressure_info, save_reg_pressure,
8335         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
8336         functions.
8337         (setup_insn_reg_pressure_info): New function.
8338         (rank_for_schedule): Add pressure checking and insn issue time.
8339         Remove comparison of insn reg weights.
8340         (ready_sort): Set insn reg pressure info.
8341         (update_register_pressure, setup_insn_max_reg_pressure,
8342         update_reg_and_insn_max_reg_pressure,
8343         sched_setup_bb_reg_pressure_info): New functions.
8344         (schedule_insn): Add code for printing and updating reg pressure info.
8345         (find_set_reg_weight, find_insn_reg_weight): Remove.
8346         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
8347         (debug_ready_list): Print reg pressure info.
8348         (schedule_block): Ditto.  Check insn issue time.
8349         (sched_init): Set up sched_pressure_p.  Allocate and set up some
8350         reg pressure related info.
8351         (sched_finish): Free some reg pressure related info.
8352         (fix_tick_ready): Make insn always ready if pressure_p.
8353         (init_h_i_d): Don't call find_insn_reg_weight.
8354         (haifa_finish_h_i_d): Free insn reg pressure info.
8355
8356         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
8357         ira_memory_move_cost, ira_class_hard_regs,
8358         ira_class_hard_regs_num, ira_no_alloc_regs,
8359         ira_available_class_regs, ira_reg_class_cover_size,
8360         ira_reg_class_cover, ira_class_translate): Move to ira.h.
8361
8362         * ira-lives.c (single_reg_class): Check mode to find how many
8363         registers are necessary for operand.
8364         (ira_implicitly_set_insn_hard_regs): New.
8365
8366         * common.opt (fsched-pressure): New options.
8367         (fsched-reg-pressure-heuristic): Remove.
8368
8369         * ira.c (setup_eliminable_regset): Rename to
8370         ira_setup_eliminable_regset.  Make it external.
8371         (expand_reg_info): Pass cover class to setup_reg_classes.
8372         (ira): Call resize_reg_info instead of allocate_reg_info.
8373
8374         * sched-deps.c: Include ira.h.
8375         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
8376         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
8377         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
8378         mark_insn_hard_regno_birth, mark_insn_reg_birth,
8379         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
8380         mark_insn_reg_store, mark_insn_reg_clobber,
8381         setup_insn_reg_pressure_info): New.
8382         (sched_analyze_1): Update implicit_reg_pending_uses.
8383         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
8384         Use them to create dependencies.  Set insn reg uses and pressure
8385         info.  Process reg_pending_uses in one place.
8386         (free_deps): Free implicit sets.
8387         (remove_from_deps): Remove implicit sets if necessary.  Check
8388         implicit sets when clearing reg_last_in_use.
8389         (init_deps_global): Clear implicit_reg_pending_clobbers and
8390         implicit_reg_pending_uses.
8391
8392         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
8393         ira_memory_move_cost, ira_class_hard_regs,
8394         ira_class_hard_regs_num, ira_no_alloc_regs,
8395         ira_available_class_regs, ira_reg_class_cover_size,
8396         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
8397         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
8398         ira_implicitly_set_insn_hard_regs): New prototypes.
8399
8400         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
8401         cost_elements_num): New variables.
8402         (allocno_costs, total_costs): Rename to costs and
8403         total_allocno_costs.
8404         (COSTS_OF_ALLOCNO): Rename to COSTS.
8405         (allocno_pref): Rename to pref.
8406         (allocno_pref_buffer): Rename to pref_buffer.
8407         (common_classes): Rename to regno_cover_class.
8408         (COST_INDEX): New.
8409         (record_reg_classes): Set allocno attributes only if allocno_p.
8410         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
8411         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
8412         and COSTS_OF_ALLOCNO.
8413         (print_costs): Rename to print_allocno_costs.
8414         (print_pseudo_costs): New.
8415         (process_bb_node_for_costs): Split into 2 functions with new
8416         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
8417         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
8418         new parameter dump_file.  Use cost_elements_num instead of
8419         ira_allocnos_num.  Make one iteration if preferred classes were
8420         already calculated for scheduler.  Make 2 versions of code
8421         depending on allocno_p.
8422         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
8423         regno_cover_class and COSTS instead of common_classes and
8424         COSTS_OF_ALLOCNO.
8425         (init_costs, finish_costs): New.
8426         (ira_costs): Set up allocno_p and cost_elements_num.  Call
8427         init_costs and finish_costs.
8428         (ira_set_pseudo_classes): New.
8429
8430         * rtl.h (allocate_reg_info): Remove.
8431         (resize_reg_info): Change return type.
8432         (reg_cover_class): New.
8433         (setup_reg_classes): Add new parameter.
8434
8435         * sched-int.h (struct deps_reg): New member implicit_sets.
8436         (sched_pressure_p, sched_regno_cover_class): New external definitions.
8437         (INCREASE_BITS): New macro.
8438         (struct reg_pressure_data, struct reg_use_data): New.
8439         (struct _haifa_insn_data): Remove reg_weight.  Add members
8440         reg_pressure, reg_use_list, reg_set_list, and
8441         reg_pressure_excess_cost_change.
8442         (struct deps): New member implicit_sets.
8443         (pressure_p): New variable.
8444         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
8445         (struct reg_pressure_data, struct reg_use_data): New.
8446         (INSN_REG_WEIGHT): Remove.
8447         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
8448         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
8449         (sched_init_region_reg_pressure_info,
8450         sched_setup_bb_reg_pressure_info): New prototypes.
8451
8452         * reginfo.c (struct reg_pref): New member coverclass.
8453         (reg_cover_class): New function.
8454         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
8455         (reg_info_size): New variable.
8456         (allocate_reg_info): Make static.  Setup reg_info_size.
8457         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
8458         (setup_reg_classes): Add a new parameter.  Setup cover class too.
8459
8460         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
8461         the dependencies.
8462
8463         * sched-rgn.c (deps_join): Set up implicit_sets.
8464         (schedule_region): Set up region and basic blocks pressure
8465         relative info.
8466
8467         * passes.c (init_optimization_passes): Move
8468         pass_subregs_of_mode_init before pass_sched.
8469
8470 2009-09-02  Martin Jambor  <mjambor@suse.cz>
8471
8472         * tree-sra.c (struct access): New field grp_hint.
8473         (dump_access): Dump grp_hint.
8474         (sort_and_splice_var_accesses): Set grp_hint if a group is read
8475         multiple times.
8476         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
8477         those which have been specifically read and somehow written to.
8478         (propagate_subacesses_accross_link): Set grp_hint of right child and
8479         also possibly of the left child.
8480
8481 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
8482
8483         * tree-object-size.c (addr_object_size): Always use object_size_type
8484         0 or 2 when determining the pointer pointed object size.
8485
8486 2009-09-02  Richard Guenther  <rguenther@suse.de>
8487
8488         Revert
8489         2009-08-31  Richard Guenther  <rguenther@suse.de>
8490
8491         * builtins.c (fold_builtin_memory_op): Use the alias oracle
8492         to query if the memory regions for memmove overlap.
8493         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
8494         asserts on pointers, instead deal with odd trees.
8495         (ptr_derefs_may_alias_p): Likewise.
8496         (refs_may_alias_p_1): Constructor bases also never alias.
8497
8498 2009-08-01  Christian Bruel  <christian.bruel@st.com>
8499
8500         Revert:
8501         2009-07-31  Christian Bruel  <christian.bruel@st.com>
8502         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
8503
8504 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
8505
8506         * doc/invoke.texi (-fvar-tracking-assignments): New.
8507         (-fvar-tracking-assignments-toggle): New.
8508         (-fdump-final-insns=file): Mark filename as optional.
8509         (--param min-nondebug-insn-uid): New.
8510         (-gdwarf-@{version}): Mention version 4.
8511         * opts.c (common_handle_option): Accept it.
8512         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
8513         * regrename.c (regrename_optimize): Drop last.  Don't count debug
8514         insns as uses.  Don't reject change because of debug insn.
8515         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
8516         from the chain starter, and check for inexact matches in DEBUG_INSNS.
8517         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
8518         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
8519         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
8520         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
8521         * doc/gimple.texi (is_gimple_debug): New.
8522         (gimple_debug_bind_p): New.
8523         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
8524         * doc/install.texi (bootstrap-debug): More details.
8525         (bootstrap-debug-big, bootstrap-debug-lean): Document.
8526         (bootstrap-debug-lib): More details.
8527         (bootstrap-debug-ckovw): Update.
8528         (bootstrap-time): New.
8529         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
8530         (insert_phi_nodes_for): Insert debug stmts.
8531         (rewrite_stmt): Take iterator.  Insert debug stmts.
8532         (rewrite_enter_block): Adjust.
8533         (maybe_replace_use_in_debug_stmt): New.
8534         (rewrite_update_stmt): Use it.
8535         (mark_use_interesting): Return early for debug stmts.
8536         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
8537         stmts before replacing stmt.
8538         (move_computations_stmt): Likewise.
8539         * ira-conflicts.c (add_copies): Skip debug insns.
8540         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
8541         (regstat_bb_compute_ri): Skip debug insns.
8542         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
8543         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
8544         check_loop_closed_ssa_stmt): Skip debug stmts.
8545         * tree-tailcall.c (find_tail_calls): Likewise.
8546         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
8547         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
8548         (build_var_debug_value_stat): Declare.
8549         (build_var_debug_value): Define.
8550         (target_for_debug_bind): Declare.
8551         * reload.c (find_equiv_reg): Skip debug insns.
8552         * rtlanal.c (reg_used_between_p): Skip debug insns.
8553         (side_effects_p): Likewise.
8554         (canonicalize_condition): Likewise.
8555         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
8556         insns never depend on debug insns.
8557         (create_ddg_dep_no_link): Likewise.
8558         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
8559         Don't add inter-loop dependencies for debug insns.
8560         (build_intra_loop_deps): Likewise.
8561         (create_ddg): Count debug insns.
8562         * ddg.h (struct ddg::num_debug): New.
8563         (num_backargs): Pair up with previous int field.
8564         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
8565         -fcompare-debug-second.
8566         * final.c (get_attr_length_1): Skip debug insns.
8567         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
8568         * gcc.c (invoke_as): Call compare-debug-dump-opt.
8569         (driver_self_specs): Map -fdump-final-insns to
8570         -fdump-final-insns=..
8571         (get_local_tick): New.
8572         (compare_debug_dump_opt_spec_function): Test for . argument and
8573         compute output name.  Compute temp output spec without flag name.
8574         Compute -frandom-seed.
8575         (OPT): Undef after use.
8576         * cfgloopanal.c (num_loop_insns): Skip debug insns.
8577         (average_num_loop_insns): Likewise.
8578         * params.h (MIN_NONDEBUG_INSN_UID): New.
8579         * gimple.def (GIMPLE_DEBUG): New.
8580         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
8581         * auto-inc-dec.c (merge_in_block): Skip debug insns.
8582         (merge_in_block): Fix whitespace.
8583         * toplev.c (flag_var_tracking): Update comment.
8584         (flag_var_tracking_assignments): New.
8585         (flag_var_tracking_assignments_toggle): New.
8586         (process_options): Don't open final insns dump file if we're not
8587         going to write to it.  Compute defaults for var_tracking.
8588         * df-scan.c (df_insn_rescan_debug_internal): New.
8589         (df_uses_record): Handle debug insns.
8590         * haifa-sched.c (ready): Initialize n_debug.
8591         (contributes_to_priority): Skip debug insns.
8592         (dep_list_size): New.
8593         (priority): Use it.
8594         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
8595         they're ready.  Disregard previous debug insns to make decisions.
8596         (queue_insn): Never queue debug insns.
8597         (ready_add, ready_remove_first, ready_remove): Count debug insns.
8598         (schedule_insn): Don't reject debug insns because of issue rate.
8599         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
8600         (queue_to_ready): Skip and discount debug insns.
8601         (choose_ready): Let debug insns through.
8602         (schedule_block): Check boundary debug insns.  Discount debug
8603         insns, schedule them early.  Adjust whitespace.
8604         (set_priorities): Check for boundary debug insns.
8605         (add_jump_dependencies): Use dep_list_size.
8606         (prev_non_location_insn): New.
8607         (check_cfg): Use it.
8608         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
8609         stmts.
8610         (remove_unused_ivs): Reset debug stmts.
8611         * modulo-sched.c (const_iteration_count): Skip debug insns.
8612         (res_MII): Discount debug insns.
8613         (loop_single_full_bb_p): Skip debug insns.
8614         (sms_schedule): Likewise.
8615         (sms_schedule_by_order): Likewise.
8616         (ps_has_conflicts): Likewise.
8617         * caller-save.c (refmarker_fn): New.
8618         (save_call_clobbered_regs): Replace regs with saved mem in
8619         debug insns.
8620         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
8621         Call refmarker_fn mark for hardregnos.
8622         (mark_reg_as_referenced): New.
8623         (replace_reg_with_saved_mem): New.
8624         * ipa-pure-const.c (check_stmt): Skip debug stmts.
8625         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
8626         searching back.
8627         (cse_extended_basic_block): Skip debug insns.
8628         (count_reg_usage): Likewise.
8629         (is_dead_reg): New, split out of...
8630         (set_live_p): ... here.
8631         (insn_live_p): Use it for debug insns.
8632         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
8633         (execute_optimize_stdarg): Likewise.
8634         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
8635         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
8636         changes in debug stmts as changes.
8637         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
8638         (moveup_expr): Don't move across debug insns.  Don't move
8639         debug insn if it would create a bookkeeping block.
8640         (moveup_expr_cached): Don't use cache for debug insns that
8641         are heads of blocks.
8642         (compute_av_set_inside_bb): Skip debug insns.
8643         (sel_rank_for_schedule): Schedule debug insns first.  Remove
8644         dead code.
8645         (block_valid_for_bookkeeping_p); Support lax searches.
8646         (create_block_for_bookkeeping): Adjust block numbers when
8647         encountering debug-only blocks.
8648         (find_place_for_bookkeeping): Deal with debug-only blocks.
8649         (generate_bookkeeping_insn): Accept no place to insert.
8650         (remove_temp_moveop_nops): New argument full_tidying.
8651         (prepare_place_to_insert): Deal with debug insns.
8652         (advance_state_on_fence): Debug insns don't start cycles.
8653         (update_boundaries): Take fence as argument.  Deal with
8654         debug insns.
8655         (schedule_expr_on_boundary): No full_tidying on debug insns.
8656         (fill_insns): Deal with debug insns.
8657         (track_scheduled_insns_and_blocks): Don't count debug insns.
8658         (need_nop_to_preserve_insn_bb): New, split out of...
8659         (remove_insn_from_stream): ... this.
8660         (fur_orig_expr_not_found): Skip debug insns.
8661         * rtl.def (VALUE): Move up.
8662         (DEBUG_INSN): New.
8663         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
8664         (nearest_common_dominator_of_uses): Take debug_stmts argument.
8665         Set it if debug stmts are found.
8666         (statement_sink_location): Skip debug stmts.  Propagate
8667         moving defs into debug stmts.
8668         * ifcvt.c (first_active_insn): Skip debug insns.
8669         (last_active_insns): Likewise.
8670         (cond_exec_process_insns): Likewise.
8671         (noce_process_if_block): Likewise.
8672         (check_cond_move_block): Likewise.
8673         (cond_move_convert_if_block): Likewise.
8674         (block_jumps_and_fallthru_p): Likewise.
8675         (dead_or_predicable): Likewise.
8676         * dwarf2out.c (debug_str_hash_forced): New.
8677         (find_AT_string): Add comment.
8678         (gen_label_for_indirect_string): New.
8679         (get_debug_string_label): New.
8680         (AT_string_form): Use it.
8681         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
8682         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
8683         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
8684         several operations that cannot be represented with DWARF opcodes.
8685         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
8686         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
8687         (dwarf2out_var_location): Take during-call mark into account.
8688         (output_indirect_string): Update comment.  Output if there are
8689         label and references.
8690         (prune_indirect_string): New.
8691         (prune_unused_types): Call it if debug_str_hash_forced.
8692         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
8693         (dw_long_long_const): Remove.
8694         (struct dw_val_struct): Change val_long_long type to rtx.
8695         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
8696         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
8697         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
8698         component instead of HOST_BITS_PER_LONG.
8699         (output_loc_operands): Likewise.  For const8* assert
8700         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
8701         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
8702         rather than HOST_BITS_PER_LONG is >= 64.
8703         (add_AT_long_long): Remove val_hi and val_lo arguments, add
8704         val_const_double.
8705         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
8706         HOST_BITS_PER_LONG for dw_val_class_long_long.
8707         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
8708         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
8709         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
8710         DW_OP_stack_value.
8711         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
8712         Handle DW_OP_implicit_value.
8713         (extract_int): Move prototype earlier.
8714         (mem_loc_descriptor): For SUBREG punt if inner
8715         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
8716         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
8717         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
8718         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
8719         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
8720         instead of Pmode size.
8721         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
8722         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
8723         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
8724         (concat_loc_descriptor, concatn_loc_descriptor,
8725         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
8726         (add_location_or_const_value_attribute): Likewise.  For single
8727         location loc_lists attempt to use add_const_value_attribute
8728         for constant decls.  Add DW_AT_const_value even if
8729         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
8730         in its expression.
8731         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
8732         (control_flow_insn_p): Likewise.
8733         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
8734         (separate_decls_in_region_debug_bind): New.
8735         (separate_decls_in_region): Process debug bind stmts afterwards.
8736         * recog.c (verify_changes): Handle debug insns.
8737         (extract_insn): Likewise.
8738         (peephole2_optimize): Skip debug insns.
8739         * dse.c (scan_insn): Skip debug insns.
8740         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
8741         Pass it on.
8742         (setup_id_for_insn): Handle debug insns.
8743         (maybe_tidy_empty_bb): Adjust whitespace.
8744         (tidy_control_flow): Skip debug insns.
8745         (sel_remove_insn): Adjust for debug insns.
8746         (sel_estimate_number_of_insns): Skip debug insns.
8747         (create_insn_rtx_from_pattern): Handle debug insns.
8748         (create_copy_of_insn_rtx): Likewise.
8749         * sel-sched-.h (sel_bb_end): Declare.
8750         (sel_bb_empty_or_nop_p): New.
8751         (get_all_loop_exits): Use it.
8752         (_eligible_successor_edge_p): Likewise.
8753         (return_nop_to_pool): Adjust.
8754         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
8755         * ira-lives.c (process_bb_node_lives): Skip debug insns.
8756         * gimple-pretty-print.c (dump_gimple_debug): New.
8757         (dump_gimple_stmt): Use it.
8758         (dump_bb_header): Skip gimple debug stmts.
8759         * regmove.c (optimize_reg_copy_1): Discount debug insns.
8760         (fixup_match_2): Likewise.
8761         (regmove_backward_pass): Likewise.  Simplify combined
8762         replacement.  Handle debug insns.
8763         * function.c (instantiate_virtual_regs): Handle debug insns.
8764         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
8765         * print-rtl.h: Include cselib.h.
8766         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
8767         * df.h (df_inns_rescan_debug_internal): Declare.
8768         * gcse.c (alloc_hash_table): Estimate n_insns.
8769         (cprop_insn): Don't regard debug insns as changes.
8770         (bypass_conditional_jumps): Skip debug insns.
8771         (one_pre_gcse_pass): Adjust.
8772         (one_code_hoisting_pass): Likewise.
8773         (compute_ld_motion_mems): Skip debug insns.
8774         (one_cprop_pass): Adjust.
8775         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
8776         (if_convertible_stmt_p): Handle debug stmts.
8777         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
8778         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
8779         * ira-build.c (create_bb_allocnos): Skip debug insns.
8780         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
8781         (has_single_use): Likewise.
8782         (single_imm_use): Likewise.
8783         (num_imm_uses): Likewise.
8784         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
8785         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
8786         (create_outofssa_var_map): Likewise.
8787         * lower-subreg.c (adjust_decomposed_uses): New.
8788         (resolve_debug): New.
8789         (decompose_multiword_subregs): Use it.
8790         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
8791         * emit-rtl.c: Include params.h.
8792         (cur_debug_insn_uid): Define.
8793         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
8794         (copy_rtx_if_shared_1): Handle debug insns.
8795         (reset_used_flags): Likewise.
8796         (set_used_flags): LIkewise.
8797         (get_max_insn_count): New.
8798         (next_nondebug_insn): New.
8799         (prev_nondebug_insn): New.
8800         (make_debug_insn_raw): New.
8801         (emit_insn_before_noloc): Handle debug insns.
8802         (emit_jump_insn_before_noloc): Likewise.
8803         (emit_call_insn_before_noloc): Likewise.
8804         (emit_debug_insn_before_noloc): New.
8805         (emit_insn_after_noloc): Handle debug insns.
8806         (emit_jump_insn_after_noloc): Likewise.
8807         (emit_call_insn_after_noloc): Likewise.
8808         (emit_debug_insn_after_noloc): Likewise.
8809         (emit_insn_after): Take loc from earlier non-debug insn.
8810         (emit_jump_insn_after): Likewise.
8811         (emit_call_insn_after): Likewise.
8812         (emit_debug_insn_after_setloc): New.
8813         (emit_debug_insn_after): New.
8814         (emit_insn_before): Take loc from later non-debug insn.
8815         (emit_jump_insn_before): Likewise.
8816         (emit_call_insn_before): Likewise.
8817         (emit_debug_insn_before_setloc): New.
8818         (emit_debug_insn_before): New.
8819         (emit_insn): Handle debug insns.
8820         (emit_debug_insn): New.
8821         (emit_jump_insn): Handle debug insns.
8822         (emit_call_insn): Likewise.
8823         (emit): Likewise.
8824         (init_emit): Take min-nondebug-insn-uid into account.
8825         Initialize cur_debug_insn_uid.
8826         (emit_copy_of_insn_after): Handle debug insns.
8827         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
8828         location of single rhs in place.
8829         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
8830         (floor_sdiv_adjust): New.
8831         (cell_sdiv_adjust): New.
8832         (cell_udiv_adjust): New.
8833         (round_sdiv_adjust): New.
8834         (round_udiv_adjust): New.
8835         (wrap_constant): Moved from cselib.
8836         (unwrap_constant): New.
8837         (expand_debug_expr): New.
8838         (expand_debug_locations): New.
8839         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
8840         debug bind stmts.
8841         (gimple_expand_cfg): Expand debug locations.
8842         * cselib.c: Include tree-pass.h.
8843         (struct expand_value_data): New.
8844         (cselib_record_sets_hook): New.
8845         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
8846         (cselib_clear_table): Move, and implemnet in terms of...
8847         (cselib_reset_table_with_next_value): ... this.
8848         (cselib_get_next_unknown_value): New.
8849         (discard_useless_locs): Don't discard preserved values.
8850         (cselib_preserve_value): New.
8851         (cselib_preserved_value_p): New.
8852         (cselib_preserve_definitely): New.
8853         (cselib_clear_preserve): New.
8854         (cselib_preserve_only_values): New.
8855         (new_cselib_val): Take rtx argument.  Dump it in details.
8856         (cselib_lookup_mem): Adjust.
8857         (expand_loc): Take regs_active in struct.  Adjust.  Silence
8858         dumps unless details are requested.
8859         (cselib_expand_value_rtx_cb): New.
8860         (cselib_expand_value_rtx): Rename and reimplment in terms of...
8861         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
8862         without details.  Copy more subregs.  Try to resolve values
8863         using a callback.  Wrap constants.
8864         (cselib_subst_to_values): Adjust.
8865         (cselib_log_lookup): New.
8866         (cselib_lookup): Call it.
8867         (cselib_invalidate_regno): Don't count preserved values as useless.
8868         (cselib_invalidate_mem): Likewise.
8869         (cselib_record_set): Likewise.
8870         (struct set): Renamed to cselib_set, moved to cselib.h.
8871         (cselib_record_sets): Adjust.  Call hook.
8872         (cselib_process_insn): Reset table when it would be cleared.
8873         (dump_cselib_val): New.
8874         (dump_cselib_table): New.
8875         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
8876         (remove_forwarder_block): Support moving debug stmts.
8877         * cselib.h (cselib_record_sets_hook): Declare.
8878         (cselib_expand_callback): New type.
8879         (cselib_expand_value_rtx_cb): Declare.
8880         (cselib_reset_table_with_next_value): Declare.
8881         (cselib_get_next_unknown_value): Declare.
8882         (cselib_preserve_value): Declare.
8883         (cselib_preserved_value_p): Declare.
8884         (cselib_preserve_only_values): Declare.
8885         (dump_cselib_table): Declare.
8886         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
8887         (try_crossjump_to_edge): Likewise.
8888         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
8889         dominated blocks when debug stmts are present.
8890         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
8891         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
8892         (set_var_live_on_entry): Likewise.
8893         * loop-invariant.c (find_invariants_bb): Skip debug insns.
8894         * cfglayout.c (curr_location, last_location): Make static.
8895         (set_curr_insn_source_location): Don't avoid bouncing.
8896         (get_curr_insn_source_location): New.
8897         (get_curr_insn_block): New.
8898         (duplicate_insn_chain): Handle debug insns.
8899         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
8900         into debug stmts.
8901         * common.opt (fcompare-debug): Move to sort order.
8902         (fdump-unnumbered-links): Likewise.
8903         (fvar-tracking-assignments): New.
8904         (fvar-tracking-assignments-toggle): New.
8905         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
8906         because of debug stmts.
8907         (mark_stmt_if_obviously_necessary): Mark debug stmts.
8908         (eliminate_unnecessary_stmts): Walk dominated blocks before
8909         dominators.
8910         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
8911         * ira.c (memref_used_between_p): Skip debug insns.
8912         (update_equiv_regs): Likewise.
8913         * sched-deps.c (sd_lists_size): Accept empty list.
8914         (sd_init_insn): Mark debug insns.
8915         (sd_finish_insn): Unmark them.
8916         (sd_add_dep): Reject non-debug deps on debug insns.
8917         (fixup_sched_groups): Give debug insns group treatment.
8918         Skip debug insns.
8919         (sched_analyze_reg): Don't mark debug insns for sched before call.
8920         (sched_analyze_2): Handle debug insns.
8921         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
8922         insns.
8923         (deps_analyze_insn): Handle debug insns.
8924         (deps_start_bb): Skip debug insns.
8925         (init_deps): Initialize last_debug_insn.
8926         * tree-ssa.c (target_for_debug_bind): New.
8927         (find_released_ssa_name): New.
8928         (propagate_var_def_into_debug_stmts): New.
8929         (propagate_defs_into_debug_stmts): New.
8930         (verify_ssa): Skip debug bind stmts without values.
8931         (warn_uninialized_vars): Skip debug stmts.
8932         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
8933         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
8934         (rtx_equal_p): Likewise.
8935         * ira-costs.c (scan_one_insn): Skip debug insns.
8936         (process_bb_node_for_hard_reg_moves): Likewise.
8937         * rtl.h (DEBUG_INSN_P): New.
8938         (NONDEBUG_INSN_P): New.
8939         (MAY_HAVE_DEBUG_INSNS): New.
8940         (INSN_P): Accept debug insns.
8941         (RTX_FRAME_RELATED_P): Likewise.
8942         (INSN_DELETED_P): Likewise
8943         (PAT_VAR_LOCATION_DECL): New.
8944         (PAT_VAR_LOCATION_LOC): New.
8945         (PAT_VAR_OCATION_STATUS): New.
8946         (NOTE_VAR_LOCATION_DECL): Reimplement.
8947         (NOTE_VAR_LOCATION_LOC): Likewise.
8948         (NOTE_VAR_LOCATION_STATUS): Likewise.
8949         (INSN_VAR_LOCATION): New.
8950         (INSN_VAR_LOCATION_DECL): New.
8951         (INSN_VAR_LOCATION_LOC): New.
8952         (INSN_VAR_LOCATION_STATUS): New.
8953         (gen_rtx_UNKNOWN_VAR_LOC): New.
8954         (VAR_LOC_UNKNOWN_P): New.
8955         (NOTE_DURING_CALL_P): New.
8956         (SCHED_GROUP_P): Accept debug insns.
8957         (emit_debug_insn_before): Declare.
8958         (emit_debug_insn_before_noloc): Declare.
8959         (emit_debug_insn_beore_setloc): Declare.
8960         (emit_debug_insn_after): Declare.
8961         (emit_debug_insn_after_noloc): Declare.
8962         (emit_debug_insn_after_setloc): Declare.
8963         (emit_debug_insn): Declare.
8964         (make_debug_insn_raw): Declare.
8965         (prev_nondebug_insn): Declare.
8966         (next_nondebug_insn): Declare.
8967         (delegitimize_mem_from_attrs): Declare.
8968         (get_max_insn_count): Declare.
8969         (wrap_constant): Declare.
8970         (unwrap_constant): Declare.
8971         (get_curr_insn_source_location): Declare.
8972         (get_curr_insn_block): Declare.
8973         * tree-inline.c (insert_debug_decl_map): New.
8974         (processing_debug_stmt): New.
8975         (remap_decl): Don't create new mappings in debug stmts.
8976         (remap_gimple_op_r): Don't add references in debug stmts.
8977         (copy_tree_body_r): Likewise.
8978         (remap_gimple_stmt): Handle debug bind stmts.
8979         (copy_bb): Skip debug stmts.
8980         (copy_edges_for_bb): Likewise.
8981         (copy_debug_stmt): New.
8982         (copy_debug_stmts): New.
8983         (copy_body): Copy debug stmts at the end.
8984         (insert_init_debug_bind): New.
8985         (insert_init_stmt): Take id.  Skip and emit debug stmts.
8986         (setup_one_parameter): Remap variable earlier, register debug mapping.
8987         (estimate_num_insns): Skip debug stmts.
8988         (expand_call_inline): Preserve debug_map.
8989         (optimize_inline_calls): Check for no debug_stmts left-overs.
8990         (unsave_expr_now): Preserve debug_map.
8991         (copy_gimple_seq_and_replace_locals): Likewise.
8992         (tree_function_versioning): Check for no debug_stmts left-overs.
8993         Init and destroy debug_map as needed.  Split edges unconditionally.
8994         (build_duplicate_type): Init and destroy debug_map as needed.
8995         * tree-inline.h: Include gimple.h instead of pointer-set.h.
8996         (struct copy_body_data): Add debug_stmts and debug_map.
8997         * sched-int.h (struct ready_list): Add n_debug.
8998         (struct deps): Add last_debug_insn.
8999         (DEBUG_INSN_SCHED_P): New.
9000         (BOUNDARY_DEBUG_INSN_P): New.
9001         (SCHEDULE_DEBUG_INSN_P): New.
9002         (sd_iterator_cond): Accept empty list.
9003         * combine.c (create_log_links): Skip debug insns.
9004         (combine_instructions): Likewise.
9005         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
9006         return value is always unshared.
9007         (struct rtx_subst_pair): New.
9008         (auto_adjust_pair): New.
9009         (propagate_for_debug_subst): New.
9010         (propagate_for_debug): New.
9011         (try_combine): Skip debug insns.  Propagate removed defs into
9012         debug insns.
9013         (next_nonnote_nondebug_insn): New.
9014         (distribute_notes): Use it.  Skip debug insns.
9015         (distribute_links): Skip debug insns.
9016         * tree-outof-ssa.c (set_location_for_edge): Likewise.
9017         * resource.c (mark_target_live_regs): Likewise.
9018         * var-tracking.c: Include cselib.h and target.h.
9019         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
9020         MO_VAL_SET.
9021         (micro_operation_type_name): New.
9022         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
9023         (struct micro_operation_def): Update comments.
9024         (decl_or_value): New type.  Use instead of decls.
9025         (struct emit_note_data_def): Add vars.
9026         (struct attrs_def): Use decl_or_value.
9027         (struct variable_tracking_info_def): Add permp, flooded.
9028         (struct location_chain_def): Update comment.
9029         (struct variable_part_def): Use decl_or_value.
9030         (struct variable_def): Make var_part a variable length array.
9031         (valvar_pool): New.
9032         (scratch_regs): New.
9033         (cselib_hook_called): New.
9034         (dv_is_decl_p): New.
9035         (dv_is_value_p): New.
9036         (dv_as_decl): New.
9037         (dv_as_value): New.
9038         (dv_as_opaque): New.
9039         (dv_onepart_p): New.
9040         (dv_pool): New.
9041         (IS_DECL_CODE): New.
9042         (check_value_is_not_decl): New.
9043         (dv_from_decl): New.
9044         (dv_from_value): New.
9045         (dv_htab_hash): New.
9046         (variable_htab_hash): Use it.
9047         (variable_htab_eq): Support values.
9048         (variable_htab_free): Free from the right pool.
9049         (attrs_list_member, attrs_list_insert): Use decl_or_value.
9050         (attrs_list_union): Adjust.
9051         (attrs_list_mpdv_union): New.
9052         (tie_break_pointers): New.
9053         (canon_value_cmp): New.
9054         (unshare_variable): Return possibly-modified slot.
9055         (vars_copy_1): Adjust.
9056         (var_reg_decl_set): Adjust.  Split out of...
9057         (var_reg_set): ... this.
9058         (get_init_value): Adjust.
9059         (var_reg_delete_and_set): Adjust.
9060         (var_reg_delete): Adjust.
9061         (var_regno_delete): Adjust.
9062         (var_mem_decl_set): Split out of...
9063         (var_mem_set): ... this.
9064         (var_mem_delete_and_set): Adjust.
9065         (var_mem_delete): Adjust.
9066         (val_store): New.
9067         (val_reset): New.
9068         (val_resolve): New.
9069         (variable_union): Adjust.  Speed up merge of 1-part vars.
9070         (variable_canonicalize): Use unshared slot.
9071         (VALUED_RECURSED_INTO): New.
9072         (find_loc_in_1pdv): New.
9073         (struct dfset_merge): New.
9074         (insert_into_intersection): New.
9075         (intersect_loc_chains): New.
9076         (loc_cmp): New.
9077         (canonicalize_loc_order_check): New.
9078         (canonicalize_values_mark): New.
9079         (canonicalize_values_star): New.
9080         (variable_merge_over_cur): New.
9081         (variable_merge_over_src): New.
9082         (dataflow_set_merge): New.
9083         (dataflow_set_equiv_regs): New.
9084         (remove_duplicate_values): New.
9085         (struct dfset_post_merge): New.
9086         (variable_post_merge_new_vals): New.
9087         (variable_post_merge_perm_vals): New.
9088         (dataflow_post_merge_adjust): New.
9089         (find_mem_expr_in_1pdv): New.
9090         (dataflow_set_preserve_mem_locs): New.
9091         (dataflow_set_remove_mem_locs): New.
9092         (dataflow_set_clear_at_call): New.
9093         (onepart_variable_different_p): New.
9094         (variable_different_p): Use it.
9095         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
9096         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
9097         if not needed.
9098         (track_loc_p): Pass it true.
9099         (struct count_use_info): New.
9100         (find_use_val): New.
9101         (replace_expr_with_values): New.
9102         (log_op_type): New.
9103         (use_type): New, partially split out of...
9104         (count_uses): ... this.  Count new micro-ops.
9105         (count_uses_1): Adjust.
9106         (count_stores): Adjust.
9107         (count_with_sets): New.
9108         (VAL_NEEDS_RESOLUTION): New.
9109         (VAL_HOLDS_TRACK_EXPR): New.
9110         (VAL_EXPR_IS_COPIED): New.
9111         (VAL_EXPR_IS_CLOBBERED): New.
9112         (add_uses): Adjust.  Generate new micro-ops.
9113         (add_uses_1): Adjust.
9114         (add_stores): Generate new micro-ops.
9115         (add_with_sets): New.
9116         (find_src_status): Adjust.
9117         (find_src_set_src): Adjust.
9118         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
9119         Handle new micro-ops.  Canonicalize value equivalances.
9120         (vt_find_locations): Compute total size of hash tables for
9121         dumping.  Perform merge for var-tracking-assignments.  Don't
9122         disregard single-block loops.
9123         (dump_attrs_list): Handle decl_or_value.
9124         (dump_variable): Take variable.  Deal with decl_or_value.
9125         (dump_variable_slot): New.
9126         (dump_vars): Use it.
9127         (dump_dataflow_sets): Adjust.
9128         (set_slot_part): New, extended to support one-part variables
9129         after splitting out of...
9130         (set_variable_part): ... this.
9131         (clobber_slot_part): New, split out of...
9132         (clobber_variable_part): ... this.
9133         (delete_slot_part): New, split out of...
9134         (delete_variable_part): .... this.
9135         (check_wrap_constant): New.
9136         (vt_expand_loc_callback): New.
9137         (vt_expand_loc): New.
9138         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
9139         EMIT_NOTE_AFTER_CALL_INSN.
9140         (emit_notes_for_differences_1): Adjust.  Handle values.
9141         (emit_notes_for_differences_2): Likewise.
9142         (emit_notes_for_differences): Adjust.
9143         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
9144         Adjust.  Handle new micro-ops.
9145         (vt_add_function_parameters): Adjust.  Create and bind values.
9146         (vt_initialize): Adjust.  Initialize scratch_regs and
9147         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
9148         operations.  Move some code to count_with_sets and add_with_sets.
9149         (delete_debug_insns): New.
9150         (vt_debug_insns_local): New.
9151         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
9152         cselib.
9153         (var_tracking_main): If var-tracking-assignments is enabled
9154         but var-tracking isn't, delete debug insns and leave.  Likewise
9155         if we exceed limits or fail the stack adjustments tests, and
9156         after all var-tracking processing.
9157         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
9158         (dataflow_set): Add traversed_vars.
9159         (value_chain, const_value_chain): New typedefs.
9160         (value_chain_pool, value_chains): New variables.
9161         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
9162         add_value_chains, add_cselib_value_chains, remove_value_chain,
9163         remove_value_chains, remove_cselib_value_chains): New functions.
9164         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
9165         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
9166         static inlines.
9167         (shared_hash_find_slot_unshare, shared_hash_find_slot,
9168         shared_hash_find_slot_noinsert, shared_hash_find): Update.
9169         (dst_can_be_shared): New variable.
9170         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
9171         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
9172         different from set->vars, look up slot again instead of using the
9173         passed in slot.
9174         (dataflow_set_init): Initialize traversed_vars.
9175         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
9176         lookup if set->vars is shared.  Don't keep slot cleared before
9177         calling unshare_variable.  Unshare set->vars if needed.  Adjust
9178         unshare_variable callers.  Clear dst_can_be_shared if needed.
9179         Even ->refcount == 1 vars must be unshared if set->vars is shared
9180         and var needs to be modified.
9181         (dataflow_set_union): Set traversed_vars during canonicalization.
9182         (VALUE_CHANGED, DECL_CHANGED): Define.
9183         (set_dv_changed, dv_changed_p): New static inlines.
9184         (track_expr_p): Clear DECL_CHANGED.
9185         (dump_dataflow_sets): Set it.
9186         (variable_was_changed): Call set_dv_changed.
9187         (emit_note_insn_var_location): Likewise.
9188         (changed_variables_stack): New variable.
9189         (check_changed_vars_1, check_changed_vars_2): New functions.
9190         (emit_notes_for_changes): Do nothing if changed_variables is
9191         empty.  Traverse changed_variables with check_changed_vars_1,
9192         call check_changed_vars_2 on each changed_variables_stack entry.
9193         (emit_notes_in_bb): Add SET argument.  Just clear it at the
9194         beginning, use it instead of local &set, don't destroy it at the end.
9195         (vt_emit_notes): Call dataflow_set_clear early on all
9196         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
9197         computed set, dataflow_set_clear also VTI(bb)->in when we are
9198         done with the basic block.  Initialize changed_variables_stack,
9199         free it afterwards.  If ENABLE_CHECKING verify that after noting
9200         differences to an empty set value_chains hash table is empty.
9201         (vt_initialize): Initialize value_chains and value_chain_pool.
9202         (vt_finalize): Delete value_chains htab, free value_chain_pool.
9203         (variable_tracking_main): Call dump_dataflow_sets before calling
9204         vt_emit_notes, not after it.
9205         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
9206         (propagate_var_def_into_debug_stmts): Declare.
9207         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
9208         (df_set_note): Reject debug insns.
9209         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
9210         add notes to debug insns.
9211         (df_note_bb_compute): Adjust.  Likewise.
9212         (df_simulate_uses): Skip debug insns.
9213         (df_simulate_initialize_backwards): Likewise.
9214         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
9215         (subst_stack_regs_pat): Reject debug insns.
9216         (convert_regs_1): Handle debug insns.
9217         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
9218         (print-rtl.o): Depend on cselib.h.
9219         (cselib.o): Depend on TREE_PASS_H.
9220         (var-tracking.o): Depend on cselib.h and TARGET_H.
9221         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
9222         (init_ready_list): Skip boundary debug insns.
9223         (add_branch_dependences): Skip debug insns.
9224         (free_block_dependencies): Check for blocks with only debug insns.
9225         (compute_priorities): Likewise.
9226         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
9227         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
9228         all callers.
9229         (gimple_build_debug_bind_stat): New.
9230         (empty_body_p): Skip debug stmts.
9231         (gimple_has_side_effects): Likewise.
9232         (gimple_rhs_has_side_effects): Likewise.
9233         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
9234         (gimple_build_debug_bind_stat): Declare.
9235         (gimple_build_debug_bind): Define.
9236         (is_gimple_debug): New.
9237         (gimple_debug_bind_p): New.
9238         (gimple_debug_bind_get_var): New.
9239         (gimple_debug_bind_get_value): New.
9240         (gimple_debug_bind_get_value_ptr): New.
9241         (gimple_debug_bind_set_var): New.
9242         (gimple_debug_bind_set_value): New.
9243         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
9244         (gimple_debug_bind_reset_value): New.
9245         (gimple_debug_bind_has_value_p): New.
9246         (gsi_next_nondebug): New.
9247         (gsi_prev_nondebug): New.
9248         (gsi_start_nondebug_bb): New.
9249         (gsi_last_nondebug_bb): New.
9250         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
9251         (print_insn): Handle DEBUG_INSN.
9252         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
9253         of first insn prevail.
9254         (first_stmt): Skip debug stmts.
9255         (first_non_label_stmt): Likewise.
9256         (last_stmt): Likewise.
9257         (has_zero_uses_1): New.
9258         (single_imm_use_1): New.
9259         (verify_gimple_debug): New.
9260         (verify_types_in_gimple_stmt): Handle debug stmts.
9261         (verify_stmt): Likewise.
9262         (debug_loop_num): Skip debug stmts.
9263         (remove_edge_and_dominated_blocks): Remove dominators last.
9264         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
9265         (linearize_expr): Likewise.
9266         * config/i386/i386.c (ix86_delegitimize_address): Call
9267         default implementation.
9268         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
9269         (group_barrier_needed): Skip debug insns.
9270         (emit_insn_group_barriers): Likewise.
9271         (emit_all_insn_group_barriers): Likewise.
9272         (ia64_variable_issue): Handle debug insns.
9273         (ia64_dfa_new_cycle): Likewise.
9274         (final_emit_insn_group_barriers): Skip debug insns.
9275         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
9276         def cfa without frame.
9277         (process_set): Likewise.
9278         (process_for_unwind_directive): Pass frame on.
9279         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
9280         (rs6000_delegitimize_address): New.
9281         (rs6000_debug_adjust_cost): Handle debug insns.
9282         (is_microcoded_insn): Likewise.
9283         (is_cracked_insn): Likewise.
9284         (is_nonpipeline_insn): Likewise.
9285         (insn_must_be_first_in_group): Likewise.
9286         (insn_must_be_last_in_group): Likewise.
9287         (force_new_group): Likewise.
9288         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
9289         contains only debug insns.
9290         (rtl_merge_blocks): Skip debug insns.
9291         (purge_dead_edges): Likewise.
9292         (rtl_block_ends_with_call_p): Skip debug insns.
9293         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
9294         (mark_reg_dependencies): Skip debug insns.
9295         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
9296         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
9297         * tree-ssa-threadedge.c
9298         (record_temporary_equivalences_from_stmts): Skip debug stmts.
9299         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
9300         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
9301         (copyprop_hardreg_forward_1): Handle debug insns.
9302         * reload1.c (reload): Skip debug insns.  Replace unassigned
9303         pseudos in debug insns with their equivalences.
9304         (eliminate_regs_in_insn): Skip debug insns.
9305         (emit_input_reload_insns): Skip debug insns at first, adjust
9306         them later.
9307         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
9308         (get_indirect_ref_operands): Pass opf_no_vops on.
9309         (get_expr_operands): Likewise.  Skip debug stmts.
9310         (parse_ssa_operands): Scan debug insns with opf_no_vops.
9311
9312 2009-09-01  Richard Henderson  <rth@redhat.com>
9313
9314         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
9315         stmt_ends_pp_p statements at least once.
9316         * tree-vrp.c (vrp_initialize): Likewise.
9317         (vrp_visit_stmt): Be prepared for non-interesting stmts.
9318
9319 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
9320
9321         PR bootstrap/41205
9322         Fix AIX bootstrap after PR debug/30161
9323         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
9324         that is a GNU extension.
9325         (tmpl_value_parm_die_table): Move the definition of this global
9326         outside #ifdef DWARF2_DEBUGGING_INFO region.
9327
9328 2009-09-01  Richard Guenther  <rguenther@suse.de>
9329
9330         * tree.c (tree_expr_size): New function.
9331         * tree.h (tree_expr_size): Declare.
9332         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
9333         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
9334         * langhooks.c (lhd_expr_size): Remove.
9335         * langhooks.h (struct lang_hooks): Remove expr_size.
9336         * explow.c (expr_size): Use tree_expr_size.
9337         (int_expr_size): Likewise.
9338         * langhooks-def.h (lhd_expr_size): Remove.
9339         (LANG_HOOKS_EXPR_SIZE): Likewise.
9340         (LANG_HOOKS_INITIALIZER): Adjust.
9341
9342 2009-09-01  Richard Guenther  <rguenther@suse.de>
9343
9344         * tree-flow.h (mark_addressable): Move declaration ...
9345         * tree.h (mark_addressable): ... here.
9346         * stmt.c (expand_asm_operands): Use mark_addressable, not
9347         lang_hooks.mark_addressable.
9348         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
9349         LANG_HOOKS_MARK_ADDRESSABLE.
9350         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
9351         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
9352
9353 2009-08-31  Chris Demetriou  <cgd@google.com>
9354
9355         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
9356         vectorize if not TARGET_SSE2.
9357
9358 2009-08-31  DJ Delorie  <dj@redhat.com>
9359
9360         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
9361         registers if no coprocessor is enabled.
9362
9363 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
9364
9365         PR debug/30161
9366         * cgraph.h (cgraph_get_node): Declare ...
9367         * cgraph.c (cgraph_get_node): ... new function.
9368         * dwarf2out.c (gen_generic_params_dies,
9369         generic_parameter_die, tree_add_const_value_attribute_for_decl,
9370         make_ith_pack_parameter_name,
9371         append_entry_to_tmpl_value_parm_die_table,
9372         gen_remaining_tmpl_value_param_die_attribute): New functions.
9373         (gen_subprogram_die): Generate debug info for template parameters
9374         if debug info level is higher than DINFO_LEVEL_TERSE.
9375         Use tree_add_const_value_attribute_for_decl instead of
9376         tree_add_const_value_attribute.
9377         (gen_const_die): Use tree_add_const_value_attribute_for_decl
9378         instead of tree_add_const_value_attribute.
9379         (gen_struct_or_union_type_die): Generate debug
9380         info for template parameters if debug info level is higher than
9381         DINFO_LEVEL_TERSE.
9382         (tree_add_const_value_attribute): Handle integral and pointer
9383         constants. Update comment.
9384         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
9385         (dwarf_attr_name): Support DW_AT_GNU_template_name.
9386         (reference_to_unused): Fix thinko. Remove redundant predicates from
9387         tests.
9388         (tree_add_const_value_attribute): Make this work for constant
9389         expressions only.
9390         tree_add_const_value_attribute_for_decl is to be used for variable
9391         DECLs now.
9392         (add_location_or_const_value_attribute): Use
9393         tree_add_const_value_attribute_for_decl now.
9394         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
9395         DW_TAG_template_value_param DIEs after function DIEs have been
9396         emitted.
9397         * langhooks.h (lang_hooks_for_types): Add
9398         get_argument_pack_elems.
9399         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
9400         (lang_hooks): Added get_innermost_generic_parms,
9401         get_innermost_generic_args.
9402         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
9403         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
9404         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
9405         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
9406
9407 2009-08-31  DJ Delorie  <dj@redhat.com>
9408
9409         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
9410         it once we start generating the prologue or epilogue.
9411         (mep_call_saves_register): If the frame is locked, re-use
9412         cached values.
9413         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
9414         (mep_expand_prologue): Call it.
9415         (mep_expand_epilogue): Likewise.
9416         (mep_start_function): Use the same logic as mep_expand_prologue.
9417         (mep_pass_by_reference): Make logic more readable.
9418         (mep_return_in_memory): Zero-sized objects are passed in memory.
9419         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
9420
9421 2009-08-31  Richard Guenther  <rguenther@suse.de>
9422
9423         * builtins.c (fold_builtin_memory_op): Use the alias oracle
9424         to query if the memory regions for memmove overlap.
9425         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
9426         asserts on pointers, instead deal with odd trees.
9427         (ptr_derefs_may_alias_p): Likewise.
9428         (refs_may_alias_p_1): Constructor bases also never alias.
9429
9430 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
9431
9432         * doc/install.texi (Final install): Adjust reference on where to
9433         order printed manuals.
9434
9435 2009-08-30  Olivier Hainque  <hainque@adacore.com>
9436
9437         * dwarf2out.c (switch_to_frame_table_section): Move
9438         definition prior to first use.
9439
9440 2009-08-30  Richard Guenther  <rguenther@suse.de>
9441
9442         PR tree-optimization/41186
9443         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
9444         (ao_ref_init_from_ptr_and_size): New function.
9445         (ref_maybe_used_by_call_p_1): Be more precise tracking
9446         used ranges for builtin functions.
9447         (ref_maybe_used_by_call_p): Adjust.
9448         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
9449         ranges for builtin functions.
9450         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
9451
9452 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
9453
9454         PR target/41081
9455         * fwprop.c (get_reg_use_in): Delete.
9456         (free_load_extend): New function.
9457         (forward_propagate_subreg): Use it.
9458
9459 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
9460
9461         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
9462
9463 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
9464
9465         PR/41184
9466         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
9467         padding.
9468
9469 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
9470
9471         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
9472         fini or fini_array section.
9473
9474 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9475
9476         * graphite-dependences.c (graphite_legal_transform_bb): Call
9477         pbb_remove_duplicate_pdrs.
9478         * graphite-poly.c (can_collapse_pdr): Removed.
9479         (pdr_find_duplicate): Removed.
9480         (can_collapse_pdrs): New.
9481         (pbb_remove_duplicate_pdrs): New.
9482         (new_poly_dr): Do not look for duplicates.
9483         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
9484         (PBB_PDR_DUPLICATES_REMOVED): New.
9485         (pbb_remove_duplicate_pdrs): Declared.
9486
9487 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9488
9489         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
9490         the strides by multiplying by PDR_NB_REFS.
9491         * graphite-poly.c (can_collapse_pdr): New.
9492         (pdr_find_duplicate): New.
9493         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
9494         Initialize PDR_NB_REFS.
9495         * graphite-poly.h (struct poly_dr): Add field nb_refs.
9496         (PDR_NB_REFS): New.
9497         (new_poly_dr): Number of subscripts is a graphite_dim_t.
9498
9499 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9500
9501         PR middle-end/40965
9502         * graphite-poly.c (apply_poly_transforms): Remove legality test before
9503         any transform.
9504
9505 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9506
9507         * graphite-dependences.c (pddr_original_scattering): Return NULL
9508         for read-read dependence relations.
9509         * graphite-poly.h (enum poly_dr_type): Fix comment.
9510         (pdr_read_p): New.
9511         (pdr_write_p): New.
9512         (pdr_may_write_p): New.
9513
9514 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9515
9516         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
9517         (struct poly_dr): Same.
9518         (new_poly_dr): Same.
9519         * graphite-poly.c (new_poly_dr): Same.
9520         * graphite-dependences.c (dot_deps): Disable call to system.
9521
9522 2009-08-28  Cary Coutant  <ccoutant@google.com>
9523
9524         PR debug/41063
9525         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
9526         struct/union/enum types local to a function.
9527
9528 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
9529             Sebastian Pop  <sebastian.pop@amd.com>
9530
9531         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
9532         pbb_strip_mine_time_depth.  Changed the implementation so that
9533         transformation is expressed as a transformation on
9534         time (scatttering) dimensions.  Also, ensures that the 2d+1
9535         scheduling format is preserved.
9536         (pbb_strip_mine_profitable_p): Profitability is based on the
9537         iteration number of a given time (scattering) dimension,
9538         and not on a original loop depth dimension.
9539         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
9540         (pbb_do_strip_mine): Call psct_dynamic_dim.
9541         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
9542         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
9543         (pbb_nb_dynamic_scattering_transform): New.
9544         (psct_dynamic_dim): New.
9545
9546 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
9547
9548         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
9549         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
9550         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
9551         * graphite-interchange.c (build_linearized_memory_access): Same.
9552         (memory_stride_in_loop): Same.
9553
9554 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9555
9556         * graphite-dependences.c (pddr_original_scattering): New.
9557         (graphite_legal_transform_dr): Call pddr_original_scattering.
9558         (dot_deps_1): New.
9559         (dot_deps): New.
9560         * graphite-dependences.h (dot_deps): Declared.
9561         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
9562         (print_pdr): Print PDR_ID.
9563         * graphite-poly.h (struct poly_dr): Add field id.
9564         (PDR_ID): New.
9565         (pbb_index): New.
9566         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
9567
9568 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9569
9570         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
9571         not delete the original dependence relation.
9572
9573 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9574
9575         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
9576         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
9577         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
9578         (free_poly_ddr): New.
9579         (pddr_is_empty): New.
9580         (dependence_polyhedron_1): Now returns a poly_ddr_p.
9581         (dependence_polyhedron): Same.  Remove useless gcc_assert.
9582         Remove fprintfs.
9583         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
9584         (graphite_carried_dependence_level_k): Call pddr_is_empty.
9585         * graphite-dependences.h (enum poly_dependence_kind): New.
9586         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
9587         (PDRP_SOURCE): Renamed PDDR_SOURCE.
9588         (PDRP_SINK): Renamed PDDR_SINK.
9589         (PDRP_DDP): Renamed PDDR_DDP.
9590         (PDDR_KIND): New.
9591         (free_poly_ddr): Declared.
9592         * graphite-poly.c (new_scop): Use the new hash function names.
9593         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
9594         into original_pddrs.
9595         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
9596
9597 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9598
9599         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
9600         bounds with LT_EXPR to make niter analysis more precise on code
9601         generated by Graphite.
9602
9603 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9604
9605         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
9606         (graphite_legal_transform_bb): Same.
9607         (poly_drs_may_alias_p): Same.
9608
9609 2009-08-28  Richard Guenther  <rguenther@suse.de>
9610
9611         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
9612
9613 2009-08-28  Jan Beulich  <jbeulich@novell.com>
9614
9615         * config/i386/netware.c: Include langhooks.h.
9616         (i386_nlm_encode_section_info): Simplify.
9617         (netware_override_options): Delete.
9618         * config/i386/netware.h (netware_override_options): Delete
9619         declaration.
9620         (OVERRIDE_OPTIONS): Delete definition.
9621         (SUBTARGET_OVERRIDE_OPTIONS): Define.
9622         (ASM_COMMENT_START): Define.
9623         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
9624
9625 2009-08-28  Jan Beulich  <jbeulich@novell.com>
9626
9627         * configure.ac: For in-tree ld, do a plain version check to
9628         determine whether comdat groups are supported.
9629         * configure: Regenerate.
9630
9631 2009-08-28  Olivier Hainque  <hainque@adacore.com>
9632
9633         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
9634         always defined.  Reflect definition or absence of such for
9635         COLLECT_EXPORT_LIST.  Readability helper.
9636         (scanfilter): New enum, to help control what symbols
9637         are to be considered or ignored by scan_prog_file.
9638         (enum pass): Rename as "scanpass", moved together with scanfilter
9639         prior to scan_prog_file's prototype.
9640         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
9641         Group prototype with the scanpass/scanfilter definitions, factorize
9642         head comments for the several implementations at the prototype.
9643         (main): Reorganize the first pass link control to let AIX
9644         drag only the needed frame tables in executables.  Prevent
9645         frame tables collection during the scan aimed at static ctors.
9646         Pre-link and scan for frame tables later to compensate.
9647         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
9648         A C statement to issue assembly directives that create a reference
9649         to the given DWARF table identifier label from the current function
9650         section.
9651         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
9652         to differentiate first time section entry.  Only emit a .data
9653         tables start identifier label the first time around.
9654         (switch_to_frame_table_section): New function.  Helper for
9655         output_call_frame_info to switch possibly BACK into the eh_frame
9656         or the debug_frame section depending on FOR_EH.
9657         (output_call_frame_info): Use helper to first enter the proper
9658         frame section.
9659         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
9660         emit a link to the frame table start label from each function
9661         section.
9662         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
9663         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
9664         * config/rs6000/rs6000-protos.h: Declare it.
9665         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
9666
9667 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
9668
9669         * config/sh/sh.c (split_branches): Check the result of
9670         next_active_insn.
9671
9672 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
9673
9674         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
9675         using -pthread -fopenmp
9676
9677 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
9678
9679         * doc/service.texi (service directory): Update URL.
9680
9681 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
9682
9683         PR rtl-optimization/40861
9684         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
9685         extract word from a multi-word subreg for negative byte positions.
9686
9687 2009-08-27  Tristan Gingold  <gingold@adacore.com>
9688             Douglas B Rupp  <rupp@gnat.com>
9689
9690         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
9691         (SECTION_VMS_OVERLAY): Define.
9692         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
9693         attribute.
9694         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
9695         for common_object.
9696         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
9697         common_object declarations.
9698         (ia64_section_type_flags): Set section flag for common_object.
9699         * config/ia64/ia64-protos.h
9700         (ia64_vms_output_aligned_decl_common): Declare.
9701         (ia64_vms_elf_asm_named_section): Declare.
9702
9703 2009-08-27  Michael Matz  <matz@suse.de>
9704
9705         * expr.c (expand_expr_real_2): New function taking exploded
9706         unary or binary expression, split out from ...
9707         (expand_expr_real_1): ... here.  Move over all unary/binary
9708         switch parts to above function, in particular these codes:
9709         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
9710         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
9711         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
9712         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
9713         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
9714         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
9715         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
9716         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
9717         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
9718         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
9719         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
9720         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
9721         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
9722         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
9723         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
9724         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
9725         VEC_PACK_FIX_TRUNC_EXPR.
9726         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
9727         full expression.
9728
9729 2009-08-27  Richard Guenther  <rguenther@suse.de>
9730
9731         * gengtype.c (main): Handle uint64_t.
9732         * ipa-utils.c (get_base_var): Indent properly.
9733         * tree-ssa-live.c (debug_scope_block): New function.
9734         * tree-flow.h (debug_scope_block): Declare.
9735         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
9736         * basic-block.h (enum profile_status): Rename to
9737         enum profile_status_d.
9738         (x_profile_status): Adjust type.
9739
9740 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
9741
9742         PR debug/41170
9743         * dwarf2out.c (get_context_die): Declare this static function.
9744         (gen_type_die_with_usage): Make sure a DIE is a generated for
9745         the context of a typedef.
9746
9747 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
9748
9749         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
9750         switch.
9751
9752 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
9753
9754         * config/mips/mips-protos.h (mips_output_sync): Declare.
9755         (mips_sync_loop_insns): Likewise.
9756         (mips_output_sync_loop): Replace first two parameters with an rtx.
9757         * config/mips/mips.c (mips_multi_member): New structure.
9758         (mips_multi_members): New variable.
9759         (mips_multi_start): New function.
9760         (mips_multi_add): Likewise.
9761         (mips_multi_add_insn): Likewise.
9762         (mips_multi_add_label): Likewise.
9763         (mips_multi_last_index): Likewise.
9764         (mips_multi_copy_insn): Likewise.
9765         (mips_multi_set_operand): Likewise.
9766         (mips_multi_write): Likewise.
9767         (mips_print_operand_punctuation): Remove '%|' and '%-'.
9768         (mips_init_print_operand_punct): Update accordingly.
9769         (mips_start_ll_sc_sync_block): New function.
9770         (mips_end_ll_sc_sync_block): Likewise.
9771         (mips_output_sync): Likewise.
9772         (mips_sync_insn1_template): Likewise.
9773         (mips_sync_insn2_template): Likewise.
9774         (mips_get_sync_operand): Likewise.
9775         (mips_process_sync_loop): Likewise.
9776         (mips_output_sync_loop): Use mips_process_sync_loop.
9777         (mips_sync_loop_insns): New function.
9778         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
9779         (MIPS_COMPARE_AND_SWAP_12): Likewise.
9780         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
9781         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
9782         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
9783         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
9784         (MIPS_SYNC_OLD_OP_12): Likewise.
9785         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
9786         (MIPS_SYNC_NEW_OP_12): Likewise.
9787         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
9788         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
9789         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
9790         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
9791         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
9792         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
9793         * config/mips/mips.md (sync_mem): New attribute.
9794         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
9795         (sync_exclusive_mask, sync_required_oldval): Likewise.
9796         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
9797         (sync_release_barrier): Likewise.
9798         (length): Handle sync loops.
9799         (sync): Use mips_output_sync.
9800         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
9801         (sync_compare_and_swap<mode>): Set the new sync_* attributes
9802         and use mips_output_sync_loop.
9803         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
9804         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
9805         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
9806         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
9807         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
9808         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
9809         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
9810         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
9811         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
9812
9813 2009-08-26  Richard Guenther  <rguenther@suse.de>
9814
9815         PR middle-end/41163
9816         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
9817         the types to not match.
9818         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
9819         verification.
9820         * tree-ssa.c (useless_type_conversion_p): Conversions to
9821         pointers to unprototyped functions are useless.
9822
9823 2009-08-26  Richard Guenther  <rguenther@suse.de>
9824
9825         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
9826         whole-program condition, prepare to be called for non-globals.
9827         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
9828         params build a representative with known type and track its fields.
9829
9830 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
9831
9832         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
9833         clearing by a taken branch.
9834         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
9835         effectively after bbro pass.
9836         (sync_nand<mode>): Ditto.
9837         (sync_old_<fetchop_name><mode>): Ditto.
9838         (sync_old_nand<mode>): Ditto.
9839         (sync_new_<fetchop_name><mode>): Dito.
9840         (sync_new_nand<mode>): Ditto.
9841         (sync_compare_and_swap<mode>_1): Ditto.
9842         (*sync_compare_and_swap<mode>): Ditto.
9843         (sync_lock_test_and_set<mode>_1): Ditto.
9844         ("sync_lock_test_and_set<mode>): Ditto.
9845
9846 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
9847
9848         * hwint.h (HOST_LONG_FORMAT): New macro
9849         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
9850         Use HOST_PTR_PRINTF.
9851         * system.h (HOST_PTR_PRINTF): Resurrect old macro
9852         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
9853         (HOST_PTR_PRINTF): Document.
9854
9855 2009-08-25 Jan Hubicka  <jh@suse.cz>
9856
9857         * config/i386/bmmintrin.h: Replace by #error.
9858
9859         Revert:
9860         Michael Meissner  <michael.meissner@amd.com>
9861         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
9862         Tony Linthicum  <tony.linthicum@amd.com>
9863
9864         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
9865         (TARGET_ROUND): New macro for the round/ptest instructions which
9866         are shared between SSE4.1 and SSE5.
9867         (OPTION_MASK_ISA_ROUND): Ditto.
9868         (OPTION_ISA_ROUND): Ditto.
9869         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
9870         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
9871
9872         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
9873         (-mfused-madd): New switch to give users control over whether the
9874         compiler optimizes to use the multiply/add SSE5 instructions.
9875
9876         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
9877         (ix86_handle_option): Turn off 3dnow if -msse5.
9878         (override_options): Add SSE5 support.
9879         (print_operand): %Y prints comparison codes for SSE5 com/pcom
9880         instructions.
9881         (ix86_expand_sse_movcc): Add SSE5 support.
9882         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
9883         vector type to the next largest size.
9884         (ix86_expand_sse5_pack): New function to use pperm to pack a
9885         vector type to the next smallest size.
9886         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
9887         (IX86_BUILTIN_FMADDSD): Ditto.
9888         (IX86_BUILTIN_FMADDPS): Ditto.
9889         (IX86_BUILTIN_FMADDPD): Ditto.
9890         (IX86_BUILTIN_FMSUBSS): Ditto.
9891         (IX86_BUILTIN_FMSUBSD): Ditto.
9892         (IX86_BUILTIN_FMSUBPS): Ditto.
9893         (IX86_BUILTIN_FMSUBPD): Ditto.
9894         (IX86_BUILTIN_FNMADDSS): Ditto.
9895         (IX86_BUILTIN_FNMADDSD): Ditto.
9896         (IX86_BUILTIN_FNMADDPS): Ditto.
9897         (IX86_BUILTIN_FNMADDPD): Ditto.
9898         (IX86_BUILTIN_FNMSUBSS): Ditto.
9899         (IX86_BUILTIN_FNMSUBSD): Ditto.
9900         (IX86_BUILTIN_FNMSUBPS): Ditto.
9901         (IX86_BUILTIN_FNMSUBPD): Ditto.
9902         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
9903         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
9904         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
9905         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
9906         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
9907         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
9908         (IX86_BUILTIN_PPERM): Ditto.
9909         (IX86_BUILTIN_PERMPS): Ditto.
9910         (IX86_BUILTIN_PERMPD): Ditto.
9911         (IX86_BUILTIN_PMACSSWW): Ditto.
9912         (IX86_BUILTIN_PMACSWW): Ditto.
9913         (IX86_BUILTIN_PMACSSWD): Ditto.
9914         (IX86_BUILTIN_PMACSWD): Ditto.
9915         (IX86_BUILTIN_PMACSSDD): Ditto.
9916         (IX86_BUILTIN_PMACSDD): Ditto.
9917         (IX86_BUILTIN_PMACSSDQL): Ditto.
9918         (IX86_BUILTIN_PMACSSDQH): Ditto.
9919         (IX86_BUILTIN_PMACSDQL): Ditto.
9920         (IX86_BUILTIN_PMACSDQH): Ditto.
9921         (IX86_BUILTIN_PMADCSSWD): Ditto.
9922         (IX86_BUILTIN_PMADCSWD): Ditto.
9923         (IX86_BUILTIN_PHADDBW): Ditto.
9924         (IX86_BUILTIN_PHADDBD): Ditto.
9925         (IX86_BUILTIN_PHADDBQ): Ditto.
9926         (IX86_BUILTIN_PHADDWD): Ditto.
9927         (IX86_BUILTIN_PHADDWQ): Ditto.
9928         (IX86_BUILTIN_PHADDDQ): Ditto.
9929         (IX86_BUILTIN_PHADDUBW): Ditto.
9930         (IX86_BUILTIN_PHADDUBD): Ditto.
9931         (IX86_BUILTIN_PHADDUBQ): Ditto.
9932         (IX86_BUILTIN_PHADDUWD): Ditto.
9933         (IX86_BUILTIN_PHADDUWQ): Ditto.
9934         (IX86_BUILTIN_PHADDUDQ): Ditto.
9935         (IX86_BUILTIN_PHSUBBW): Ditto.
9936         (IX86_BUILTIN_PHSUBWD): Ditto.
9937         (IX86_BUILTIN_PHSUBDQ): Ditto.
9938         (IX86_BUILTIN_PROTB): Ditto.
9939         (IX86_BUILTIN_PROTW): Ditto.
9940         (IX86_BUILTIN_PROTD): Ditto.
9941         (IX86_BUILTIN_PROTQ): Ditto.
9942         (IX86_BUILTIN_PROTB_IMM): Ditto.
9943         (IX86_BUILTIN_PROTW_IMM): Ditto.
9944         (IX86_BUILTIN_PROTD_IMM): Ditto.
9945         (IX86_BUILTIN_PROTQ_IMM): Ditto.
9946         (IX86_BUILTIN_PSHLB): Ditto.
9947         (IX86_BUILTIN_PSHLW): Ditto.
9948         (IX86_BUILTIN_PSHLD): Ditto.
9949         (IX86_BUILTIN_PSHLQ): Ditto.
9950         (IX86_BUILTIN_PSHAB): Ditto.
9951         (IX86_BUILTIN_PSHAW): Ditto.
9952         (IX86_BUILTIN_PSHAD): Ditto.
9953         (IX86_BUILTIN_PSHAQ): Ditto.
9954         (IX86_BUILTIN_FRCZSS): Ditto.
9955         (IX86_BUILTIN_FRCZSD): Ditto.
9956         (IX86_BUILTIN_FRCZPS): Ditto.
9957         (IX86_BUILTIN_FRCZPD): Ditto.
9958         (IX86_BUILTIN_CVTPH2PS): Ditto.
9959         (IX86_BUILTIN_CVTPS2PH): Ditto.
9960         (IX86_BUILTIN_COMEQSS): Ditto.
9961         (IX86_BUILTIN_COMNESS): Ditto.
9962         (IX86_BUILTIN_COMLTSS): Ditto.
9963         (IX86_BUILTIN_COMLESS): Ditto.
9964         (IX86_BUILTIN_COMGTSS): Ditto.
9965         (IX86_BUILTIN_COMGESS): Ditto.
9966         (IX86_BUILTIN_COMUEQSS): Ditto.
9967         (IX86_BUILTIN_COMUNESS): Ditto.
9968         (IX86_BUILTIN_COMULTSS): Ditto.
9969         (IX86_BUILTIN_COMULESS): Ditto.
9970         (IX86_BUILTIN_COMUGTSS): Ditto.
9971         (IX86_BUILTIN_COMUGESS): Ditto.
9972         (IX86_BUILTIN_COMORDSS): Ditto.
9973         (IX86_BUILTIN_COMUNORDSS): Ditto.
9974         (IX86_BUILTIN_COMFALSESS): Ditto.
9975         (IX86_BUILTIN_COMTRUESS): Ditto.
9976         (IX86_BUILTIN_COMEQSD): Ditto.
9977         (IX86_BUILTIN_COMNESD): Ditto.
9978         (IX86_BUILTIN_COMLTSD): Ditto.
9979         (IX86_BUILTIN_COMLESD): Ditto.
9980         (IX86_BUILTIN_COMGTSD): Ditto.
9981         (IX86_BUILTIN_COMGESD): Ditto.
9982         (IX86_BUILTIN_COMUEQSD): Ditto.
9983         (IX86_BUILTIN_COMUNESD): Ditto.
9984         (IX86_BUILTIN_COMULTSD): Ditto.
9985         (IX86_BUILTIN_COMULESD): Ditto.
9986         (IX86_BUILTIN_COMUGTSD): Ditto.
9987         (IX86_BUILTIN_COMUGESD): Ditto.
9988         (IX86_BUILTIN_COMORDSD): Ditto.
9989         (IX86_BUILTIN_COMUNORDSD): Ditto.
9990         (IX86_BUILTIN_COMFALSESD): Ditto.
9991         (IX86_BUILTIN_COMTRUESD): Ditto.
9992         (IX86_BUILTIN_COMEQPS): Ditto.
9993         (IX86_BUILTIN_COMNEPS): Ditto.
9994         (IX86_BUILTIN_COMLTPS): Ditto.
9995         (IX86_BUILTIN_COMLEPS): Ditto.
9996         (IX86_BUILTIN_COMGTPS): Ditto.
9997         (IX86_BUILTIN_COMGEPS): Ditto.
9998         (IX86_BUILTIN_COMUEQPS): Ditto.
9999         (IX86_BUILTIN_COMUNEPS): Ditto.
10000         (IX86_BUILTIN_COMULTPS): Ditto.
10001         (IX86_BUILTIN_COMULEPS): Ditto.
10002         (IX86_BUILTIN_COMUGTPS): Ditto.
10003         (IX86_BUILTIN_COMUGEPS): Ditto.
10004         (IX86_BUILTIN_COMORDPS): Ditto.
10005         (IX86_BUILTIN_COMUNORDPS): Ditto.
10006         (IX86_BUILTIN_COMFALSEPS): Ditto.
10007         (IX86_BUILTIN_COMTRUEPS): Ditto.
10008         (IX86_BUILTIN_COMEQPD): Ditto.
10009         (IX86_BUILTIN_COMNEPD): Ditto.
10010         (IX86_BUILTIN_COMLTPD): Ditto.
10011         (IX86_BUILTIN_COMLEPD): Ditto.
10012         (IX86_BUILTIN_COMGTPD): Ditto.
10013         (IX86_BUILTIN_COMGEPD): Ditto.
10014         (IX86_BUILTIN_COMUEQPD): Ditto.
10015         (IX86_BUILTIN_COMUNEPD): Ditto.
10016         (IX86_BUILTIN_COMULTPD): Ditto.
10017         (IX86_BUILTIN_COMULEPD): Ditto.
10018         (IX86_BUILTIN_COMUGTPD): Ditto.
10019         (IX86_BUILTIN_COMUGEPD): Ditto.
10020         (IX86_BUILTIN_COMORDPD): Ditto.
10021         (IX86_BUILTIN_COMUNORDPD): Ditto.
10022         (IX86_BUILTIN_COMFALSEPD): Ditto.
10023         (IX86_BUILTIN_COMTRUEPD): Ditto.
10024         (IX86_BUILTIN_PCOMEQUB): Ditto.
10025         (IX86_BUILTIN_PCOMNEUB): Ditto.
10026         (IX86_BUILTIN_PCOMLTUB): Ditto.
10027         (IX86_BUILTIN_PCOMLEUB): Ditto.
10028         (IX86_BUILTIN_PCOMGTUB): Ditto.
10029         (IX86_BUILTIN_PCOMGEUB): Ditto.
10030         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
10031         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
10032         (IX86_BUILTIN_PCOMEQUW): Ditto.
10033         (IX86_BUILTIN_PCOMNEUW): Ditto.
10034         (IX86_BUILTIN_PCOMLTUW): Ditto.
10035         (IX86_BUILTIN_PCOMLEUW): Ditto.
10036         (IX86_BUILTIN_PCOMGTUW): Ditto.
10037         (IX86_BUILTIN_PCOMGEUW): Ditto.
10038         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
10039         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
10040         (IX86_BUILTIN_PCOMEQUD): Ditto.
10041         (IX86_BUILTIN_PCOMNEUD): Ditto.
10042         (IX86_BUILTIN_PCOMLTUD): Ditto.
10043         (IX86_BUILTIN_PCOMLEUD): Ditto.
10044         (IX86_BUILTIN_PCOMGTUD): Ditto.
10045         (IX86_BUILTIN_PCOMGEUD): Ditto.
10046         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
10047         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
10048         (IX86_BUILTIN_PCOMEQUQ): Ditto.
10049         (IX86_BUILTIN_PCOMNEUQ): Ditto.
10050         (IX86_BUILTIN_PCOMLTUQ): Ditto.
10051         (IX86_BUILTIN_PCOMLEUQ): Ditto.
10052         (IX86_BUILTIN_PCOMGTUQ): Ditto.
10053         (IX86_BUILTIN_PCOMGEUQ): Ditto.
10054         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
10055         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
10056         (IX86_BUILTIN_PCOMEQB): Ditto.
10057         (IX86_BUILTIN_PCOMNEB): Ditto.
10058         (IX86_BUILTIN_PCOMLTB): Ditto.
10059         (IX86_BUILTIN_PCOMLEB): Ditto.
10060         (IX86_BUILTIN_PCOMGTB): Ditto.
10061         (IX86_BUILTIN_PCOMGEB): Ditto.
10062         (IX86_BUILTIN_PCOMFALSEB): Ditto.
10063         (IX86_BUILTIN_PCOMTRUEB): Ditto.
10064         (IX86_BUILTIN_PCOMEQW): Ditto.
10065         (IX86_BUILTIN_PCOMNEW): Ditto.
10066         (IX86_BUILTIN_PCOMLTW): Ditto.
10067         (IX86_BUILTIN_PCOMLEW): Ditto.
10068         (IX86_BUILTIN_PCOMGTW): Ditto.
10069         (IX86_BUILTIN_PCOMGEW): Ditto.
10070         (IX86_BUILTIN_PCOMFALSEW): Ditto.
10071         (IX86_BUILTIN_PCOMTRUEW): Ditto.
10072         (IX86_BUILTIN_PCOMEQD): Ditto.
10073         (IX86_BUILTIN_PCOMNED): Ditto.
10074         (IX86_BUILTIN_PCOMLTD): Ditto.
10075         (IX86_BUILTIN_PCOMLED): Ditto.
10076         (IX86_BUILTIN_PCOMGTD): Ditto.
10077         (IX86_BUILTIN_PCOMGED): Ditto.
10078         (IX86_BUILTIN_PCOMFALSED): Ditto.
10079         (IX86_BUILTIN_PCOMTRUED): Ditto.
10080         (IX86_BUILTIN_PCOMEQQ): Ditto.
10081         (IX86_BUILTIN_PCOMNEQ): Ditto.
10082         (IX86_BUILTIN_PCOMLTQ): Ditto.
10083         (IX86_BUILTIN_PCOMLEQ): Ditto.
10084         (IX86_BUILTIN_PCOMGTQ): Ditto.
10085         (IX86_BUILTIN_PCOMGEQ): Ditto.
10086         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
10087         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
10088         (enum multi_arg_type): New enum for describing the various SSE5
10089         intrinsic argument types.
10090         (bdesc_multi_arg): New table for SSE5 intrinsics.
10091         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
10092         (ix86_expand_multi_arg_builtin): New function for creating SSE5
10093         intrinsics.
10094         (ix86_expand_builtin): Add SSE5 intrinsic support.
10095         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
10096         operand instructions.
10097         (ix86_expand_sse5_multiple_memory): New function to split the
10098         second memory reference from SSE5 instructions.
10099         (type_has_variadic_args_p): Delete in favor of stdarg_p.
10100         (ix86_return_pops_args): Use stdarg_p to determine if the function
10101         has variable arguments.
10102         (ix86_setup_incoming_varargs): Ditto.
10103         (x86_this_parameter): Ditto.
10104
10105         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
10106         declaration.
10107         (ix86_expand_sse5_pack): Ditto.
10108         (ix86_sse5_valid_op_p): Ditto.
10109         (ix86_expand_sse5_multiple_memory): Ditto.
10110
10111         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
10112         constant for SSE5 support.
10113         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
10114         (UNSPEC_SSE5_TRUEFALSE): Ditto.
10115         (UNSPEC_SSE5_PERMUTE): Ditto.
10116         (UNSPEC_SSE5_ASHIFT): Ditto.
10117         (UNSPEC_SSE5_LSHIFT): Ditto.
10118         (UNSPEC_FRCZ): Ditto.
10119         (UNSPEC_CVTPH2PS): Ditto.
10120         (UNSPEC_CVTPS2PH): Ditto.
10121         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
10122         (PCOM_TRUE): Ditto.
10123         (COM_FALSE_S): Ditto.
10124         (COM_FALSE_P): Ditto.
10125         (COM_TRUE_S): Ditto.
10126         (COM_TRUE_P): Ditto.
10127         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
10128         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
10129         types.
10130         (memory attribute): Ditto.
10131         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
10132         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
10133         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
10134         (floor<mode>2): Ditto.
10135         (ceil<mode>2): Ditto.
10136         (btrunc<mode>2): Ditto.
10137         (nearbyintdf2): Ditto.
10138         (nearbyintsf2): Ditto.
10139         (sse_setccsf): Disable if SSE5.
10140         (sse_setccdf): Ditto.
10141         (sse5_setcc<mode>): New support for SSE5 conditional move.
10142         (sse5_pcmov_<mode>): Ditto.
10143
10144         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
10145         (SSEMODEF4): Ditto.
10146         (SSEMODEF2P): Ditto.
10147         (ssemodesuffixf4): New mode attribute for SSE5.
10148         (ssemodesuffixf2s): Ditto.
10149         (ssemodesuffixf2c): Ditto.
10150         (sserotatemax): Ditto.
10151         (ssescalarmode): Ditto.
10152         (sse_maskcmpv4sf3): Disable if SSE5.
10153         (sse_maskcmpv2df3): Ditto.
10154         (sse_vmmaskcmpv4sf3): Ditto.
10155         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
10156         (sse5_vmfmadd<mode>4): Ditto.
10157         (sse5_fmsub<mode>4): Ditto.
10158         (sse5_vmfmsub<mode>4): Ditto.
10159         (sse5_fnmadd<mode>4): Ditto.
10160         (sse5_vmfnmadd<mode>4): Ditto.
10161         (sse5_fnmsub<mode>4): Ditto.
10162         (sse5_vmfnmsub<mode>4): Ditto.
10163         (sse5i_fmadd<mode>4): Ditto.
10164         (sse5i_fmsub<mode>4): Ditto.
10165         (sse5i_fnmadd<mode>4): Ditto.
10166         (sse5i_fnmsub<mode>4): Ditto.
10167         (sse5i_vmfmadd<mode>4): Ditto.
10168         (sse5i_vmfmsub<mode>4): Ditto.
10169         (sse5i_vmfnmadd<mode>4): Ditto.
10170         (sse5i_vmfnmsub<mode>4): Ditto.
10171         (mulv16qi3): Add SSE5 support.
10172         (mulv4si3): Ditto.
10173         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
10174         (sse2_mulv4si3): Disable if SSE5.
10175         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
10176         (sse4_1_roundps): Ditto.
10177         (sse4_1_roundsd): Ditto.
10178         (sse4_1_roundss): Ditto.
10179         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
10180         be generated.
10181         (sse_maskcmpsf3): Ditto.
10182         (sse_vmmaskcmpv4sf3): Ditto.
10183         (sse2_maskcmpv2df3): Ditto.
10184         (sse2_maskcmpdf3): Ditto.
10185         (sse2_vmmaskcmpv2df3): Ditto.
10186         (sse2_eq<mode>3): Ditto.
10187         (sse2_gt<mode>3): Ditto.
10188         (sse5_pcmov_<mode>): Add SSE5 support.
10189         (vec_unpacku_hi_v16qi): Ditto.
10190         (vec_unpacks_hi_v16qi): Ditto.
10191         (vec_unpacku_lo_v16qi): Ditto.
10192         (vec_unpacks_lo_v16qi): Ditto.
10193         (vec_unpacku_hi_v8hi): Ditto.
10194         (vec_unpacks_hi_v8hi): Ditto.
10195         (vec_unpacku_lo_v8hi): Ditto.
10196         (vec_unpacks_lo_v8hi): Ditto.
10197         (vec_unpacku_hi_v4si): Ditto.
10198         (vec_unpacks_hi_v4si): Ditto.
10199         (vec_unpacku_lo_v4si): Ditto.
10200         (vec_unpacks_lo_v4si): Ditto.
10201         (sse5_pmacsww): New SSE5 intrinsic insn.
10202         (sse5_pmacssww): Ditto.
10203         (sse5_pmacsdd): Ditto.
10204         (sse5_pmacssdd): Ditto.
10205         (sse5_pmacssdql): Ditto.
10206         (sse5_pmacssdqh): Ditto.
10207         (sse5_pmacsdqh): Ditto.
10208         (sse5_pmacsswd): Ditto.
10209         (sse5_pmacswd): Ditto.
10210         (sse5_pmadcsswd): Ditto.
10211         (sse5_pmadcswd): Ditto.
10212         (sse5_pcmov_<move>): Conditional move support on SSE5.
10213         (sse5_phaddbw): New SSE5 intrinsic insn.
10214         (sse5_phaddbd): Ditto.
10215         (sse5_phaddbq): Ditto.
10216         (sse5_phaddwd): Ditto.
10217         (sse5_phaddwq): Ditto.
10218         (sse5_phadddq): Ditto.
10219         (sse5_phaddubw): Ditto.
10220         (sse5_phaddubd): Ditto.
10221         (sse5_phaddubq): Ditto.
10222         (sse5_phadduwd): Ditto.
10223         (sse5_phadduwq): Ditto.
10224         (sse5_phaddudq): Ditto.
10225         (sse5_phsubbw): Ditto.
10226         (sse5_phsubwd): Ditto.
10227         (sse5_phsubdq): Ditto.
10228         (sse5_pperm): Ditto.
10229         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
10230         (sse5_pperm_zero_v16qi_v8hi): Ditto.
10231         (sse5_pperm_sign_v8hi_v4si): Ditto.
10232         (sse5_pperm_zero_v8hi_v4si): Ditto.
10233         (sse5_pperm_sign_v4si_v2di): Ditto.
10234         (sse5_pperm_sign_v4si_v2di): Ditto.
10235         (sse5_pperm_pack_v2di_v4si): Ditto.
10236         (sse5_pperm_pack_v4si_v8hi): Ditto.
10237         (sse5_pperm_pack_v8hi_v16qi): Ditto.
10238         (sse5_perm<mode>): New SSE5 intrinsic insn.
10239         (rotl<mode>3): Ditto.
10240         (sse5_rotl<mode>3): Ditto.
10241         (sse5_ashl<mode>3): Ditto.
10242         (sse5_lshl<mode>3): Ditto.
10243         (sse5_frcz<mode>2): Ditto.
10244         (sse5s_frcz<mode>2): Ditto.
10245         (sse5_cvtph2ps): Ditto.
10246         (sse5_cvtps2ph): Ditto.
10247         (sse5_vmmaskcmp<mode>3): Ditto.
10248         (sse5_com_tf<mode>3): Ditto.
10249         (sse5_maskcmp<mode>3): Ditto.
10250         (sse5_maskcmp_uns<mode>3): Ditto.
10251         (sse5_maskcmp_uns2<mode>3): Ditto.
10252         (sse5_pcom_tf<mode>3): Ditto.
10253
10254         * config/i386/predicates.md (sse5_comparison_float_operator):
10255         New predicate to match the comparison operators supported by
10256         the SSE5 com instruction.
10257         (ix86_comparison_int_operator): New predicate to match just the
10258         signed int comparisons.
10259         (ix86_comparison_uns_operator): New predicate to match just the
10260         unsigned int comparisons.
10261
10262         * doc/invoke.texi (-msse5): Add documentation.
10263         (-mfused-madd): Ditto.
10264
10265         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
10266
10267         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
10268         mmintrin-common.h.
10269         (x86_64-*-*): Ditto.
10270
10271         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
10272
10273         * config/i386/bmmintrin.h: New file, provide common x86 compiler
10274         intrinisics for SSE5.
10275
10276         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
10277         mmintrin-common.h.
10278
10279         * config/i386/mmintrin-common.h: New file, to contain common
10280         instructions between SSE4.1 and SSE5.
10281
10282         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
10283         FOREACH_FUNCTION_ARGS to iterate over the argument list.
10284         (gen_regparm_prefix): Ditto.
10285
10286         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
10287         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
10288         prototype_p to determine if a function is prototyped.
10289
10290 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
10291
10292         * c-common.c (c_common_reswords) add the alignof keyword,
10293         with same RID as __alignof and __alignof__
10294
10295 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
10296
10297         * hooks.h (hook_bool_const_int_const_int_true): Declare.
10298         * hooks.c (hook_bool_const_int_const_int_true): New function.
10299         * target.h (struct gcc_target): Add can_eliminate field.
10300         * target-def.h (TARGET_CAN_ELIMINATE): Define.
10301         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
10302         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
10303         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
10304         (elim_table): Revise comment.
10305         * system.h (CAN_ELIMINATE): Poison.
10306         * defaults.h (CAN_ELIMINATE): Remove.
10307         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
10308
10309         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
10310         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
10311         Define macro.
10312         (alpha_vms_can_eliminate): Declare as static, change return type to
10313         bool.
10314         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
10315
10316         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
10317         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
10318         (arm_can_eliminate): New function.
10319
10320         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
10321         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
10322         (avr_can_eliminate): Declare as static.
10323         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
10324
10325         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
10326         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
10327         (bfin_can_eliminate): New function.
10328
10329         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
10330         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
10331         (crx_can_eliminate): New function.
10332
10333         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
10334         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
10335         (fr30_can_eliminate): New function.
10336
10337         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
10338         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
10339         (frv_can_eliminate): New function.
10340
10341         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
10342         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
10343         (h8300_can_eliminate): New function.
10344
10345         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
10346         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
10347         (i386_can_eliminate): Declare as static, change return type to bool.
10348         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
10349
10350         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
10351         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
10352         (ia64_can_eliminate): New function.
10353
10354         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
10355         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
10356         (iq2000_can_eliminate): New function.
10357
10358         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
10359         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
10360         (m32r_can_eliminate): New function.
10361
10362         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
10363         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
10364         (m68hc11_can_eliminate): New function.
10365
10366         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
10367         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
10368         (m68k_can_eliminate): New function.
10369
10370         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
10371         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
10372         (mep_can_eliminate): New function.
10373
10374         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
10375         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
10376         (mips_can_eliminate): New function.
10377
10378         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
10379         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
10380         (rs6000_can_eliminate): New function.
10381
10382         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
10383         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
10384         (s390_can_eliminate): Declare as static.
10385         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
10386
10387         * config/score/score.h (CAN_ELIMINATE): Remove macro.
10388         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
10389         (score_can_eliminate): New function.
10390
10391         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
10392         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
10393         (sparc_can_eliminate): Declare as static.
10394         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
10395
10396         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
10397         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
10398         (xstormy16_can_eliminate): New function.
10399
10400         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
10401         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
10402         (v850_can_eliminate): New function.
10403
10404 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
10405
10406         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
10407         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
10408         (*movdfcc_ext[1234]): Disable for IEEE mode.
10409
10410 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
10411
10412         * gimplify.c (prepare_gimple_addressable): New static function.
10413         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
10414         it addressable.
10415         (gimplify_addr_expr): Invoke it similarly on the operand instead of
10416         manually fiddling with it.
10417
10418 2009-08-25  Michael Matz  <matz@suse.de>
10419
10420         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
10421         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
10422         full expression.
10423         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
10424         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
10425         (do_jump): Split out code for simple binary comparisons into ...
10426         (do_jump_1): ... this, taking the individual operands and code.
10427         Change callers to helper function above accordingly.
10428         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
10429         comparisons.
10430
10431 2009-08-25  Michael Matz  <matz@suse.de>
10432
10433         * expr.h (struct separate_ops, sepops): New type for passing
10434         around an exploded simple expression.
10435         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
10436         Use this structure instead of expression tree.
10437         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
10438         expression, only its type.
10439         (expand_vec_cond_expr): Take type and individual operands instead
10440         of full expression.
10441         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
10442         expand_vec_shift_expr): Change prototype accordingly.
10443         * tree-vect-stmts.c (vectorizable_condition): Change call of
10444         expand_vec_cond_expr_p to pass only type.
10445         * expr.c (do_store_flags): Change prototype and implementation
10446         to take an exploded expression.
10447         (expand_expr_real_1): New local ops initialized with details
10448         of the full expression.  Use it instead of full
10449         expression in calls to do_store_flags, expand_vec_cond_expr,
10450         expand_widen_pattern_expr and expand_vec_shift_expr.
10451
10452 2009-08-25  Michael Matz  <matz@suse.de>
10453
10454         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
10455         treeop2 initialized with first three operands of the full expression.
10456         Substitute all TREE_OPERAND (exp, [012]) calls with them.
10457
10458 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
10459
10460         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
10461         (__gthread_objc_condition_allocate): Mark arguments as unused.
10462         (__gthread_objc_condition_deallocate): Likewise.
10463         (__gthread_objc_condition_wait): Likewise.
10464         (__gthread_objc_condition_broadcast): Likewise.
10465         (__gthread_objc_condition_signal): Likewise.
10466         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
10467         (__gthread_objc_thread_id): Likewise.
10468
10469 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
10470
10471         PR middle-end/41149
10472         * tree-pretty-print.c (print_call_name): Print the correct call name
10473         for procedure pointer components.
10474
10475 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
10476
10477         * config/ia64/ia64.c (ia64_promote_function_mode): Call
10478         default_promote_function_mode when not VMS.
10479
10480 2009-08-24  Olivier Hainque  <hainque@adacore.com>
10481
10482         * convert.c (convert_to_integer): Don't assume an input pointer is
10483         POINTER_SIZE wide.  Fetch from the type instead.
10484
10485 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10486
10487         * configure.ac (AC_PREREQ): Bump to 2.64.
10488
10489 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
10490
10491         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
10492         (process_command): Don't search standard_exec_prefix_1 and
10493         standard_exec_prefix_2.
10494
10495 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10496
10497         * config/arm/arm.c (output_return_instruction): Handle for
10498         unified syntax.
10499
10500 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10501
10502         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
10503
10504 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10505
10506         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
10507         (*arm_movdf_vfp): Likewise.
10508
10509 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10510
10511         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
10512         (vashr<mode>3): Rename from ashr<mode>3.
10513         (vlshr<mode>3): Rename from lshr<mode>3.
10514
10515 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
10516
10517         PR/40786
10518         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
10519         (check_format_info_main): Use scalar_identify_flag.
10520         (check_format_types): Check for scalar size identity if
10521         scalar_identify_flag is set.
10522         (printf_length_specs): Extend by new field.
10523         (asm_fprintf_length_specs): Likewise.
10524         (gcc_diag_length_specs): Likewise.
10525         (scanf_length_specs): Likewise.
10526         (strfmon_length_specs): Likewise.
10527         (gcc_gfc_length_specs): Likewise.
10528         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
10529         (ms_printf_flag_specs): Likewise.
10530         * c-format.h (format_length_info): Add new member scalar_identity_flag.
10531
10532 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
10533
10534         PR target/40718
10535         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
10536         (*call_value_pop_1): Ditto.
10537         (*sibcall_pop_1): New insn pattern.
10538         (*sibcall_value_pop_1): Ditto.
10539
10540 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
10541
10542         PR target/41081
10543         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
10544         ashrsi3_64): New.
10545
10546 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
10547
10548         PR target/41081
10549         * fwprop.c (try_fwprop_subst): Allow multiple sets.
10550         (get_reg_use_in): New function.
10551         (forward_propagate_subreg): Propagate through subreg of zero_extend
10552         or sign_extend.
10553
10554 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
10555
10556         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
10557         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
10558
10559 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10560
10561         * configure.ac: Remove --with-datarootdir, --with-docdir,
10562         --with-htmldir switches.  No need to call AC_SUBST for
10563         datarootdir, docdir, htmldir any more.
10564         * configure: Regenerate.
10565         * doc/install.texi (Configuration): Document --datarootdir,
10566         --docdir, --htmldir, --pdfdir; update documentation for
10567         --infodir, --mandir.
10568         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
10569         M4 to 1.4.6.
10570
10571         * aclocal.m4: Regenerate.
10572         * config.in: Regenerate.
10573         * configure: Regenerate.
10574
10575 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
10576             Olivier Hainque  <hainque@adacore.com>
10577
10578         * config/ia64/ia64.c: Include libfuncs.h.
10579         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
10580         (ia64_expand_call): Use reg 25 on VMS.
10581         (ia64_initialize_trampoline): Fix for VMS ABI.
10582         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
10583         (ia64_function_arg): Initialize reg 25 on VMS.
10584         Fix OpenVMS ABI issues for varargs.
10585         For OpenVMS, emit the Argument Information register set in the
10586         incoming/sibcall case as well.
10587         (ia64_arg_type): New function.
10588         (ia64_function_arg_advance): Keep track of cum->words.
10589         Fix OpenVMS ABI issues for varargs.
10590         (ia64_function_value): On VMS, promote mode of non-aggregate types.
10591         (ia64_override_options): Set flag_no_common on VMS.
10592         (ia64_init_builtins): Disable FWRITE builtin.
10593         (ia64_asm_output_external): Call DO_CRTL_NAMES.
10594         (ia64_vms_init_libfuncs): Add decc$ routines.
10595         (ia64_vms_valid_pointer_mode): New function.
10596         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
10597         (ia64_promote_function_mode): New function
10598         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
10599         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
10600         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
10601         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
10602         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
10603         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
10604         Suppress trailing '#' if VALUE is numeric.
10605         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
10606         ia64_promote_function_mode.
10607         (TARGET_VALID_POINTER_MODE): Define.
10608
10609 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
10610
10611         PR target/40671
10612         * config/rs6000/rs6000.c (rs6000_override_options): Use
10613         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
10614
10615         PR target/41145
10616         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
10617         reporting of vector + decimal/boolean/complex error.
10618
10619 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
10620
10621         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
10622         __vector double TYPE_DECL.
10623
10624 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
10625
10626         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
10627         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
10628         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
10629         to pointer to enum machine_mode.  Update all callers as needed.
10630
10631 2009-08-21  Uros Bizjak  <ubizjak@gmail.com>
10632
10633         * config/alpha/alpha.md (exception_receiver): Emit alternative
10634         GP load sequence if flag_reorder_blocks_and_partition is set.
10635         (*exception_receiver_2): Also enable when
10636         flag_reorder_blocks_and_partition is set.
10637
10638 2009-08-20  Matt Rice  <ratmice@gmail.com>
10639             Diego Novillo  <dnovillo@google.com>
10640
10641         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
10642         tree-ssa-sccvn.h.
10643
10644 2009-08-20  Richard Guenther  <rguenther@suse.de>
10645
10646         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
10647         * c-tree.h (c_dup_lang_specific_decl): Remove.
10648         (struct lang_decl, struct lang_type): Move definitions ...
10649         * c-lang.h: ... here.  New file.
10650         * c-decl.c: Include c-lang.h.
10651         (c_dup_lang_specific_decl): Remove.
10652         * c-typeck.c: Include c-lang.h.
10653         * Makefile.in (c-decl.o): Add c-lang.h dependency.
10654         (c-typeck.o): Likewise.
10655         * c-config-lang.in (gtfiles): Add c-lang.h.
10656         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
10657         like c-tree.h.
10658
10659 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
10660
10661         * config/alpha/alpha.c (alpha_end_function): Do not clear
10662         crtl->emit structure and free insn locators if cfun->is_thunk is true,
10663         this is now handled in generic code.
10664
10665 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
10666
10667         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
10668         (s390_z10_fix_long_loop_prediction): New function.
10669         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
10670         (s390_reorg): Walk over the INSNs and invoke
10671         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
10672
10673 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
10674
10675         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
10676         "*brx_64bit", "*brx_31bit"): New patterns.
10677         * config/s390/s390.c ('E'): New output modifier.
10678
10679 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10680             Richard Earnshaw  <richard.earnshaw@arm.com>
10681
10682         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
10683         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
10684
10685 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10686
10687         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
10688         patterns.
10689         * pa.c (emit_move_sequence): Check if address of operand1 is valid
10690         for mode mode of operand0 when doing secondary reload for SAR.
10691
10692 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
10693
10694         PR middle-end/41123
10695         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
10696         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
10697
10698 2009-08-19  Jason Merrill  <jason@redhat.com>
10699
10700         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
10701         supported template depth in C++0x.
10702
10703 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
10704
10705         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
10706         free_after_compilation.
10707         * config/score/score7.c (score7_output_mi_thunk): Likewise.
10708         * config/score/score3.c (score3_output_mi_thunk): Likewise.
10709         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
10710         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
10711         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
10712         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
10713         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
10714
10715 2009-08-19  Ian Lance Taylor  <iant@google.com>
10716
10717         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
10718         of (plus (mult (neg B) C) A).
10719
10720 2009-08-18  Michael Matz  <matz@suse.de>
10721
10722         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
10723         instead of comparing TYPE_MAIN_VARIANT for equality.
10724         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
10725         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
10726         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
10727         * gimplify.c (goa_lhs_expr_p): Ditto and use
10728         STRIP_USELESS_TYPE_CONVERSION.
10729
10730 2009-08-18  Michael Matz  <matz@suse.de>
10731
10732         * tree-ssa-structalias.c (create_variable_info_for): Also mark
10733         first field in a struct.
10734         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
10735
10736 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
10737
10738         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
10739         locators before emit_insn is called.  Remove assert that
10740         cfun->is_thunk.
10741         (alpha_end_function): Clear crtl->emit structure and free insn
10742         locators if cfun->is_thunk is true.
10743
10744 2009-08-18  Jason Merrill  <jason@redhat.com>
10745
10746         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
10747         type if available.
10748         * configure.ac: Test for it.
10749         * configure, config.in: Regenerate.
10750         * doc/install.texi: Document --enable-gnu-unique-object.
10751
10752 2009-08-18  Richard Guenther  <rguenther@suse.de>
10753
10754         PR middle-end/41094
10755         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
10756         pow(x,y*z) only if x is nonnegative.
10757
10758 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
10759
10760         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
10761         on jumps.
10762
10763         PR target/40971
10764         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
10765         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
10766
10767 2009-08-17  DJ Delorie  <dj@redhat.com>
10768
10769         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
10770         * config/m32c/prologue.md (epilogue_freit): New.
10771         (fset_b): New.
10772         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
10773         (bank_switch_p): Likewise.
10774         (fast_interrupt_p): Likewise.
10775         (interrupt_p): Likewise.
10776         (m32c_conditional_register_usage): Round memregs size up.
10777         (need_to_save): We only need to save $a0 when we use ENTER.
10778         (interrupt_p): Check for fast_interrupt too.
10779         (bank_switch_p): New.
10780         (fast_interrupt_p): New.
10781         (m32c_attribute_table): Add bank_switch and fast_interrupt.
10782         (m32c_emit_prolog): Support bank switching and fast interrupts.
10783         * doc/extend.texi (Function Attributes): Add bank_switch and
10784         fast_interrupt.
10785
10786 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
10787
10788         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
10789         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
10790
10791 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
10792
10793         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
10794         (menu): Add IA-64/VMS Options.
10795         (IA-64/VMS Options): Likewise.
10796
10797 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
10798
10799         PR target/38599
10800         * config/mips/mips.md (*lwxs): Use :P for pointer values.
10801
10802 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
10803
10804         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
10805         (mips_pop_asm_switch): Likewise.
10806         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
10807         with...
10808         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
10809         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
10810         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
10811         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
10812         instead of set_noreorder.
10813         (mips_output_function_prologue): Use the new functions.
10814         (mips_output_function_epilogue): Likewise.
10815         (mips_need_noat_wrapper_p): New function, split out from...
10816         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
10817         Use mips_push_asm_switch and mips_pop_asm_switch.
10818         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
10819         and mips_pop_asm_switch.
10820         (ASM_OUTPUT_REG_POP): Likewise.
10821         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
10822         Use mips_pop_asm_switch.
10823         (mips_asm_switch): New structure.
10824         (set_noreorder, set_nomacro): Replace with...
10825         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
10826         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
10827         instead of set_nomacro.
10828         (fix_truncsfsi2_macro): Likewise.
10829         (cprestore): Likewise.
10830         (hazard): Use mips_noreorder instead of set_noreorder.
10831         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
10832
10833 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
10834
10835         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
10836         from prev_active_insn.
10837
10838 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
10839
10840         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
10841         * config/avr/avr.c (avr_override_options): Initialize
10842         avr_current_arch variable.
10843         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
10844         __AVR_HAVE_16BIT_SP__ according to the device type.
10845         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
10846         TARGET_TINY_STACK.
10847         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
10848         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
10849
10850 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
10851
10852         PR debug/37801
10853         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
10854         generating inlined subroutine die only. We shouldn't be
10855         called for anything else.
10856         (gen_block_die): Don't generate inline subroutine debug info for
10857         abstract blocks.
10858
10859 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
10860
10861         * graphite-poly.c (print_pbb): Print PBB index.
10862
10863 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
10864
10865         PR middle-end/40981
10866         * graphite-interchange.c (ppl_max_for_le): Moved...
10867         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
10868         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
10869         ppl_Pointset_Powerset_C_Polyhedron_maximize.
10870         * graphite-ppl.h (ppl_max_for_le): Declared.
10871
10872 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
10873
10874         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
10875         supported on all platforms.
10876         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
10877         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
10878         * c-pragma.c: Likewise.
10879         * target-def.h (TARGET_INITIALIZER): Remove
10880         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
10881         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
10882
10883 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
10884
10885         * config/ia64/fde-vms.c: New file.
10886         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
10887         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
10888         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
10889         (uw_frame_state_for): Only register a personality routine if it is
10890         known to be compatible with our expectations.
10891         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
10892         Declare unw_table_entry stack variable and
10893         mod all calls to _Unwind_FindTableEntry to add arg.
10894         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
10895         (_Unwind_FindTableEntry): Add arg to prototype.
10896
10897 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
10898
10899         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
10900         field 'signal_pfs_loc'.
10901         (uw_frame_state_for): Remove duplicate code dealing with leaf
10902         procedures without unwind info.
10903         If in the frame after unwinding through a signal handler, restore
10904         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
10905         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
10906         'pfs_loc' to the AR.PFS location in the signal context; instead
10907         set 'signal_pfs_loc'.
10908         Manually generate the unwind info for the AR.PFS register.
10909         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
10910         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
10911         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
10912         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
10913         instead set 'signal_pfs_loc'.
10914         Remove code preventing the AR.PFS register from being restored
10915         from the signal context.
10916
10917 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
10918             Tristan Gingold  <gingold@adacore.com>
10919
10920         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
10921         * config/ia64/t-vms: New file.
10922         * config/ia64/vms64.h: New file.
10923         * config/ia64/vms.h: New file.
10924         * config/ia64/vms-crtinit.asm: New file.
10925         * config/ia64/vms_symvec_libgcc_s.opt: New file.
10926         * config/ia64/vms-unwind.h: New file.
10927
10928 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
10929
10930         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
10931         TFmode compares.
10932
10933 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10934
10935         PR middle-end/30789
10936         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
10937         Move declaration...
10938         * real.h (do_mpc_arg2): ... here.
10939         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
10940         and RDIV_EXPR.
10941
10942 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
10943
10944         * final.c (add_debug_prefix_map): Don't use GC memory for
10945         old_prefix and new_prefix.
10946
10947 2009-08-14  Richard Guenther  <rguenther@suse.de>
10948
10949         * ipa-prop.c (compute_complex_pass_through): If we cannot
10950         compute a non-varying offset for IPA_JF_ANCESTOR punt.
10951
10952 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10953
10954         * c-lex.c (c_lex_with_flags): Increase size of local variable
10955         to avoid memory clobber.
10956
10957 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
10958
10959         PR target/40934
10960         * config/i386/i386.c (ix86_fp_comparison_strategy):
10961         Only enable/disable sahf at function granularity.
10962
10963 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
10964
10965         PR rtl-optimization/41064
10966         * reload1.c (reload_as_needed): Don't call extract_insn
10967         for known invalid replacements after calling
10968         validate_replace_rtx_group and verify_changes.
10969
10970 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
10971
10972         PR target/41019
10973         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
10974         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
10975         ix86_expand_fp_vcond.
10976         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
10977         Assert that operation is supported by ix86_expand_int_vcond.
10978         (vcondu<SSEMODE124C8:mode>): Ditto.
10979
10980 2009-08-13  DJ Delorie  <dj@redhat.com>
10981
10982         * config/i386/djgpp-stdint.h: New.
10983         * config.gcc (djgpp): Use it.
10984
10985 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
10986
10987         * config/sh/sh.c (sh_override_options): When flag_exceptions or
10988         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
10989
10990 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
10991
10992         * tree-ssa-loop-prefetch.c
10993         (prune_ref_by_group_reuse): Enhance probabilistic analysis
10994         for long-stride pruning.
10995         (compute_miss_rate): New function to compute the probability
10996         that two memory references access different cache lines.
10997
10998 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
10999
11000         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
11001
11002 2009-08-13  Richard Guenther  <rguenther@suse.de>
11003
11004         PR middle-end/41047
11005         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
11006         use the constant pointer type.
11007         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
11008         of CV qualifiers on the target pointer type.
11009         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
11010         conversion check before restrict check.
11011
11012 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
11013
11014         PR target/41029
11015         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
11016
11017 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
11018
11019         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
11020
11021 2009-08-12  Richard Guenther  <rguenther@suse.de>
11022
11023         PR tree-optimization/41011
11024         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
11025         and reference constructing.
11026
11027 2009-08-12  Xinliang David Li  <davidxl@google.com>
11028
11029         PR tree-optimization/41012
11030         * tree-flow.h : New external interface.
11031         * gimple-low.c (check_call_arg): Change to public function.
11032         Remove argument mismatch check in lowering.
11033         * tree-inline.h (tree_can_inline_p): Interface change.
11034         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
11035         into this function.
11036         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
11037         Call change to tree_can_inline_p function.
11038         (cgraph_decide_inlining_incrementally): Ditto.
11039
11040 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
11041
11042         PR tree-optimization/41031
11043         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
11044         on the partition variable rather than promote_mode on the source
11045         type.  Assert that the partition variable's type has the same
11046         mode as the source value's.
11047
11048 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
11049
11050         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
11051         for for_return == 2.
11052         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
11053         comments.
11054         * calls.c (expand_call): Fix typo.
11055         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
11056         and PARM_DECL.
11057         * stmt.c (expand_value_return): Use promote_function_mode to copy out
11058         of pseudo.
11059         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
11060         * config/cris/cris.c (cris_promote_function_mode): Likewise.
11061         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
11062         * config/pa/pa.c (pa_promote_function_mode): Likewise.
11063
11064 2009-08-12  Andrew Haley  <aph@redhat.com>
11065
11066         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
11067
11068 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11069
11070         PR bootstrap/40103
11071         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
11072
11073 2009-08-12  Richard Guenther  <rguenther@suse.de>
11074
11075         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
11076         * gimplify.c (gimplify_modify_expr): Do not use
11077         lang_hooks.types_compatible_p.
11078         * tree-ssa.c (useless_type_conversion_p): For aggregates
11079         just return false if the canonical types differ.
11080
11081 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11082
11083         PR middle-end/40980
11084         * sese.c (convert_for_phi_arg): New.
11085         (add_guard_exit_phis): Use convert_for_phi_arg.
11086
11087 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11088
11089         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
11090         unknown subscript upper bounds.
11091
11092 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11093             Pranav Garg  <pranav.garg2107@gmail.com>
11094
11095         * graphite-interchange.c (gather_access_strides): Removed.
11096         (ppl_max_for_le): New.
11097         (build_linearized_memory_access): New.
11098         (memory_stride_in_loop): New.
11099         (pbb_interchange_profitable_p): Reimplemented.
11100         * graphite-ppl.h (ppl_new_id_map): New.
11101         (ppl_interchange): New.
11102
11103 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11104
11105         * graphite-interchange.c (compute_subscript): Removed.
11106         (compute_array_size_cstr): Removed.
11107         (compute_array_size_poly): Removed.
11108         (compute_array_size): Removed.
11109         (gather_access_strides_poly): Removed.
11110         (gather_access_strides): Empty.
11111
11112 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11113
11114         * graphite-dependences.c (dependence_polyhedron_1): Replace
11115         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
11116         (graphite_legal_transform_dr): Same.
11117         (graphite_carried_dependence_level_k): Same.
11118         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
11119         Initialize PDR_NB_SUBSCRIPTS.
11120         (print_pdr_access_layout): Replace pdr_nb_subscripts with
11121         PDR_NB_SUBSCRIPTS.
11122         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
11123         (PDR_NB_SUBSCRIPTS): New.
11124         (pdr_nb_subscripts): Removed.
11125         (pdr_dim): Simplified.
11126         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
11127         with PDR_NB_SUBSCRIPTS.
11128
11129 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11130
11131         * graphite-interchange.c (compute_array_size): Remove use of
11132         PDR_DATA_CONTAINER.
11133         * graphite-poly.c (new_poly_dr): Remove argument data_container.
11134         Do not initialize PDR_DATA_CONTAINER.
11135         (print_pdr): Do not print PDR_DATA_CONTAINER.
11136         * graphite-poly.h (struct poly_dr): Remove data_container field.
11137         (PDR_DATA_CONTAINER): Removed.
11138         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
11139         PDR_DATA_CONTAINER.
11140         (build_poly_dr): Same.
11141
11142 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
11143             Sebastian Pop  <sebastian.pop@amd.com>
11144
11145         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
11146         copy of the dependence polyhedron.  Free the temporary objects.
11147         (graphite_carried_dependence_level_k): Free unused objects before
11148         returning.
11149
11150 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11151
11152         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
11153         Early return without analyzing the data dependences if no
11154         transform has been done.  Call restore_scattering if the transform
11155         is not legal.
11156         (graphite-interchange.c): Same.
11157         * graphite-poly.c (print_scattering_function): Test for
11158         PBB_TRANSFORMED.
11159         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
11160         (apply_poly_transforms): Do not gcc_assert that
11161         the transform is legal.
11162         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
11163         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
11164         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
11165         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
11166         * graphite-poly.h (struct poly_scattering): New.
11167         (struct poly_bb): Add original, transformed, and saved fields.
11168         Remove transformed_scattering, original_scattering,
11169         nb_local_variables and nb_scattering_transform fields.
11170         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
11171         (poly_scattering_new): New.
11172         (poly_scattering_free): New.
11173         (poly_scattering_copy): New.
11174         (store_scattering_pbb): New.
11175         (store_scattering): New.
11176         (restore_scattering_pbb): New.
11177         (restore_scattering): New.
11178         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
11179         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
11180
11181 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11182
11183         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
11184         (print_scop): Same.
11185
11186 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11187
11188         * Makefile.in (graphite.o): Depends on PREDICT_H.
11189         * graphite.c: Include predict.h.
11190         (graphite_finalize): Call tree_estimate_probability.
11191         * predict.c (predict_loops): Do not call scev_initialize and
11192         scev_finalize.
11193         (tree_estimate_probability_bb): New.
11194         (tree_estimate_probability): Do not initialize loops: move that
11195         code to the driver.  Call tree_estimate_probability_bb.
11196         (tree_estimate_probability_driver): New.
11197         (pass_profile): Use tree_estimate_probability_driver.
11198         * predict.h (tree_estimate_probability): Declared.
11199
11200 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11201
11202         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
11203         * graphite-dependences.c (graphite_legal_transform): Add time to
11204         TV_GRAPHITE_DATA_DEPS.
11205         (dependency_between_pbbs_p): Same.
11206         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
11207
11208 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
11209
11210         PR rtl-optimization/41033
11211         * alias.c (nonoverlapping_component_refs_p): Punt when strict
11212         aliasing is disabled.
11213
11214 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
11215
11216         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
11217         si_mask_operand, and_load_operand, low_bitmask_operand,
11218         and_reg_operand, and_operand): New predicates.
11219         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
11220         * config/mips/mips.c (and_operands_ok): New function.
11221         * config/mips/mips-protos.h (and_operands_ok): Declare it.
11222         * config/mips/mips.md (move_type): Add ext_ins and logical.
11223         (type): Handle them.
11224         (and<mode>3): Use and_reg_operand as the second operand's predicate.
11225         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
11226         shift_shift.  Remove commutative constraint modifier.
11227         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
11228         shift_shift.
11229         (*clear_upper32_dext): Remove define_insn_and_split.
11230         (*clear_upper32): Turn this define_insn_and_split ...
11231         (splitter for ANDing register with 0xffff_ffff): .. into this.
11232
11233 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
11234
11235         * combine.c (try_widen_shift_mode): Factor out code to check if an
11236         integer constant is a low-order bitmask from here ...
11237         * rtlanal.c (low_bitmask_len): ... to here.
11238         * rtl.h (low_bitmask_len): Declare.
11239
11240 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
11241
11242         PR target/8603
11243         * config/alpha/alpha.md (addsi3): Remove expander.
11244         (addsi3): Rename from *addsi3_internal insn pattern.
11245         (subsi3): Remove expander.
11246         (subsi3): Rename from *subsi3_internal insn pattern.
11247
11248 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
11249
11250         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
11251         FWRITE_UNLOCKED.
11252
11253 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
11254             Eric Botcazou  <botcazou@adacore.com>
11255             Douglas B Rupp  <rupp@gnat.com>
11256
11257         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
11258         that records that fit in 64 bits are returned by immediate value,
11259         as required by OpenVMS Calling Standard.
11260         (function_value): Adjust for above modification.
11261         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
11262         virtual_incoming_args_rtx as base object, not next_arg.
11263         * config/alpha/vms.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
11264
11265 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11266
11267         * reload.c (find_reloads_subreg_address): Check the original
11268         req_equiv_mem address to detect the case where an address is
11269         not valid in the outer mode.
11270
11271 2009-08-11  Richard Guenther  <rguenther@suse.de>
11272
11273         PR bootstrap/40788
11274         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
11275
11276 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
11277
11278         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
11279         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
11280
11281 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
11282             Douglas B Rupp  <rupp@gnat.com>
11283
11284         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
11285         PT_STACK when frame_pointer_needed on OpenVMS.
11286         (alpha_pv_save_size, alpha_using_fp): Remove.
11287         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
11288         with proper processing for PT_NULL.
11289         (alpha_vms_initial_elimination_offset): New function. Support for
11290         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
11291         (alpha_sa_size): Force procedure type to PT_STACK when
11292         frame_pointer_needed on OpenVMS.
11293         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
11294         (alpha_using_fp): Likewise.
11295         (alpha_vms_can_eliminate): Add prototype.
11296         (alpha_vms_initial_elimination_offset): Likewise.
11297         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
11298         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
11299
11300 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
11301             Douglas B Rupp  <rupp@gnat.com>
11302
11303         * config/alpha/alpha.c (common_object_handler): New function.
11304         (vms_attribute_table): Declare a single attribute "common_object".
11305         (vms_output_aligned_decl_common): New global function.
11306         (SECTION_VMS_OVERLAY): Delete.
11307         (SECTION_VMS_GLOBAL): Likewise.
11308         (SECTION_VMS_INITIALIZE): Likewise.
11309         (vms_asm_named_section): Remove support for above flags.
11310         (vms_section_type_flags): Delete.
11311         (TARGET_SECTION_TYPE_FLAGS): Likewise.
11312         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
11313         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
11314         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
11315
11316 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
11317
11318         PR target/41015
11319         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
11320         (sub_ddmmss): Likewise.
11321
11322 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
11323
11324         PR bootstrap/41018
11325         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
11326         year.
11327
11328 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11329
11330         PR target/37053
11331         * reload1.c (reload_as_needed): Use cancel_changes to completely
11332         undo a failed replacement attempt.
11333
11334 2009-08-10  Richard Guenther  <rguenther@suse.de>
11335
11336         PR middle-end/41006
11337         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
11338         (useless_type_conversion_p): ... here.  Require pointer targets
11339         to be compatible.
11340
11341 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
11342
11343         PR c++/40866
11344         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
11345         loose the original type of the statement list.
11346
11347 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11348
11349         * config/alpha/alpha.c: Include libfuncs.h
11350         (avms_asm_output_extern): New function.
11351         (alpha_init_libfuncs): Init some decc libfuncs.
11352         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
11353         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
11354         (DO_CRTL_NAMES): Define.
11355         (LIB_SPEC): Remove.
11356         * config/alpha/vms64.h (POINTERS_EXTEND_UNSIGNED): Remove undef.
11357         (LONG_TYPE_SIZE): Define.
11358         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
11359         (SUBTARGET_SWITCHES): Define malloc64 switch.
11360         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
11361         (MASK_RETURN_ADDR): Define.
11362         doc/invoke.texi (mmalloc64): Document switch.
11363
11364 2009-08-09  Olivier Hainque  <hainque@adacore.com>
11365             Douglas B Rupp  <rupp@gnat.com>
11366
11367         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
11368         uses_condition_handler.
11369         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
11370         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
11371         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
11372         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
11373         (code_for_builtin): New insn codes for the new alpha_builtins.
11374         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
11375         (alpha_sa_size): Account for uses_condition_handler.
11376         (alpha_expand_prologue): Likewise.
11377         (alpha_start_function): Likewise.
11378         (alpha_expand_epilogue): Likewise.
11379         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
11380         establish/revert expanders.
11381         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
11382         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
11383         New expander, resorting to the alpha.c associated function.
11384         (builtin_revert_vms_condition_handler): Likewise.
11385         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
11386         __gcc_shell_handler, the static VMS condition handler used as
11387         an indirection wrapper to the current dynamically established
11388         handler.
11389         * config/alpha/vms-unwind.h: Complete rewrite.
11390         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
11391         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
11392
11393 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
11394             Douglas B Rupp  <rupp@gnat.com>
11395
11396         * config/alpha/alpha.c (alpha_links): Add 'target' field.
11397         (alpha_need_linkage): Handle aliases.  Return function symbol.
11398         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
11399         Use ultimate alias target for the linkage name.
11400         * config/alpha/alpha.md (movmemdi): Use the symbol returned
11401         by alpha_need_linkage for the function symbol.
11402         (setmemdi): Likewise.
11403
11404 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11405
11406         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
11407         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
11408         (ASM_WEAKEN_LABEL): Define.
11409         (CRT_CALL_STATIC_FUNCTION): Define.
11410         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
11411         (ENDFILE_SPEC): Define.
11412         (INIT_SECTION_ASM_OP): Define.
11413         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
11414         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
11415         crtend.o crtendS.o.
11416         (MULTILIB_OSDIRNAMES): Define.
11417         (shlib_version): Define.
11418         (SHLIB_EXT): Define.
11419         (SHLIB_OBJS): Define.
11420         (SHLIB_NAME): Define.
11421         (SHLIB_MULTILIB): Define.
11422         (SHLIB_INSTALL): Define.
11423         (SHLIB_SYMVEC): Define.
11424         (SHLIB_SYMVECX2): Define.
11425         (SHLIB_LINK): Define.
11426
11427 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11428
11429         * config/alpha/alpha.c (alpha_initialize_trampoline):
11430         Initialize VMS trampoline IAW ABI for bounded procedure calls.
11431         (alpha_start_function): Emit transfer address on nested functions
11432         for VMS trampoline call.
11433         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
11434         since no longer used.
11435         * config/alpha/vms-tramp.asm: Remove.
11436         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
11437         since now only data initialized at runtime.
11438
11439 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11440
11441         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
11442         (LINK_GCC_C_SEQUENCE_SPEC): Define.
11443         (MD_EXEC_PREFIX): Remove, no longer used.
11444         (MD_STARTFILE_PREFIX): Likewise.
11445         (INCLUDE_DEFAULTS): Likewise.
11446         * config/alpha/t-vms:
11447         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
11448
11449 2009-08-09  Richard Guenther  <rguenther@suse.de>
11450
11451         PR tree-optimization/41016
11452         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
11453         (operand_precision): Remove.
11454         (integral_operand_p): Likewise.
11455         (recognize_single_bit_test): Adjust.
11456
11457 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
11458
11459         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
11460         operation overflows.  Likewise non-cast unary arithmetic.
11461         If one arm of a conditional expression is always taken,
11462         inhibit evaluation warnings for the other arm.  Likewise inhibit
11463         evaluation warnings for the second && or || operand if the first
11464         operand is enough to determine the result.
11465         * c-typeck.c (build_conditional_expr): Apply the same inhibition
11466         rules here.
11467         (build_binary_op): Prevent duplicate evaluation warnings.
11468
11469 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
11470
11471         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
11472         and destination have different modes, Use promote_mode to
11473         determine the signedness of the conversion.  Assert that the
11474         promoted source mode matches the destination mode.  Don't pass
11475         the destination and destination mode to expand_expr if the source
11476         mode is different.  Simplify conversion logic.
11477
11478 2009-08-09  Ira Rosen  <irar@il.ibm.com>
11479
11480         PR tree-optimization/41008
11481         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
11482         from condition only in case it's a comparison. Adjust checks.
11483
11484 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
11485
11486         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
11487         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
11488         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
11489         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
11490         (dump_cand): Handle them.
11491         (struct iv_cand): New members COST_STEP and AINC_USE.
11492         (stmt_after_increment): Likewise.
11493         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
11494         callers changed.  Use gimple_uid comparison instead of scanning.
11495         (add_candidate_1): When looking for identical candidates, take
11496         AINC_USE into account.  Set it for new candidates.
11497         (force_expr_to_var_cost): Cast target_spill_cost to int.
11498         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
11499         All callers changed.  Check for availability of autoinc addressing
11500         modes, both in general for a given mode, and in the specific use case.
11501         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
11502         changed.
11503         (get_computation_cost): Likewise.
11504         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
11505         add_autoinc_candidates): New static functions.
11506         (add_candidate): Call add_autoinc_candidates for candidates based on
11507         a USE_ADDRESS use.
11508         (find_iv_candidates): Call set_autoinc_for_original_candidates.
11509         (determine_use_iv_cost_address): If we have an autoinc candidate at
11510         the matching use, verify autoinc is possible and subtract the cost
11511         of the candidate's step from the cost.
11512         (determine_iv_cost): Record the cost of the increment in the COST_STEP
11513         member of the candidate.
11514         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
11515         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
11516
11517 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11518
11519         * config.build (ia64-hp-*vms*): New target.
11520         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
11521         with ia64-hp-*vms*.
11522         * config.gcc (ia64-hp-*vms*): New target.
11523         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
11524         with ia64-hp-*vms*.
11525         * config.host (ia64-hp-*vms*): New target.
11526         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
11527         with ia64-hp-*vms*.
11528
11529 2009-08-08  Richard Guenther  <rguenther@suse.de>
11530
11531         PR tree-optimization/40991
11532         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
11533
11534 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
11535
11536         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
11537         mode check.  Do truncations in an integer mode.
11538         (force_to_mode): Handle subregs for all mode types.  Only do
11539         arithmetic simplifications on integer modes.
11540
11541 2009-08-07  Richard Guenther  <rguenther@suse.de>
11542
11543         PR tree-optimization/40999
11544         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
11545         (maybe_fold_reference): Lookup constant initializers.
11546         (fold_gimple_assign): Likewise.
11547
11548 2009-08-07  Richard Guenther  <rguenther@suse.de>
11549
11550         * tree-ssa.c (useless_type_conversion_p_1): Only for types
11551         that require structural equality defer to the langhook.
11552
11553 2009-08-07  Martin Jambor  <mjambor@suse.cz>
11554
11555         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
11556         comments.
11557         (struct ipa_pass_through_data): New type.
11558         (struct ipa_ancestor_jf_data): New type.
11559         (union jump_func_value): Removed field formal_id, added fields
11560         pass_through and ancestor.
11561         (struct ipa_param_call_note): Changed type of formal_id to int from
11562         unsigned.
11563         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
11564         operations jump functions and ancestor jump functions.
11565         (compute_complex_pass_through): New function.
11566         (compute_scalar_jump_functions): Call compute_complex_pass_through,
11567         reflect changes in the jump function strucutre.
11568         (update_jump_functions_after_inlining): Ignore complex pass-through
11569         and ancestor jump functions.
11570         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
11571         polynomial pass-through with operation jump functions.
11572
11573 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
11574
11575         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
11576         fde->dw_fde_begin as begin label instead of hot/cold label.
11577         Use LLSDAC label instead of LLSDA for second section lsda.
11578         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
11579         label instead of LLSDA if it is true.
11580         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
11581         callers.
11582         * except.c (add_call_site, dw2_size_of_call_site_table): Add
11583         SECTION argument.  Use it as index into crtl->eh.call_site_record
11584         array.
11585         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
11586         use it to determine how to print table entries instead of using
11587         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
11588         label instead of normal begin label as base.
11589         (sjlj_assign_call_site_values): Adjust add_call_site caller.
11590         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
11591         ensure no EH range spans between sections and that landing pads
11592         are always in the corresponding section.
11593         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
11594         for crtl->eh.call_site_record being an array rather than scalar.
11595         (output_one_function_exception_table): New function, copied
11596         from output_function_exception_table.  Adjust
11597         dw2_size_of_call_site_table, dw2_output_call_site_table
11598         callers.  For SECOND section use *C suffixed labels.
11599         (output_function_exception_table): Call
11600         output_one_function_exception_table and, when doing hot/cold
11601         partitioning, also another time for the second section.
11602         * opts.c: Include except.h.
11603         (decode_options): Allow -freorder-blocks-and-partition with
11604         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
11605         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
11606         * function.h (struct rtl_eh): Change call_site_record from
11607         scalar into array of 2 elements.
11608
11609 2009-08-07  Martin Jambor  <mjambor@suse.cz>
11610
11611         * ipa-prop.c (count_formal_params_1): New function.
11612         (ipa_get_vector_of_formal_parms): New function.
11613         (get_vector_of_formal_parm_types): New function.
11614         (ipa_modify_formal_parameters): New function.
11615         (ipa_modify_call_arguments): New function.
11616         (index_in_adjustments_multiple_times_p): New function.
11617         (ipa_combine_adjustments): New function.
11618         (ipa_dump_param_adjustments): New function.
11619         * ipa-prop.h (struct ipa_parm_adjustment): New type.
11620         (ipa_get_vector_of_formal_parms): Declare.
11621         (ipa_modify_formal_parameters): Declare.
11622         (ipa_modify_call_arguments): Declare.
11623         (ipa_combine_adjustments): Declare.
11624         (ipa_dump_param_adjustments): Declare.
11625         (build_ref_for_offset): Declare.
11626         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
11627         * tree-sra.c: Include ipa-prop.c.
11628         (build_ref_for_offset): Make public.
11629
11630 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
11631
11632         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
11633
11634 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
11635
11636         * gcc/doc/extend.texi (__builtin_extract_return_address)
11637         (__builtin_frob_return_address): Document.
11638
11639 2009-08-06  Paul Brook  <paul@codesourcery.com>
11640
11641         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
11642         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
11643         implementation on ARMv6-M.
11644
11645 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11646
11647         * doc/extend.texi (pcs): Document new attribute for ARM.
11648
11649 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11650
11651         * arm.c (pcs_attribute_args): Comment out unsupported attribute
11652         variants.
11653
11654 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11655
11656         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
11657         warning ().
11658
11659 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11660
11661         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
11662
11663 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11664
11665         Merge ARM/hard_vfp_branch to trunk.
11666
11667         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
11668
11669         * arm.c (libcall_eq): New function.
11670         (libcall_hash): New function.
11671         (add_libcall): New function.
11672         (arm_libcall_uses_aapcs_base): New function.
11673         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
11674         libcalls using the base PCS.
11675         (arm_init_cumulative_args): Likewise.
11676
11677         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
11678
11679         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
11680         Use base ABI for conversion libfuncs between HFmode and SFmode.
11681
11682         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
11683
11684         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
11685         V4SImode as representatives of all 64-bit and 128-bit vector
11686         types.  Allow vector types without vector modes.
11687         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
11688         without vector modes like BLKmode.
11689         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
11690         BLKmode.  Avoid unsupported vector modes or TImode moves for
11691         non-TARGET_NEON.
11692         (aapcs_vfp_allocate_return_reg): Likewise.
11693         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
11694         V8QImode if TARGET_NEON || TARGET_IWMMXT.
11695
11696         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
11697
11698         * config/arm/arm.c (arm_handle_pcs_attribute): New.
11699         (arm_get_pcs_model): Pass attribute arguments to
11700         arm_pcs_from_attribute.
11701         (arm_init_cumulative_args): Use base AAPCS for conversions from
11702         floating-point types to DImode.
11703         (arm_attribute_table): Add pcs attribute.
11704         (arm_handle_pcs_attribute): New.
11705         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
11706         conversions from floating-point types to DImode, also declare them
11707         to use base AAPCS and declare functions they call to use base
11708         AAPCS and their RTABI names.
11709
11710         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
11711
11712         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
11713         -mfloat-abi=hard not being supported for VFP.
11714
11715         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
11716
11717         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
11718         SYMBOL_REF to hard_libcall_value.
11719
11720         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
11721             Richard Earnshaw  <rearnsha@arm.com>
11722
11723         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
11724         has been put on the stack, all remaining co-processory arguments for
11725         that co-processor also go on the stack.
11726
11727         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
11728
11729         * config/arm/arm.c (arm_return_in_memory): Handle returning
11730         vectors of suitable size in registers also for AAPCS case.
11731
11732         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
11733
11734         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
11735
11736         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
11737
11738         ARM Hard-VFP calling convention
11739         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
11740         * target.h (gcc_target): Add libcall_value to table of call hooks.
11741         * targhooks.h (default_libcall_value): Default implementation.
11742         * targhooks.c (default_libcall_value): Likewise.
11743         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
11744         * optabs.c (expand_unop): Use it.
11745         * expr.h (hard_libcall_value): Pass the function RTX through.
11746         * calls.c (emit_library_call_value_1): Update call to
11747         hard_libcall_value.
11748         * explow.c (hard_libcall_value): Use new target hook.
11749         * config/arm/arm.c: Include cgraph.h
11750         (TARGET_FUNCTION_VALUE): Override default hook.
11751         (arm_pcs_default): New variable.
11752         (arm_override_options): Don't fault hard calling convention with VFP.
11753         Add support for AAPCS variants.
11754         (arm_function_value): Make static.  Handle AAPCS variants.
11755         (arm_libcall_value): New function.
11756         (arm_apply_result_size): Handle VFP registers in results.
11757         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
11758         conventions.
11759         (pcs_attribute_args): New variable.
11760         (arm_pcs_from_attribute): New function.
11761         (arm_get_pcs_model): New function.
11762         (aapcs_vfp_cum_init): New function.
11763         (aapcs_vfp_sub_candidate): New function.
11764         (aapcs_vfp_is_return_candidate): New function.
11765         (aapcs_vfp_is_call_candidate): New function.
11766         (aapcs_vfp_allocate): New function.
11767         (aapcs_vfp_allocate_return_reg): New function.
11768         (aapcs_vfp_advance): New function.
11769         (aapcs_cp_arg_layout): New variable.
11770         (aapcs_select_call_coproc): New function.
11771         (aapcs_select_return_coproc): New function.
11772         (aapcs_allocate_return_reg): New function.
11773         (aapcs_libcall_value): New function.
11774         (aapcs_layout_arg): New function.
11775         (arm_init_cumulative_args): Initialize AAPCS args data.
11776         (arm_function_arg): Handle AAPCS variants using new interface.
11777         (arm_arg_parital_bytes): Likewise.
11778         (arm_function_arg_advance): New function.
11779         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
11780         calling conventions.
11781         (arm_setup_incoming_varargs): Handle new AAPCS args data.
11782         * arm.h (NUM_VFP_ARG_REGS): Define.
11783         (LIBCALL_VALUE): Update.
11784         (FUNCTION_VALUE): Delete.
11785         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
11786         (arm_pcs): New enum.
11787         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
11788         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
11789         (FUNCTION_ARG_REGNO_P): Add VFP regs.
11790         * arm-protos.h (arm_function_arg_advance): Add.
11791         (aapcs_libcall_value): Add.
11792         (arm_function_value): Delete.
11793
11794 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
11795             H.J. Lu  <hongjiu.lu@intel.com>
11796
11797         PR target/40957
11798         * config/i386/i386.c (standard_sse_mode_p): Remove.
11799         (standard_sse_constant_p): Return 2 for integer mode
11800         vector_all_ones_operand when SSE2 is enabled.
11801         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
11802         (ix86_expand_vector_move): Do not check for negative values from
11803         standard_sse_constant_p.
11804
11805 2009-08-06  Richard Guenther  <rguenther@suse.de>
11806
11807         * tree-ssa.c (useless_type_conversion_p_1): Make function and
11808         array type comparisons frontend independent.
11809         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
11810         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
11811         out array reference lower bound and element size operands.
11812         (ao_ref_init_from_vn_reference): Properly compute the offset
11813         for ARRAY_RANGE_REF.
11814         (vn_reference_fold_indirect): Fill out array reference lower
11815         bound and element size operands.
11816         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
11817         a non gimple valued reference operand which can happen for
11818         array reference lower bound or element size.
11819         (create_component_ref_by_pieces_1): Properly generate the
11820         element size operand for array references.
11821
11822 2009-08-06  Richard Guenther  <rguenther@suse.de>
11823
11824         PR tree-optimization/40964
11825         * tree.c (iterative_hash_host_wide_int): Export.
11826         * tree.h (iterative_hash_host_wide_int): Declare.
11827         * tree-ssa-structalias.c (heapvar_map): New struct.
11828         (heapvar_map_eq): New function.
11829         (heapvar_map_hash): Likewise.
11830         (heapvar_lookup): Adjust.
11831         (heapvar_insert): Likewise.
11832         (make_constraint_from_heapvar): Allow multiple heap variables
11833         per decl at different offsets.
11834         (init_alias_heapvars): Adjust.
11835
11836 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
11837
11838         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
11839         * mips_output_sync_loop (mips_output_sync_loop): Only emit
11840         trailing sync if TARGET_SYNC_AFTER_SC.
11841
11842 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
11843
11844         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
11845         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
11846         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
11847         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
11848         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
11849         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
11850         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
11851         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
11852         test_and_set_12): Rewrite calls to mips_output_sync_loop.
11853         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
11854         the prototype declaration match the definition.
11855         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
11856         instructions explicitly.  Add barrier_before and operands
11857         parameters.
11858         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
11859         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
11860         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
11861         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
11862         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
11863         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
11864
11865 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
11866
11867         * tree-ssa-alias.c: Fix intervals to use [) syntax.
11868
11869 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
11870             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
11871
11872         PR target/40906
11873         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
11874         source operand.
11875
11876 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
11877
11878         PR rtl-optimization/40924
11879         * dse.c (canon_address): Before calling cselib_expand_value_rtx
11880         make sure canon_rtx (mem_address) isn't simpler than
11881         canon_rtx (expanded_mem_address).
11882
11883 2009-08-05  Li Feng  <nemokingdom@gmail.com>
11884
11885         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
11886         for each poly_bb_p.
11887         (build_scop_drs): Build alias set for each SCoP.
11888
11889 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
11890
11891         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
11892         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
11893         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
11894         (MIPS_ARCH_FLOAT_SPEC): Likewise.
11895         (BASE_DRIVER_SELF_SPECS): Likewise.
11896
11897 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
11898
11899         * tree-ssa-alias.c: Fix some comment typos.
11900
11901 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
11902
11903         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
11904         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
11905
11906 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
11907
11908         PR c/39902
11909         * simplify-rtx.c (simplify_binary_operation_1): Disable
11910         simplifications for decimal float operations.
11911
11912 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
11913
11914         PR middle-end/40943
11915         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
11916         operand of INDIRECT_REF.
11917
11918 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
11919
11920         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
11921         constants referencing TLS symbols.
11922
11923 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
11924
11925         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
11926         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
11927
11928 2009-08-03  Richard Guenther  <rguenther@suse.de>
11929
11930         * tree.c (make_vector_type): Build a main variant first,
11931         get the canonical one and then build the variant.
11932         * tree-ssa.c (useless_type_conversion_p_1): Handle
11933         fixed-point types.
11934         (useless_type_conversion_p): Conversions to pointers to
11935         incomplete record types are useless.
11936
11937 2009-08-03  Richard Guenther  <rguenther@suse.de>
11938
11939         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
11940         file will be created.
11941         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
11942         * toplev.c (compile_file): Adjust comment.
11943
11944 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
11945
11946         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
11947         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
11948         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11949         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
11950         (sh_promote_function_mode): Fix typo.
11951
11952 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
11953
11954         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
11955
11956 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11957
11958         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
11959         declaration arguments.
11960
11961 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
11962
11963         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
11964         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
11965         (ix86_split_ashl): Ditto.
11966         (ix86_expand_vector_init_one_nonzero): Ditto.
11967         (ix86_expand_vector_set): Ditto.
11968         (ix86_expand_reduc_v4sf): Ditto.
11969
11970 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
11971
11972         * explow.c (promote_function_mode): Remove assert.
11973         * config/sh/sh.c (sh_promote_function_mode): Declare.
11974
11975 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11976
11977         * config/pa/pa.c (pa_promote_function_mode): Declare.
11978         Change to static.  Fix promote_mode call.
11979
11980         * gthr-dce.h (CONST_CAST2): Define if not defined.
11981         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
11982
11983         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
11984
11985 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
11986
11987         * expr.c (store_constructor): Use promote_decl_mode.  Remove
11988         now write-only variable unsignedp.
11989         (expand_expr_real_1): Use promote_decl_mode.
11990         * expr.h (promote_function_mode, promote_decl_mode): New.
11991         (promote_mode): Remove last argument.
11992         * function.c (assign_temp): Drop last argument of promote_mode.
11993         (assign_parm_find_data_types): Use promote_function_mode.
11994         (assign_parm_setup_reg): Likewise.
11995         (expand_function_end): Use promote_function_mode.
11996         * calls.c (initialize_argument_information): Use promote_function_mode.
11997         (precompute_arguments): Use promote_mode instead of checking if
11998         only PROMOTE_FUNCTION_MODE is defined.
11999         (expand_call): When making sibcall decisions, use promote_function_mode.
12000         Below, remove an if for targetm.calls.promote_function_return and
12001         and use promote_function_mode.
12002         (emit_library_call_value_1): Use promote_function_mode, fix bug
12003         where promote_mode was passed FOR_CALL == 0 for a return value in an
12004         assertion.
12005         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
12006         * explow.c (promote_function_mode, promote_decl_mode): New.
12007         (promote_mode): Keep only the FOR_CALL == 0 case.
12008         * combine.c (setup_incoming_promotion): Remove test of
12009         promote_function_args.  Use promote_function_mode.
12010         * stmt.c (expand_value_return): Use promote_decl_mode.
12011         (expand_decl): Use promote_decl_mode.
12012
12013         * expr.c (store_constructor): Use promote_decl_mode.  Remove
12014         now write-only variable unsignedp.
12015         (expand_expr_real_1): Use promote_decl_mode.
12016         * expr.h (promote_function_mode, promote_decl_mode): New.
12017         (promote_mode): Remove last argument.
12018         * function.c (assign_temp): Drop last argument of promote_mode.
12019         (assign_parm_find_data_types): Use promote_function_mode.
12020         (assign_parm_setup_reg): Likewise.
12021         (expand_function_end): Use promote_function_mode.
12022         * calls.c (initialize_argument_information): Use promote_function_mode.
12023         (precompute_arguments): Use promote_mode instead of checking if
12024         only PROMOTE_FUNCTION_MODE is defined.
12025         (expand_call): When making sibcall decisions, use promote_function_mode.
12026         Below, remove an if for targetm.calls.promote_function_return and
12027         and use promote_function_mode.
12028         (emit_library_call_value_1): Use promote_function_mode, fix bug
12029         where promote_mode was passed FOR_CALL == 0 for a return value in an
12030         assertion.
12031         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
12032         * explow.c (promote_function_mode, promote_decl_mode): New.
12033         (promote_mode): Keep only the FOR_CALL == 0 case.
12034         * combine.c (setup_incoming_promotion): Remove test of
12035         promote_function_args.  Use promote_function_mode.
12036         * stmt.c (expand_value_return): Use promote_decl_mode.
12037         (expand_decl): Use promote_decl_mode.
12038
12039         * explow.c (promote_function_mode): Just call the target hook.
12040         * targhooks.c (default_promote_function_mode,
12041         default_promote_function_mode_always_promote): New.
12042         * targhooks.h (default_promote_function_mode,
12043         default_promote_function_mode_always_promote): Declare.
12044         * target.h (promote_function_args, promote_function_return): Remove.
12045         (promote_function_mode): New.
12046         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
12047         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12048         (TARGET_PROMOTE_FUNCTION_MODE): New.
12049         (TARGET_CALLS): Adjust.
12050         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
12051         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
12052
12053         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
12054         * config/s390/s390.c (s390_promote_function_mode): ... here,
12055         with pointer handling.
12056         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12057         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12058
12059         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
12060         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
12061         with pointer handling.
12062         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12063         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12064
12065         * config/sh/sh-protos.h (sh_promote_function_mode): New.
12066         * config/sh/sh.c (sh_promote_function_mode): New.
12067         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12068         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12069
12070         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
12071         * config/cris/cris.c (cris_promote_function_mode): ... here.
12072         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12073         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
12074
12075         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
12076         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
12077         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12078         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
12079
12080         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
12081         * config/arm/arm.c (arm_promote_function_mode): ... here, without
12082         complex type handling.
12083         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12084         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12085
12086         * config/pa/pa.c (pa_promote_function_mode): New.
12087         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12088         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12089
12090         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
12091         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12092         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
12093         * config/xtensa/xtensa.c: Likewise.
12094         * config/stormy16/stormy16.c: Likewise.
12095         * config/iq2000/iq2000.c: Likewise.
12096         * config/rs6000/rs6000.c: Likewise.
12097         * config/picochip/picochip.c: Likewise.
12098         * config/arc/arc.c: Likewise.
12099         * config/mcore/mcore.c: Likewise.
12100         * config/score/score.c: Likewise.
12101         * config/mips/mips.c: Likewise.
12102         * config/bfin/bfin.c: Likewise.
12103         * config/ia64/ia64.c: Likewise (disabled though).
12104
12105         * config/frv/frv.h: Remove pointless remark.
12106
12107         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
12108         TARGET_PROMOTE_FUNCTION_ARGS,
12109         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
12110         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
12111
12112 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
12113
12114         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
12115         -floop-parallelize-all.
12116         * toplev.c (process_options): Rename flag_graphite_force_parallel to
12117         flag_loop_parallelize_all.
12118         * tree-ssa-loop.c (gate_graphite_transforms): Same.
12119         * graphite.c (graphite_transform_loops): Same.
12120         * common.opt: Same.
12121         * graphite-poly.c (apply_poly_transforms): Same.
12122
12123 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
12124
12125         PR tree-optimization/40914
12126         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
12127         if set, then check the delta field of the PMF record.
12128         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
12129         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
12130         call is stored in the delta.
12131
12132 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
12133
12134         * config/mips/mips.md (*clear_upper32_dext): New pattern.
12135
12136 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
12137
12138         * config/i386/bsd.h (ASM_BYTE): New define.
12139         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
12140         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
12141         .byte.  Use fputs or putc instead of fprintf where appropriate.
12142         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
12143         fputs or putc instead of fprintf where appropriate.
12144         * config/i386/i386elf.h: Ditto.
12145         * config/i386/sysv4.h: Ditto.
12146
12147         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
12148         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
12149         (*tls_global_dynamic_64): Ditto.
12150
12151 2009-07-31  Christian Bruel  <christian.bruel@st.com>
12152
12153         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
12154
12155 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12156
12157         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
12158         Remove dead code for MINUS.
12159
12160 2009-07-31  Anthony Green  <green@moxielogic.com>
12161
12162         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
12163         $r12 in prologue.
12164         (moxie_expand_epilogue): Ditto for epilogue.
12165         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
12166         incoming arguments.
12167         (moxie_function_arg): Ditto.
12168         (moxie_pass_by_reference): Ditto.
12169         (moxie_arg_partial_bytes): Ditto.
12170         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
12171         (FUNCTION_ARG_ADVANCE) Ditto.
12172         (REG_PARM_STACK_SPACE) Ditto.
12173         (FUNCTION_ARG_REGNO_P) Dito.
12174
12175         * config.gcc: Add moxie linux config support.
12176         * gcc/config/moxie/uclinux.h: New file.
12177
12178 2009-07-31  DJ Delorie  <dj@redhat.com>
12179
12180         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
12181         (UNSPECV_SP_SWITCH_E): New.
12182         (sp_switch_1): Change to an unspec.
12183         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
12184         replace $r15.
12185         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
12186         reference the new stack's address
12187
12188 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12189
12190         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
12191         graphite-clast-to-gimple.o, graphite-dependences.o,
12192         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
12193         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
12194         (graphite-blocking.o,
12195         graphite-clast-to-gimple.o, graphite-dependences.o,
12196         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
12197         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
12198         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
12199         * cfgloop.h (struct loop): Add can_be_parallel field.
12200         * common.opt (fgraphite-identity): Moved up.
12201         (fgraphite-force-parallel): New flag.
12202         * graphite.c: Rewrite.
12203         * graphite.h: Rewrite.
12204         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
12205         after Graphite.
12206         * toplev.c (graphite_out_file): New file descriptor.
12207         (graphite_in_file): New.
12208         (process_options): flag_graphite_force_parallel cannot be used without
12209         Graphite.
12210         * tree-ssa-loop.c: Include toplev.h.
12211         (gate_graphite_transforms): Enable flag_graphite for
12212         flag_graphite_force_parallel.
12213
12214 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12215
12216         * ChangeLog.graphite: New.
12217         * graphite-blocking.c: New.
12218         * graphite-clast-to-gimple.c: New.
12219         * graphite-clast-to-gimple.h: New.
12220         * graphite-dependences.c: New.
12221         * graphite-dependences.h: New.
12222         * graphite-interchange.c: New.
12223         * graphite-poly.c: New.
12224         * graphite-poly.h: New.
12225         * graphite-ppl.c: New.
12226         * graphite-ppl.h: New.
12227         * graphite-scop-detection.c: New.
12228         * graphite-scop-detection.h: New.
12229         * graphite-sese-to-poly.c: New.
12230         * graphite-sese-to-poly.h: New.
12231         * sese.c: New.
12232         * sese.h: New.
12233
12234 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12235
12236         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
12237         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
12238
12239 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12240
12241         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
12242         (scev_is_linear_expression): Return false if the evolution is not
12243         affine multivariate.
12244
12245 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12246
12247         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
12248         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
12249
12250 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12251
12252         * tree-data-ref.c (debug_data_references): New.
12253         (debug_data_reference): New.
12254         * tree-data-ref.h (debug_data_references): Declared.
12255         (debug_data_reference): Declared.
12256
12257 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12258
12259         * tree-data-ref.c (stmt_simple_memref_p: Removed.
12260         * tree-data-ref.h (scop_p): Removed.
12261         (struct data_reference): Remove field scop.
12262         (DR_SCOP): Removed.
12263         (stmt_simple_memref_p): Removed.
12264
12265 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12266
12267         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
12268         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
12269         basic block empty.
12270
12271 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12272
12273         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
12274
12275 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12276
12277         * doc/invoke.texi (-fgraphite-identity): Documented.
12278
12279 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12280
12281         * tree-scalar-evolution.c: Fix comment.
12282         (instantiate_scev_1): Return unknow from scev instantiation if the
12283         result is not above instantiate_below.
12284
12285 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12286
12287         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
12288         static anymore.  Instantiate the symbols that may have been introduced
12289         by chrec_apply.
12290         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
12291         Declared.
12292
12293 2009-07-30  DJ Delorie  <dj@redhat.com>
12294
12295         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
12296         .vliw directive to VLIW sections.
12297
12298 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12299
12300         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
12301         New variables.
12302         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
12303         (AUTOHEADER): New variable.
12304         ($(srcdir)/cstamp-h.in): Use it.
12305
12306 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
12307             Pat Haugen  <pthaugen@us.ibm.com>
12308             Revital Eres <ERES@il.ibm.com>
12309
12310         * config/rs6000/vector.md (VEC_F): Add VSX support.
12311         (VEC_A): Ditto.
12312         (VEC_N): Ditto.
12313         (mov<mode>): Ditto.
12314         (vector_load_<mode>): Ditto.
12315         (vector_store_<mode>): Ditto.
12316         (vector GPR move split): Ditto.
12317         (vec_reload_and_plus_<mptrsize>): Ditto.
12318         (vec_reload_and_reg_<mptrsize>): Ditto.
12319         (add<mode>3): Ditto.
12320         (sub<mode>3): Ditto.
12321         (mul<mode>3): Ditto.
12322         (neg<mode>2): Ditto.
12323         (abs<mode>2): Ditto.
12324         (smin<mode>3): Ditto.
12325         (smax<mode>3): Ditto.
12326         (vector_eq<mode>): Ditto.
12327         (vector_gt<mode>): Ditto.
12328         (vector_ge<mode>): Ditto.
12329         (vector_gtu<mode>): Ditto.
12330         (vector_select_<mode>_uns): Ditto.
12331         (vector_eq_<mode>_p): Ditto.
12332         (vector_gt_<mode>_p): Ditto.
12333         (vector_ge_<mode>_p): Ditto.
12334         (vector_gtu_<mode>_p): Ditto.
12335         (cr6_test_for_zero): Ditto.
12336         (cr6_test_for_zero_reverse): Ditto.
12337         (cr6_test_for_lt): Ditto.
12338         (cr6_test_for_lt_reverse): Ditto.
12339         (xor<mode>3): Ditto.
12340         (ior<mode>3): Ditto.
12341         (and<mode>3): Ditto.
12342         (one_cmpl<mode>2): Ditto.
12343         (nor<mode>2): Ditto.
12344         (andc<mode>2): Ditto.
12345         (float<VEC_int<mode>2): Ditto.
12346         (unsigned_float<VEC_int><mode>2): Ditto.
12347         (fix_trunc<mode><VEC_int>2): Ditto.
12348         (fixuns_trunc<mode><VEC_int>2): Ditto.
12349         (vec_init<mode>):
12350         (vec_set<mode>): Ditto.
12351         (vec_extract<mode>): Ditto.
12352         (vec_interleave_highv4sf): Ditto.
12353         (vec_interleave_lowv4sf): Ditto.
12354         (vec_realign_load_<mode>): Ditto.
12355         (vec_shl_<mode>): Ditto.
12356         (vec_shr_<mode>): Ditto.
12357         (div<mode>3): New patterns for VSX.
12358         (vec_interleave_highv2df): Ditto.
12359         (vec_interleave_lowv2df): Ditto.
12360         (vec_pack_trunc_v2df): Ditto.
12361         (vec_pack_sfix_trunc_v2df): Ditto.
12362         (vec_pack_ufix_trunc_v2df): Ditto.
12363         (vec_unpacks_hi_v4sf): Ditto.
12364         (vec_unpacks_lo_v4sf): Ditto.
12365         (vec_unpacks_float_hi_v4si): Ditto.
12366         (vec_unpacks_float_lo_v4si): Ditto.
12367         (vec_unpacku_float_hi_v4si): Ditto.
12368         (vec_unpacku_float_lo_v4si): Ditto.
12369         (movmisalign<mode>): Ditto.
12370         (vector_ceil<mode>2): New patterns for vectorizing math library.
12371         (vector_floor<mode>2): Ditto.
12372         (vector_btrunc<mode>2): Ditto.
12373         (vector_copysign<mode>3): Ditto.
12374
12375         * config/rs6000/predicates.md (easy_vector_constant_msb): New
12376         predicate for setting the high bit in each word, used for copysign.
12377
12378         * config/rs6000/ppc-asm.h (f19): Whitespace.
12379         (f32-f63): Define if VSX.
12380         (v0-v31): Define if Altivec.
12381         (vs0-vs63): Define if VSX.
12382
12383         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
12384
12385         * config/rs6000/power7.md: New file, provide tuning parameters for
12386         -mcpu=power7.
12387
12388         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
12389         (rs6000_cpu_cpp_builtins): Ditto.
12390         (altivec_overloaded_builtins): Ditto.
12391         (altivec_resolve_overloaded_builtin): Ditto.
12392
12393         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
12394         debug switch to disable vectorizing simple math builtin
12395         functions.
12396
12397         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
12398         Vectorize simple math builtin functions.
12399         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
12400         hook to vectorize math builtins.
12401         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
12402         (rs6000_builtin_conversion): Add VSX/power7 support.
12403         (rs6000_builtin_vec_perm): Ditto.
12404         (vsplits_constant): Add support for loading up a vector constant
12405         with just the high bit set in each part.
12406         (rs6000_expand_vector_init): Add VSX/power7 support.
12407         (rs6000_expand_vector_set): Ditto.
12408         (rs6000_expand_vector_extract): Ditto.
12409         (rs6000_emit_move): Ditto.
12410         (bdesc_3arg): Ditto.
12411         (bdesc_2arg): Ditto.
12412         (bdesc_1arg): Ditto.
12413         (rs6000_expand_ternop_builtin): Ditto.
12414         (altivec_expand_builtin): Ditto.
12415         (rs6000_expand_unop_builtin): Ditto.
12416         (rs6000_init_builtins): Ditto.
12417         (altivec_init_builtins): Ditto.
12418         (builtin_function_type): Ditto.
12419         (rs6000_common_init_builtins): Ditto.
12420         (rs6000_handle_altivec_attribute); Ditto.
12421         (rs6000_mangle_type): Ditto.
12422         (rs6000_vector_mode_supported_p): Ditto.
12423         (rs6000_mode_dependent_address): Altivec addresses with AND -16
12424         are mode dependent.
12425
12426         * config/rs6000/vsx.md: New file for VSX support.
12427
12428         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
12429         identifing values with just the most significant bit set.
12430         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
12431         vectorized builtins.
12432
12433         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
12434         (UNSPEC_VRFIM): Delete.
12435         (splitter for loading up vector with most significant bit): New
12436         splitter for vectorizing copysign.
12437         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
12438         vectorizing simple math functions.
12439         (altivec_vrfip): Add support for vectorizing simple math functions.
12440         (altivec_vrfim): Ditto.
12441         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
12442
12443         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
12444         (power7.md, vsx.md): Include for power7 support.
12445         (copysigndf3): Use VSX instructions if -mvsx.
12446         (negdf2_fpr): Ditto.
12447         (absdf2_fpr): Ditto.
12448         (nabsdf2_fpr): Ditto.
12449         (adddf3_fpr): Ditto.
12450         (subdf3_fpr): Ditto.
12451         (muldf3_fpr): Ditto.
12452         (divdf3_fpr): Ditto.
12453         (fix_truncdfdi2_fpr): Ditto.
12454         (cmpdf_internal1): Ditto.
12455         (fred, fred_fpr): Convert into expander/insn to add VSX support.
12456         (btruncdf2, btruncdf2_fpr): Ditto.
12457         (ceildf2, ceildf2_fpr): Ditto.
12458         (floordf2, floordf2_fpr): Ditto.
12459         (floatdidf2, floatdidf2_fpr): Ditto.
12460         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
12461         (fmsubdf4_fpr): Ditto.
12462         (fnmadddf4_fpr_1): Ditto.
12463         (fnmadddf4_fpr_2): Ditto.
12464         (fnmsubdf4_fpr_1): Ditto.
12465         (fnmsubdf4_fpr_2): Ditto.
12466         (fixuns_truncdfdi2): Add expander for VSX support.
12467         (fix_truncdfdi2): Ditto.
12468         (fix_truncdfsi2): Ditto.
12469         (ftruncdf2): Ditto.
12470         (btruncsf2): Whitespace.
12471         (movdf_hardfloat32): Add support for VSX registers.
12472         (movdf_softfloat32): Ditto.
12473         (movdf_hardfloat64): Ditto.
12474         (movdf_hardfloat64_mfpgpr): Ditto.
12475         (movdf_softfloat64): Ditto.
12476         (movti splitters): Add check for vector registers supporting
12477         TImode in the future.
12478         (bpermd): Add power7 bpermd instruction.
12479
12480         * config/rs6000/altivec.h (vec_div): Define if VSX.
12481         (vec_mul): Ditto.
12482         (vec_msub): Ditto.
12483         (vec_nmadd): Ditto.
12484         (vec_nearbyint): Ditto.
12485         (vec_rint): Ditto.
12486         (vec_sqrt): Ditto.
12487         (all predicates): Use the generic builtin function, and not the V4SF
12488         specific function so that the predicates will work with VSX's V2DF.
12489         (vec_all_*): Ditto.
12490         (vec_any_*): Ditto.
12491
12492         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
12493         Document new VSX functions and types.
12494
12495         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
12496         switches.
12497
12498         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
12499         "wa", and "j" constraints.  Modify "v" to talk about Altivec
12500         instead of just vector.
12501
12502 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
12503
12504         PR debug/26475
12505         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
12506         location for phi arguments.
12507         (rewrite_update_phi_arguments): Find locations for reaching defs.
12508         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
12509         Add location to add_phi_arg calls.
12510         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
12511         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
12512         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
12513         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
12514         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
12515         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
12516         * tree-phinodes.c (make_phi_node): Initialize location.
12517         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
12518         (add_phi_arg): Add location parameter.
12519         (remove_phi_arg_num): Move location when moving phi argument.
12520         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
12521         location.
12522         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
12523         slpeel_update_phi_nodes_for_guard1,
12524         slpeel_update_phi_nodes_for_guard2,
12525         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
12526         vect_loop_versioning): Set locations.
12527         * tree-parloops.c (create_phi_for_local_result,
12528         transform_to_exit_first_loop, create_parallel_loop): Add locations.
12529         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
12530         * tree-vect-loop.c (get_initial_def_for_induction,
12531         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
12532         locations.
12533         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
12534         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
12535         (gimple_phi_arg_set_location): New.  Set locus.
12536         (gimple_phi_arg_has_location): New.  Check for locus.
12537         (redirect_edge_var_map_location): New.  Return locus from var_map.
12538         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
12539         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
12540         combining PHI arguments.
12541         (cond_store_replacement): Set location.
12542         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
12543         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
12544         scop_add_exit_phis_edge): Add locations.
12545         * tree-cfgcleanup.c (remove_forwarder_block,
12546         remove_forwarder_block_with_phi): Add locations.
12547         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
12548         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
12549         locations.
12550         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
12551         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
12552         flush_pending_stmts): Add source location.
12553         * lambda-code.c (perfect_nestify): Maintain location stack with argument
12554         stack to preserve locations.
12555         * tree-vect-stmts.c (vectorizable_load): Add location.
12556         * tree-inline.c (copy_phis_for_bb): Copy locus.
12557         (setup_one_parameter): Add call locus to inlined parameter stmts.
12558         (initialize_inlined_parameters): Pass in call location as parameter
12559         assignment locus.
12560         (tree_function_versioning): Pass location to setup_one_parameter.
12561         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
12562         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
12563         copy and edge lists.
12564         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
12565         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
12566         locus parameter and override the stmt default if provided.
12567         (new_elim_graph, clear_elim_graph, delete_elim_graph,
12568         elim_graph_add_edge, elim_graph_remove_succ_edge,
12569         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
12570         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
12571         eliminate_phi):  Add locus info in elimination graph for each edge and
12572         value copy.
12573         (insert_backedge_copies): Copy locus if present.
12574         * tree-flow.h (struct _edge_var_map): Add locus field.
12575         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
12576         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
12577         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
12578         locations.
12579         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
12580
12581 2009-07-30  Martin Jambor  <mjambor@suse.cz>
12582
12583         PR tree-optimization/40570
12584         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
12585         use inlining loops.
12586
12587 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
12588
12589         * ssa-loop-manip.c: Include langhooks.h.
12590         (rewrite_phi_with_iv): New.
12591         (rewrite_all_phi_nodes_with_iv): New.
12592         (canonicalize_loop_ivs): Move here from tree-parloops.c.
12593         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
12594         * tree-parloops.c (loop_parallel_p): Move out all conditions
12595         except dependency check.
12596         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
12597         (gen_parallel_loop): Call canonicalize_loop_ivs without
12598         reduction_list argument.
12599         (build_new_reduction): New.
12600         (gather_scalar_reductions): New.
12601         (try_get_loop_niter): New.
12602         (try_create_reduction_list): New.
12603         (parallleize_loops): Change the parallel conditions check.
12604         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
12605         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
12606
12607 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
12608
12609         * opt-functions.awk (opt_args): Allow argument to be enclosed in
12610         curly braces.
12611         * doc/options.texi (Option properties):  Mention new quoting syntax.
12612
12613 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12614
12615         * config/alpha/alpha.c (alpha_start_function):
12616         Handle VMS_DEBUG_MAIN_POINTER
12617         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
12618         * doc/invoke.texi: Document -mdebug-main switch.
12619
12620 2009-07-29  Richard Henderson  <rth@redhat.com>
12621
12622         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
12623         (cgraph_create_edge_including_clones): Likewise.
12624         * tree-inline.c (copy_bb): Operate on the correct edges
12625         when updating the callgraph.
12626
12627 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12628
12629         * config/alpha/vms-cc.c: Deleted.
12630         * config/alpha/vms-ld.c: Deleted.
12631         * config/alpha/t-vms64: Moved to config/vms
12632         * config/alpha/vms-crt0-64.c: Moved to config/vms
12633         * config/alpha/vms-crt0.c: Moved to config/vms
12634         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
12635         * config/alpha/vms-psxcrt0.c: Moved to config/vms
12636         * config/alpha/xm-vms.h: Moved to config/vms
12637         * config/alpha/x-vms: Moved to config/vms
12638         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
12639         config/vms/t-vms.
12640         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
12641         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
12642         (version): Set.
12643         * config/vms/t-vms64: Moved here from config/alpha
12644         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
12645         (argc,argv,envp): Enforce 32bit malloc'ing.
12646         * config/vms/vms-psxcrt0-64.c: Likewise.
12647         * config/vms/vms-crt0.c: Moved here from config/alpha.
12648         * config/vms/vms-psxcrt0.c: Likewise.
12649         * config/vms/vms-crtl-64.h: New file.
12650         * config/vms/vms-crtl.h: New file.
12651         * config/vms/vms.opt: New file.
12652         * config/vms/xm-vms64.h: New file.
12653         * config/vms/xm-vms.h: Moved here from config/alpha.
12654         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
12655         Set.
12656         * config/vms/x-vms: Moved here from config/alpha.
12657         (version, VMS_EXTRA_PARTS): Moved to t-vms.
12658         (vms-ld.o, vms-cc.o): Removed.
12659         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
12660
12661 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12662
12663         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
12664         correct stack (obvious VMS fix).
12665
12666 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12667
12668         * dwarf2out.c (output_file_names): Output VMS style file name, size,
12669         date, version info if VMS_DEBUGGING_INFO defined.
12670         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
12671         size, date calculating code moved here.
12672
12673 2009-07-29  Paul Brook  <paul@codesourcery.com>
12674
12675         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
12676         do_push/do_pop.
12677
12678 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
12679
12680         PR target/40577
12681         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
12682         to DImode when generating insq_le insn.
12683
12684 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
12685
12686         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
12687         New macro set for VMS_DEBUGGGING_INFO.
12688         (AT_string_form): Use it.
12689
12690 2009-07-28  DJ Delorie  <dj@redhat.com>
12691
12692         * config/mep/mep.c (vtext_section): New.
12693         (vftext_section): New.
12694         (ftext_section): New.
12695         (mep_select_section): Add support for functions.
12696         (mep_unique_section): Likewise.
12697         (mep_asm_init_sections): Likewise.
12698         (mep_encode_section_info): Remove it from here.
12699
12700         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
12701
12702 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
12703
12704         * tree.h (TREE_DEPRECATED): Document it is used for types too.
12705         (TYPE_VECTOR_OPAQUE): Use default_def_flag
12706
12707 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
12708
12709         * dwarf2out.c (output_file_names): Test new macro
12710         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
12711         (add_comp_dir_attribute): Likewise.
12712
12713 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
12714
12715         * config/i386/mingw-w64.h (LINK_SPEC): Add
12716         separating space between commands.
12717
12718 2009-07-28  Jan Hubicka  <jh@suse.cz>
12719
12720         PR tree-optimization/40759
12721         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
12722         for renaming.
12723
12724 2009-07-27  DJ Delorie  <dj@redhat.com>
12725
12726         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
12727         types are dword-aligned.
12728         (mep_expand_va_start): Likewise.
12729
12730 2009-07-27  Olivier Hainque  <hainque@adacore.com>
12731             Douglas B Rupp  <rupp@gnat.com>
12732
12733         * convert.c (convert_to_pointer): Don't assume the target
12734         pointer type is POINTER_SIZE long. Fetch its precision instead.
12735
12736 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
12737
12738         * system.h (fopen): Undefine if macro.
12739
12740 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
12741
12742         * dwarf2out.c (output_cfi_p): Removed.
12743         (output_cfis): New function.
12744         (output_fde): New function, split from output_call_frame_info.
12745         (output_call_frame_info): Use it.
12746         (dwarf2out_switch_text_section): Use output_cfis.
12747
12748 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
12749
12750         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
12751         TARGET_BI_ARCH is specified without enabling SJLJ.
12752         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
12753         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
12754
12755 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
12756
12757         * arm.md (negdi2): Use DImode if forcing a value into a register.
12758
12759 2009-07-26  Ira Rosen  <irar@il.ibm.com>
12760
12761         PR tree-optimization/40801
12762         * tree-vect-stmts.c (vectorizable_call): Get previous copy
12763         of vector operand from the previous copy of vector statement.
12764         Pass the correct definition type value to
12765         vect_get_vec_def_for_stmt_copy().
12766
12767 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12768
12769         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
12770         const char ** conversion.
12771
12772 2009-07-25 David Daney <ddaney@caviumnetworks.com>
12773
12774         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
12775         fancy_abort() if !ENABLE_ASSERT_CHECKING.
12776         (gcc_unreachable): Invoke __builtin_unreachable() if
12777         !ENABLE_ASSERT_CHECKING.
12778
12779 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
12780
12781         PR rtl-optimization/40445
12782         * emit-rtl.c (next_nonnote_insn_bb): New function.
12783         * rtl.h (next_nonnote_insn_bb): Declare new function.
12784         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
12785         with no successors that is the successor of the ENTRY_BLOCK.
12786         Continue from the top after removing an empty fallthrough block.
12787         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
12788         of next_nonnote_insn.
12789
12790 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
12791
12792         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
12793
12794 2009-07-25  Martin Jambor  <mjambor@suse.cz>
12795
12796         * c-common.c (c_common_attribute_table): New element for noclone.
12797         (handle_noclone_attribute): New function. Forward-declare.
12798         * tree-inline.c (tree_versionable_function_p): Check for noclone
12799         attribute.
12800         * doc/extend.texi (Labels as Values): Document need for noclone.
12801         (Function Attributes): Document noclone attribute.
12802
12803 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
12804
12805         PR rtl-optimization/34999
12806         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
12807         and dw_fde_switched_cold_to_hot fields.
12808         (output_cfi_p): New function.
12809         (output_call_frame_info): If fde->dw_fde_switched_sections,
12810         output 2 FDEs instead of one with corrupted header.
12811         (dwarf2out_do_cfi_startproc): New function.
12812         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
12813         and fde->dw_fde_switched_cold_to_hot.
12814         (dwarf2out_switch_text_section): Compute
12815         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
12816         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
12817         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
12818         Otherwise, compute fde->dw_fde_switch_cfi.
12819
12820 2009-07-24  Cary Coutant  <ccoutant@google.com>
12821
12822         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
12823
12824 2009-07-24  Cary Coutant  <ccoutant@google.com>
12825
12826         * cfghooks.c (split_block): Copy discriminator to new block.
12827         * tree-cfg.c (assign_discriminator): Check location of last
12828         instruction in block as well as first.
12829
12830 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
12831
12832         * config/i386/linux.c: Use fputs or putc instead of fprintf
12833         where appropriate.
12834         * config/i386/gas.h: Ditto.
12835         * config/i386/x86-64.h: Ditto.
12836         * config/i386/att.h: Ditto.
12837
12838 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
12839
12840         * expmed.c (emit_store_flag): Use a recursive call to optimize the
12841         xor case.
12842
12843 2009-07-24  Martin Jambor  <mjambor@suse.cz>
12844
12845         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
12846         (ipa_push_func_to_list_1): Declare.
12847         (ipa_push_func_to_list): New function.
12848
12849         * ipa-prop.c (ipa_push_func_to_list_1): New function.
12850         (ipa_init_func_list): Call ipa_push_func_to_list_1.
12851         (ipa_push_func_to_list): Removed.
12852         (ipa_pop_func_from_list): Clear node_enqueued flag.
12853
12854 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12855
12856         * config/s390/s390.c (override_options): Default
12857         max-unrolled-insns to 100 for z10 tuning.
12858
12859 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
12860
12861         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
12862         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
12863         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
12864         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
12865         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
12866         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
12867         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
12868
12869 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
12870
12871         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
12872         use default set in mingw32.h header.
12873         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
12874         64-bit /mingw/include path.
12875         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
12876         path.
12877
12878 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
12879
12880         PR rtl-optimization/40209
12881         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
12882
12883 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
12884
12885         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
12886         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
12887         with the rest of string where appropriate.  Use fputs or putc
12888         instead of fprintf where appropriate.
12889
12890 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
12891             Pat Haugen  <pthaugen@us.ibm.com>
12892             Revital Eres <ERES@il.ibm.com>
12893
12894         * config/rs6000/vector.md: New file.  Move most of the vector
12895         expander support here from altivec.md to allow for the VSX vector
12896         unit in the future.  Add support for secondary_reload patterns.
12897         Rewrite the patterns for vector comparison, and vector comparison
12898         predicate instructions so that the RTL expresses the desired
12899         behavior, instead of using unspec.
12900
12901         * config/rs6000/constraints.md ("f" constraint): Use
12902         rs6000_constraints to hold the precalculated register class.
12903         ("d" constraint): Ditto.
12904         ("wd" constraint): New constraint for VSX.
12905         ("wf" constraint): Ditto.
12906         ("ws" constraint): Ditto.
12907         ("wa" constraint): Ditto.
12908         ("wZ" constraint): Ditto.
12909         ("j" constraint): Ditto.
12910
12911         * config/rs6000/predicates.md (vsx_register_operand): New
12912         predicate for VSX.
12913         (vfloat_operand): New predicate for vector.md.
12914         (vint_operand): Ditto.
12915         (vlogical_operand): Ditto.
12916         (easy_fp_constant): If VSX, 0.0 is an easy constant.
12917         (easy_vector_constant): Add VSX support.
12918         (altivec_indexed_or_indirect_operand): New predicate for
12919         recognizing Altivec style memory references with AND -16.
12920
12921         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
12922         for vector secondary reload support.
12923         (rs6000_vector_reg_class): Delete, replacing it with
12924         rs6000_constraints.
12925         (rs6000_vsx_reg_class): Ditto.
12926         (rs6000_constraints): New array to hold the register classes of
12927         each of the register constraints that can vary at runtime.
12928         (builtin_mode_to_type): New static array for builtin function type
12929         creation.
12930         (builtin_hash_table): New static hash table for builtin function
12931         type creation.
12932         (TARGET_SECONDARY_RELOAD): Define target hook.
12933         (TARGET_IRA_COVER_CLASSES): Ditto.
12934         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
12935         registers are 128 bits if VSX memory reference instructions are used.
12936         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
12937         unit is being used.
12938         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
12939         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
12940         Print several of the scheduling related parameters.
12941         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
12942         rs6000_constraints instead of rs6000_vector_reg_class.  Move
12943         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
12944         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
12945         Altivec.  Add VSX support.  Setup for secondary reload support on
12946         Altivec/VSX registers.
12947         (rs6000_override_options): Make power7 set the scheduling groups
12948         like the power5.  Add support for new debug switches to override
12949         the scheduling defaults.  Temporarily disable -mcpu=power7 from
12950         setting -mvsx.  Add support for debug switches -malways-hint,
12951         -msched-groups, and -malign-branch-targets.
12952         (rs6000_buitlin_conversion): Add support for returning unsigned
12953         vector conversion functions to fix regressions due to stricter
12954         type checking.
12955         (rs6000_builtin_mul_widen_even): Ditto.
12956         (rs6000_builtin_mul_widen_odd): Ditto.
12957         (rs6000_builtin_vec_perm): Ditto.
12958         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
12959         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
12960         to zero a register.
12961         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
12962         generated upstream.
12963         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
12964         VSX types for bit operations.  Changes to accomidate vector.md.
12965         (bdesc_2arg): Ditto.
12966         (bdesc_1arg): Ditto.
12967         (struct builtin_description_predicates): Rewrite predicate
12968         handling so that RTL describes the operation, instead of passing
12969         the instruction to be used as a string argument.
12970         (bdesc_altivec_preds): Ditto.
12971         (altivec_expand_predicate_builtin): Ditto.
12972         (altivec_expand_builtin): Ditto.
12973         (rs6000_expand_ternop_builtin): Use a switch instead of an if
12974         statement for vsldoi support.
12975         (altivec_expand_ld_builtin): Change to use new names from vector.md.
12976         (altivec_expand_st_builtin): Ditto.
12977         (paired_expand_builtin): Whitespace changes.
12978         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
12979         builtin_mode_to_type table for secondary reload.  Call
12980         builtin_function_type to build random builtin functions.
12981         (altivec_init_builtins): Change to use builtin_function_type to
12982         create builtin function types dynamically as we need them.
12983         (builtin_hash_function): New support for hashing the tree types
12984         for builtin function as we need it, rather than trying to build
12985         all of the trees that we need.  Add initial preliminary VSX support.
12986         (builtin_function_type): Ditto.
12987         (builtin_function_eq): Ditto.
12988         (builtin_hash_struct): Ditto.
12989         (rs6000_init_builtins): Ditto.
12990         (rs6000_common_init_builtins): Ditto.
12991         (altivec_init_builtins): Ditto.
12992         (rs6000_common_init_builtins): Ditto.
12993         (enum reload_reg_type): New enum for simplifing reg classes.
12994         (rs6000_reload_register_type): Simplify register classes into GPR,
12995         Vector, and other registers.  Altivec and VSX addresses in reload.
12996         (rs6000_secondary_reload_inner): Ditto.
12997         (rs6000_ira_cover_classes): New target hook, that returns the
12998         appropriate cover classes, based on -mvsx being used or not.
12999         (rs6000_secondary_reload_class): Add VSX support.
13000         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
13001         (get_vsel_insn): Ditto.
13002         (rs6000_emit_vector_compare): Rewrite vector conditional support
13003         so that where we can, we use RTL operators, instead of blindly use
13004         UNSPEC.
13005         (rs6000_emit_vector_select): Ditto.
13006         (rs6000_emit_vector_cond_expr): Ditto.
13007         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
13008         (create_TOC_reference): Add -mdebug=addr support.
13009         (emit_frame_save): VSX loads/stores need register indexed addressing.
13010
13011         * config/rs6000/rs6000.md: Include vector.md.
13012
13013         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
13014
13015         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
13016         support for V2DI, V2DF in logical, permute, select operations.
13017
13018         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
13019         switch for vsx/power7.
13020         (-mvsx-scalar-memory): Ditto.
13021         (-mvsx-align-128): Ditto.
13022         (-mallow-movmisalign): Ditto.
13023         (-mallow-df-permute): Ditto.
13024         (-msched-groups): Ditto.
13025         (-malways-hint): Ditto.
13026         (-malign-branch-targets): Ditto.
13027
13028         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
13029         hook instead.
13030         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
13031         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
13032         (rs6000_vector_reg_class): Delete.
13033         (rs6000_vsx_reg_class): Ditto.
13034         (enum rs6000_reg_class_enum): New enum for the constraints that
13035         vary based on target switches.
13036         (rs6000_constraints): New array to hold the register class for all
13037         of the register constraints that vary based on the switches used.
13038         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
13039         (enum rs6000_builtins): Add unsigned varients for the builtin
13040         declarations returned by target hooks for expanding multiplies,
13041         select, and permute operations.  Add VSX builtins.
13042         (enum rs6000_builtin_type_index): Add entries for VSX.
13043         (V2DI_type_node): Ditto.
13044         (V2DF_type_node): Ditto.
13045         (unsigned_V2DI_type_node): Ditto.
13046         (bool_long_type_node): Ditto.
13047         (intDI_type_internal_node): Ditto.
13048         (uintDI_type_internal_node): Ditto.
13049         (double_type_internal_node): Ditto.
13050
13051         * config/rs6000/altivec.md (whole file): Move all expanders to
13052         vector.md from altivec.md.  Rename insn matching functions to be
13053         altivec_foo.
13054         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
13055         (altivec_vcmp*): Ditto.
13056         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
13057         (VM): New iterator for moves that includes the VSX types.
13058         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
13059         (altivec_vperm_<mode>_uns): New, for unsigned types.
13060         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
13061         (altivec_eq<mode>): Ditto.
13062         (altivec_gt<mode>): Ditto.
13063         (altivec_gtu<mode>): Ditto.
13064         (altivec_eqv4sf): Ditto.
13065         (altivec_gev4sf): Ditto.
13066         (altivec_gtv4sf): Ditto.
13067         (altivec_vcmpbfp_p): Ditto.
13068
13069 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
13070
13071         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
13072         unsigned HWI.
13073
13074 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
13075
13076         PR target/40832
13077         * config/i386/i386.c (output_387_ffreep): Rewrite to use
13078         ASM_SHORT instead of .word.
13079         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
13080         instead of .word in asm template.
13081
13082 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
13083
13084         PR target/37488
13085         * ira-lives.c (bb_has_abnormal_call_pred): New function.
13086         (process_bb_node_lives): Use it.
13087
13088         * ira.c (setup_cover_and_important_classes): Don't setup
13089         ira_important_class_nums.  Add cover classes to the end of
13090         important classes.
13091         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
13092         New.
13093         (find_reg_class_closure): Use reorder_important_classes.
13094
13095         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
13096
13097         * config/i386/i386.c (i386_ira_cover_classes): New function.
13098         (TARGET_IRA_COVER_CLASSES): Redefine.
13099
13100         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
13101         importance of order of cover classes in the array.
13102
13103 2009-07-22  Diego Novillo  <dnovillo@google.com>
13104
13105         * tree-pass.h (TDF_EH): Define.
13106         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
13107         contains TDF_EH, print the EH region number holding GS.
13108         * tree-dump.c (dump_options): Add "eh".
13109         * doc/invoke.texi: Document it.
13110
13111 2009-07-22  Doug Kwan  <dougkwan@google.com>
13112
13113         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
13114
13115 2009-07-22  Michael Matz  <matz@suse.de>
13116
13117         PR tree-optimization/35229
13118         PR tree-optimization/39300
13119
13120         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
13121         (inhibit_phi_insertion): New function.
13122         (insert_into_preds_of_block): Call it for REFERENCEs.
13123         (init_pre): Initialize and finalize scalar evolutions.
13124         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
13125
13126 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
13127
13128         * config/i386/predicates.md (zero_extended_scalar_load_operand):
13129         Use CONST_VECTOR_NUNITS to determine number of elements.
13130
13131 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
13132
13133         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
13134         (U, W): Constraints are now deprecated and will be removed if we
13135         run out of letters.
13136         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
13137         the file.
13138         ("prefetch"): Add the stcmh instruction for prefetching.
13139         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
13140         changes.
13141         (s390_short_displacement): Return always true if compiling for
13142         machines not providing the long displacement facility.
13143         (s390_mem_constraint): Support the new constraint letter Z.
13144         (s390_check_qrst_address): New function.
13145
13146 2009-07-21  DJ Delorie  <dj@redhat.com>
13147
13148         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
13149         alone too.
13150
13151 2009-07-21  Jason Merrill  <jason@redhat.com>
13152
13153         * c-common.c (max_tinst_depth): Increase default to 1024.
13154
13155 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
13156
13157         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
13158         (vec_unpacku_float_lo_v4si): Ditto.
13159
13160 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
13161
13162         PR target/40811
13163         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
13164         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
13165         (builtin_description): Add __builtin_ia32_cvtudq2ps.
13166         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
13167
13168 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
13169
13170         PR tree-optimization/40813
13171         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
13172         it.
13173
13174 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
13175
13176         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
13177         with a NOP_EXPR if needed.
13178
13179 2009-07-21  Paul Brook <paul@codesourcery.com>
13180
13181         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
13182         Terminate debug dump with newline.
13183
13184 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13185
13186         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
13187         Cast "1" to unsigned HOST_WIDE_INT.
13188         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
13189         deposit length to the maximum length - lsb.  Extend length if
13190         HOST_BITS_PER_WIDE_INT is 32.
13191
13192 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
13193
13194         * cgraph.h (constant_pool_htab): New function.
13195         (constant_descriptor_tree): Move from varasm.c.
13196         * varasm.c (constant_pool_htab): New function.
13197         (constant_descriptor_tree): Move to cgraph.h.
13198
13199 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
13200
13201         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
13202
13203 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
13204
13205         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
13206         $(VARRAY_H).
13207
13208 2009-07-20  Xinliang David Li  <davidxl@google.com>
13209
13210         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
13211
13212 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
13213
13214         * config/mips/mips.md (move_type): Add arith.
13215         (type): Handle arith.
13216         (zero_extendsidi2): Rename this into ...
13217         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
13218         (zero_extendsidi2): New expander.
13219         (*zero_extendsidi2_dext): New pattern.
13220
13221 2009-07-20  Nick Clifton  <nickc@redhat.com>
13222
13223         * config.gcc (mips64-*-*): Add definition of tm_defines in order
13224         to set MIPS_ABI_DEFAULT.
13225         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
13226
13227 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
13228
13229         * tree-object-size.c (addr_object_size): Handle unions with
13230         array in it as last field of structs in __bos (, 1) as __bos (, 0).
13231
13232         PR tree-optimization/40792
13233         * tree.c (build_function_type_skip_args): Remove bogus assert.
13234
13235 2009-07-20  Jan Hubicka  <jh@suse.cz>
13236             Martin Jambor  <mjambor@suse.cz>
13237
13238         * cgraph.h (combined_args_to_skip): New field.
13239         * cgraph.c (cgraph_create_virtual_clone): Properly handle
13240         combined_args_to_skip and args_to_skip.
13241         * tree-inline.c (update_clone_info): New function.
13242         (tree_function_versioning): Call update_clone_info.
13243         * cgraphunit.c (cgraph_materialize_clone): Dump materialized
13244         functions.
13245         (cgraph_materialize_all_clones): More extensive dumping, working
13246         with combined_args_to_skip rather than args_to_skip.
13247
13248 2009-07-20  Ira Rosen  <irar@il.ibm.com>
13249
13250         * tree-vectorizer.h (vectorizable_condition): Add parameters.
13251         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
13252         (get_initial_def_for_reduction): Likewise.
13253         (vectorizable_reduction): Skip the check of first operand in case
13254         of COND_EXPR. Add check that it is outer loop vectorization if
13255         nested cycle was detected. Call vectorizable_condition() for
13256         COND_EXPR. If reduction epilogue cannot be created do not fail for
13257         nested cycles (if it is not double reduction). Assert that there
13258         is only one type in the loop in case of COND_EXPR. Call
13259         vectorizable_condition() to vectorize COND_EXPR.
13260         * tree-vect-stmts.c (vectorizable_condition): Update comment.
13261         Add parameters. Allow nested cycles if called from
13262         vectorizable_reduction(). Use reduction vector variable if provided.
13263         (vect_analyze_stmt): Call vectorizable_reduction() before
13264         vectorizable_condition().
13265         (vect_transform_stmt): Update call to vectorizable_condition().
13266
13267 2009-07-20  Christian Bruel  <christian.bruel@st.com>
13268
13269         * config/sh/sh.opt (-mfmovd): Resurrect and document.
13270         * doc/invoke.texi (-mfmovd): Likewise.
13271         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
13272
13273 2009-07-20  Jan Hubicka  <jh@suse.cz>
13274
13275         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
13276         when handling SSA name.
13277
13278 2009-07-19  Jan Hubicka  <jh@suse.cz>
13279
13280         PR tree-optimization/40676
13281         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
13282         virtual PHIs in empty BBs.
13283
13284 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13285
13286         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
13287         re-expanded the compound use gen_lowpart instead to convert to the
13288         desired mode.
13289
13290 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13291
13292         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
13293         OUTER_CONST arguments.
13294         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
13295         the new wider mode will be masked off.
13296         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
13297
13298 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13299
13300         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
13301         high-order bits are zero.
13302
13303 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13304
13305         * combine.c (simplify_shift_const_1): Split code to determine
13306         shift_mode into ...
13307         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
13308         new bits shifted in are identical to the old sign bit.
13309
13310 2009-07-18  Richard Guenther  <rguenther@suse.de>
13311
13312         PR c/40787
13313         * gimplify.c (gimplify_call_expr): Reject code using results from
13314         functions returning void.
13315
13316 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
13317
13318         * doc/md.texi: Document the new PowerPC "es" constraint.
13319         Document that "m" can include automodified addresses on this target,
13320         and explain how %U must be used.  Extend the "Q" and "Z" documentation
13321         to suggest "es" as well as "m".
13322         * config/rs6000/constraints.md (es): New memory constraint.
13323         (Q, Z): Update strings to match new documentation.
13324
13325 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
13326
13327         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
13328         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
13329         * config/rs6000/predicates.md (volatile_mem_operand): Use
13330         offsettable_nonstrict_memref_p.
13331         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
13332         (*floatunssidf2_internal): Likewise.
13333         (*fix_truncdfsi2_internal): Likewise.
13334         (*fix_trunctfsi2_internal): Likewise.
13335
13336 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
13337
13338         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
13339         atmega32u2 devices.
13340         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
13341
13342 2009-07-17  Richard Guenther  <rguenther@suse.de>
13343
13344         PR c/40401
13345         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
13346         (pass_warn_unused_result): Likewise.
13347         (TODO_set_props): Remove.
13348         * omp-low.c (diagnose_omp_structured_block_errors): Change to
13349         run as a pass.
13350         (pass_diagnose_omp_blocks): Define.
13351         * c-decl.c (pop_file_scope): Do not finalize the CU here.
13352         (c_gimple_diagnostics_recursively): Remove.
13353         (finish_function): Do not call it.
13354         (c_write_global_declarations): Continue after errors.
13355         Finalize the CU here.
13356         * c-gimplify.c (c_genericize): Do not gimplify here.
13357         * c-common.c (c_warn_unused_result): Move ...
13358         * tree-cfg.c (do_warn_unused_result): ... here.
13359         (run_warn_unused_result): New function.
13360         (gate_warn_unused_result): New function.
13361         (pass_warn_unused_result): New pass.
13362         * c-common.h (c_warn_unused_result): Remove.
13363         * flags.h (flag_warn_unused_result): Declare.
13364         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
13365         * opts.c (flag_warn_unused_result): Initialize to false.
13366         * toplev.c (compile_file): Add comment.
13367         * omp-low.c (create_omp_child_function): Do not register
13368         the function with the frontend.
13369         (diagnose_omp_structured_block_errors): Prepare to be
13370         called as optimization pass.
13371         (gate_diagnose_omp_blocks): New function.
13372         (pass_diagnose_omp_blocks): New pass.
13373         * cgraph.h (cgraph_optimize): Remove.
13374         (cgraph_analyze_function): Likewise.
13375         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
13376         * cgraphunit.c (cgraph_lower_function): Lower nested functions
13377         before their parents here.
13378         (cgraph_finalize_function): Not here.
13379         (cgraph_analyze_function): Gimplify functions here.
13380         (cgraph_finalize_compilation_unit): Continue after errors.
13381         Optimize the callgraph from here.
13382         (cgraph_optimize): Make static.
13383         * langhooks.c (write_global_declarations): Finalize the CU.
13384         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
13385         (gimplify_function_tree): Assert we gimplify only once.
13386         Set PROP_gimple_any property.
13387         * tree-nested.c (gimplify_all_functions): New function.
13388         (lower_nested_functions): Gimplify all nested functions.
13389         * gimple.h (diagnose_omp_structured_block_errors): Remove.
13390         * passes.c (init_optimization_passes): Add pass_warn_unused_result
13391         and pass_diagnose_omp_blocks after gimplification.  Do not
13392         set TODO_set_props on all_lowering_passes.
13393         (execute_one_pass): Do not handle TODO_set_props.
13394         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
13395         (gimplify.o): Add tree-pass.h dependency.
13396         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
13397         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
13398         (unsave_r): Likewise.
13399         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
13400         temporary variable.
13401
13402 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
13403
13404         * doc/service.texi (Service): Restore previously removed link,
13405         which isn't broken after all.
13406
13407 2009-07-17  Richard Guenther  <rguenther@suse.de>
13408
13409         PR tree-optimization/40321
13410         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
13411         PHI nodes to the maximal set.
13412         (make_values_for_phi): Add PHI arguments to the maximal set.
13413         (execute_pre): Dump PHI_GEN and the maximal set.
13414
13415 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
13416
13417         PR c++/40780
13418         * gimplify.c (gimplify_conversion): Don't change non-conversions into
13419         VIEW_CONVERT_EXPR.
13420
13421 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
13422
13423         * doc/extend.texi (Nested Functions): Replace broken link with
13424         textual reference.
13425         * doc/service.texi (Service): Remove broken link.
13426
13427 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
13428
13429         PR bootstrap/40781
13430         * builtins.c (expand_builtin_memcmp): Use loc instead of
13431         EXPR_LOCATION (exp).
13432         (expand_builtin_strncmp): Likewise.
13433
13434 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
13435             Manuel López-Ibáñez  <manu@gcc.gnu.org>
13436
13437         PR 40435
13438         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
13439         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
13440         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
13441         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
13442         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
13443         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
13444         tree-inline.c, c-common.c, c-common.h, gimple.c,
13445         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
13446         convert.c: Add location argument to fold_{unary,binary,ternary},
13447         fold_build[123], build_call_expr, build_size_arg,
13448         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
13449         fold_build1_initializer, fold_build2_initializer,
13450         fold_build3_initializer, fold_build_call_array,
13451         fold_build_call_array_initializer, fold_single_bit_test,
13452         omit_one_operand, omit_two_operands, invert_truthvalue,
13453         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
13454         combine_comparisons, fold_builtin_*, fold_call_expr,
13455         build_range_check, maybe_fold_offset_to_address, round_up,
13456         round_down.
13457
13458 2009-07-16  Jason Merrill  <jason@redhat.com>
13459
13460         PR libstdc++/37907
13461         * c-common.c (c_common_reswords): Add __is_standard_layout
13462         and __is_trivial.
13463         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
13464         * doc/implement-cxx.texi: New.
13465         * doc/gcc.texi: Include it.
13466
13467 2009-07-16  DJ Delorie  <dj@redhat.com>
13468
13469         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
13470         compares that may be indirectly affected by previous instructions.
13471
13472 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13473
13474         * builtins.c (do_mpc_arg2): New.
13475         (fold_builtin_2): Fold builtin cpow.
13476         * real.h (HAVE_mpc_pow): New.
13477
13478 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
13479
13480         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
13481         comparison to skip unprofitable schedule
13482
13483 2009-07-16  Simon Baldwin  <simonb@google.com>
13484
13485         * gcc.c (option_map): New flag -no-canonical-prefixes.
13486         * (display_help): Print help text for new flag.
13487         * (process_command): Move options translation and language specifics
13488         and handle new flag early.  Use it to set a function pointer to a
13489         prefix builder.  Replace make_relative_prefix calls with calls to
13490         the function pointed to.  Ignore new flag in regular options handling.
13491         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
13492
13493 2009-07-15  DJ Delorie  <dj@redhat.com>
13494
13495         * config/mep/mep.md (sibcall_internal): Change register to avoid
13496         argument registers.
13497         (sibcall_value_internal): Likewise.
13498
13499 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
13500
13501         PR rtl-optimization/40710
13502         * resource.c (mark_target_live_regs): Reset DF problem to LR.
13503
13504 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
13505
13506         * config/mips/mips.md (*extenddi_truncate<mode>,
13507         *extendsi_truncate<mode>): Change type attribute to move_type
13508         with shift_shift.  Split out code handling exts from here ...
13509         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
13510         pattern.
13511         (*extendhi_truncateqi): Change type attribute to move_type with
13512         shift_shift.  Split out code handling exts from here ...
13513         (*extendhi_truncateqi_exts): ... to this new pattern.
13514
13515 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
13516
13517         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
13518         instead of "and" with inverted sign bit mask value.  Use
13519         "nonimmediate_operand" for operand 1 and operand 2 predicate.
13520         Allocate registers only for operand 4 and operand 5.
13521
13522 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
13523
13524         PR middle-end/40747
13525         * fold-const.c (fold_cond_expr_with_comparison): When folding
13526         < and <= to MIN, make sure the MIN uses the same type as the
13527         comparison's operands.
13528
13529 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
13530
13531         * arm.md (ior_xor): New code iterator.
13532         (split for ior/xor with shift and zero-extend): New split pattern.
13533         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
13534
13535 2009-07-15  Richard Guenther  <rguenther@suse.de>
13536
13537         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
13538         offset member.
13539
13540 2009-07-15  Richard Guenther  <rguenther@suse.de>
13541
13542         PR middle-end/40753
13543         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
13544
13545 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
13546
13547         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
13548         handle 2.6.30 kernel.
13549
13550 2009-07-15  DJ Delorie  <dj@redhat.com>
13551
13552         * config/mep/mep.md (sibcall_internal): Change register to allow
13553         for 24-bit addresses.
13554         (sibcall_value_internal): Likewise.
13555
13556 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
13557
13558         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
13559         that are enabled/disabled by the flags introduced by a previous patch.
13560
13561 2009-07-14  DJ Delorie  <dj@redhat.com>
13562
13563         * config/mep/mep.md (sibcall_internal): Include non-toggling
13564         non-jmp case.
13565         (sibcall_value_internal): Likewise.
13566
13567 2009-07-14  Taras Glek  <tglek@mozilla.com>
13568             Rafael Espindola  <espindola@google.com>
13569
13570         * doc/sourcebuild.texi: Document install-plugin target.
13571         * configure.ac: Added install-plugin target to language makefiles.
13572         * configure: Regenerate.
13573         * Makefile.in (install-plugin): Install more headers,
13574         depend on lang.install-plugin.
13575
13576 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13577
13578         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
13579         translation.
13580
13581 2009-07-14  DJ Delorie  <dj@redhat.com>
13582
13583         * config/mep/mep.c (mep_vliw_jmp_match): New function.
13584         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
13585         * config/mep/mep.md (sibcall_internal): Change test from
13586         mep_vliw_mode_match to mep_vliw_jmp_match.
13587         (sibcall_value_internal): Likewise.
13588
13589 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
13590
13591         * config/i386/sse.md (copysign<mode>3): New expander.
13592         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
13593         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
13594         Use ix86_build_const_vector.
13595         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
13596         IX86_BUILTIN_CPYSGNPD.
13597         (builtin_description): Add __builtin_ia32_copysignps and
13598         __builtin_ia32_copysignpd.
13599         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
13600         and BUILT_IN_COPYSIGNF.
13601
13602 2009-07-13  Jason Merrill  <jason@redhat.com>
13603
13604         * builtins.c (can_trust_pointer_alignment): New fn.
13605         (get_pointer_alignment): Factor it out from here.
13606         * tree.h: Declare it.
13607
13608 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
13609
13610         * config/rs6000/predicates.md (offsettable_mem_operand): Test
13611         RTX_AUTOINC class.
13612
13613 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
13614
13615         PR debug/40705
13616         PR c++/403057
13617         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
13618
13619 2009-07-14  Richard Guenther  <rguenther@suse.de>
13620             Andrey Belevantsev <abel@ispras.ru>
13621
13622         PR middle-end/40745
13623         * cfgexpand.c (partition_stack_vars): Do not bother to update
13624         alias information when not optimizing.
13625
13626 2009-07-14  Richard Guenther  <rguenther@suse.de>
13627             Andrey Belevantsev <abel@ispras.ru>
13628
13629         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
13630         (pt_solution_set): Likewise.
13631         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
13632         * tree-ssa-structalias.c (pt_solution_set): New function.
13633         * final.c (rest_of_clean_state): Free SSA data structures.
13634         * print-rtl.c (print_decl_name): Remove.
13635         (print_mem_expr): Implement in terms of print_generic_expr.
13636         * alias.c (ao_ref_from_mem): New function.
13637         (rtx_refs_may_alias_p): Likewise.
13638         (true_dependence): Query alias-export info.
13639         (canon_true_dependence): Likewise.
13640         (write_dependence_p): Likewise.
13641         * tree-dfa.c (get_ref_base_and_extent): For void types leave
13642         size unknown.
13643         * emit-rtl.c (component_ref_for_mem_expr): Remove.
13644         (mem_expr_equal_p): Use operand_equal_p.
13645         (set_mem_attributes_minus_bitpos): Do not use
13646         component_ref_for_mem_expr.
13647         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
13648         (update_alias_info_with_stack_vars): Likewise.
13649         (partition_stack_vars): Call update_alias_info_with_stack_vars.
13650         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
13651         explicitly nor clear stmt operands.
13652         Free the decl-to-pointer map.
13653         * tree-optimize.c (execute_free_datastructures): Do not free
13654         SSA data structures here.
13655         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
13656         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
13657         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
13658         dependencies.
13659         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
13660
13661 2009-07-13  DJ Delorie  <dj@redhat.com>
13662
13663         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
13664         unrolling at the right iteration count.
13665
13666         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
13667         calculations.
13668
13669 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
13670
13671         * haifa-sched.c (rank_for_schedule): Introduced flags to
13672         enable/disable individual scheduling heuristics.
13673         * common.opt: Introduced flags to enable/disable individual
13674         heuristics in the scheduler.
13675         * doc/invoke.texi: Introduced flags to enable/disable individual
13676         heuristics in the scheduler.
13677
13678 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
13679
13680         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
13681         config/i386/mingw-tls.c.
13682         * config/i386/mingw-tls.c: Removed.
13683
13684 2009-07-13  Ira Rosen  <irar@il.ibm.com>
13685
13686         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
13687         checks access only relevant statements.
13688         (vectorizable_reduction): Likewise.
13689
13690 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
13691
13692         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
13693         just for 32-bit case.
13694
13695 2009-07-12  Jan Hubicka  <jh@suse.cz>
13696
13697         PR tree-optimization/40585
13698         * except.c (expand_resx_expr): When there already is resume
13699         instruction, produce linked list.
13700         (build_post_landing_pads): Assert that resume is empty.
13701         (connect_post_landing_pads): Handle resume lists.
13702         (dump_eh_tree): Dump resume list.
13703
13704 2009-07-12  Ira Rosen  <irar@il.ibm.com>
13705
13706         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
13707         with additional argument.
13708         * tree-vectorizer.h (enum vect_def_type): Add
13709         vect_double_reduction_def.
13710         (vect_is_simple_reduction): Add argument.
13711         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
13712         indentation.
13713         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
13714         vect_is_simple_reduction with additional argument.
13715         (vect_analyze_loop_operations): Handle exit phi nodes in case of
13716         double reduction.
13717         (reduction_code_for_scalar_code): Handle additional codes by
13718         returning ERROR_MARK for them. Fix comment and indentation.
13719         (vect_is_simple_reduction): Fix comment, add argument to specify
13720         double reduction. Detect double reduction.
13721         (get_initial_def_for_induction): Fix indentation.
13722         (get_initial_def_for_reduction): Fix comment and indentation.
13723         Handle double reduction. Create initial definitions that do not
13724         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
13725         (vect_create_epilog_for_reduction): Fix comment, add argument to
13726         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
13727         epilogue result extraction. Create double reduction phi node and
13728         replace relevant uses.
13729         (vectorizable_reduction): Call vect_is_simple_reduction with
13730         additional argument. Fix indentation. Update epilogue code treatment
13731         according to the changes in reduction_code_for_scalar_code. Check
13732         for double reduction. Call vect_create_epilog_for_reduction with
13733         additional argument.
13734         * tree-vect-stmts.c (process_use): Handle double reduction, update
13735         documentation.
13736         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
13737         (vect_get_vec_def_for_operand): Likewise.
13738
13739 2009-07-12  Danny Smith  <dansmister@gmail.com>
13740
13741         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
13742         dllexport if !TREE_PUBLIC.
13743         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
13744
13745 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
13746
13747         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
13748         (avr_extra_arch_macro) Remove declatation.
13749         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
13750         (avr_extra_arch_macro) Declare as static.
13751         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
13752
13753 2009-07-11  Jan Hubicka  <jh@suse.cz>
13754
13755         PR middle-end/48388
13756         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
13757
13758 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
13759
13760         PR debug/40713
13761         * dwarf2out.c (dw_fde_struct): Add in_std_section and
13762         cold_in_std_section bits.
13763         (dwarf2out_begin_prologue): Initialize them.
13764         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
13765         if already covered by text_section or cold_text_section range.
13766
13767         PR rtl-optimization/40667
13768         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
13769         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
13770         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
13771         * config/i386/i386.c (ix86_minimum_alignment): New function.
13772         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
13773         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
13774         * emit-rtl.c (gen_reg_rtx): Likewise.
13775         * function.c (assign_parms): Likewise.  If nominal_type needs
13776         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
13777         rather than passed_type's alignment.
13778
13779         PR target/40668
13780         * function.c (assign_parm_setup_stack): Adjust
13781         MEM_OFFSET (data->stack_parm) if promoted_mode is different
13782         from nominal_mode on big endian.
13783
13784 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
13785
13786         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
13787
13788 2009-07-10  DJ Delorie  <dj@redhat.com>
13789
13790         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
13791
13792 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
13793
13794         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
13795         attribute.
13796         (thumb2_cbnz): Likewise.
13797
13798 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
13799
13800         PR target/39079
13801         * config.gcc (supported_defaults): Add synci.
13802         (with_synci): Add validation.
13803         (all_defaults): Add synci.
13804         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
13805         ISA_HAS_SYNCI.
13806         (synci): Same.
13807         * config/mips/mips.opt (msynci): New option.
13808         * config/mips/mips.c (mips_override_options): Warn on use of
13809         -msynci for targets that do now support it.
13810         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
13811         msynci.
13812         * gcc/doc/invoke.texi (-msynci): Document the new option.
13813         * doc/install.texi (--with-synci): Document the new option.
13814
13815 2009-07-10  Richard Guenther  <rguenther@suse.de>
13816
13817         PR tree-optimization/40496
13818         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
13819         the PHI result with a compatible type.
13820
13821 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13822
13823         PR 25509
13824         PR 40614
13825         * c.opt (Wunused-result): New.
13826         * doc/invoke.texi: Document it.
13827         * c-common.c (c_warn_unused_result): Use it.
13828
13829 2009-07-09  DJ Delorie  <dj@redhat.com>
13830
13831         * targhooks.c (default_target_can_inline_p): Rename from
13832         default_target_option_can_inline_p.
13833         * targhooks.h (default_target_can_inline_p): Likewise.
13834         * target-def.h (TARGET_CAN_INLINE_P): Rename from
13835         TARGET_OPTION_CAN_INLINE_P.
13836         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
13837         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
13838         (mep_target_can_inline_p): Rename from
13839         mep_target_option_can_inline_p.
13840
13841         PR target/40626
13842         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
13843         registers used to pass vectors.
13844
13845         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
13846
13847 2009-07-09  Tom Tromey  <tromey@redhat.com>
13848
13849         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
13850         * config/mmix/mmix.c: Include dwarf2.h.
13851         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
13852         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
13853         * config/sh/sh.c: Include dwarf2.h.
13854         * config/i386/i386.c: Include dwarf2.h.
13855         * Makefile.in (DWARF2_H): Remove 'elf'.
13856         * except.c: Include dwarf2.h.
13857         * unwind-dw2.c: Include dwarf2.h.
13858         * dwarf2out.c: Include dwarf2.h.
13859         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
13860         * unwind-dw2-fde.c: Include dwarf2.h.
13861         * dwarf2asm.c: Include dwarf2.h.
13862
13863 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
13864
13865         * haifa-sched.c (insn_finishes_cycle_p): New static function.
13866         (max_issue): Use it.
13867         * sched-int.h (struct sched_info: insn_finishes_block_p): New
13868         scheduler hook.
13869         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
13870         (region_sched_info): Update.
13871         * sched-ebb.c (ebb_sched_info): Update.
13872         * modulo-sched.c (sms_sched_info): Update.
13873         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
13874
13875 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
13876
13877         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
13878
13879 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
13880
13881         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
13882
13883 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
13884
13885         PR middle-end/40692
13886         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
13887         arg1 with arg01 if arg1 is already INTEGER_CST.
13888
13889 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
13890
13891         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
13892         Transform (and (truncate)) into (truncate (and)).
13893
13894 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
13895
13896         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
13897         creating LHS paradoxical subregs.  Fix surrounding returns to
13898         use NULL_RTX rather than 0.
13899
13900 2009-07-08  DJ Delorie  <dj@redhat.com>
13901
13902         * config/mep/mep.c (mep_option_can_inline_p): New.
13903         (TARGET_OPTION_CAN_INLINE_P): Define.
13904
13905 2009-07-08  Mark Wielaard  <mjw@redhat.com>
13906
13907         PR debug/40659
13908         * dwarf2out.c (add_data_member_location_attribute): When we have
13909         only a constant offset don't emit a new location description using
13910         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
13911         dwarf_version > 2.
13912
13913 2009-07-08  Richard Henderson  <rth@redhat.com>
13914
13915         PR target/38900
13916         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
13917         (enum reg_class): Add CLOBBERED_REGS.
13918         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
13919         * config/i386/i386.c (ix86_conditional_register_usage): Moved
13920         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
13921         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
13922         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
13923         force 64-bit sibcalls into R11.
13924         * config/i386/constraints.md (U): New constraint.
13925         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
13926         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
13927         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
13928
13929 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
13930
13931         * basic-block.h (dump_regset, debug_regset): Remove duplicate
13932         prototypes.
13933         * c-objc-common.h (c_initialize_diagnostics): Ditto.
13934         * ebitmap.h (dump_ebitmap): Ditto.
13935         * optabs.h (optab_libfunc): Ditto.
13936         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
13937         * tree-flow.h (vect_can_force_dr_alignment_p,
13938         get_vectype_for_scalar_type): Ditto.
13939         (vectorize_loops): Move prototype to ...
13940         * tree-vectorizer.h: ... here. Also, adjust comment.
13941         (vect_set_verbosity_level): Remove duplicate prototype.
13942         * tree-ssa-loop.c: Include tree-vectorizer.h.
13943         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
13944
13945 2009-07-08  Nick Clifton  <nickc@redhat.com>
13946
13947         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
13948         forward slash.
13949
13950 2009-07-08  DJ Delorie  <dj@redhat.com>
13951
13952         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
13953         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
13954         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
13955         written to.
13956         * config/mep/intrinsics.md: Regenerated.
13957         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
13958         registers when asm() or calls are detected.
13959
13960 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13961
13962         PR c++/31246
13963         * gimplify.c (gimplify_expr): Propagate no_warning flag when
13964         gimplifying.
13965         * gimple (gimple_build_call_from_tree): Likewise.
13966         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
13967         no_warning flag before warning.
13968
13969 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13970
13971         * tree.c (set_expr_locus): Remove.
13972         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
13973         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
13974         EXPR_LOCATION.
13975         * gimplify.c (internal_get_tmp_var): Likewise.
13976         (gimplify_call_expr): Likewise.
13977         (gimplify_one_sizepos): Likewise.
13978
13979 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
13980
13981         PR debug/40666
13982         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
13983         to variables for debugging purposes.
13984
13985 2009-06-23  Mark Loeser  <mark@halcy0n.com>
13986
13987         PR build/40010
13988         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
13989
13990 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13991
13992         * pretty-print.c (pp_base_format): Remove %J.
13993         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
13994         gcc_cxxdiag_char_table): Likewise.
13995         (init_dynamic_diag_info): Likewise.
13996
13997 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13998
13999         * pretty-print.c (pp_base_format): Remove %H.
14000         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
14001         gcc_cxxdiag_char_table): Likewise.
14002         (init_dynamic_diag_info): Likewise.
14003         * config/mep/mep.c (mep_select_section): Likewise.
14004
14005 2009-07-07  Duncan Sands  <baldrick@free.fr>
14006
14007         * final.c (pass_clean_state): Give the pass a name.
14008         * passes.c (pass_rest_of_compilation): Likewise.
14009         * tree-optimize.c (pass_all_optimizations): Likewise.
14010
14011 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
14012
14013         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
14014         an extra 'decl' for error_at.
14015
14016 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
14017
14018         PR middle-end/40669
14019         * tree-tailcall.c (adjust_return_value_with_ops,
14020         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
14021         if it has complex or vector type.
14022
14023 2009-07-07  Olivier Hainque  <hainque@adacore.com>
14024
14025         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
14026         pthread symbols.
14027
14028 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
14029
14030         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
14031
14032 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14033
14034         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
14035         * c-decl.c: Likewise.
14036         * function.c: Likewise.
14037         * varasm.c: Likewise.
14038         * tree-ssa.c: Likewise.
14039         * c-common.c: Likewise.
14040         * tree-cfg.c: Likewise.
14041         * config/spu/spu.c: Likewise.
14042         * config/ia64/ia64.c: Likewise.
14043         * config/v850/v850.c: Likewise.
14044
14045 2009-07-06  DJ Delorie  <dj@redhat.com>
14046
14047         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
14048         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
14049         unspecified accesses to control registers.
14050         * config/mep/intrinsics.md: Regenerate.
14051         * config/mep/intrinsics.h: Regenerate.
14052         * config/mep/mep-intrin.h: Regenerate.
14053
14054 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14055
14056         * c-lex.c: Replace %H by an explicit location. Update all calls.
14057         * c-common.c: Likewise.
14058         * c-decl.c: Likewise.
14059         * c-typeck.c: Likewise.
14060         * fold-const.c: Likewise.
14061         * gimplify.c: Likewise.
14062         * stmt.c: Likewise.
14063         * tree-cfg.c: Likewise.
14064         * tree-ssa-loop-niter.c: Likewise.
14065         * tree-vrp.c: Likewise.
14066         * value-prof.c: Likewise.
14067
14068 2009-07-06  Diego Novillo  <dnovillo@google.com>
14069
14070         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
14071         if it has one.  Handle cases where VAR does not have an
14072         annotation or cfun is NULL.
14073
14074 2009-07-06  Diego Novillo  <dnovillo@google.com>
14075
14076         * tree.c: Include debug.h.
14077         (initialize_tree_contains_struct): New.
14078         (init_ttree): Call it.
14079         (tree_node_structure_for_code): Factor out of ...
14080         (tree_node_structure): ... here.
14081         * treestruct.def (TS_PHI_NODE): Remove.
14082         (TS_GIMPLE_STATEMENT): Remove.
14083
14084 2009-07-06  Diego Novillo  <dnovillo@google.com>
14085
14086         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
14087         (debug_tree_chain): Handle cycles.
14088
14089 2009-07-06  Nick Clifton  <nickc@redhat.com>
14090             DJ Delorie  <dj@redhat.com>
14091
14092         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
14093         __FMOVD_ENABLED__ is defined.
14094         * config/sh/sh.h
14095         (TARGET_FMOVD): Provide a default definition.
14096         (MASK_FMOVD): Likewise.
14097         (TARGET_CPU_CPP_BUILTINS): Define
14098         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
14099         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
14100         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
14101         (split for DF load from memory into register): Also handle
14102         MEMs which consist of REG+DISP addressing.
14103         (split for DF store from register to memory): Likewise.
14104         (movsf_ie): Always use single fp_mode.
14105         * config/sh/sh.c (sh_override_options): Do not automatically
14106         enable TARGET_MOVD for the SH2A when supporting doubles - leave
14107         that to the -mfmovd command line switch.
14108         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
14109         (fldi_ok): Always allow.
14110         * config/sh/sh.opt (mfmovd): Remove this switch.
14111         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
14112
14113 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
14114             Kaz Kojima  <kkojima@gcc.gnu.org>
14115
14116         PR rtl-optimization/30807
14117         * postreload.c (reload_combine): For every new use of REG_SUM,
14118         record the use of BASE.
14119
14120 2009-07-06  Jan Hubicka  <jh@suse.cz>
14121
14122         * params.def: Revert my accidental commit at 2009-06-30.
14123
14124 2009-07-04  Ian Lance Taylor  <iant@google.com>
14125
14126         PR target/40636
14127         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
14128         EXPORTED_CONST.
14129         (mingw_format_attribute_overrides): Likewise.
14130
14131 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
14132
14133         PR debug/40596
14134         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
14135         don't check cfa.reg.  Instead of cfa.indirect use
14136         fde && fde->drap_reg != INVALID_REGNUM test.
14137
14138 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
14139
14140         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
14141
14142 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
14143
14144         PR target/40587
14145         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
14146
14147 2009-07-03  Richard Guenther  <rguenther@suse.de>
14148
14149         PR tree-optimization/40640
14150         * tree-switch-conversion.c (build_arrays): Perform arithmetic
14151         in original type.
14152
14153 2009-07-03  Jan Hubicka  <jh@suse.cz>
14154
14155         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
14156         for size, reduce amount of inlining.
14157
14158 2009-07-03  Richard Guenther  <rguenther@suse.de>
14159
14160         PR middle-end/34163
14161         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
14162         if t +- x is known to not overflow and the conversion widens the
14163         operation.
14164         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
14165
14166 2009-07-03  Jan Hubicka  <jh@suse.cz>
14167
14168         * ipa-pure-const.c (analyze): Update loop optimizer init.
14169         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
14170         try_remove_empty_loop, remove_empty_loops): Remove.
14171         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
14172         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
14173         to mark regular loops as neccesary.
14174         (degenerate_phi_p): New function.
14175         (propagate_necessity, remove_dead_phis): Use it.
14176         (forward_edge_to_pdom): Likewise.
14177         (eliminate_unnecessary_stmts): Take care to remove uses of results of
14178         virtual PHI nodes that became unreachable.
14179         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
14180         * tree-flow.h (remove_empty_loops): Remove.
14181         * passes.c (init_optimization_passes): Remove.
14182
14183 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
14184
14185         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
14186         can_create_pseudo_p.
14187         (*fix_trunc<mode>_i387_1): Ditto.
14188         (*floathi<mode>2_1): Ditto.
14189         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
14190         (*fistdi2_1): Ditto.
14191         (*fist<mode>2_1): Ditto.
14192         (frndintxf2_floor): Ditto.
14193         (*fist<mode>2_floor_1): Ditto.
14194         (frndintxf2_ceil): Ditto.
14195         (*fist<mode>2_ceil_1): Ditto.
14196         (frndintxf2_trunc): Ditto.
14197         (frndintxf2_mask_pm): Ditto.
14198         (fxam<mode>2_i387_with_temp): Ditto.
14199         * config/i386/sse.md (mulv16qi3): Ditto.
14200         (*sse2_mulv4si3): Ditto.
14201         (mulv2di3): Ditto.
14202         (sse4_2_pcmpestr): Ditto.
14203         (sse4_2_pcmpistr): Ditto.
14204
14205 2009-07-03  Jan Hubicka  <jh@suse.cz>
14206
14207         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
14208         (mark_stmt_necessary): Set it.
14209         (mark_operand_necessary): Set it.
14210         (mark_control_dependent_edges_necessary): Set it.
14211         (mark_virtual_phi_result_for_renaming): New function.
14212         (get_live_post_dom): New function.
14213         (forward_edge_to_pdom): New function.
14214         (remove_dead_stmt): Fix handling of control dependences.
14215         (tree_dce_init): Init new bitmap.
14216         (tree_dce_done): Free it.
14217
14218 2009-07-02  Richard Guenther  <rguenther@suse.de>
14219
14220         PR bootstrap/40617
14221         * tree-ssa-structalias.c (new_var_info): Initialize
14222         is_restrict_var.
14223
14224 2009-07-02  Jan Hubicka  <jh@suse.cz>
14225
14226         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
14227         local.
14228
14229 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
14230
14231         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
14232         instead of recomputing it.  Adjust calls.
14233         (emit_store_flag): Adjust recursive calls.
14234
14235 2009-07-02  Richard Guenther  <rguenther@suse.de>
14236
14237         * tree-ssa-live.c (remove_unused_locals): Do not remove
14238         heap variables.
14239         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
14240         of DECL_EXTERNAL for HEAP variables.
14241         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
14242         HEAP variables.  Do not adjust RESTRICT vars.
14243         (find_what_var_points_to): Nobody cares if something
14244         points to READONLY.
14245
14246 2009-07-02  Ben Elliston  <bje@au.ibm.com>
14247
14248         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
14249         pc_low and pc_high declarations to the top of the function.
14250
14251 2009-07-01  DJ Delorie  <dj@redhat.com>
14252
14253         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
14254         registers as fixed.
14255         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
14256         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
14257         unspecified accesses to control registers.
14258         * config/mep/intrinsics.md: Regenerate.
14259         * config/mep/intrinsics.h: Regenerate.
14260         * config/mep/mep-intrin.h: Regenerate.
14261
14262 2009-07-01  Anthony Green  <green@moxielogic.com>
14263
14264         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
14265         instruction when possible.
14266         (moxie_expand_prologue): Ditto.  Also, save an instruction and
14267         some complexity by popping off of $r12 instead of $sp.
14268         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
14269         operands.
14270
14271 2009-07-01  Richard Henderson  <rth@redhat.com>
14272
14273         PR bootstrap/40347
14274         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
14275         contained no insns, reposition note before last insn.
14276
14277 2009-07-01  Richard Henderson  <rth@redhat.com>
14278
14279         PR debug/40431
14280         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
14281         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
14282
14283 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
14284
14285         PR bootstrap/40558
14286         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
14287         darwin9 for printing reg addresses with %y.
14288
14289 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
14290
14291         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
14292         truncation from operands in binary operations.
14293
14294 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
14295
14296         Revert:
14297         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
14298         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
14299         subreg of op0 to the original op0.
14300
14301         * expmed.c (store_bit_field_1): Use a temporary as the destination
14302         instead of a paradoxical subreg when we need to truncate the result.
14303
14304 2009-07-01  DJ Delorie  <dj@redhat.com>
14305
14306         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
14307         names to VLIW variants.
14308         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
14309         * config/mep/intrinsics.md: Regenerate.
14310         * config/mep/intrinsics.h: Regenerate.
14311         * config/mep/mep-intrin.h: Regenerate.
14312
14313 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
14314
14315         PR debug/40462
14316         * jump.c (returnjump_p): Revert last patch.
14317         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
14318
14319 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14320
14321         PR target/40575
14322         * pa.md (casesi32p): Use jump table label to determine the offset
14323         of the jump table.
14324         (casesi64p): Likewise.
14325
14326         * pa.c (forward_branch_p): Return bool type.  Use instruction
14327         addresses when available.  Assert that INSN has a jump label.
14328         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
14329         have a jump label.
14330
14331 2009-07-01  Richard Guenther  <rguenther@suse.de>
14332
14333         PR tree-optimization/19831
14334         * tree-ssa-dce.c (propagate_necessity): Calls to functions
14335         that only act as barriers do not make any previous stores necessary.
14336         * tree-ssa-structalias.c (handle_lhs_call): Delay making
14337         HEAP variables global, do not add a constraint from nonlocal.
14338         (find_func_aliases): Handle escapes through return statements.
14339         (compute_points_to_sets): Make escaped HEAP variables global.
14340
14341 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
14342
14343         PR bootstrap/40597
14344         * expmed.c (emit_store_flag): Perform a conversion if necessary,
14345         after reducing a DImode cstore to SImode.
14346
14347 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
14348
14349         * expr.c (expand_expr_real_1): Reinstate fallthrough to
14350         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
14351
14352 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
14353
14354         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
14355         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
14356         to 0.
14357         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
14358         and umod_optab if TARGET_BSD_DIVMOD.
14359         * config/vax/lib1funcs.asm: New file.
14360         * config/vax/t-linux: New file.
14361         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
14362
14363 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
14364
14365         PR c++/40566
14366         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
14367         to type arguments that have void type.
14368
14369         PR debug/40573
14370         * dwarf2out.c (gen_formal_parameter_die): Call
14371         equate_decl_number_to_die if node is different from origin.
14372
14373 2009-06-30  Anthony Green  <green@moxielogic.com>
14374
14375         Clean up moxie port for --enable-build-with-cxx.
14376         * config/moxie/moxie.c (moxie_function_value): First two
14377         parameters are const_tree, not tree.
14378         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
14379         (REG_CLASS_NAMES): Ditto.
14380         (REGNO_REG_CLASS): Ditto.
14381         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
14382         (moxie_function_value): Fix constyness of arguments.
14383
14384 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
14385
14386         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
14387         finalize_size_functions before further processing.
14388         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
14389         (variable_size): Call self_referential_size on size expressions
14390         that contain a PLACEHOLDER_EXPR.
14391         (size_functions): New static variable.
14392         (copy_self_referential_tree_r): New static function.
14393         (self_referential_size): Likewise.
14394         (finalize_size_functions): New global function.
14395         * tree.c: Include tree-inline.h.
14396         (push_without_duplicates): New static function.
14397         (find_placeholder_in_expr): New global function.
14398         (substitute_in_expr) <tcc_declaration>: Return the replacement object
14399         on equality.
14400         <tcc_expression>: Likewise.
14401         <tcc_vl_exp>: If the replacement object is a constant, try to inline
14402         the call in the expression.
14403         * tree.h (finalize_size_functions): Declare.
14404         (find_placeholder_in_expr): Likewise.
14405         (FIND_PLACEHOLDER_IN_EXPR): New macro.
14406         (substitute_placeholder_in_expr): Update comment.
14407         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
14408         is true.
14409         (copy_tree_body_r): Likewise.
14410         (copy_tree_body): New static function.
14411         (maybe_inline_call_in_expr): New global function.
14412         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
14413         (maybe_inline_call_in_expr): Declare.
14414         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
14415         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
14416         GIMPLE_H.
14417
14418 2009-06-30  Richard Guenther  <rguenther@suse.de>
14419
14420         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
14421         continue walking.
14422         (propagate_necessity): Do not mark reaching defs of stores
14423         as necessary.
14424
14425 2009-06-30  Jan Hubicka  <jh@suse.cz>
14426
14427         * cfgloopanal.c (check_irred): Move into ...
14428         (mark_irreducible_loops): ... here; return true if ireducible
14429         loops was found.
14430         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
14431         (analyze_function): Try to prove loop finiteness.
14432         * cfgloop.h (mark_irreducible_loops): Update prototype.
14433         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
14434
14435 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
14436
14437         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
14438
14439 2009-06-30  Ira Rosen  <irar@il.ibm.com>
14440
14441         PR tree-optimization/40542
14442         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
14443         types.
14444
14445 2009-06-30  Martin Jambor  <mjambor@suse.cz>
14446
14447         PR tree-optimization/40582
14448         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
14449         than useless_type_conversion_p.
14450         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
14451         proper place.
14452
14453 2009-06-30  Martin Jambor  <mjambor@suse.cz>
14454
14455         PR middle-end/40554
14456         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
14457
14458 2009-06-30  Richard Guenther  <rguenther@suse.de>
14459
14460         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
14461         use ao_ref references.
14462         (walk_aliased_vdefs): Likewise.
14463         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
14464         * tree-ssa-dce.c (struct ref_data): Remove.
14465         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
14466         (mark_aliased_reaching_defs_necessary): Adjust.
14467         (mark_all_reaching_defs_necessary_1): Likewise.
14468
14469 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
14470
14471         PR boostrap/40597
14472         * expmed.c (emit_cstore): New name of emit_store_flag_1.
14473         (emit_store_flag_1): Extract from emit_store_flag, adjust
14474         calls to (what now is) emit_cstore.
14475         (emit_store_flag): Call emit_store_flag_1 and also use it
14476         for what used to be recursive calls.
14477
14478 2009-06-30  Wei Guozhi  <carrot@google.com>
14479
14480         PR/40416
14481         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
14482         if the target bb post dominates from bb.
14483         * config/i386/i386.c (memory_address_length): Check existence of base
14484         register before using it.
14485
14486 2009-06-30  Nick Clifton  <nickc@redhat.com>
14487             DJ Delorie  <dj@redhat.com>
14488
14489         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
14490         __FMOVD_ENABLED__ is defined.
14491         * config/sh/sh.h
14492         (TARGET_FMOVD): Provide a default definition.
14493         (MASK_FMOVD): Likewise.
14494         (TARGET_CPU_CPP_BUILTINS): Define
14495         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
14496         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
14497         two fmov instructions depending upon whether TARGET_FMOVD is
14498         enabled.
14499         (split for DF load from memory into register): Also handle
14500         MEMs which consist of REG+DISP addressing.
14501         (split for DF store from register to memory): Likewise.
14502         * config/sh/sh.opt (mfmovd): Remove this switch.
14503         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
14504         * config/sh/sh.c (sh_override_options): Do not automatically
14505         enable TARGET_MOVD for the SH2A when supporting doubles - leave
14506         that to the -mfmovd command line switch.
14507
14508         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
14509         the SH4 and SH4A.
14510         (fldi_ok): Always allow.
14511         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
14512
14513 2009-06-29  DJ Delorie  <dj@redhat.com>
14514
14515         * doc/install.texi (mep-x-elf): Correct chip's full name.
14516
14517 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
14518
14519         * doc/extend.texi: Fix typo.
14520
14521 2009-06-29  Tom Tromey  <tromey@redhat.com>
14522
14523         * dwarf2.h: Remove.
14524         * Makefile.in (DWARF2_H): New variable.
14525         (except.o): Use it.
14526         (dwarf2out.o): Likewise.
14527         (dwarf2asm.o): Likewise.
14528         * config/i386/t-i386: Use DWARF2_H.
14529         * except.c: Include elf/dwarf2.h.
14530         * unwind-dw2.c: Include elf/dwarf2.h.
14531         * dwarf2out.c: Include elf/dwarf2.h.
14532         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
14533         <dtprel>: New field.
14534         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
14535         (size_of_loc_descr): Likewise.
14536         (output_loc_operands_raw): Likewise.
14537         (output_loc_operands): Handle new dtprel field.
14538         (loc_checksum): Update.
14539         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
14540         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
14541         * unwind-dw2-fde.c: Include elf/dwarf2.h.
14542         * dwarf2asm.c: Include elf/dwarf2.h.
14543         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
14544         * config/mmix/mmix.c: Include elf/dwarf2.h.
14545         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
14546         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
14547         * config/sh/sh.c: Include elf/dwarf2.h.
14548         * config/i386/i386.c: Include elf/dwarf2.h.
14549
14550 2009-06-29  DJ Delorie  <dj@redhat.com>
14551
14552         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
14553
14554         * doc/extend.texi: Add MeP attributes and pragmas.
14555         * doc/invoke.text: Add MeP Options.
14556         * doc/contrib.texi: Add MeP contribution.
14557         * doc/md.texi: Add MeP constraints.
14558         * doc/install.texi: Add MeP target.
14559
14560 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
14561
14562         * target.h (struct gcc_target): Add frame_pointer_required field.
14563         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
14564         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
14565         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
14566         hook.
14567         * reload1.c (update_eliminables): (Ditto.).
14568         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
14569         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
14570         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
14571
14572         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
14573
14574         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
14575         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14576         (arm_frame_pointer_required): New function.
14577
14578         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
14579         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14580         (avr_frame_pointer_required_p): Declare as static.
14581         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
14582
14583         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
14584         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14585         (bfin_frame_pointer_required): Make as static, change return type
14586         to bool.
14587         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
14588
14589         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
14590         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14591         (cris_frame_pointer_required): New function.
14592
14593         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
14594
14595         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
14596         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14597         (fr30_frame_pointer_required): New function.
14598
14599         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
14600         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14601         (frv_frame_pointer_required): Make as static, change return type
14602         to bool.
14603         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
14604
14605         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
14606         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14607         (ix86_frame_pointer_required): Make as static, change return type to
14608         bool.
14609         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
14610
14611         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
14612         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14613
14614         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
14615
14616         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
14617
14618         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
14619
14620         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
14621         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14622         (mips_frame_pointer_required): Make as static.
14623         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
14624
14625         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
14626         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14627         (mmix_frame_pointer_required): Mew function.
14628
14629         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
14630         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14631
14632         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
14633
14634         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
14635
14636         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
14637
14638         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
14639         (CAN_ELIMINATE): Redefine.
14640         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14641         (sparc_frame_pointer_required): New function.
14642         (sparc_can_eliminate): New function.
14643         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
14644
14645         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
14646         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14647
14648         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
14649         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14650         (xtensa_frame_pointer_required): Make as static, change return type
14651         to bool.
14652         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
14653         Remove.
14654
14655 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
14656
14657         * doc/plugins.texi: Document PLUGIN_START_UNIT.
14658         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
14659         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
14660         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
14661         (register_callback): Handle PLUGIN_START_UNIT.
14662         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
14663
14664 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
14665
14666         * tree.c (process_call_operands): Propagate TREE_READONLY from the
14667         operands.
14668         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
14669         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
14670
14671 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
14672
14673         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
14674         move cost.
14675
14676 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
14677
14678         * doc/extend.texi (Additional Floating Types): __float128 is also
14679         supported on i386 targets.
14680
14681 2009-06-29  Richard Guenther  <rguenther@suse.de>
14682
14683         PR middle-end/14187
14684         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
14685         flag.
14686         (pt_solutions_same_restrict_base): Declare.
14687         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
14688         flag.
14689         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
14690         (make_constraint_from, make_copy_constraint): Move earlier.
14691         (make_constraint_from_heapvar): New function.
14692         (make_constraint_from_restrict): Likewise.
14693         (handle_lhs_call): Use it.
14694         (find_func_aliases): Use it to track conversions to restrict
14695         qualified pointers.
14696         (struct fieldoff): Add only_restrict_pointers flag.
14697         (push_fields_onto_fieldstack): Initialize it.
14698         (create_variable_info_for): Track global restrict qualified pointers.
14699         (intra_create_variable_infos): Use make_constraint_from_heapvar.
14700         Track restrict qualified pointer arguments.
14701         (set_uids_in_ptset): Use varinfo is_global_var flag.
14702         (find_what_var_points_to): Set the vars_contains_restrict flag.
14703         Always create the points-to solution for sets including restrict tags.
14704         (pt_solutions_same_restrict_base): New function.
14705         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
14706         qualified pointers use pt_solutions_same_restrict_base as
14707         additional source for disambiguation.
14708
14709 2009-06-29  Richard Guenther  <rguenther@suse.de>
14710
14711         PR middle-end/38212
14712         * alias.c (find_base_decl): Remove.
14713         (get_deref_alias_set_1): Remove restrict handling.
14714         * c-common.c (c_apply_type_quals_to_decl): Do not set
14715         DECL_POINTER_ALIAS_SET.
14716         * gimplify.c (find_single_pointer_decl_1): Remove.
14717         (find_single_pointer_decl): Likewise.
14718         (internal_get_tmp_var): Remove restrict handling.
14719         (gimple_regimplify_operands): Likewise.
14720         * omp-low.c (expand_omp_atomic_pipeline): Do not set
14721         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
14722         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
14723         * tree.c (restrict_base_for_decl): Remove.
14724         (init_ttree): Do not allocate it.
14725         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
14726         LABEL_DECL_UID for label decls.
14727         (copy_node_stat): Do not copy restrict information.
14728         (decl_restrict_base_lookup): Remove.
14729         (decl_restrict_base_insert): Likewise.
14730         (print_restrict_base_statistics): Likewise.
14731         (dump_tree_statistics): Do not call print_restrict_base_statistics.
14732         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
14733         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
14734         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
14735         (LABEL_DECL_UID): Adjust.
14736         (DECL_BASED_ON_RESTRICT_P): Remove.
14737         (DECL_GET_RESTRICT_BASE): Likewise.
14738         (SET_DECL_RESTRICT_BASE): Likewise.
14739         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
14740
14741         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
14742         instead of DECL_POINTER_ALIAS_SET.
14743         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
14744         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
14745         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
14746
14747 2009-06-29  Richard Guenther  <rguenther@suse.de>
14748
14749         PR tree-optimization/40579
14750         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
14751         the IL to simplify has constants that overflowed.
14752
14753 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
14754
14755         PR tree-optimization/40550
14756         * tree-vect-generic.c (expand_vector_operations_1): Compute in
14757         vector_compute_type only when the size of vector_compute_type is
14758         less than the size of type.
14759
14760 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
14761
14762         * fold-const.c (contains_label_1): Fix comments.
14763         (contains_label_p): Do not walk trees multiple time.
14764
14765 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
14766
14767         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
14768         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
14769         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
14770         ix86_fp_comparison_operator.
14771         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
14772         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
14773         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
14774         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
14775         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
14776         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
14777         (related splits): Change predicate to ix86_fp_comparison_operator.
14778         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
14779         instead of ix86_fp_comparison_codes.
14780         (ix86_trivial_fp_comparison_operator,
14781         ix86_fp_comparison_operator): New.
14782         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
14783         (ix86_expand_compare): Eliminate last two parameters.
14784         (ix86_fp_jump_nontrivial_p): Kill.
14785         * config/i386/i386.c (put_condition_code): Eliminate call to
14786         ix86_fp_comparison_codes and subsequent assertion.
14787         (ix86_fp_comparison_codes): Eliminate.
14788         (ix86_fp_swap_condition): New.
14789         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
14790         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
14791         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
14792         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
14793         and ix86_fp_swap_condition.
14794         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
14795         Use ix86_fp_comparison_strategy.
14796         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
14797         (ix86_fp_jump_nontrivial_p): Eliminate.
14798         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
14799         call to ix86_expand_compare.
14800         (ix86_split_fp_branch, ix86_expand_setcc,
14801         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
14802         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
14803
14804 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
14805
14806         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
14807         related to jump_clobbers.
14808         * config/arm/arm.md (conds): Remove jump_clob case.
14809         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
14810         splits): Change comparison_operator to arm_comparison_operator.
14811         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
14812         Eliminate.
14813
14814 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
14815
14816         * dojump.c (do_compare_rtx_and_jump): Try swapping the
14817         condition for floating point modes.
14818         * expmed.c (emit_store_flag_1): Move here a bigger part
14819         of emit_store_flag.
14820         (emit_store_flag): Try swapping the condition for floating point
14821         modes.
14822         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
14823
14824 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
14825
14826         * expr.c (expand_expr_real_1): Just use do_store_flag.
14827         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
14828         emit_store_flag_force.
14829         * expmed.c (emit_store_flag_force): Copy here trick
14830         previously in expand_expr_real_1.  Try reversing the comparison.
14831         (emit_store_flag_1): Work if target is NULL.
14832         (emit_store_flag): Work if target is NULL, using the result mode
14833         from the comparison.  Use split_comparison, restructure final part
14834         to simplify conditionals.
14835
14836 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
14837
14838         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
14839         * dojump.c (do_jump): Change handling of floating-point
14840         ops to use just do_compare_and_jump.
14841         (split_comparison): New.
14842         (do_compare_rtx_and_jump): Add here logic coming previously
14843         in do_jump, using split_comparison.
14844
14845 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
14846
14847         PR target/40489
14848         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
14849
14850 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14851
14852         * tree-ssa-alias.c: Fix unintentional commit.
14853
14854 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14855
14856         * passes.c (execute_one_pass): Fix unintentional commit.
14857
14858 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14859
14860         * df-problems.c (df_set_seen, df_unset_seen): Delete.
14861         (df_rd_local_compute, df_md_local_compute): Inline them.
14862
14863         (df_md_scratch): New.
14864         (df_md_alloc, df_md_free): Allocate/free it.
14865         (df_md_local_compute): Only include live registers in init.
14866         (df_md_transfer_function): Prune the in-set computed by
14867         the confluence function, and the gen-set too.
14868
14869 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14870
14871         PR rtl-optimization/26854
14872         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
14873         * df-problems.c (df_rd_add_problem): Fix comment.
14874         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
14875         df_md_simulate_artificial_defs_at_top,
14876         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
14877         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
14878         df_md_transfer_function, df_md_init, df_md_confluence_0,
14879         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
14880         problem_MD, df_md_add_problem): New.
14881         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
14882         df_md_get_bb_info): New.
14883         (DF_LAST_PROBLEM_PLUS1): Adjust.
14884
14885         * Makefile.in (fwprop.o): Include domwalk.h.
14886         * fwprop.c: Include domwalk.h.
14887         (reg_defs, reg_defs_stack): New.
14888         (bitmap_only_bit_between): Remove.
14889         (process_defs): New.
14890         (process_uses): Use reg_defs and local_md instead of
14891         bitmap_only_bit_between and local_rd.
14892         (single_def_use_enter_block): New, from build_single_def_use_links.
14893         (single_def_use_leave_block): New.
14894         (build_single_def_use_links): Remove code moved to
14895         single_def_use_enter_block, invoke domwalk.
14896         (use_killed_between): Adjust comment.
14897
14898 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14899
14900         * bitmap.h (bitmap_ior_and_into): New.
14901         * bitmap.c (bitmap_ior_and_into): New.
14902
14903 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14904
14905         * domwalk.h (struct dom_walk_data): Remove all callbacks except
14906         before_dom_children_before_stmts and after_dom_children_after_stmts.
14907         Rename the two remaining callbacks to just before_dom_children and
14908         after_dom_children. Remove other GIMPLE statement walking bits.
14909         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
14910         * graphite.c: Do not include domwalk.h.
14911         * tree-into-ssa.c (interesting_blocks): New global.
14912         (struct mark_def_sites_global_data): Remove it and names_to_rename.
14913         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
14914         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
14915         now that they're not domwalk callbacks.
14916         (rewrite_initialize_block): Rename to...
14917         (rewrite_enter_block): ... this, place after called functions.  Test
14918         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
14919         (rewrite_finalize_block): Rename to...
14920         (rewrite_leave_block): ... this, place after called functions.
14921         (rewrite_update_init_block): Rename to...
14922         (rewrite_update_enter_block): ... this, place after called functions.
14923         Test interesting_blocks, call rewrite_update_stmt and
14924         rewrite_update_phi_arguments.
14925         (rewrite_update_fini_block): Rename to...
14926         (rewrite_leave_block): ... this, place after called functions.
14927         (rewrite_blocks): Remove last argument, simplify initialization of
14928         walk_data.
14929         (mark_def_sites_initialize_block): Rename to...
14930         (mark_def_sites_block): ... this, call mark_def_sites.
14931         (mark_def_sites_blocks): Remove argument, simplify initialization of
14932         walk_data.
14933         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
14934         (update_ssa): Likewise.
14935         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
14936         callback.
14937         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
14938         (dom_opt_initialize_block): Rename to...
14939         (dom_opt_enter_block): ... this, place after called functions.  Walk
14940         statements here, inline propagate_to_outgoing_edges.
14941         (dom_opt_finalize_block): Rename to...
14942         (dom_opt_leave_block): ... this, place after called functions.
14943         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
14944         domwalk callback.
14945         (dse_enter_block, dse_record_phi): New.
14946         (dse_record_phis): Delete.
14947         (dse_finalize_block): Rename to...
14948         (dse_leave_block): ... this.
14949         (tree_ssa_dse): Simplify initialization of walk_data.
14950         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
14951         Adjust initialization of walk_data.
14952         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
14953         * tree-ssa-loop-phiopt.c (get_non_trapping):
14954         Adjust initialization of walk_data.
14955         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
14956         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
14957         it's not a domwalk callback.
14958         (uncprop_initialize_block): Rename to...
14959         (dse_enter_block): ... this, call uncprop_into_successor_phis.
14960         (dse_finalize_block): Rename to...
14961         (dse_leave_block): ... this.
14962         (tree_ssa_uncprop): Simplify initialization of walk_data.
14963         * Makefile.in: Adjust dependencies.
14964
14965 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
14966
14967         * arm.md (casesi): Fix test for Thumb1.
14968         (thumb1_casesi_internal_pic): Likewise.
14969         (thumb1_casesi_dispatch): Likewise.
14970
14971 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
14972
14973         * config/arm/arm-cores.def: Added core cortex-m0.
14974         * config/arm/arm-tune.md: Regenerated.
14975         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
14976
14977 2009-06-26  DJ Delorie  <dj@redhat.com>
14978
14979         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
14980
14981         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
14982         the scheduler doesn't tag jump insns.
14983
14984 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
14985
14986         * c-decl.c (merge_decls): Re-indent.
14987
14988 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
14989
14990         PR c/39902
14991         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
14992         Special-case decimal float constants.
14993
14994 2009-06-26  Richard Henderson  <rth@redhat.com>
14995
14996         * function.h (struct function): Add cannot_be_copied_reason,
14997         and cannot_be_copied_set.
14998         * tree-inline.c (has_label_address_in_static_1): Rename from
14999         inline_forbidden_p_2; don't set inline_forbidden_reason here.
15000         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
15001         don't set inline_forbidden_reason.
15002         (copy_forbidden): New function, split out of inline_forbidden_p.
15003         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
15004         (inline_forbidden_p): Use copy_forbidden.
15005         (tree_versionable_function_p): Likewise.
15006         (inlinable_function_p): Merge into tree_inlinable_function_p.
15007         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
15008         * ipa-cp.c (ipcp_versionable_function_p): New function.
15009         (ipcp_cloning_candidate_p): Use it.
15010         (ipcp_node_modifiable_p): Likewise.
15011
15012 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
15013
15014         * builtins.c (expand_builtin_alloca): Handle builtin alloca
15015         that is marked not to be inlined. Remove flag_mudflap use.
15016         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
15017         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
15018
15019 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
15020
15021         PR bootstrap/40338
15022         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
15023         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
15024
15025 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
15026
15027         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
15028         shared libgcc.
15029         (__mingwthr_remove_key_dtor): Likewise.
15030
15031 2009-06-26  Richard Guenther  <rguenther@suse.de>
15032
15033         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
15034
15035 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
15036
15037         PR middle-end/40525
15038         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
15039         try the non-cond_exec path also.
15040
15041 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15042
15043         PR target/40468
15044         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
15045         (output_cbranch): Use new functions.
15046         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
15047         Likewise.
15048
15049 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
15050             Pat Haugen  <pthaugen@us.ibm.com>
15051             Revital Eres <ERES@il.ibm.com>
15052
15053         * config/rs6000/rs6000.c (print_operand): Correct lossage message
15054         for %c error.  Add %x support to print VSX registers as a unified
15055         register set, instead of separate float and altivec registers.
15056         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
15057         %y case, and add support for VSX pre-modify addresses.
15058         (output_toc): Add assert for CONST containing an integer constant
15059         in the PLUS case.
15060         (rs6000_adjust_cost): Add POWER7 support.
15061         (insn_must_be_first_in_group): Ditto.
15062         (insn_must_be_last_in_group): Ditto.
15063         (rs6000_emit_popcount): Ditto.
15064         (rs6000_vector_mode_supported_p): Ditto.
15065
15066         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
15067         Change some of the functions called by macros to being called
15068         through a pointer, so debug functions can be inserted if
15069         -mdebug=addr or -mdebug=cost.
15070         (rs6000_preferred_reload_class_ptr): Ditto.
15071         (rs6000_secondary_reload_class_ptr): Ditto.
15072         (rs6000_secondary_memory_needed_ptr): Ditto.
15073         (rs6000_cannot_change_mode_class_ptr): Ditto.
15074         (rs6000_secondary_reload_inner): Ditto.
15075         (rs6000_legitimize_reload_address): Ditto.
15076         (rs6000_legitimize_reload_address_ptr): Ditto.
15077         (rs6000_mode_dependent_address): Ditto.
15078         (rs6000_mode_dependent_address_ptr): Ditto.
15079
15080         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
15081         function to return true if the mode allows reg + integer
15082         addresses.
15083         (virtual_stack_registers_memory_p): New function to return true if
15084         the address refers to a virtual stack register.
15085         (rs6000_legitimate_offset_address_p): Move code to say whether a
15086         mode supports reg+int addressing to reg_offset_addressing_ok_p and
15087         call it.
15088         (rs6000_legitimate_address_p): Add checks for modes that only can
15089         do reg+reg addressing.  Start adding VSX support.
15090         (rs6000_legitimize_reload_address): Ditto.
15091         (rs6000_legitimize_address): Ditto.
15092         (rs6000_debug_legitimate_address_p): New debug functions for
15093         -mdebug=addr and -mdebug=cost.
15094         (rs6000_debug_rtx_costs): Ditto.
15095         (rs6000_debug_address_costs): Ditto.
15096         (rs6000_debug_adjust_cost): Ditto.
15097         (rs6000_debug_legitimize_address): Ditto.
15098         (rs6000_legitimize_reload_address_ptr): Point to call normal
15099         function or debug function.  Make functions called via pointer
15100         static.
15101         (rs6000_mode_dependent_address_ptr): Ditto.
15102         (rs6000_secondary_reload_class_ptr): Ditto.
15103         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
15104         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
15105         into a friendlier error.
15106         (rs6000_init_builtins): Add initial VSX support.
15107         (rs6000_adjust_cost): Fix some spacing issues.
15108
15109         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
15110         (REG_CLASS_NAMES): Ditto.
15111         (REG_CLASS_CONTENTS): Ditto.
15112         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
15113         pointer, to add -mdebug=addr support.
15114         (CANNOT_CHANGE_MODE_CLASS): Ditto.
15115         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
15116         -mdebug=addr support.
15117         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
15118         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
15119         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
15120
15121         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
15122         16-bit values.
15123         (bswapsi*): Set attribute types for load/store.  Add combiner
15124         patterns to eliminate zero extend on 64-bit.
15125         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
15126         stdbrx if the hardware supports those instructions.
15127
15128 2009-06-25  Ian Lance Taylor  <iant@google.com>
15129
15130         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
15131         (Link Options): Document -static-libstdc++.
15132
15133 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15134
15135         PR target/38731
15136         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
15137         DATA_ALIGNMENT instead.
15138
15139 2009-06-25  Richard Guenther  <rguenther@suse.de>
15140
15141         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
15142         indirect references against the callused/escaped solutions.
15143         (call_may_clobber_ref_p_1): Likewise.
15144
15145 2009-06-25  Martin Jambor  <mjambor@suse.cz>
15146
15147         PR tree-optimization/40493
15148         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
15149         (enum unscalarized_data_handling): New type.
15150         (handle_unscalarized_data_in_subtree): Return what has been done.
15151         (load_assign_lhs_subreplacements): Handle left flushes differently.
15152         (sra_modify_assign): Use unscalarized_data_handling, simplified
15153         condition determining whether to remove the statement.
15154
15155 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
15156
15157         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
15158         excerpt - @ should be doubled for texinfo.
15159
15160 2009-06-24  Ian Lance Taylor  <iant@google.com>
15161
15162         * config/arc/arc.c: Include "df.h".
15163         (arc_attribute_table): Make static.  Move higher in file.
15164         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
15165         (output_shift): Initialize n later to avoid warning.
15166         * config/arm/arm.c (arm_attribute_table): Make static.  Move
15167         higher in file.
15168         * config/avr/avr.c (avr_attribute_table): Make static.  Move
15169         higher in file.
15170         (reg_class_tab): Change array type from int to enum reg_class.
15171         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
15172         LABEL_REF.
15173         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
15174         (lshrhi3_out): Likewise.
15175         (class_likely_spilled_p): Change return type to bool.
15176         (avr_rtx_costs): Use local code variable with enum type.
15177         * config/avr/avr.md (movmemhi): Use add_reg_note.
15178         (andhi3, andsi3): Don't use AS2 with "and".
15179         (iorhi3, iorsi3): Don't use AS2 with "or".
15180         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
15181         * config/crx/crx.c: Include "df.h".
15182         (crx_attribute_table): Make static.
15183         * config/m32r/m32r.c: Include "df.h".
15184         (m32r_attribute_table): Make static.  Move higher in file.
15185         (pop): Use add_reg_note.
15186         (block_move_call): Change 0 to LCT_NORMAL in function call.
15187         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
15188         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
15189         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
15190         declare, not just when TREE_CODE is defined.
15191         * config/m68hc11/m68hc11.c: Include "expr.h".
15192         (m68hc11_attribute_table): Make static.  Move higher in file.
15193         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
15194         function call.
15195         (m68hc11_register_indirect_p): Likewise.
15196         (m68hc11_function_arg_padding): Change return type to enum
15197         direction.
15198         (emit_move_after_reload): Use add_reg_note.
15199         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
15200         (m68hc11_split_logical): Likewise.
15201         (m68hc11_rtx_costs): Add local code_and outer_code variables with
15202         enum type.
15203         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
15204         to VOIDmode in function call.
15205         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
15206         tree is defined.
15207         (m68hc11_split_logical): Update declaration.
15208         (m68hc11_function_arg_padding): Update declaration.
15209         * config/mcore/mcore.c (regno_reg_class): Change form array of int
15210         to array of enum reg_class.
15211         (mcore_attribute_table): Make static.  Move higher in file.
15212         (mcore_rtx_costs): Add cast to enum type.
15213         * config/mcore/mcore.h (regno_reg_class): Update declaration.
15214         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
15215         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
15216         in file.
15217         * config/sh/predicates.md (trapping_target_operand): Rename and to
15218         and_expr.
15219         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
15220         higher in file.
15221         * config/spu/spu.c (spu_attribute_table): Make static.  Move
15222         higher in file.
15223         * config/v850/v850.c (v850_attribute_table): Make static.  Move
15224         higher in file.
15225         (v850_rtx_costs): Use local code with enum type.
15226         (expand_epilogue): Add cast.
15227         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
15228
15229 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
15230
15231         PR target/40515
15232         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
15233         -m2a-single-only and -m2a-nofpu.
15234         * config/sh/sh.opt: Document m2a generates FPU code.
15235
15236 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
15237
15238         * defaults.h (CAN_ELIMINATE): Provide default.
15239         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
15240         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
15241         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
15242         * config/spu/spu.h (CAN_ELIMINATE): Delete.
15243         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
15244         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
15245         * config/cris/cris.h (CAN_ELIMINATE): Delete.
15246         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
15247         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
15248         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
15249
15250 2009-06-24  DJ Delorie  <dj@redhat.com>
15251
15252         * mep-ext-cop.cpu: Fix copyright notice.
15253         * mep-default: Fix copyright notice.
15254         * mep-core: Fix copyright notice.
15255         * mep: Fix copyright notice.
15256         * mep-ivc2: Fix copyright notice.
15257         * mep-c5: Fix copyright notice.
15258
15259 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
15260
15261         * doc/contrib.texi (Contributors):
15262
15263 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
15264
15265         PR middle-end/40501
15266         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
15267         src and dst operands if necessary.
15268
15269 2009-06-23  DJ Delorie  <dj@redhat.com>
15270
15271         Add MeP port.
15272         * config.gcc: Add mep support.
15273         * recog.c: Resurrect validate_replace_rtx_subexp().
15274         * recog.h: Likewise.
15275         * config/mep/: Add new port:
15276         * config/mep/constraints.md: New file.
15277         * config/mep/default.h: New file.
15278         * config/mep/intrinsics.h: New file.
15279         * config/mep/intrinsics.md: New file.
15280         * config/mep/ivc2-template.h: New file.
15281         * config/mep/mep-c5.cpu: New file.
15282         * config/mep/mep-core.cpu: New file.
15283         * config/mep/mep-default.cpu: New file.
15284         * config/mep/mep-ext-cop.cpu: New file.
15285         * config/mep/mep-intrin.h: New file.
15286         * config/mep/mep-ivc2.cpu: New file.
15287         * config/mep/mep-lib1.asm: New file.
15288         * config/mep/mep-lib2.c: New file.
15289         * config/mep/mep-pragma.c: New file.
15290         * config/mep/mep-protos.h: New file.
15291         * config/mep/mep-tramp.c: New file.
15292         * config/mep/mep.c: New file.
15293         * config/mep/mep.cpu: New file.
15294         * config/mep/mep.h: New file.
15295         * config/mep/mep.md: New file.
15296         * config/mep/mep.opt: New file.
15297         * config/mep/predicates.md: New file.
15298         * config/mep/t-mep: New file.
15299
15300 2009-06-23  Ian Lance Taylor  <iant@google.com>
15301
15302         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
15303         from loose_warn into c_loose_warn and from strict_warn into
15304         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
15305         --enable-build-with-cxx.  Set and substitute
15306         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
15307         * Makefile.in (CXXFLAGS): New variable.
15308         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
15309         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
15310         the default is the same as $(STRICT_WARN).
15311         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
15312         (CXX): New variable.
15313         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
15314         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
15315         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
15316         (HOST_LIBS): New variable.
15317         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
15318         (ALL_CXXFLAGS): New variable.
15319         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
15320         * doc/install.texi (Configuration): Document
15321         --enable-build-with-cxx, --with-stage1-ldflags,
15322         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
15323         * configure: Rebuild.
15324
15325 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15326
15327         * config/arm/arm.c (arm_override_options): Fix braces and formatting
15328         from previous commit.
15329
15330 2009-06-23  Ian Lance Taylor  <iant@google.com>
15331
15332         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
15333
15334 2009-06-23  Ian Lance Taylor  <iant@google.com>
15335
15336         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
15337         with ATTRIBUTE_UNUSED.
15338
15339 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
15340             Pat Haugen  <pthaugen@us.ibm.com>
15341             Revital Eres  <eres@il.ibm.com>
15342
15343         * config.in (HAVE_AS_POPCNTD): Add default definition.
15344         (HAVE_AS_LWSYNC): Ditto.
15345
15346         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
15347         release number.
15348         (gcc_cv_as_powerpc_cmpb): Ditto.
15349         (gcc_cv_as_powerpc_dfp): Ditto.
15350         (gcc_cv_as_powerpc_vsx): Ditto.
15351         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
15352         supporting the popcntd/lwsync instructions.
15353         (gcc_cv_as_powerpc_lwsync): Ditto.
15354         * configure: Regenerate.
15355
15356         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
15357         -mcpu=native and -mcpu=power7.
15358         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
15359
15360         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
15361         a variable instead of a mask to reduce the number of mask bits.
15362         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
15363         (-mbit-word): Ditto.
15364         (-mregnames): Ditto.
15365         * config/rs6000/rs6000.opt (-mupdate): Ditto.
15366         (-mfused-madd): Ditto.
15367
15368         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
15369         2.06 instructions.
15370         (-mvsx): New switch for VSX instructions.
15371         (-misel): Move from a variable to a mask to allow it to be set by
15372         -mcpu=.
15373
15374         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
15375         function declaration to an array declaration.
15376         (rs6000_hard_regno_nregs): New external array declaration.
15377
15378         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
15379         files included by rs6000.md.
15380
15381         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
15382         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
15383
15384         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
15385         a target mask.
15386         (rs6000_debug_reg): New -mdebug= variables.
15387         (rs6000_debug_addr): Ditto.
15388         (rs6000_debug_cost): Ditto.
15389         (rs6000_pmode): New variable to hold Pmode.
15390         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
15391         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
15392         calculated at compiler start.
15393         (rs6000_hard_regno_nregs): Change function to an array which holds
15394         HARD_REGNO_NREGS calculated at compiler start.
15395         (rs6000_explicit_options): Delete isel field.
15396         (rs6000_vector_unit): New array to hold which vector unit
15397         supports arithmetic options for a given type.
15398         (rs6000_vector_mem): New array to hold which vector unit supports
15399         memory reference operations for a given type.
15400         (rs6000_vector_align): New array to given the alignment of each
15401         vector type.
15402         (power7_cost): New basic costs for power7.
15403         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
15404         (rs6000_hard_regno_nregs_internal): New function, moved from
15405         HARD_REGNO_NREGS, to calculate the number of registers each hard
15406         register takes for each type.
15407         (rs6000_debug_reg_print): New function for -mdebug=reg support.
15408         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
15409         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
15410         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
15411         unit information here so it is calculated once at compiler startup
15412         time.
15413         (rs6000_override_options): Make -misel a target mask.  Add more
15414         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
15415         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
15416         -mdebug=cost.
15417         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
15418         (rs6000_handle_option): Move -misel from variable to target mask.
15419         (rs6000_builtin_mask_for_load): Add VSX support.
15420         (rs6000_conditional_register_usage): Ditto.
15421         (USE_ALTIVEC_FOR_ARG_P): Ditto.
15422         (function_arg_boundary): Ditto.
15423         (rs6000_expand_builtin): Ditto.
15424         (def_builtin): Make abort message a little friendlier.
15425         (rs6000_emit_int_cmove): Add support for 64-bit isel.
15426
15427         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
15428         assembler support the popcntd instruction instead of a vsx
15429         instruction to enable power7 support.
15430         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
15431         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
15432         option to the assembler if -mcpu=native.
15433         (ASM_CPU_NATIVE_SPEC): Ditto.
15434         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
15435         ISA 2.06 features.
15436         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
15437         the lwsync instruction.
15438         (enum processor_type): Add PROCESSOR_POWER7.
15439         (rs6000_debug_reg): New -mdebug= options.
15440         (rs6000_debug_addr): Ditto.
15441         (rs6000_debug_cost): Ditto.
15442         (rs6000_isel): Delete.
15443         (enum rs6000_vector): New enum to say what vector unit we have.
15444         (VECTOR_UNIT_*): New macros to say which vector unit has
15445         arithmetic operations for a given type.
15446         (VECTOR_MEM_*): New macros to say which vector unit has memory
15447         operations for a given type.
15448         (TARGET_LDBRX): Whether the machine supports the ldbrx
15449         instruction.
15450         (TARGET_ISEL): Delete, -misel moved to be a mask.
15451         (TARGET_ISEL64): New macro for 64-bit isel support.
15452         (UNITS_PER_VSX_WORD): New macro.
15453         (POINTER_SIZE): Move to be an external variable, rather than
15454         calculating whether we are generating 32 ot 64-bit code.
15455         (Pmode): Ditto.
15456         (STACK_BOUNDARY): Add VSX support.
15457         (LOCAL_ALIGNMENT): Ditto.
15458         (SLOW_UNALIGNED_ACCESS): Ditto.
15459         (VSX_REGNO_P): New macro for VSX support.
15460         (VFLOAT_REGNO_P): Ditto.
15461         (VINT_REGNO_P): Ditto.
15462         (VLOGICAL_REGNO_P): Ditto.
15463         (VSX_VECTOR_MODE): Ditto.
15464         (VSX_SCALAR_MODE): Ditto.
15465         (VSX_MODE): Ditto.
15466         (VSX_MOVE_MODE): Ditto.
15467         (VSX_REG_CLASS_P): Ditto.
15468         (HARD_REGNO_NREGS): Instead of calling a function, use an array
15469         lookup.
15470         (UNITS_PER_SIMD_WORD): Add VSX support.
15471         (MODES_TIEABLE_P): Ditto.
15472         (STARTING_FRAME_OFFSET): Ditto.
15473         (STACK_DYNAMIC_OFFSET): Ditto.
15474         (EPILOGUE_USES): Ditto.
15475         (REGNO_REG_CLASS): Move to array lookup.
15476         (CLASS_MAX_NREGS): Ditto.
15477         (rs6000_vector_reg_class): Add declaration.
15478         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
15479         overlap with the floating point and Altivec registers.
15480
15481         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
15482
15483         * config/rs6000/driver-rs6000.c (asm_names): New static array to
15484         give the appropriate asm switches if -mcpu=native.
15485         (host_detect_local_cpu): Add support for "asm".
15486         (host_detect_local_cpu): Follow GNU code guidelines for name.
15487
15488         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
15489         -mbit-word to a variable instead of being a target mask.
15490
15491         * config/rs6000/sync.md (lwsync): If the assembler supports it,
15492         emit the lwsync instruction instead of emitting the instruction as
15493         an integer constant.
15494
15495         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
15496         fixuns_trundfsi2, move expander into rs6000.md.
15497
15498         * config/rs6000/rs6000.md (cpu): Add power7.
15499         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
15500         (logical predicate patterns): Change the single instruction
15501         primitives that set CR0 to be fast_compare instead of compare.
15502         (norsi*): Ditto.
15503         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
15504         (popcntddi2): Ditto.
15505         (popcount<mode>): Ditto.
15506         (floating multiply/add insns): Name the floating point
15507         multiply/add insns.
15508         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
15509         (isel_unsigned_<mode>): Ditto.
15510         (fixuns_trundfsi2): Move expander here from spe.md.
15511         (smindi3): Define if we have -misel on 64-bit systems.
15512         (smaxdi3): Ditto.
15513         (umindi3): Ditto.
15514         (umaxdi3): Ditto.
15515
15516 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
15517
15518         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
15519         extra_objs.
15520         * config/avr/avr.c (avr_current_device): New variable.
15521         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
15522         (avr_arch, mcu_type_s): Move to avr.h.
15523         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
15524         default_data_section_start fields.
15525         (avr_arch): Moved from avr.c.
15526         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
15527         library_name fields.
15528         (avr_current_device, avr_mcu_types, avr_arch_types,
15529         avr_device_to_arch, avr_device_to_data_start,
15530         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
15531         (EXTRA_SPEC_FUNCTIONS): Define.
15532         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
15533         options mapping. Use device_to_arch and device_to_data_start insted.
15534         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
15535         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
15536         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
15537         * config/avr/driver-avr.c: New file.
15538         * config/avr/avr-devices.c: New file.
15539
15540 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
15541
15542         * var-tracking.c (unshare_variable): Force initialized to
15543         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
15544         (set_variable_part): Likewise.
15545         (struct variable_union_info): Remove pos_src field.
15546         (vui_vec, vui_allocated): New variables.
15547         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
15548         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
15549         == 1 use a simpler sorting algorithm.  Compute pos field right
15550         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
15551         Avoid quadratic comparison if !flag_var_tracking_uninit.
15552         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
15553         unshare_variable unconditionally.
15554         (dataflow_set_different_2): Removed.
15555         (dataflow_set_different): Don't traverse second hash table.
15556         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
15557         unconditionally to var_reg_set or var_mem_set.
15558         (emit_notes_in_bb): Likewise.
15559         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
15560         unshare_variable.
15561         (emit_note_insn_var_location): Don't set initialized to
15562         VAR_INIT_STATUS_INITIALIZED early.
15563         (vt_finalize): Free vui_vec if needed, clear vui_vec and
15564         vui_allocated.
15565         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
15566
15567         * tree-object-size.c (addr_object_size): Instead of checking
15568         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
15569         are no FIELD_DECLs following it.
15570
15571 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
15572
15573         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
15574         order to match bswaps with signed source operands.
15575
15576 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
15577
15578         * sdbout.c (sdbout_one_type): Fix braces in switch.
15579
15580 2009-06-23  Richard Guenther  <rguenther@suse.de>
15581
15582         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
15583         member.
15584         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
15585         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
15586         var_callused, callused_tree, var_storedanything, storedanything_tree,
15587         var_integer, integer_tree): Remove global variables.
15588         (new_var_info): Do not pass new id, append the new var to the
15589         global variable vector.
15590         (do_ds_constraint): Use is_global_var member of the variable-info.
15591         (new_scalar_tmp_constraint_exp): Adjust.
15592         (create_function_info_for): Likewise.
15593         (create_variable_info_for): Likewise.
15594         (find_what_var_points_to): Remove dead code.
15595         (init_base_vars): Simplify.
15596         (compute_points_to_sets): Adjust.
15597
15598 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
15599
15600         * combine.c (try_combine): Dump information about the insns we're
15601         combining.
15602
15603 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
15604
15605         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
15606         check when calling force_to_mode on TRUNCATE's operand.
15607
15608 2009-06-22  Ian Lance Taylor  <iant@google.com>
15609
15610         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
15611
15612 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
15613
15614         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
15615
15616 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15617
15618         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
15619         override library linkage flags such as -static-libgcc or
15620         -shared-libgcc.
15621
15622 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
15623
15624         * config/m68k/m68k-devices.def: Add line for MCF5221x.
15625
15626 2009-06-22  Ian Lance Taylor  <iant@google.com>
15627
15628         * config/linux.opt: Put mglibc ahead of muclibc.
15629
15630         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
15631         for duplicate decls.
15632
15633 2009-06-22  Matthias Klose  <doko@ubuntu.com>
15634
15635         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
15636
15637 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
15638
15639         PR objc/28050
15640         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
15641         instead of NULL if a parser error occurs.
15642
15643 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
15644
15645         * dwarf2out.c (dwarf2_debug_hooks): Initialize
15646         non-DWARF2_DEBUGGING_INFO version.
15647
15648 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
15649
15650         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
15651         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
15652
15653         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
15654         (LIBGCC2_TF_CEXT): Define.
15655         (TF_SIZE): Define.
15656
15657 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15658
15659         PR target/40463
15660         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
15661
15662 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15663
15664         * config/arm/arm.c (arm_override_options): Disable
15665         -mcaller-super-interworking and -mcallee-super-interworking.
15666         * doc/invoke.texi (ARM Options): Document this.
15667
15668 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
15669
15670         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
15671         * config/arm/constraints.md (j): New constraint for movw operands.
15672         (N): Remove thumb2 meaning.
15673         * config/arm/arm.md (*arm_movw): Delete.
15674         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
15675         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
15676         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
15677
15678 2009-06-22  Martin Jambor  <mjambor@suse.cz>
15679
15680         PR tree-optimization/40492
15681         * tree-sra.c (sra_modify_assign): Pass zero offsets to
15682         build_ref_for_offset.
15683
15684 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
15685
15686         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
15687         JUMP_TABLE_DATA_P predicates where applicable.
15688         * auto-inc-dec.c: Ditto.
15689         * builtins.c: Ditto.
15690         * caller-save.c: Ditto.
15691         * calls.c: Ditto.
15692         * cfgcleanup.c: Ditto.
15693         * cfglayout.c: Ditto.
15694         * cfgrtl.c: Ditto.
15695         * combine.c: Ditto.
15696         * combine-stack-adj.c: Ditto.
15697         * cse.c: Ditto.
15698         * cselib.c: Ditto.
15699         * dbxout.c: Ditto.
15700         * df-scan.c: Ditto.
15701         * dse.c: Ditto.
15702         * dwarf2asm.c: Ditto.
15703         * dwarf2out.c: Ditto.
15704         * emit-rtl.c: Ditto.
15705         * except.c: Ditto.
15706         * explow.c: Ditto.
15707         * expmed.c: Ditto.
15708         * expr.c: Ditto.
15709         * final.c: Ditto.
15710         * function.c: Ditto.
15711         * fwprop.c: Ditto.
15712         * gcse.c: Ditto.
15713         * genpreds.c: Ditto.
15714         * genrecog.c: Ditto.
15715         * ifcvt.c: Ditto.
15716         * ira-costs.c: Ditto.
15717         * ira-lives.c: Ditto.
15718         * jump.c: Ditto.
15719         * loop-iv.c: Ditto.
15720         * lower-subreg.c: Ditto.
15721         * modulo-sched.c: Ditto.
15722         * optabs.c: Ditto.
15723         * postreload.c: Ditto.
15724         * print-rtl.c: Ditto.
15725         * recog.c: Ditto.
15726         * reginfo.c: Ditto.
15727         * regmove.c: Ditto.
15728         * reload1.c: Ditto.
15729         * reload.c: Ditto.
15730         * reorg.c: Ditto.
15731         * rtlanal.c: Ditto.
15732         * rtl.c: Ditto.
15733         * sched-vis.c: Ditto.
15734         * sdbout.c: Ditto.
15735         * sel-sched-ir.c: Ditto.
15736         * simplify-rtx.c: Ditto.
15737         * targhooks.c: Ditto.
15738         * var-tracking.c: Ditto.
15739         * vmsdbgout.c: Ditto.
15740
15741 2009-06-22  Matthias Klose  <doko@ubuntu.com>
15742
15743         * Makefile.in (install-plugin): Always use DESTDIR.
15744
15745 2009-06-22  Olivier Hainque  <hainque@adacore.com>
15746
15747         * config/pa/pa.c (output_call): Don't optimize post call jumps
15748         into return address adjustments if the call may throw.
15749
15750 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
15751
15752         * arm.c (thumb1_output_casesi): New function.
15753         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
15754         optimizing for size or PIC.
15755         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
15756         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
15757         (casesi): Handle Thumb-1 when optimizing for size or PIC.
15758         (thumb1_casesi_internal_pic): New expand rule.
15759         (thumb1_casesi_dispatch): New pattern.
15760         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
15761         thumb-1 mode.
15762         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
15763         in the text seciton when PIC or optimizing for size.
15764         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
15765         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
15766         preservation properties of code.
15767         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
15768         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
15769         (__gnu_thumb1_case_si): New function.
15770         * t-arm (LIB1ASMSRC): Define here.
15771         (LIB1ASMFUNCS): Add some common functions.
15772         * t-arm-elf (LIB1ASMSRC): Delete.
15773         (LIB1ASMFUNCS): Append to existing set.
15774         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
15775         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
15776         * t-symbian (LIB1ASMFUNCS): Likewise.
15777         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
15778         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
15779
15780 2009-06-21  Richard Guenther  <rguenther@suse.de>
15781
15782         PR tree-optimization/38729
15783         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
15784         to loops with a single exit if -fno-expensive-optimizations.
15785
15786 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
15787
15788         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
15789         (dataflow_set): Change vars type from htab_t to shared_hash.
15790         (shared_hash_pool, empty_shared_hash): New variables.
15791         (vars_clear): Removed.
15792         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
15793         shared_hash_find_slot_unshare, shared_hash_find_slot,
15794         shared_hash_find_slot_noinsert, shared_hash_find): New
15795         static inlines.
15796         (shared_hash_unshare, shared_hash_destroy): New functions.
15797         (unshare_variable): Unshare set->vars if shared, use
15798         shared_hash_htab.
15799         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
15800         (get_init_value, find_src_set_src, dump_dataflow_set,
15801         clobber_variable_part, emit_notes_for_differences): Use
15802         shared_hash_htab.
15803         (dataflow_set_init): Remove second argument, set vars to
15804         empty_shared_hash instead of creating a new htab.
15805         (dataflow_set_clear): Call shared_hash_destroy and set vars
15806         to empty_shared_hash instead of calling vars_clear.
15807         (dataflow_set_copy): Don't call vars_copy, instead just share
15808         the src htab with dst.
15809         (variable_union): Use shared_hash_*, use initially NO_INSERT
15810         lookup if set->vars is shared.  Don't keep slot cleared before
15811         calling unshare_variable.  Unshare set->vars if needed.
15812         Even ->refcount == 1 vars must be unshared if set->vars is shared
15813         and var needs to be modified.
15814         (variable_canonicalize): New function.
15815         (dataflow_set_union): If dst->vars is empty, just share src->vars
15816         with dst->vars and traverse with variable_canonicalize to canonicalize
15817         and unshare what is needed.
15818         (dataflow_set_different): If old_set and new_set use the same shared
15819         htab, they aren't different.  If number of htab elements is different,
15820         htabs are different.  Use shared_hash_*.
15821         (dataflow_set_destroy): Call shared_hash_destroy instead of
15822         htab_delete.
15823         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
15824         second argument to dataflow_set_init.
15825         (vt_initialize): Likewise.  Initialize shared_hash_pool and
15826         empty_shared_hash, move bb in/out initialization afterwards.
15827         Use variable_htab_free instead of NULL as changed_variables del hook.
15828         (variable_was_changed): Change type of second argument to pointer to
15829         dataflow_set.  When inserting var into changed_variables, bump
15830         refcount.  Unshare set->vars if set is shared htab and slot needs to
15831         be cleared.
15832         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
15833         lookup if set->vars is shared.  Unshare set->vars if needed.
15834         Even ->refcount == 1 vars must be unshared if set->vars is shared
15835         and var needs to be modified.  Adjust variable_was_changed caller.
15836         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
15837         vars must be unshared if set->vars is shared and var needs to be
15838         modified.  Adjust variable_was_changed caller.
15839         (emit_note_insn_var_location): Don't pool_free var.
15840         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
15841         instead of 1.
15842         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
15843         free_alloc_pool on shared_hash_pool.
15844
15845 2009-06-20  Anthony Green  <green@moxielogic.com>
15846
15847         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
15848         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
15849
15850 2009-06-20  Richard Guenther  <rguenther@suse.de>
15851
15852         * tree-ssa-structalias.c (find_func_aliases): For memset use
15853         a constraint from NULL if we memset to zero.
15854         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
15855         we explicitly handle that do not read from memory.
15856         (call_may_clobber_ref_p_1): Properly handle builtins that may
15857         set errno.
15858
15859 2009-06-20  Richard Guenther  <rguenther@suse.de>
15860
15861         PR tree-optimization/40495
15862         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
15863         (new_scalar_tmp_constraint_exp): New function.
15864         (process_constraint): Do not create temporary decls.
15865         (process_all_all_constraints): Likewise.
15866         (handle_const_call): Likewise.
15867         (create_function_info_for): Do not set decl.
15868
15869 2009-06-19  Ian Lance Taylor  <iant@google.com>
15870
15871         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
15872         (rs6000_attribute_table): Make static; move before use.
15873
15874 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
15875
15876         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
15877         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
15878         Propagate the TREE_READONLY flag without overwriting it.
15879         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
15880         Propagate the TREE_READONLY flag onto the result.
15881         (process_call_operands): Move around.  Use correct constant value.
15882
15883 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15884
15885         PR target/40482
15886         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
15887         * config/arm/arm.md: Likewise.
15888
15889 2009-06-19  Ian Lance Taylor  <iant@google.com>
15890
15891         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
15892         to GIMPLE_ERROR_MARK.
15893
15894         * c-typeck.c (build_conditional_expr): Add op1_original_type and
15895         op2_original_type parameters.  Warn about using different enum types.
15896         * c-parser.c (c_parser_conditional_expression): Pass original
15897         types to build_conditional_expr.
15898         * c-tree.h (build_conditional_expr): Update declaration.
15899
15900 2009-06-19  Ian Lance Taylor  <iant@google.com>
15901
15902         * config/i386/i386.c (ix86_function_specific_save): Test that
15903         fields match values, rather than testing the values are in a
15904         certain range.
15905
15906 2009-06-19  Richard Guenther  <rguenther@suse.de>
15907
15908         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
15909         ADDR_EXPR pointers.
15910         (ptr_derefs_may_alias_p): Likewise.
15911         (ptr_deref_may_alias_ref_p_1): New function.
15912         (ptr_deref_may_alias_ref_p): Likewise.
15913         (ref_maybe_used_by_call_p_1): Handle builtins that are not
15914         covered by looking at the ESCAPED solution.
15915         (call_may_clobber_ref_p_1): Likewise.
15916         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
15917         Handle NULL_TREE offset.  Do not produce redundant constraints.
15918         (process_all_all_constraints): New helper function.
15919         (do_structure_copy): Use it.
15920         (handle_lhs_call): Likewise.
15921         (find_func_aliases): Handle some builtins with pointer arguments
15922         and/or return values explicitly.
15923
15924 2009-06-19  Ian Lance Taylor  <iant@google.com>
15925
15926         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
15927
15928 2009-06-19  Ian Lance Taylor  <iant@google.com>
15929
15930         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
15931
15932 2009-06-19  Ian Lance Taylor  <iant@google.com>
15933
15934         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
15935         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
15936         version.
15937
15938         * c-decl.c (finish_decl): If -Wc++-compat, warn about
15939         uninitialized const.
15940
15941 2009-06-19  Ian Lance Taylor  <iant@google.com>
15942
15943         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
15944         all uses.
15945
15946         * c-decl.c (in_struct, struct_types): Remove.
15947         (struct c_binding): Add in_struct field.
15948         (c_binding_ptr): Define type, along with VEC.
15949         (struct c_struct_parse_info): Define.
15950         (struct_parse_info): New static variable.
15951         (bind): Initialize in_struct field.
15952         (start_struct): Remove enclosing_in_struct and
15953         enclosing_struct_types parameters.  Add
15954         enclosing_struct_parse_info parameter.  Change all callers.  Set
15955         struct_parse_info rather than in_struct and struct_types.
15956         (grokfield): If -Wc++-compat and there is a symbol binding for the
15957         field name, set the in_struct flag and push it on the
15958         struct_parse_info->fields vector.
15959         (warn_cxx_compat_finish_struct): New static function.
15960         (finish_struct): Remove enclosing_in_struct and
15961         enclosing_struct_types parameters.  Add
15962         enclosing_struct_parse_info parameter.  Change all callers.  Don't
15963         set C_TYPE_DEFINED_IN_STRUCT here.  Call
15964         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
15965         parameter.  Only push on struct_types if warn_cxx_compat.
15966         (finish_enum): Only push on struct_types if warn_cxx_compat.
15967         (declspecs_add_type): Add loc parameter.  Change all callers.
15968         Change all error calls to error_at.  Pass loc, not input_location,
15969         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
15970         defined in a struct.  If -Wc++-compat and parsing a struct, record
15971         that a typedef name was used.
15972         * c-parser.c (c_parser_declspecs): Get location to pass to
15973         declspecs_add_type.
15974         (c_parser_struct_or_union_specifier): Update calls to start_struct
15975         and finish_struct.
15976         * c-tree.h (struct c_struct_parse_info): Declare.
15977         (finish_struct, start_struct): Update declarations.
15978         (declspecs_add_type): Update declaration.
15979
15980 2009-06-19  Ian Lance Taylor  <iant@google.com>
15981
15982         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
15983         variable with an anonymous type.
15984
15985 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
15986
15987         * see.c: Remove for real.
15988
15989 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
15990
15991         * optabs.h (enum optab_index): Add new OTI_significand.
15992         (significand_optab): Define corresponding macro.
15993         * optabs.c (init_optabs): Initialize significand_optab.
15994         * genopinit.c (optabs): Implement significand_optab using
15995         significand?f2 patterns.
15996         * builtins.c (expand_builtin_mathfn): Handle
15997         BUILT_IN_SIGNIFICAND{,F,L}.
15998         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
15999         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
16000
16001         * config/i386/i386.md (significandxf2, significand<mode>2): New
16002         expanders to implement significandf, significand and significandl
16003         built-ins as inline x87 intrinsics.
16004
16005 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
16006
16007         * config/avr/avr.c (avr_override_options): Remove setting value of
16008         PARAM_INLINE_CALL_COST.
16009
16010 2009-06-18  Richard Henderson  <rth@redhat.com>
16011
16012         PR 40488
16013         * tree-pass.h (TDF_ASMNAME): New.
16014         * tree-dump.c (dump_options): Add asmname.
16015         * doc/invoke.texi: Document it.
16016
16017         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
16018         (dump_decl_name): ...here.
16019         (dump_function_name): New flags arg; mind TDF_ASMNAME.
16020         (dump_generic_node): Update dump_function_name calls.
16021         (print_call_name): New flags arg; update all dump calls.
16022         * diagnostic.h (print_call_name): Update.
16023         * gimple-pretty-print.c (dump_gimple_call): Update.
16024
16025 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
16026
16027         PR target/40470
16028         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
16029
16030 2009-06-18  Diego Novillo  <dnovillo@google.com>
16031
16032         * doc/plugins.texi: Document plugin_is_GPL_compatible.
16033         * plugin.c (str_license): Declare.
16034         (try_init_one_plugin): Assert that the symbol
16035         'plugin_is_GPL_compatible' exists.
16036
16037 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
16038
16039         * see.c: Remove.
16040         * Makefile.in (OBJS-common): Remove see.o.
16041         (see.o): Remove.
16042         * common.opt (fsee): Mark as preserved for backward compatibility.
16043         * opts.c (common_handle_option): Add OPT_fsee to the backward
16044         compatibility section.
16045         * passes.c (init_optimization_passes, pass_see): Remove pass.
16046         * timevar.def (TV_SEE): Remove.
16047         * tree-pass.h (pass_see): Remove declaration.
16048         * doc/invoke.texi (-fsee): Remove documentation.
16049
16050 2009-06-18  Martin Jambor  <mjambor@suse.cz>
16051
16052         * tree-sra.c: Include statistics.h
16053         (sra_stats): New variable.
16054         (sra_initialize): Clear sra_stats.
16055         (create_access_replacement): Increment sra_stats.replacements.
16056         (get_access_replacement): Do not return twice.
16057         (analyze_all_variable_accesses): Increment statistics counter by the
16058         number of scalarized aggregates.
16059         (generate_subtree_copies): Increment sra_stats.subtree_copies.
16060         (sra_modify_expr): Increment sra_stats.exprs.
16061         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
16062         (sra_modify_assign): Increment sra_stats.exprs,
16063         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
16064         (perform_intra_sra): Update statistics counters.
16065         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
16066
16067 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
16068
16069         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
16070         (arm_scalar_mode_supported_p): New function.
16071
16072 2009-06-18  Paul Brook  <paul@codesourcery.com>
16073             Sandra Loosemore  <sandra@codesourcery.com>
16074
16075         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
16076         (__extendhfsf2, __truncsfhf2): Define.
16077         * config/arm/fp16.c: New file.
16078         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
16079         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
16080
16081 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
16082
16083         * doc/extend.texi (Half-Precision): New section.
16084         * doc/invoke.texi (Option Summary): List -mfp16-format.
16085         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
16086         * config/arm/arm.opt (mfp16-format=): New.
16087         * config/arm/arm.c: Include intl.h.
16088         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
16089         (TARGET_INVALID_RETURN_TYPE): Redefine.
16090         (TARGET_PROMOTED_TYPE): Redefine.
16091         (TARGET_CONVERT_TO_TYPE): Redefine.
16092         (arm_fp16_format): Define.
16093         (all_fpus): Add entry for neon-fp16.
16094         (fp_model_for_fpu): Likewise.
16095         (struct fp16_format): Declare.
16096         (all_fp16_formats): Define.
16097         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
16098         functions.
16099         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
16100         and no ldrh.
16101         (arm_legitimate_index_p): Treat HFmode like HImode.
16102         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
16103         (coproc_secondary_reload_class): Special-case HFmode.
16104         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
16105         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
16106         (arm_init_fp16_builtins): New.
16107         (arm_init_builtins): Call it.
16108         (arm_invalid_parameter_type): New.
16109         (arm_invalid_return_type): New.
16110         (arm_promoted_type): New.
16111         (arm_convert_to_type).
16112         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
16113         format.
16114         (arm_emit_fp16_const): New function.
16115         (arm_mangle_type): Mangle __fp16 as "Dh".
16116         * config/arm/arm.h (TARGET_VFPD32): Make it know about
16117         FPUTYPE_NEON_FP16.
16118         (TARGET_NEON_FP16): New.
16119         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
16120         (enum fputype): Add FPUTYPE_NEON_FP16.
16121         (enum arm_fp16_format_type): Declare.
16122         (arm_fp16_format): Declare.
16123         (LARGEST_EXPONENT_IS_NORMAL): Define.
16124         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
16125         * config/arm/arm-modes.def (HFmode): Define.
16126         * config/arm/vfp.md (*movhf_vfp): New.
16127         (extendhfsf2): New.
16128         (truncsfhf2): New.
16129         * config/arm/arm.md (fpu): Add neon_fp16.
16130         (floatsihf2, floatdihf2): New.
16131         (fix_trunchfsi2, fix_trunchfdi2): New.
16132         (truncdfhf2): New.
16133         (extendhfdf2): New.
16134         (movhf): New.
16135         (*arm32_movhf): New.
16136         (*thumb1_movhf): New.
16137         (consttable_2): Add check for HFmode constants.
16138         (consttable_4): Handle HFmode constants.
16139
16140 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
16141
16142         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
16143
16144 2009-06-17  Olivier Hainque  <hainque@adacore.com>
16145
16146         * collect2.c (main): Use CONST_CAST2 to perform char ** to
16147         const char ** conversion in AIX specific section.
16148
16149 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
16150
16151         * config/i386/i386.c (ix86_special_builtin_type): Remove
16152         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
16153         (bdesc_special_args): Updated.
16154         (ix86_init_mmx_sse_builtins): Likewise.
16155         (ix86_expand_special_args_builtin): Likewise.
16156
16157 2009-06-17  Richard Henderson  <rth@redhat.com>
16158
16159         * tree-pretty-print.c (maybe_dump_asm_name): New.
16160         (dump_decl_name): Use it.
16161         (PRINT_FUNCTION_NAME): Merge into...
16162         (dump_function_name): ... here.  Use maybe_dump_asm_name.
16163
16164 2009-06-17  Cary Coutant  <ccoutant@google.com>
16165
16166         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
16167         Change caller.
16168         * debug.c (struct gcc_debug_hooks): Change placeholder for
16169         source_line hook.
16170         (debug_nothing_int_charstar_int): Replaced by...
16171         (debug_nothing_int_charstar_int_bool): ...this.
16172         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
16173         source_line prototype.
16174         (debug_nothing_int_charstar_int): Replaced by...
16175         (debug_nothing_int_charstar_int_bool): ...this.
16176         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
16177         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
16178         Output is_stmt operand when necessary.
16179         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
16180         (notice_source_line): Add is_stmt parameter.
16181         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
16182         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
16183         Change callers.
16184         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
16185         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
16186
16187 2009-06-17  Ian Lance Taylor  <iant@google.com>
16188
16189         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
16190         Change all uses.
16191         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
16192         call uses.
16193
16194 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
16195
16196         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
16197         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
16198         tree_strip_sign_nop_conversions and
16199         tree_ssa_strip_useless_type_conversions rather than stripping
16200         the operations here.
16201         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
16202         Declare them.
16203         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
16204         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
16205         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
16206         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
16207         functions.
16208
16209 2009-06-17  Michael Eager  <eager@eagercon.com>
16210
16211         * config/rs6000/constraints.md (register_constraint "d"): New.
16212         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
16213         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
16214         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
16215         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
16216         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
16217         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
16218         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
16219         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
16220         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
16221         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
16222         __fctiwz): Same.
16223         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
16224         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
16225         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
16226         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
16227         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
16228         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
16229         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
16230         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
16231         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
16232         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
16233         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
16234         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
16235         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
16236         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
16237
16238 2009-06-16  Ian Lance Taylor  <iant@google.com>
16239
16240         * profile.c (total_num_never_executed): Don't define.
16241         (compute_branch_probabilities): Don't count or print
16242         num_never_executed.
16243         (init_branch_prob): Don't set total_num_never_executed.
16244         (end_branch_prob): Don't print total_num_never_executed.
16245
16246 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
16247
16248         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
16249
16250 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
16251
16252         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
16253         (nabstd2_fpr): Same.
16254
16255 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
16256
16257         * expr.c (expand_assignment): Change complex type check.
16258
16259 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
16260
16261         * doc/plugins.texi (Building GCC plugins): Added new section.
16262
16263 2009-06-17  Ian Lance Taylor  <iant@google.com>
16264
16265         * c-pch.c (get_ident): Don't set size of templ array.
16266         (pch_init): Don't set size of partial_pch array.
16267
16268         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
16269         string constant to intialize an array whose size is the length of
16270         the string.
16271
16272 2009-06-17  Richard Guenther  <rguenther@suse.de>
16273
16274         PR tree-optimization/40389
16275         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
16276         to addressable types.
16277         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
16278
16279 2009-06-17  Richard Guenther  <rguenther@suse.de>
16280
16281         PR middle-end/40460
16282         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
16283         if there is no evolution of left in the loop bail out.
16284         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
16285         chrec_fold_multiply.
16286
16287 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
16288             Janis Johnson  <janis187@us.ibm.com>
16289
16290         PR target/39254
16291         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
16292         for the symbol ref of a constant that is the source of a move
16293         - nor for any other not-obvious-label-ref constants.
16294
16295 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
16296
16297         * plugin.c (position_pass): Skip newly inserted pass during list
16298         traversal to avoid repeated insertion.
16299
16300 2009-06-16  Ian Lance Taylor  <iant@google.com>
16301
16302         * vec.h (VEC_stack_alloc): Define different version if
16303         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
16304         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
16305         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
16306         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
16307
16308 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
16309
16310         * config.gcc (extra_headers): Add ia32intrin.h for x86.
16311
16312         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
16313         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
16314         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
16315         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
16316         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
16317         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
16318         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
16319         (bdesc_special_args): Add __builtin_ia32_rdtsc and
16320         __builtin_ia32_rdtscp.
16321         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
16322         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
16323         and __builtin_ia32_rorhi.
16324         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
16325         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
16326         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
16327         (ix86_expand_args_builtin): Likewise.
16328         (ix86_expand_special_args_builtin): Likewise.
16329
16330         * config/i386/i386.md (UNSPECV_RDTSCP): New.
16331         (UNSPECV_RDTSC): Likewise.
16332         (UNSPECV_RDPMC): Likewise.
16333         (*bsr): Renamed to ...
16334         (bsr): This
16335         (*bsr_rex64): Renamed to ...
16336         (bsr_rex64): This.
16337         (rdpmc): New.
16338         (*rdpmc): Likewise.
16339         (*rdpmc_rex64): Likewise.
16340         (rdtsc): Likewise.
16341         (*rdtsc): Likewise.
16342         (*rdtsc_rex64): Likewise.
16343         (rdtscp): Likewise.
16344         (*rdtscp): Likewise.
16345         (*rdtscp_rex64): Likewise.
16346
16347         * config/i386/ia32intrin.h: New.
16348
16349         * config/i386/x86intrin.h: Include <ia32intrin.h>.
16350
16351 2009-06-16  Ian Lance Taylor  <iant@google.com>
16352
16353         * ira-build.c (copy_info_to_removed_store_destinations):
16354         Initialize parent_a.
16355
16356 2009-06-16  Ian Lance Taylor  <iant@google.com>
16357
16358         * c-decl.c (grokdeclarator): Change size_varies to bool.
16359
16360 2009-06-16  Ian Lance Taylor  <iant@google.com>
16361
16362         * sel-sched.c: Make forward declarations of move_op_hooks and
16363         fur_hooks explicitly extern.
16364
16365 2009-06-16  Ian Lance Taylor  <iant@google.com>
16366
16367         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
16368         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
16369
16370 2009-06-16  Ian Lance Taylor  <iant@google.com>
16371
16372         * resource.c (mark_referenced_resources): Change
16373         include_delayed_effects parameter to bool.  Change all callers.
16374         (mark_end_of_function_resources): Likewise.
16375         * reorg.c (insn_references_resource_p): Likewise.
16376         (insn_sets_resource_p): Likewise.
16377         * resource.h (mark_referenced_resources): Update declaration.
16378         (mark_end_of_function_resources): Update declaration.
16379
16380 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
16381
16382         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
16383
16384 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
16385
16386         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
16387         GCC can bootstrap on AIX with GNU Binutils 2.20.
16388
16389 2009-06-16  Ian Lance Taylor  <iant@google.com>
16390
16391         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
16392
16393 2009-06-16  Ian Lance Taylor  <iant@google.com>
16394
16395         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
16396         inline, not extern inline.
16397         (exact_log2): Likewise.
16398         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
16399         test CLZ_HWI.
16400         (exact_log2): Likewise, but don't test CTZ_HWI.
16401
16402 2009-06-16  Ian Lance Taylor  <iant@google.com>
16403
16404         * bitmap.c (bitmap_clear): Don't declare as inline.
16405         * gimple.c (gimplify_assign): Likewise.
16406         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
16407         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
16408         (sched_scan_info): Remove duplicate definition.
16409
16410 2009-06-16  Ian Lance Taylor  <iant@google.com>
16411
16412         * c-common.c (skip_evaluation): Don't define.
16413         (c_inhibit_evaluation_warnings): Define global variable.
16414         (overflow_warning): Check c_inhibit_evaluation_warnings rather
16415         than skip_evaluation.
16416         (convert_and_check, warn_for_div_by_zero): Likewise.
16417         * c-common.h (skip_evaluation): Don't declare.
16418         (c_inhibit_evaluation_warnings): Declare.
16419         * c-parser.c (c_parser_typeof_specifier): Set
16420         c_inhibit_evaluation_warnings rather than skip_evaluation.
16421         (c_parser_conditional_expression): Likewise.
16422         (c_parser_binary_expression): Likewise.
16423         (c_parser_sizeof_expression): Likewise.
16424         (c_parser_alignof_expression): Likewise.
16425         * c-typeck.c (build_indirect_ref): Check
16426         c_inhibit_evaluation_warnings rather than skip_evaluation.
16427         (build_conditional_expr, build_binary_op): Likewise.
16428
16429 2009-06-16  Richard Guenther  <rguenther@suse.de>
16430
16431         * tree-ssa-alias.c (is_escape_site): Remove.
16432         * tree-ssa-alias.h (enum escape_type): Remove.
16433         (is_escape_site): Likewise.
16434         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
16435         via casts and asms without deferring to is_escape_site.
16436
16437 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
16438
16439         PR middle-end/40446
16440         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
16441         use gen_lowpart if op0 has complex mode.
16442
16443 2009-06-16  Richard Guenther  <rguenther@suse.de>
16444
16445         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
16446         variables add them to ESCAPED.
16447         (find_func_aliases): Do not make all indirectly stored values escaped.
16448
16449 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
16450
16451         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
16452         make_decl_one_only.
16453
16454 2009-06-16  Martin Jambor  <mjambor@suse.cz>
16455
16456         PR tree-optimization/40432
16457         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
16458         check whether we need to force gimple register operand.
16459
16460 2009-06-16  Martin Jambor  <mjambor@suse.cz>
16461
16462         PR tree-optimization/40413
16463         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
16464         build_ref_for_offset.
16465         (propagate_subacesses_accross_link): Fix a typo in a comment.
16466
16467 2009-06-16  Ira Rosen  <irar@il.ibm.com>
16468
16469         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
16470         with additional parameter.
16471         * tree-vectorizer.h (enum vect_def_type): Add new value
16472         vect_nested_cycle.
16473         (enum vect_relevant): Add comments.
16474         (vect_is_simple_reduction): Add new argument.
16475         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
16476         Detect nested cycles.
16477         (vect_is_simple_reduction): Update documentation, add an argument to
16478         distinguish inner-loop reduction from nested cycle, detect nested
16479         cycles, fix printings and indentation, don't swap operands in case
16480         of nested cycle.
16481         (get_initial_def_for_reduction): Handle subtraction.
16482         (vect_create_epilog_for_reduction): Add new argument to specify
16483         reduction variable.
16484         (vect_finalize_reduction): Handle subtraction, fix comments.
16485         (vectorizable_reduction): Handle nested cycles. In case of nested
16486         cycle keep track of the reduction variable position. Call
16487         vect_is_simple_reduction with additional parameter. Use original
16488         statement code in reduction epilogue for nested cycle. Call
16489         vect_create_epilog_for_reduction with additional parameter.
16490         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
16491         inner-loop vectorization.
16492         (vect_recog_widen_sum_pattern): Likewise.
16493         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
16494         and reductions.
16495         (vect_mark_stmts_to_be_vectorized): Likewise.
16496         (vect_get_vec_def_for_operand): Handle nested cycles.
16497
16498 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16499
16500         * doc/invoke.texi (Debugging Options): Fix option index entries
16501         for -fdump-statistics, -frandom-seed add entries for
16502         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
16503         (FRV Options): Fix entries for -mTLS, -mtls.
16504         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
16505         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
16506         (M68hc1x Options): Fix @itemx for -mnominmax.
16507         (MCore Options): Fix entry for -mno-lsim.
16508         (MMIX Options): Fix entry for -mabi=mmixware.
16509         (PDP-11 Options): Fix entry for -mbcopy-builtin.
16510
16511 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
16512
16513         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
16514         Mention the plugin mode of gengtype.
16515         * doc/gty.texi (Source Files Containing Type Information): Likewise.
16516         * gengtype.c: Updated copyright.
16517         (plugin_files, nb_plugin_files) Added new static variables.
16518         (measure_input_list) Care about plugin_files.
16519         (write_rtx_next): Added early return in plugin mode.
16520         (create_file): Updated copyright year in generated file. Added
16521         asserts.
16522         (oprintf): Added early return if NULL outf.
16523         (get_output_file_with_visibility): Care of plugin_files.
16524         (get_output_file_name): May return null.
16525         (write_local): Added early return.
16526         (put_mangled_filename): Ditto.
16527         (finish_root_table): Added check for base_files.
16528         (write_roots): Care about null when plugins.
16529         (main): Added plugin mode.
16530
16531 2009-06-15  Ian Lance Taylor  <iant@google.com>
16532
16533         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
16534         * gcov.c (read_count_file): Add braces around variables declared
16535         before label.
16536
16537         * c.opt (Wjump-misses-init): New warning.
16538         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
16539         -Wall and -Wc++-compat if not already set.
16540         (c_common_post_options): Clear warn_jump_misses_init if it was not
16541         set.
16542         * c-decl.c (struct c_binding): Change type field to a union with
16543         new label field.  Make it the first field in the struct.  Update
16544         references to type to use u.type instead.
16545         (struct c_spot_bindings): Define.
16546         (struct c_goto_bindings): Define.
16547         (c_goto_bindings_p): Define, along with VECs.
16548         (struct c_label_vars): Define.
16549         (struct c_scope): Add has_label_bindings field.
16550         (bind_label, set_spot_bindings): New static functions.
16551         (decl_jump_unsafe, update_spot_bindings): New static functions.
16552         (update_label_decls): New static function.
16553         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
16554         Update binding u.label field to shadowed field.
16555         (c_binding_start_stmt_expr): New function.
16556         (c_binding_end_stmt_expr): New function.
16557         (pushdecl): Don't call c_begin_vm_scope.
16558         (make_label): Add defining and p_label_vars parameters.  Change
16559         all callers.
16560         (lookup_label): Correct test for whether a label has not yet been
16561         defined.  Call bind_label rather than bind.
16562         (warn_about_goto): New static function.
16563         (lookup_label_for_goto): New function.
16564         (declare_label): Call bind_label rather than bind.
16565         (check_earlier_gotos): New static function.
16566         (define_label): Don't give errors about jumping into statement
16567         expressions or scopes of variably modified types.  Call
16568         set_spot_bindings and check_earlier_gotos.  Call bind_label
16569         instead of bind.  Don't set label_context_stack_se or
16570         label_context_stack_vm.
16571         (c_get_switch_bindings): New function.
16572         (c_release_switch_bindings): New function.
16573         (c_check_switch_jump_warnings): New function.
16574         (start_function): Don't set label_context_stack_se or
16575         label_context_stack_vm.
16576         (finish_function): Likewise.
16577         * c-typeck.c (label_context_stack_se): Don't define.
16578         (label_context_stack_vm): Don't define.
16579         (c_finish_goto_label): Call lookup_label_for_goto rather than
16580         lookup_label.  Don't give errors about jumping into a statement
16581         expression or the scope of a variably modified type.  Don't set
16582         label_context_stack_se or label_context_stack_vm.
16583         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
16584         fields.  Add bindings field.
16585         (c_start_case): Don't set deleted fields.  Set bindings field.
16586         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
16587         or blocked_vm.  Call c_check_switch_jump_warnings.
16588         (c_finish_case): Don't test blocked_stmt_expr field.  Call
16589         c_release_switch_bindings.
16590         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
16591         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
16592         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
16593         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
16594         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
16595         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
16596         (c_begin_vm_scope, c_end_vm_scope): Don't define.
16597         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
16598         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
16599         (C_DECL_UNJUMPABLE_VM): Don't define.
16600         (C_DECL_UNDEFINABLE_VM): Don't define.
16601         (struct c_label_list): Don't define.
16602         (struct c_label_context_se): Don't define.
16603         (struct c_label_context_vm): Don't define.
16604         (struct c_spot_bindings): Declare.
16605         (c_bindings_start_stmt_expr): Declare.
16606         (c_bindings_end_stmt_expr): Declare.
16607         (lookup_label_for_goto): Declare.
16608         (c_get_switch_bindings, c_release_switch_bindings): Declare.
16609         (c_check_switch_jump_warnings): Declare.
16610         (label_context_stack_se, label_context_stack_vm): Don't declare.
16611         (c_finish_goto_label): Update declaration.
16612         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
16613         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
16614         (Warning Options): Document -Wjump-misses-init.
16615
16616 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
16617
16618         * tree-object-size.c (addr_object_size): Fix a pasto in the last
16619         change.
16620
16621 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
16622
16623         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
16624
16625 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
16626
16627         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
16628
16629 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
16630
16631         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
16632
16633 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
16634
16635         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
16636         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
16637         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
16638         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
16639         * dwarf2asm.c (dw2_force_const_mem): Update call to
16640         make_decl_one_only.
16641         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
16642         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
16643         * langhooks.c (lhd_comdat_group): Remove.
16644         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
16645         * tree.h (DECL_COMDAT_GROUP): New.
16646         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
16647         (tree_decl_with_vis): Add comdat_group. Remove one_only.
16648         (make_decl_one_only): Change signature.
16649         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
16650         make_decl_one_only.
16651         (make_decl_one_only): Change signature.
16652         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
16653
16654 2009-06-15  Richard Guenther  <rguenther@suse.de>
16655
16656         PR middle-end/40439
16657         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
16658
16659 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
16660
16661         * tree-ssa-math-opts.c: Remove extra divide.
16662
16663 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
16664
16665         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
16666
16667 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
16668
16669         * passes.c: Add bswap pass.
16670         * tree-pass.h: Add pass_optimize_bswap declaration.
16671         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
16672         Include rtl.h, expr.h and optabs.h for optab_handler check.
16673         (struct symbolic_number, pass_optimize_bswap): New definition.
16674         (do_shift_rotate, verify_symbolic_number_p): New functions.
16675         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
16676         (gate_optimize_bswap): New function.
16677         * tree.c (widest_int_cst_value): New function.
16678         * tree.h (widest_int_cst_value): Prototype added.
16679
16680 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
16681
16682         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
16683         REG_EQUAL/REG_EQUIV notes.
16684
16685 2009-06-14  Richard Guenther  <rguenther@suse.de>
16686
16687         PR middle-end/40389
16688         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
16689         has its address taken if NRV was applied and it is addressable.
16690         * tree-ssa-structalias.c (get_constraint_for_address_of): New
16691         function split out from ...
16692         (get_constraint_for_1): ... here.
16693         (handle_rhs_call): Use it to mark the return slot escaped if
16694         it is addressable and NRV was applied.
16695
16696 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
16697
16698         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
16699         Change first argument type to location_t.
16700         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
16701         Do not set input_location.
16702         Use loc instead of input_location throughout.
16703
16704 2009-06-13  Richard Guenther  <rguenther@suse.de>
16705
16706         PR tree-optimization/40421
16707         * tree-predcom.c (should_unroll_loop_p): Remove.
16708         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
16709
16710 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
16711
16712         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
16713         Add location argument.
16714
16715 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
16716
16717         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
16718         build_decl.
16719         * config/s390/s390.c (s390_build_builtin_va_list): Same.
16720         (s390_gimplify_va_arg): Pass location to create_artificial_label.
16721         * config/spu/spu-protos.h: Add location to
16722         spu_resolve_overloaded_builtin.
16723         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
16724         spu_build_builtin_va_list.
16725         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
16726         argument.  Pass location to build_function_call_vec.
16727         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
16728         build_decl.
16729         (emit_fpu_switch): Same.
16730         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
16731         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
16732         to build_decl and create_artificial_label.
16733         (xtensa_gimplify_va_arg_expr): Same.
16734         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
16735         (xstormy16_gimplify_va_arg_expr): Same.
16736         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
16737         * config/arm/arm.c (arm_build_builtin_va_list): Same.
16738         * config/mips/mips.c (mips_build_builtin_va_list): Same.
16739         (mips16_build_function_stub): Same.
16740         (mips16_build_call_stub): Same.
16741
16742 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
16743
16744         PR target/40327
16745         * arm/constraints.md (Pa, Pb): New constraints.
16746         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
16747         split pattern to deal with them.
16748
16749 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
16750
16751         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
16752         fix index entry for -Xpreprocessor.
16753
16754 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
16755
16756         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
16757         Add location argument to build_decl call.
16758         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
16759         (rs6000_init_builtins): Same.
16760         (spe_init_builtins): Same.
16761         (rs6000_gimplify_va_arg): Add location argument to
16762         create_artificial_label call.
16763
16764 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
16765
16766         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
16767         * combine-stack-adj.c (pass_stack_adjustments): Use it.
16768         * Makefile.in: Fix GGC dependency for gcse.o.
16769
16770 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
16771
16772         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
16773         * gimple-pretty-print.c (dump_gimple_stmt): Same.
16774         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
16775         created.
16776         * c-parser.c (c_parser_binary_expression): Use current column while
16777         building binary operations.
16778         * common.opt (fshow-column): Enable by default.
16779         * tree-vrp.c (check_array_ref): Use warning_at.
16780         (check_array_bounds): Use location from call back if expr has no
16781         location.
16782         * tree.h: Add location argument to maybe_fold_*.
16783         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
16784         (maybe_fold_offset_to_array_ref): Add location argument and use it.
16785         (maybe_fold_offset_to_component_ref): Same.
16786         (maybe_fold_offset_to_reference): Same.
16787         (maybe_fold_offset_to_address): Same.
16788         (maybe_fold_stmt_indirect): Same.
16789         (maybe_fold_stmt_addition): Same.
16790         (fold_stmt_r): Pass location to maybe_fold_*.
16791         (fold_gimple_assign): Same.
16792         * c-tree.h: Add location argument to finish_decl,
16793         default_function_array_conversion, store_init_value.
16794         * c-decl.c (define_label): Use error_at.
16795         (c_make_fname_decl): Pass location to finish_decl.
16796         (finish_decl): New location argument.
16797         (build_compound_literal): Pass location to store_init_value.
16798         (grokdeclarator): Pass location to finish_decl.
16799         (grokfield): Same.
16800         * c-typeck.c (array_to_pointer_conversion): New location argument.
16801         (function_to_pointer_conversion): Same.
16802         (default_function_array_conversion): Same.
16803         (parser_build_unary_op): Pass location to overflow_warning.
16804         (parser_build_binary_op): Same.  Use warning_at.
16805         (build_unary_op): Pass location to array_to_pointer_conversion.
16806         (build_c_cast): Pass location to digest_init.
16807         (build_modify_expr): New location argument.
16808         (convert_for_assignment): Same.
16809         (store_init_value): Same.
16810         (digest_init): Same.
16811         (output_init_element): Pass location to digest_init and
16812         array_to_pointer_conversion.
16813         (c_finish_return): Pass location to convert_for_assignment.
16814         * gimplify.c (gimplify_conversion): Pass location to
16815         maybe_fold_offset_to_address.
16816         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
16817         to maybe_fold_stmt_addition.
16818         * c-omp.c (c_finish_omp_atomic): Pass new location to
16819         build_modify_expr.
16820         (c_finish_omp_for): Same.
16821         * c-common.c (overflow_warning): New argument.
16822         * c-common.h: New argument to build_modify_expr, overflow_warning.
16823         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
16824         finish_decl.
16825         (c_parser_initializer): Pass location to
16826         default_function_array_conversion.
16827         (c_parser_initelt): Same.
16828         (c_parser_initval): Same.
16829         (c_parser_asm_operands): Same.
16830         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
16831         (c_parser_conditional_expression): Same.
16832         (c_parser_binary_expression): Add location info to stack.  Use it.
16833         (c_parser_unary_expression): Pass location to
16834         default_function_array_conversion, parser_build_unary_op,
16835         build_indirect_ref, c_parser_postfix_expression_after_primary.
16836         (c_parser_postfix_expression_after_primary): New location argument.
16837         Use it.
16838         (c_parser_expression_conv): Pass location to
16839         default_function_array_conversion.
16840         (c_parser_expr_list): Same.
16841         (c_parser_omp_atomic): Same.
16842         (c_parser_omp_for_loop): Same.
16843         * c-tree.h (struct c_declarator): Add comment to id_loc.
16844         (build_array_declarator): New argument.
16845         * c-decl.c (build_array_declarator): Add location argument.
16846         (grokdeclarator): Set id_loc for cdk_array.
16847         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
16848         build_array_declarator.
16849         * tree.c (build_omp_clause): Add location argument.
16850         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
16851         (OMP_CLAUSE_LOCATION): New macro.
16852         (struct tree_omp_clause): Add location field.
16853         (build_omp_clause): Add argument.
16854         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
16855         build_omp_clause.
16856         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
16857         (cp_parser_omp_clause_collapse): Same.
16858         (cp_parser_omp_clause_default): Same.
16859         (cp_parser_omp_clause_if): Same.
16860         (cp_parser_omp_clause_nowait): Same.
16861         (cp_parser_omp_clause_num_threads): Same.
16862         (cp_parser_omp_clause_ordered): Same.
16863         (cp_parser_omp_clause_schedule): Same.
16864         (cp_parser_omp_clause_untied): Same.
16865         (cp_parser_omp_for_loop): Same.
16866         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
16867         * c-tree.h (c_start_case): Add location argument.
16868         (c_process_expr_stmt): Same.
16869         (c_finish_goto_*): Same.
16870         * tree-parloops.c (initialize_reductions): Pass location to
16871         build_omp_clause.
16872         (create_parallel_loop): Same.
16873         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
16874         (gfc_trans_omp_reduction_list): Same.
16875         (gfc_trans_omp_clauses): Same.
16876         (gfc_trans_omp_do): Same.
16877         * c-typeck.c (c_finish_goto_label): Same.
16878         (c_finish_goto_ptr): New location argument.
16879         (c_start_case): Same.
16880         (emit_side_effect_warnings): Same.
16881         (c_process_expr_stmt): Same.
16882         (c_finish_stmt_expr): Same.
16883         (c_finish_omp_clauses): Use error_at instead of error.
16884         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
16885         build_omp_clause.
16886         * c-omp.c (c_split_parallel_clauses): New location argument.
16887         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
16888         to build_omp_clause.
16889         (convert_local_reference_stmt): Same.
16890         (convert_gimple_call): Same.
16891         * c-common.h (c_split_parallel_clauses): New argument.
16892         * c-parser.c (c_parser_statement_after_labels): Pass location to
16893         c_finish_goto_label.
16894         (c_parser_switch_statement): Pass location to c_start_case.
16895         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
16896         and c_process_expr_stmt.
16897         (c_parser_omp_variable_list): Add location argument.
16898         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
16899         (c_parser_omp_clause_default): Same.
16900         (c_parser_omp_clause_if): Same.
16901         (c_parser_omp_clause_num_threads): Same.
16902         (-c_parser_omp_clause_ordered): Same.
16903         (c_parser_omp_clause_reduction): Pass location to
16904         c_parser_omp_variable_list.
16905         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
16906         (c_parser_omp_clause_untied): Same.
16907         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
16908         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
16909
16910         * c-tree.h (check_for_loop_decls, undeclared_variable,
16911         build_component_ref, build_array_ref, build_external_ref,
16912         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
16913         build_conditional_expr, build_compound_expr, c_cast_expr,
16914         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
16915         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
16916         argument.
16917         * c-semantics.c (build_stmt): Same.
16918         (build_case_label): Same.
16919         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
16920         (undeclared_variable): New argument.
16921         (make_label): Same.
16922         (lookup_label): Pass location on down.
16923         (define_label): Same.
16924         (finish_decl): Same.
16925         (build_compound_literal): Same.
16926         (finish_struct): Same.
16927         (finish_function): Do not set location here.
16928         (check_for_loop_decls): New argument.
16929         * tree.c (save_expr): Set location.
16930         (build_empty_stmt): New argument.
16931         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
16932         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
16933         * builtins.c (gimplify_va_arg_expr): Use locations.
16934         (expand_builtin_sync_operation): Same.
16935         * c-typeck.c (build_component_ref): New argument.
16936         (build_array_ref): Same.
16937         (build_external_ref): Same.
16938         (c_expr_sizeof_expr): Same.
16939         (c_expr_sizeof_type): Same.
16940         (parser_build_unary_op): Same.
16941         (build_conditional_expr): Same.
16942         (build_compound_expr): Pass location on down.
16943         (build_compound_expr): New argument.
16944         (build_c_cast): Same.
16945         (c_cast_expr): Same.
16946         (build_asm_expr): Same.
16947         (c_finish_return): Same.
16948         (c_process_expr_stmt): Pass location on down.
16949         (c_finish_stmt_expr): New argument.
16950         (push_clenaup): Same.
16951         (c_finish_omp_parallel): Same.
16952         (c_finish_omp_task): Same.
16953         * gimplify.c (gimplify_call_expr): Pass location on down.
16954         * c-omp.c (c_finish_omp_master): New argument.
16955         (c_finish_omp_critical): Same.
16956         (c_finish_omp_ordered): Same.
16957         (c_finish_omp_barrier): Same.
16958         (-c_finish_omp_taskwait): Same.
16959         (c_finish_omp_atomic): Same.
16960         (c_finish_omp_flush): Same.
16961         * tree-inline.c (copy_tree_body_r): Pass location on down.
16962         (inline_forbidden_p): Remove use of input_location.
16963         * c-gimplify.c (c_build_bind_expr): New argument.
16964         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
16965         (c_sizeof_or_alignof_type): New argument.
16966         (c_alignof_expr): Same.
16967         (build_va_arg): Same.
16968         (c_add_case_label): Same.
16969         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
16970         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
16971         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
16972         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
16973         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
16974         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
16975         New argument.
16976         * stub-objc.c (objc_build_selector_expr): Same.
16977         (objc_build_throw_stmt): Same.
16978         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
16979         (c_parser_initelt): Same.
16980         (c_parser_compound_statement): Same.
16981         (c_parser_compound_statement_nostart): Same.
16982         (c_parser_label): Same.
16983         (c_parser_statement_after_labels): Same.
16984         (c_parser_if_body): Same.
16985         (c_parser_else_body): Same.
16986         (c_parser_if_statement): Same.
16987         (c_parser_switch_statement): Same.
16988         (c_parser_while_statement): Same.
16989         (c_parser_do_statement): Same.
16990         (c_parser_for_statement): Same.
16991         (c_parser_asm_statement): Same.
16992         (c_parser_conditional_expression): Same.
16993         (c_parser_binary_expression): Same.
16994         (c_parser_cast_expression): Same.
16995         (c_parser_unary_expression): Same.
16996         (c_parser_sizeof_expression): Same.
16997         (c_parser_alignof_expression): Same.
16998         (c_parser_postfix_expression): Same.
16999         (c_parser_expression): Same.
17000         (c_parser_objc_receiver): Same.
17001         (c_parser_omp_variable_list): Same.
17002         (c_parser_omp_structured_block): Same.
17003         (c_parser_omp_atomic): New argument.
17004         (c_parser_omp_barrier): Same.
17005         (c_parser_omp_critical): Same.
17006         (c_parser_omp_flush): Pass location on down.
17007         (c_parser_omp_for_loop): New argument.
17008         (c_parser_omp_for): Same.
17009         (c_parser_omp_master): Same.
17010         (c_parser_omp_ordered): Same.
17011         (c_parser_omp_sections_scope): Same.
17012         (c_parser_omp_sections): Same.
17013         (c_parser_omp_parallel): Same.
17014         (c_parser_omp_single): Same.
17015         (c_parser_omp_task): Same.
17016         (c_parser_omp_taskwait): Pass location on down.
17017         (c_parser_omp_construct): Same.
17018         (c_parser_omp_threadprivate): Same.
17019         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
17020         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
17021         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
17022         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
17023         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
17024         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
17025         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
17026         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
17027         config/i386/i386.c, stmt.c:
17028         Add location argument to the following function definitions and/or
17029         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
17030         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
17031         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
17032         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
17033         do_case, c_finish_bc_stmt, build_compound_literal,
17034         build_function_call.
17035         * c-decl.c (build_compound_literal): Add location argument.
17036         Make all diagnostic calls use location.
17037         (start_struct): Same.
17038         (finish_struct): Same.
17039         (start_enum): Same.
17040         (build_enumerator): Same.
17041         (start_function): Same.
17042         (grokdeclarator): Make all diagnostic calls use location.
17043         (store_parm_decls_oldstyle): Same.
17044         * c-typeck.c (build_function_call): Add location argument.
17045         Make all diagnostic calls use location.
17046         (do_case): Same.
17047         (c_finish_bc_stmt): Same.
17048         * tree-nested.c (get_trampoline_type): Add argument.
17049         Pass location to build_decl.
17050         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
17051         * rtl.h (RTL_LOCATION): New.
17052         * c-common.c (c_add_case_label): Add location argument.
17053         Make all diagnostic calls use location.
17054         * c-common.h: Add location argument to make_fname_decl, do_case,
17055         c_add_case_label, build_function_call, resolve_overloaded_builtin.
17056         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
17057         Set it appropriately for every case.  Pass enum_loc to start_enum
17058         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
17059         parser_xref_tag.
17060         (c_parser_struct_or_union_specifier): Save location.  Use it for
17061         start_struct, finish_struct, and parser_xref_tag.
17062
17063 2009-06-12  Ian Lance Taylor  <iant@google.com>
17064
17065         * fold-const.c (fold_unary): Rename local variable and to and_expr.
17066
17067         * c-opts.c (c_common_handle_option): For -Wc++-compat set
17068         cpp_opts->warn_cxx_operator_names.
17069
17070 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17071
17072         PR tree-opt/38865
17073         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
17074         is returns NULL and OP is a VCE, look through the VCE.
17075
17076 2009-06-12  Ian Lance Taylor  <iant@google.com>
17077
17078         PR bootstrap/40430
17079         * collect2.c (main): Use CONST_CAST2 in code inside #if
17080         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
17081
17082 2009-06-12  Joey Ye  <joey.ye@intel.com>
17083
17084         PR middle-end/39146
17085         * cfgexpand.c (get_decl_align_unit): Update
17086         max_used_stack_slot_alignment with align instead of
17087         stack_alignment_needed.
17088
17089         * function.c (assign_stack_local_1): Update
17090         max_used_stack_slot_alignment with alignment_in_bits instead
17091         of stack_alignment_needed.
17092         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
17093         here.
17094
17095 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
17096
17097         * dwarf2out.c (last_var_location_insn): New variable.
17098         (dwarf2out_end_epilogue): Clear last_var_location_insn.
17099         (dwarf2out_var_location): Don't record anything after last real
17100         insn.  Only change labels if there were any real instructions
17101         in between last note and this one, or if changed sections.
17102
17103 2009-06-11  Richard Henderson  <rth@redhat.com>
17104
17105         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
17106         note when storing the frame pointer in a register.
17107         (FRP): Don't redefine to nothing for epilogue.
17108         (alpha_expand_epilogue): Mark register and sp restores.
17109         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
17110
17111         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
17112         when gen_lowpart is needed.
17113
17114 2009-06-11  Richard Henderson  <rth@redhat.com>
17115
17116         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
17117
17118         * dwarf2out.c (need_data_align_sf_opcode): New.
17119         (div_data_align): Move earlier.
17120         (def_cfa_1, reg_save): Use it.
17121
17122 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
17123
17124         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
17125         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
17126         (ix86_handle_option): Handle OPT_mcrc32.
17127         (ix86_target_string): Add -mcrc32.
17128         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
17129
17130         * config/i386/i386.h (TARGET_CRC32): New.
17131
17132         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
17133         (sse4_2_crc32di): Likewise.
17134
17135         * config/i386/i386.opt (mcrc32): New.
17136
17137         * doc/invoke.texi: Document -mcrc32.
17138
17139 2009-06-11  Richard Henderson  <rth@redhat.com>
17140
17141         * common.opt (gdwarf-): Accept a version number.
17142         * doc/invoke.texi (gdwarf-): Update docs.
17143         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
17144         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
17145         version level, and record it.
17146
17147         * dwarf2.h (DW_CIE_VERSION): Remove.
17148         * dwarf2out.c (DWARF_VERSION): Remove.
17149         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
17150         (output_call_frame_info): Use CIE version 3 for dwarf3,
17151         or if the return register column is out of range for version 1.
17152         (dwarf_stack_op_name): Add all dwarf3 values.
17153         (DEBUG_PUBTYPES_SECTION): New.
17154         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
17155         encoding change for dwarf3.
17156         (output_die) [dw_val_class_die_ref]: Likewise.
17157         (output_compilation_unit_header): Emit correct version for dwarf3.
17158         (output_line_info): Likewise.
17159         (output_pubnames): Update for DWARF_VERSION removal.
17160         (output_aranges): Likewise.
17161         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
17162         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
17163         (dwarf2out_finish): Likewise.
17164
17165 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
17166
17167         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
17168         in r148403.
17169
17170 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
17171
17172         PR c/39252
17173         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
17174         * builtins.c (expand_builtin_unreachable): New function.
17175         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
17176         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
17177         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
17178         successors.
17179         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
17180         searching for missing barriers.
17181
17182 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
17183
17184         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
17185         when -fprofile-generate* was passed.
17186         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
17187
17188 2009-06-11  Anthony Green  <green@moxielogic.com>
17189
17190         * config/moxie/moxie.md: Define length attribute for all instructions.
17191         (rCC): Define.
17192         (*b<cond:code>): Support limited branch ranges for new PC-relative
17193         branch instructions.
17194         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
17195
17196 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
17197
17198         * config/i386/i386.c (min_insn_size): Use get_attr_length
17199         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
17200         For __asm return 0.
17201
17202         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
17203         instead of emit_insn_before.
17204
17205 2009-06-10  Ian Lance Taylor  <iant@google.com>
17206
17207         PR bootstrap/40408
17208         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
17209         GIMPLE_SWITCH.
17210
17211 2009-06-10  Revital Eres  <eres@il.ibm.com>
17212
17213         * passes.c (init_optimization_passes): Reschedule
17214         predictive-commoning pass before complete unroll pass.
17215
17216 2009-06-10  Martin Jambor  <mjambor@suse.cz>
17217
17218         * cgraph.c (cgraph_node_can_be_local_p): New function.
17219         (cgraph_make_node_local): New function.
17220         * cgraph.h (cgraph_node_can_be_local_p): Declare.
17221         (cgraph_make_node_local): Declare.
17222
17223 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
17224
17225         * tree.h (tree_base): Add packed_flag and user_align fields.
17226         Decrease size of spare field.
17227         (TYPE_USER_ALIGN): Use user_align from tree_base.
17228         (DECL_USER_ALIGN): Likewise.
17229         (TYPE_PACKED): Use packed_flag from tree_base.
17230         (DECL_PACKED): Likewise.
17231         (tree_type): Delete packed_flag and user_align fields.  Widen
17232         precision field.  Widen mode field and shuffle fields to align
17233         mode on an 8-bit boundary.
17234         (tree_decl_common): Delete decl_flag_1 and user_align fields.
17235         Renumber decl_flag_* fields.  Fix comments.  Widen
17236         decl_common_unused field.
17237         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
17238         (DECL_EXTERNAL): Likewise.
17239         (DECL_BIT_FIELD): Likewise.
17240         (DECL_NONADDRESSABLE_P): Likewise.
17241         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
17242         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
17243
17244 2009-06-10  Ian Lance Taylor  <iant@google.com>
17245
17246         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
17247         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
17248         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
17249         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
17250         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
17251         DEF_VEC_ALLOC_FUNC_P.
17252         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
17253         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
17254         DEF_VEC_ALLOC_FUNC_O.
17255         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
17256         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
17257         DEF_VEC_ALLOC_FUNC_I.
17258         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
17259         (vec_stack_p_reserve_exact_1): Declare.
17260         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
17261         (vec_stack_free): Declare.
17262         (VEC_stack_alloc): Define.
17263         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
17264         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
17265         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
17266         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
17267         for void_p.
17268         (stack_vecs): New static variable.
17269         (vec_stack_p_reserve_exact_1): New function.
17270         (vec_stack_o_reserve_1): New static function.
17271         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
17272         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
17273         (vec_stack_free): New function.
17274         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
17275         (VEC_df_ref_stack_alloc): Define.
17276         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
17277         DEF_VEC_ALLOC_P_STACK.
17278         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
17279         (struct df_collection_rec): Change _vec fields to VEC.  Remove
17280         _use fields.
17281         (df_free_collection_rec): Adjust for new fields.
17282         (df_insn_rescan): Use new df_collection_rec fields.
17283         (df_notes_rescan, df_canonize_collection_rec): Likewise.
17284         (df_ref_create_structure, df_ref_record): Likewise.
17285         (df_get_conditional_uses, df_get_call_refs): Likewise.
17286         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
17287         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
17288         (df_record_exit_block_uses, df_bb_verify): Likewise.
17289         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
17290         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
17291         Remove count parameter.  Change return type to void.  Change all
17292         callers.
17293         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
17294         Remove count parameter.  Change return type to void.  Change all
17295         callers.
17296         (df_install_refs): Change old_vec parameter to VEC.  Remove count
17297         parameter.  Change all callers.
17298         (df_install_mws): Change old_vec parameter to VEC.  Remove count
17299         parameter.  Change all callers.
17300         (df_refs_verify): Change new_rec parameter to VEC.  Change call
17301         callers.
17302         (df_mws_verify): Likewise.
17303
17304 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
17305
17306         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
17307
17308 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
17309
17310         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
17311
17312 2009-06-10  Anthony Green  <green@moxielogic.com>
17313
17314         * config/moxie/crti.asm: New file.
17315         * config/moxie/crtn.asm: New file.
17316         * config/moxie/moxie.c: New file.
17317         * config/moxie/moxie.h: New file.
17318         * config/moxie/sfp-machine.h: New file.
17319         * config/moxie/moxie-protos.h: New file.
17320         * config/moxie/t-moxie: Created.
17321         * config/moxie/t-moxie-softfp: Created.
17322         * config/moxie/moxie.md: Created.
17323         * config/moxie/constraints.md: Created.
17324         * config.gcc: Add moxie support.
17325         * doc/md.texi (Machine Constraints): Add moxie constraints.
17326         * doc/contrib.texi (Contributors): Mention moxie port.
17327         * doc/install.texi (Specific): Mention the moxie port.
17328
17329 2009-06-09  Ian Lance Taylor  <iant@google.com>
17330
17331         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
17332         compiling with C++.
17333         * optabs.c (optab_table): Only use designated initializers if
17334         HAVE_DESIGNATED_INITIALIZERS is defined.
17335         (convert_optab_table): Likewise.
17336         (init_optabs): Always call init_insn_codes if
17337         HAVE_DESIGNATED_INITIALIZERS is not defined.
17338
17339 2009-06-09  Ian Lance Taylor  <iant@google.com>
17340
17341         * targhooks.c (default_builtin_vectorized_function): Change fn
17342         parameter to unsigned int.
17343         (default_builtin_vectorized_conversion): Change code parameter to
17344         unsigned int.
17345         (default_builtin_reciprocal): Change fn parameter to unsigned int.
17346         * targhooks.h: Update declarations.
17347         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
17348         parameter to unsigned int.
17349
17350         * c-typeck.c (comptypes_check_enum_int): New static function.
17351         (comptypes_internal): Add enum_and_int_p parameter.  Change all
17352         callers.
17353         (comp_target_types): Add location parameter.  Change all callers.
17354         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
17355         Change all callers.
17356         (function_types_compatible_p, type_lists_compatible_p): Likewise.
17357         (build_conditional_expr): Add colon_loc parameter.  Change all
17358         callers.
17359         (convert_for_assignment): Add location parameter.  Change all callers.
17360         * c-parser.c (c_parser_conditional_expression): Pass location of
17361         colon to build_conditional_expr.
17362         * c-tree.h (build_conditional_expr): Update declaration.
17363
17364 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
17365
17366         * graphite.c: Revert previous patch.
17367
17368 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
17369
17370         PR bootstrap/40103
17371         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
17372
17373 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
17374
17375         * tree-ssa-loop-prefetch.c
17376         (loop_prefetch_arrays): Fixed a portability problem in printf format
17377         string.
17378
17379 2009-06-09  Martin Jambor  <mjambor@suse.cz>
17380
17381         PR tree-optimization/40351
17382         * tree-sra.c (propagate_subacesses_accross_link): Check that a
17383         refrence to a potential artifical subaccess can be constructed.
17384
17385 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
17386
17387         * config/sh/sh-protos.h (sh_optimization_options): Declare.
17388         (sh_override_options): Likewise.
17389         * config/sh/sh.c: Include params.h.
17390         (sh_optimization_options): New.
17391         (sh_override_options): Likewise.
17392         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
17393         (OVERRIDE_OPTIONS): Use sh_override_options.
17394
17395 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
17396
17397         * dwarf2out.c (emit_cfa_remember): New variable.
17398         (add_fde_cfi): If emit_cfa_remember, recurse to add
17399         DW_CFA_remember_state first.
17400         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
17401         instead just set emit_cfa_remember.
17402
17403 2009-06-08  Jan Hubicka  <jh@suse.cz>
17404
17405         PR debug/40126
17406         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
17407
17408 2009-06-08  Jan Hubicka  <jh@suse.cz>
17409
17410         PR middle-end/39834
17411         * cgraphunit.c (save_inline_function_body): Do not copy transform
17412         hooks for saved inline bodies.
17413         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
17414         for given function.
17415
17416 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
17417
17418         * jump.c (returnjump_p): Handle delayed branches.  Add missing
17419         function comment.
17420
17421 2009-06-08  Jan Hubicka  <jh@suse.cz>
17422
17423         PR middle-end/40102
17424         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
17425         original node might've been modified.
17426         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
17427
17428 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
17429
17430         * tree-object-size.c (addr_object_size): Add OSI argument.
17431         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
17432         (compute_builtin_object_size, expr_object_size): Adjust callers.
17433         (plus_stmt_object_size): Call addr_object_size instead of
17434         compute_builtin_object_size.
17435
17436 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
17437             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
17438
17439         * tree-ssa-loop-prefetch.c
17440         (gather_memory_references): Introduced a counter for the number of
17441         memory references.
17442         (anything_to_prefetch_p): Introduced a counter for the number of
17443         prefetches.
17444         (is_loop_prefetching_profitable): New function with a cost model
17445         for prefetching.
17446         (loop_prefetch_arrays): Use the new cost model to determine if
17447         prefetching is profitable.
17448         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
17449         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
17450         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
17451         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
17452         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
17453         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
17454
17455 2009-06-08  Michael Matz  <matz@suse.de>
17456
17457         PR debug/40012
17458         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
17459         partitions use the same.
17460         (expand_one_var): Deal with DECL_RTL sometimes begin set also
17461         for basevars of SSA_NAMEs.
17462         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
17463         to not expand them twice.
17464         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
17465         multiple places.
17466
17467 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
17468
17469         * common.opt (fcompare-debug=, fcompare-debug-second): New.
17470         (fdump-final-insns=, gtoggle): New.
17471         * doc/invoke.texi: Document them.
17472         * final.c (rest_of_clean_state): Dump final insn stream.
17473         * gcc.c (invoke_as): Hook in -fcompare-debug.
17474         (static_spec_functions): Add compare-debug-dump-opt,
17475         compare-debug-self-opt and compare-debug-auxbase-opt.
17476         (compare_debug, compare_debug_second, compare_debug_opt): New.
17477         (switches_debug_check, n_switches_debug_check): New.
17478         (debug_auxbase_opt, debug_check_temp_file): New.
17479         (process_command): Handle -fno-compare-debug, -fcompare-debug and
17480         -fcompare-debug=*.
17481         (do_self_spec): Handle arguments after switches.
17482         (do_spec_1): Add .gk extension to temp file basenames for compare.
17483         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
17484         (cc1_options): Use it instead of normal auxbase computation for
17485         the second compare-debug compilation.
17486         (compare_files): New.
17487         (main): Set up and implement compare debug mode.
17488         (compare_debug_dump_opt_spec_function): New.
17489         (compare_debug_self_opt_spec_function): New.
17490         (compare_debug_auxbase_opt_spec_function): New.
17491         * toplev.c (process_options): Handle flag_gtoggle,
17492         flag_dump_final_insns.
17493         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
17494         during -fcompare-debug-second compilation.
17495
17496 2009-06-07  Ian Lance Taylor  <iant@google.com>
17497
17498         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
17499         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
17500
17501         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
17502         with no default node.  Change warning with %H to warning_at.
17503         Don't clear warn_switch around case checking.
17504         * doc/invoke.texi (Warning Options): Clarify distinction between
17505         -Wswitch and -Wswitch-enum.
17506
17507 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17508
17509         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
17510
17511 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17512
17513         * gbl-ctors.h: Add header guard.
17514
17515 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17516
17517         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
17518         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
17519         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
17520         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
17521         prototypes for removed functions.
17522         (expressions_equal_p): Move to ...
17523         * tree-ssa-sccvn.h: ... here and ...
17524         * matrix-reorg.c: ... adjust includes.
17525
17526 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17527
17528         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
17529
17530 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17531
17532         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
17533         (finish_function): Remove erroneous whitespace.
17534
17535 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17536
17537         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
17538         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
17539
17540 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17541
17542         * errors.c (internal_error): Commentary typo fix.
17543         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
17544         * tree-ssa-pre.c: Ditto.
17545
17546 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17547
17548         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
17549         them is supposed to hold actual statements.
17550
17551 2009-06-06  Ian Lance Taylor  <iant@google.com>
17552
17553         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
17554         empty statements can now have attributes.
17555
17556 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
17557
17558         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
17559         * config/mips/mips.md: Ditto.
17560
17561 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
17562
17563         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
17564         _RELOCATABLE.
17565         (__eabi_uconvert): Likewise.
17566
17567 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
17568
17569         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
17570         CFI_* definitions with IN_GCC.
17571
17572 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
17573
17574         * xcoffout.h (xcoffout_source_line): Update prototype.
17575
17576 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17577
17578         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
17579         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
17580
17581 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
17582
17583         PR middle-end/40340
17584         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
17585         inlined_function_outer_scope_p blocks for artificial inlines
17586         even at -g0/-g1.
17587         * tree.c (tree_nonartificial_location): Rewrite using
17588         block_nonartificial_location.
17589
17590 2009-06-05  Revital Eres  <eres@il.ibm.com>
17591             Leehod Baruch  <leehod@il.ibm.com>
17592
17593         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
17594         (expand_expr_real_1): Remove comment.
17595         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
17596         Vectorize misaligned access when the target supports it.
17597         (vect_supportable_dr_alignment): Check for unaligned access support.
17598         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
17599         and remove asset.
17600
17601 2009-06-05  Julian Brown  <julian@codesourcery.com>
17602
17603         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
17604         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
17605
17606 2009-06-05  Richard Guenther  <rguenther@suse.de>
17607
17608         PR bootstrap/40350
17609         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
17610         as possibly unused.
17611
17612 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
17613
17614         * config/s390/s390.c (global_not_special_regno_p): New static inline.
17615         (save_gprs): Don't tell unwinder when a global register is saved.
17616         (s390_emit_epilogue): Emit needed epilogue unwind info.
17617
17618 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
17619
17620         * dwarf2out.c (deferred_asm_name): New.
17621         (add_name_and_src_coords_attributes): Defer creation of
17622         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
17623         computed yet.
17624         (move_linkage_attr): New.
17625         (dwarf2out_finish): Revisit deferrals and emit attributes at the
17626         right place.
17627
17628 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
17629
17630         * tree-nested.c (finalize_nesting_tree_1): Declare the
17631         frame_decl in the binding tree.
17632
17633 2009-06-04  Cary Coutant  <ccoutant@google.com>
17634
17635         * basic-block.h (struct basic_block_def): Add discriminator field.
17636         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
17637         callers.
17638         * debug.c (do_nothing_debug_hooks): Add additional entry.
17639         (debug_nothing_int_charstar_int): New function.
17640         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
17641         (debug_nothing_int_charstar_int): New declaration.
17642         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
17643         discriminator value in .loc directive.
17644         * final.c (last_discriminator): New variable.
17645         (discriminator): New variable.
17646         (final_start_function): Initialize above variables, pass current
17647         discriminator to debug hook.
17648         (notice_source_line): Check for discriminator change.
17649         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
17650         * sdbout.c (sdbout_source_line): New parameter.
17651         * tree-cfg.c (struct locus_discrim_map): New structure type.
17652         (discriminator_per_locus): New hash table.
17653         (build_gimple_cfg): Allocate and free discriminator hash table.
17654         (make_edges): Call assign_discriminator.
17655         (locus_map_hash): New function.
17656         (locus_map_eq): New function.
17657         (next_discriminator_for_locus): New function.
17658         (same_line_p): New function.
17659         (assign_discriminator): New function.
17660         (make_cond_expr_edges): Call assign_discriminator.
17661         (make_gimple_switch_edges): Likewise.
17662         (first_non_label_stmt): New function.
17663         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
17664         all callers.
17665         * xcoffout.c (xcoffout_source_line): Add new parameter.
17666
17667         * configure.ac (gcc_cv_as_discriminator): New configury check for
17668         gas support for discriminator.
17669         * configure: Regenerate.
17670         * config.in: Regenerate.
17671
17672 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17673
17674         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
17675         val after checking for integers.
17676
17677 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
17678
17679         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
17680         X64_REGPARM_MAX.
17681         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
17682         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
17683         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
17684         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
17685         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
17686         X64_SSE_REGPARM_MAX.
17687         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
17688         X64_SSE_REGPARM_MAX.
17689
17690 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
17691
17692         * gcc.c (report_times_to_file): New.
17693         (execute): Implement it.
17694         (process_command): Support -time=.
17695         * doc/invoke.texi: Document it.
17696
17697 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
17698
17699         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
17700         that have value exprs.
17701
17702 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
17703
17704         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
17705         declarations for constants until...
17706         (dw2_output_indirect_constant_1): ... this point.
17707
17708 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
17709
17710         PR target/10242
17711         * arm.md (arm_addsi3): Don't try to split an add with an
17712         eliminable register until after reload has completed.
17713
17714 2009-06-03  Ian Lance Taylor  <iant@google.com>
17715
17716         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
17717         * genattrtab.c (write_length_unit_log): Likewise.
17718         * genchecksum.c (dosum): Likewise.
17719         * gengtype.c (write_rtx_next): Likewise.
17720         (finish_root_table, write_roots): Likewise.
17721         * gimple.c (gimple_ops_offset_): Likewise.
17722         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
17723         * config/arc/arc.c (arc_attribute_table): Likewise.
17724         * config/arm/arm.c (arm_attribute_table): Likewise.
17725         * config/avr/avr.c (avr_attribute_table): Likewise.
17726         * config/crx/crx.c (crx_attribute_table): Likewise.
17727         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
17728         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
17729         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
17730         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
17731         * config/sh/sh.c (sh_attribute_table): Likewise.
17732         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
17733         * config/spu/spu.c (spu_attribute_table): Likewise.
17734         * config/v850/v850.c (v850_attribute_table): Likewise.
17735
17736         * config/alpha/alpha.c (vms_attribute_table): Make static.
17737         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
17738         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
17739         * config/mips/mips.c (mips_attribute_table): Likewise.
17740
17741         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
17742         $(SYSTEM_H).
17743         (cc1-checksum.o): Likewise.
17744
17745 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
17746
17747         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
17748
17749 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
17750
17751         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
17752         insn if it is changing sp.  Use gen_add3_insn instead of
17753         conditionally gen_addsi3 and gen_adddi3.
17754         (offset_below_red_zone_p): New static inline function.
17755         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
17756         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
17757         * config/rs6000/ppc-asm.h: Include auto-host.h.
17758         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
17759         CFI_RESTORE): Define.
17760         * config/rs6000/crtresxgpr.asm: Add unwind info.
17761         * config/rs6000/crtresxfpr.asm: Likewise.
17762         * config/rs6000/crtresgpr.asm: Likewise.
17763         * config/rs6000/crtresfpr.asm: Likewise.
17764         * config/rs6000/crtsavgpr.asm: Likewise.
17765         * config/rs6000/crtsavfpr.asm: Likewise.
17766
17767         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
17768         argument of DWARF2_FRAME_REG_OUT macros.
17769
17770 2009-06-03  Julian Brown  <julian@codesourcery.com>
17771
17772         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
17773         words or less (including TImode) in core registers.
17774
17775 2009-06-03  Richard Guenther  <rguenther@suse.de>
17776
17777         PR middle-end/40328
17778         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
17779
17780 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
17781
17782         * statistics.c (statistics_counter_event): Do not record event
17783         in pass dump if its number == -1.
17784         (curr_statistics_hash): Add assert that we never get passes
17785         with static number == -1.
17786
17787 2009-06-03  Richard Guenther  <rguenther@suse.de>
17788             Andrey Belevantsev  <abel@ispras.ru>
17789
17790         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
17791         non-BLKmode arrays addressable.
17792
17793 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
17794
17795         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
17796         * config/m68k/m68k.h: ... here.
17797
17798 2009-06-03  Martin Jambor  <mjambor@suse.cz>
17799
17800         PR tree-optimization/40323
17801         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
17802         assignment.
17803
17804 2009-06-03  Richard Guenther  <rguenther@suse.de>
17805
17806         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
17807         consistently.
17808
17809 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
17810
17811         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
17812         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
17813         JUMP_TABLE_DATA_P where applicable.
17814         * config/sh/sh.c: Ditto.
17815         * config/sh/sh.h: Ditto.
17816         * config/sh/sh.md: Ditto.
17817         * config/sh/symbian.c: Ditto.
17818
17819 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
17820
17821         * config/i386/driver-i386.c (describe_cache): Optimize
17822         concatenation of strings.  Use snprintf instead of sprintf.
17823         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
17824         target when not compiling with GCC.
17825
17826 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
17827
17828         * config/sh/sh.c: Revert last change.
17829         (sh_expand_epilogue): Emit a blockage insn before the frame
17830         pointer adjustment unconditionally.
17831
17832 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
17833
17834         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
17835         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
17836         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
17837         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
17838         to COLLECT_GCC_OPTIONS.
17839
17840 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
17841
17842         * collect2.c (target_system_root): New variable.
17843         (main): Handle --sysroot=.
17844         (ignore_library): Strip the sysroot from the library path.
17845
17846 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
17847
17848         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
17849         (collect2.o): Depend on collect2-aix.h.
17850         (collect2-aix.o): New rule.
17851         * collect2-aix.h: New file.
17852         * collect2-aix.c: Likewise.
17853         * collect2.c: Include collect2-aix.h.  Don't undefine
17854         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
17855         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
17856         Use TARGET_AIX_VERSION instead of _AIX51.
17857         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
17858         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
17859         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
17860         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
17861         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
17862
17863 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
17864
17865         * collect2.c (ignore_library): Avoid premature post-increment
17866         and null deference.
17867
17868 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
17869
17870         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
17871         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
17872         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
17873         CROSS_DIRECTORY_STRUCTURE too.
17874         (LINK_LIBG_SPEC): Likewise.
17875         (LIB_SPEC): Add %R to sysroot paths.
17876         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
17877         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
17878         * config/rs6000/aix51.h: As for aix43.h.
17879         * config/rs6000/aix52.h: Likewise.
17880         * config/rs6000/aix53.h: Likewise.
17881         * config/rs6000/aix61.h: Likewise.
17882         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
17883         to the beginning of sysroot paths.
17884
17885 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17886
17887         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
17888         INSN_LISTs that are out of the REG_NOTE range.
17889
17890 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17891
17892         * loop-unroll.c (struct iv_to_split): Add pointer to next.
17893         (struct var_to_expand): Likewise.
17894         (struct opt_info): Add head and tail for linked lists of the above.
17895         (analyze_insn_to_expand_var): Initialize next.
17896         (analyze_iv_to_split_insn): Likewise.
17897         (analyze_insns_in_loop): Create linked lists.
17898         (allocate_basic_variable): Simplify for use without hash table.
17899         (insert_var_expansion_initialization): Likewise, make it type-safer.
17900         (combine_var_copies_in_loop_exit): Likewise.
17901         (apply_opt_in_copies): Walk lists rather than hash tables.
17902         (release_var_copies): Simplified and inlined by hand into...
17903         (free_opt_info): ... this function.
17904
17905 2009-06-02  Richard Guenther  <rguenther@suse.de>
17906
17907         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
17908         for field decls.
17909
17910 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17911
17912         * cfgexpand.c (gimple_expand_cfg): Discard the source location
17913         only for builtins that are not overridden.
17914
17915 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17916
17917         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
17918         label string.
17919
17920 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17921
17922         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
17923
17924 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17925
17926         * combine.c (move_deaths): Compare LUIDs within the same BB only.
17927
17928 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17929
17930         * common.opt (fdump-unnumbered-links): New.
17931         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
17932         * print-rtl.c (flag_dump_unnumbered_links): New.
17933         (print_rtx): Test it.
17934
17935 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
17936
17937         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
17938         push/pop multiple to 8-byte alignment.
17939
17940 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
17941
17942         * config/i386/i386.c (queued_cfa_restores): New static variable.
17943         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
17944         functions.
17945         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
17946         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
17947         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
17948         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
17949         note unconditionally.
17950         (ix86_emit_restore_regs_using_mov): Likewise.
17951         (ix86_emit_restore_sse_regs_using_mov): Likewise.
17952         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
17953         it through to ix86_emit_restore_reg_using_pop.
17954         (ix86_emit_leave): Add RED_OFFSET argument.  Call
17955         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
17956         instead of adding REG_CFA_OFFSET note unconditionally.
17957         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
17958         the above functions.  Call ix86_add_queued_cfa_restore_notes when
17959         needed.
17960
17961         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
17962         force output of the label even for dwarf2out_do_cfi_asm.
17963         (add_fde_cfi): If -g2 and above and cfi might change CFA,
17964         force creation of CFI label and chain DW_CFA_set_loc jumping to it
17965         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
17966         caller.
17967         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
17968         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
17969         dwarf2out_cfi_label callers.
17970         * tree.h (dwarf2out_cfi_label): Adjust prototype.
17971         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
17972         Adjust dwarf2out_cfi_label callers.
17973         * config/vax/vax.c (vax_output_function_prologue): Likewise.
17974
17975         * config/i386/i386.h (struct machine_cfa_state,
17976         struct machine_function): Guard with ifndef USED_FOR_TARGET
17977         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
17978
17979         PR other/40024
17980         * emutls.c (__emutls_get_address): Change arr->size to mean number
17981         of allocated arr->data entries instead of # of slots + 1.
17982
17983         PR middle-end/40316
17984         * recog.c (peep2_reinit_state): New function.
17985         (peephole2_init_state): Use it at the end of a basic block and also
17986         when seeing a RTX_FRAME_RELATED_P insn.
17987
17988 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
17989
17990         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
17991         fixuns_truncrfdi2): New.
17992         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
17993         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
17994         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
17995         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
17996         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
17997         *recip_approx): Remove.
17998         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
17999         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
18000         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
18001         move to div.md.
18002         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
18003         setf_exp_rf): New.
18004
18005 2009-06-01  Ian Lance Taylor  <iant@google.com>
18006
18007         * attribs.c (register_attribute): Use CONST_CAST.
18008         * collect2.c (main): Use CONST_CAST2.
18009         (scan_prog_file): Likewise.
18010         * gcc.c (process_command, main): Likewise.
18011         * toplev.c (toplev_main): Likewise.
18012
18013         * c-typeck.c (handle_warn_cast_qual): New static function,
18014         partially broken out of build_c_cast.
18015         (build_c_cast): Call handle_warn_cast_qual.
18016         * doc/invoke.texi (Warning Options): Document new effect of
18017         -Wcast-qual.
18018
18019 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
18020
18021         * diagnostic.c (diagnostic_build_prefix): Always print columns.
18022         (diagnostic_report_current_module): Print columns.
18023         * common.opt (flag_show_column): Enable by default.
18024
18025 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
18026
18027         * alias.c (find_base_term): Check for NULL term before returning.
18028
18029 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
18030
18031         Revert due to PR40320:
18032         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
18033         * calls.c (emit_library_call_value_1): Don't force_operand for move
18034         and push insns.
18035
18036 2009-06-01  Olivier Hainque  <hainque@adacore.com>
18037             Eric Botcazou  <ebotcazou@adacore.com>
18038
18039         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
18040         to be processed as a bitfield for constructor output purposes.
18041         * output.h (initializer_constant_valid_for_bitfield_p): Declare
18042         new function.
18043         * varasm.c (oc_local_state): New type, output_constructor
18044         local state to support communication with helpers.
18045         (oc_outer_state): New type, output_constructor outer state of
18046         relevance in recursive calls.
18047         (output_constructor_array_range): New output_constructor helper,
18048         extracted code for an array range element.
18049         (output_constructor_regular_field): New output_constructor helper,
18050         extracted code for an element that is not a bitfield.
18051         (output_constructor_bitfield): New output_constructor helper,
18052         extracted code for a bitfield element.  Accept an OUTER state
18053         argument for recursive processing.  Recurse on record or array
18054         CONSTRUCTOR values, possibly past noop conversions.
18055         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
18056         VALUE is a valid constant-valued expression for use in a static
18057         bit-field initializer.
18058         (output_constructor): Rework to use helpers.  Accept and honor an
18059         OUTER state argument for recursive calls.  Return total size.  Be
18060         prepared for nested constructors initializing bitfields.
18061         (output_constant): Feed OUTER in calls to output_constructor.
18062
18063 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
18064
18065         * calls.c (emit_library_call_value_1): Don't force_operand for move
18066         and push insns.
18067
18068 2009-06-01  Nick Clifton  <nickc@redhat.com>
18069
18070         * doc/invoke.texi (IA-64 Options): Fix typo.
18071
18072 2009-06-01  Ira Rosen  <irar@il.ibm.com>
18073
18074         PR tree-optimization/39129
18075         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
18076         printed message.
18077         (vect_do_peeling_for_loop_bound): Use
18078         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
18079         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
18080         (vect_loop_versioning): Likewise.
18081         (vect_create_cond_for_alias_checks): Fix indentation.
18082         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
18083         macros.
18084         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
18085         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
18086         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
18087         "control flow in loop".
18088         (vect_estimate_min_profitable_iters): Use
18089         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
18090         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
18091         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
18092         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
18093         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
18094         statement belongs to a group of strided accesses with the exact code
18095         check.
18096         (vectorizable_load): Likewise.
18097         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
18098         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
18099
18100 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
18101
18102         * config/freebsd-stdint.h: New file.
18103         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
18104         Add freebsd-stdint.h to tm_file.
18105
18106 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
18107
18108         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
18109         (thumb2_extendhidi2): Likewise.
18110
18111 2009-05-31  Ian Lance Taylor  <iant@google.com>
18112
18113         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
18114
18115 2009-05-31  Ian Lance Taylor  <iant@google.com>
18116
18117         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
18118         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
18119         (ipa-reference.o): Depend upon gt-ipa-reference.h.
18120
18121 2009-05-31  Jason Merrill  <jason@redhat.com>
18122
18123         * tree-pretty-print.c (print_call_name): Take the callee, not the
18124         call itself.  Make non-static.  Use dump_function_name for functions.
18125         (dump_generic_node): Adjust.
18126         * diagnostic.h: Declare print_call_name.
18127         * gimple-pretty-print.c (dump_gimple_call): Use it.
18128
18129 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
18130
18131         * config/sh/sh.md (ashldi3_std): New define_expand.
18132         (ashldi3): Use it.
18133
18134 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
18135
18136         PR target/40313
18137         * config/sh/sh.c: Include debug.h.
18138         (sh_expand_epilogue): Emit a blockage insn before the frame
18139         pointer adjustment also when dwarf2out_do_frame returns true.
18140
18141 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
18142
18143         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
18144         (thumb2_extendqidi2): New pattern.
18145
18146 2009-05-31  Ira Rosen  <irar@il.ibm.com>
18147
18148         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
18149         mark phis for renaming.
18150         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
18151         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
18152         Call mark_sym_for_renaming.
18153         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
18154         * tree-vect-loop.c (vect_transform_loop): Remove
18155         vect_memsyms_to_rename initialization and a call to
18156         mark_set_for_renaming.
18157
18158 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
18159
18160         PR middle-end/40304
18161         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
18162         frame related even if !set_cfa && style < 0.
18163
18164 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
18165
18166         * config/i386/mingw-tls.c: New file.
18167         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
18168         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
18169         defining _WIN32 but not __CYGWIN__.
18170
18171 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18172
18173         * configure.ac: Add MPC support.
18174
18175         * config.in, configure: Regenerate.
18176
18177 2009-05-29  Richard Henderson  <rth@redhat.com>
18178
18179         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
18180         NOTE_INSN_BASIC_BLOCK.
18181         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
18182         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
18183         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
18184         to be deleted.
18185         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
18186         add in_use field.
18187         (add_cfi): Disable check redefining cfa away from drap.
18188         (lookup_cfa_1): Add remember argument; handle remember/restore.
18189         (lookup_cfa): Pass remember argument.
18190         (cfa_remember): New.
18191         (compute_barrier_args_size_1): Remove sibcall check.
18192         (dwarf2out_frame_debug_def_cfa): New.
18193         (dwarf2out_frame_debug_adjust_cfa): New.
18194         (dwarf2out_frame_debug_cfa_offset): New.
18195         (dwarf2out_frame_debug_cfa_register): New.
18196         (dwarf2out_frame_debug_cfa_restore): New.
18197         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
18198         (dwarf2out_begin_epilogue): New.
18199         (dwarf2out_frame_debug_restore_state): New.
18200         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
18201         DW_CFA_restore_state.
18202         (output_cfi_directive): Likewise.
18203         (convert_cfa_to_fb_loc_list): Likewise.
18204         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
18205         * dwarf2out.h: Update.
18206         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
18207         (copy_insn_1): Early out for null.
18208         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
18209         and dwarf2out_frame_debug_restore_state.
18210         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
18211         (prologue_insn_hash, epilogue_insn_hash): New.
18212         (free_after_compilation): Adjust freeing accordingly.
18213         (record_insns): Create hash table if needed; push insns into
18214         hash instead of array.
18215         (maybe_copy_epilogue_insn): New.
18216         (contains): Search hash table instead of array.
18217         (sibcall_epilogue_contains): Remove.
18218         (thread_prologue_and_epilogue_insns): Split eh_return insns
18219         and mark them as epilogues.
18220         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
18221         scanning in terms of basic blocks.
18222         * insn-notes.def (CFA_RESTORE_STATE): New.
18223         * jump.c (returnjump_p_1): Accept EH_RETURN.
18224         (eh_returnjump_p_1, eh_returnjump_p): New.
18225         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
18226         CFA_REGISTER, CFA_RESTORE): New.
18227         * rtl.def (EH_RETURN): New.
18228         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
18229
18230         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
18231         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
18232
18233         * config/i386/i386.c (gen_push): Update cfa state.
18234         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
18235         add a CFA_ADJUST_CFA note.
18236         (ix86_dwarf_handle_frame_unspec): Remove.
18237         (ix86_expand_prologue): Update cfa state.
18238         (ix86_emit_restore_reg_using_pop): New.
18239         (ix86_emit_restore_regs_using_pop): New.
18240         (ix86_emit_leave): New.
18241         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
18242         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
18243         * config/i386/i386.h (struct machine_cfa_state): New.
18244         (ix86_cfa_state): New.
18245         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
18246         (eh_return_internal): Merge from eh_return_<mode>,
18247         use eh_return rtx, split w/ epilogue.
18248
18249 2009-05-29  Ian Lance Taylor  <iant@google.com>
18250
18251         * builtins.c (validate_gimple_arglist): Don't use va_arg with
18252         enum type.
18253         * calls.c (emit_library_call_value_1): Likewise.
18254
18255         * c-typeck.c (c_build_va_arg): New function.
18256         * c-tree.h (c_build_va_arg): Declare.
18257         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
18258         instead of build_va_arg.
18259
18260 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
18261
18262         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
18263         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
18264         (ptr_difference_cost): Use affine combinations to compute it.
18265         (difference_cost): Likewise.
18266         (get_computation_cost_at): Compute more accurate cost for addresses
18267         if the ratio is a multiplier allowed in addresses.
18268         For non-addresses, consider that an additional offset or symbol is
18269         added only once.
18270
18271 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18272
18273         * config/i386/i386.c (ix86_decompose_address): Avoid useless
18274         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
18275
18276         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
18277         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
18278         (prefix_rex): For UNIT_MMX don't imply the prefix by default
18279         if MODE_DI.
18280         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
18281         to 1 for TYPE_SSE{IADD1,CVT1}.
18282         (prefix_vex_imm8): Removed.
18283         (length_vex): Only pass 1 as second argument to
18284         ix86_attr_length_vex_default if prefix_extra is 0.
18285         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
18286         (length): For prefix vex computation use length_immediate
18287         attribute instead of prefix_vex_imm8.
18288         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
18289         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
18290         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
18291         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
18292         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
18293         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
18294         a space in between the operands.
18295         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
18296         if one operand is 0xff and the other one si, di, bp or sp.
18297         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
18298         other one si, di, bp or sp.
18299         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
18300         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
18301         type and mode attributes.
18302         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
18303         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
18304         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
18305         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
18306         prefix_data16 attribute iff MODE_DF.
18307         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
18308         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
18309         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
18310         constm128_operand in length_immediate computation.
18311         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
18312         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
18313         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
18314         length_immediate attribute to 1.
18315         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
18316         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
18317         for certain alternatives.
18318         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
18319         prefix_data16 attribute if MODE_V1DF.
18320         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
18321         length_immediate to 1.
18322         (set_got_rex64, set_rip_rex64): Remove length attribute, set
18323         length_address to 4, set mode attribute to MODE_DI.
18324         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
18325         (fxam<mode>2_i387): Set length attribute to 4.
18326         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
18327         *prefetch_3dnow_rex): Override length_address attribute.
18328         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
18329         attributes.
18330         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
18331         (constm128_operand): Removed.
18332         * config/i386/i386.c (memory_address_length): For
18333         disp && !index && !base in 64-bit mode account for SIB byte if
18334         print_operand_address can't optimize disp32 into disp32(%rip)
18335         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
18336         for fs: or gs: segment.
18337         (ix86_attr_length_immediate_default): When checking if shortform
18338         is possible, truncate immediate to the length of the non-shortened
18339         immediate.
18340         (ix86_attr_length_address_default): Ignore MEM_P operands
18341         with X constraint.
18342         (ix86_attr_length_vex_default): Only check for DImode on
18343         GENERAL_REG_P operands.
18344         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
18345         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
18346         (sse_cvttps2pi): Clear prefix_rep attribute.
18347         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
18348         attribute.
18349         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
18350         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
18351         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
18352         iff operand 2 is const_int_operand.
18353         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
18354         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
18355         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
18356         instead of vex.
18357         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
18358         prefix_data16.
18359         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
18360         prefix_data16 attribute for movlpd and movhpd instructions.
18361         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
18362         length_immediate for shufpd instruction.
18363         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
18364         (avx_cmpp<avxmodesuffixf2c><mode>3,
18365         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
18366         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
18367         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
18368         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
18369         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
18370         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
18371         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
18372         prefix_data16 attribute for the first alternative to 1.
18373         (*avx_loadlps): Override length_immediate for the first alternative.
18374         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
18375         attributes for second alternative.
18376         (*vec_concatv2sf_sse4_1): Override length_immediate and
18377         prefix_data16 attributes for second alternative.
18378         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
18379         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
18380         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
18381         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
18382         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
18383         prefix_data16 and length_immediate to 1.
18384         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
18385         to 1.
18386         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
18387         prefix_extra attribute for variants that don't have 0f prefix alone.
18388         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
18389         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
18390         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
18391         *sse4_1_pextrd): Set length_immediate to 1.
18392         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
18393         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
18394         to 1.
18395         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
18396         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
18397         length_immediate to 1 for second alternative.
18398         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
18399         prefix_extra and length_immediate attributes for the first
18400         alternative.
18401         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
18402         first alternative.
18403         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
18404         to 1 for the first and third alternative.
18405         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
18406         alternative.
18407         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
18408         attribute.
18409         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
18410         attribute to 0.
18411         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
18412         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
18413         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
18414         *avx_psign<mode>3): Set prefix_extra attribute to 1.
18415         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
18416         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
18417         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
18418         ssse3_psign<mode>3): Override prefix_rex attribute.
18419         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
18420         (ssse3_palignrti): Override length_immediate to 1.
18421         (ssse3_palignrdi): Override length_immediate to 1, override
18422         prefix_rex attribute.
18423         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
18424         (sse4a_extrqi): Override length_immediate to 2.
18425         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
18426         (sse4a_insertq): Override prefix_data16 to 0.
18427         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
18428         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
18429         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
18430         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
18431         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
18432         and length_immediate to 1.
18433         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
18434         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
18435         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
18436         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
18437         and length_immediate to 1.
18438         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
18439         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
18440         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
18441         avx_ptest256): Override prefix_extra to 1.
18442         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
18443         Override prefix_data16 and length_immediate to 1.
18444         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
18445         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
18446         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
18447         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
18448         prefix_data16 to 0 and prefix_extra to 2.
18449         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
18450         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
18451         attribute.
18452         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
18453         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
18454         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
18455         and prefix_extra to 2.
18456         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
18457         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
18458         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
18459         avx_vpermilvar<mode>3,
18460         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
18461         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
18462         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
18463         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
18464         Override prefix_extra to 1.
18465         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
18466         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
18467         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
18468         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
18469         prefix_extra and length_immediate to 1.
18470         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
18471         modrm to 0.
18472         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
18473         to 1 for the first alternative.
18474         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
18475         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
18476         cases.
18477         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
18478         *movv2sf_internal_avx, *movv2sf_internal): Override
18479         prefix_rep attribute for certain alternatives.
18480         (*mov<mode>_internal): Override prefix_rep or prefix_data16
18481         attributes for certain alternatives.
18482         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
18483         attributes for certain alternatives.
18484         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
18485         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
18486         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
18487         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
18488         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
18489         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
18490         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
18491         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
18492         length_immediate to 1 if operand 2 is const_int_operand.
18493         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
18494         *vec_extractv2si_1): Set length_immediate attribute to 1.
18495         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
18496         using old 3DNOW insn rather than SSE/3DNOW_A.
18497         (mmx_emms, mmx_femms): Clear modrm attribute.
18498
18499 2009-05-29  Martin Jambor  <mjambor@suse.cz>
18500
18501         * tree-sra.c:  New implementation of SRA.
18502
18503         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
18504         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
18505         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
18506         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
18507         (SRA_MAX_STRUCTURE_COUNT): Removed.
18508         (SRA_FIELD_STRUCTURE_RATIO): Removed.
18509         * doc/invoke.texi (sra-max-structure-size): Removed.
18510         (sra-field-structure-ratio): Removed.
18511
18512 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18513
18514         PR middle-end/40291
18515         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
18516         before expansion.
18517
18518 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
18519
18520         PR rtl-optimization/40101
18521         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
18522         seqno.  Adjust comment.
18523         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
18524         inserting bookkeeping before a jump, the jump is not scheduled.
18525         When no positive seqno found, provide a value.  Add comment.
18526
18527 2009-05-29  Richard Guenther  <rguenther@suse.de>
18528
18529         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
18530         short-cutting on the first component.
18531
18532 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18533
18534         PR middle-end/39958
18535         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
18536         for trees other than decls/types.
18537
18538 2009-05-29  Richard Guenther  <rguenther@suse.de>
18539
18540         * tree-ssa-operands.c (get_expr_operands): Do not handle
18541         INDIRECT_REFs in the handled-component case.  Remove
18542         unused get_ref_base_and_extent case.
18543         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
18544         tree_low_cst and host_integerp where possible.
18545         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
18546         codes for equivalence.
18547         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
18548
18549 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
18550
18551         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
18552         to tmake_file for i[34567]86-*-cygwin*.
18553
18554 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18555
18556         PR target/40017
18557         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
18558         (altivec_categorize_keyword, init_vector_keywords,
18559         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
18560         similar to bool.
18561
18562 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
18563
18564         * tree.c (handle_dll_attribute): Check if node is
18565         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
18566
18567 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
18568
18569         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
18570         component.
18571         (thumb2_zero_extendqidi2): Likewise.
18572
18573 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
18574
18575         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
18576         instead of gen_movrt.
18577         * config/sh/sh.md (movrt): Remove.
18578
18579 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
18580
18581         * doc/invoke.texi (IA-64 Options):
18582         Add -msdata, -mfused-madd, -mno-inline-float-divide,
18583         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
18584         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
18585         -msched-prefer-non-control-spec-insns,
18586         -msched-stop-bits-after-every-cycle,
18587         -msched-count-spec-in-critical-path,
18588         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
18589         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
18590         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
18591         and -msched-spec-verbose.
18592
18593 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
18594
18595         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
18596         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
18597         error if used.
18598         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
18599
18600 2009-05-28  Richard Guenther  <rguenther@suse.de>
18601
18602         * tree-ssa-alias.c (ao_ref_init): New function.
18603         (ao_ref_base): Likewise.
18604         (ao_ref_base_alias_set): Likewise.
18605         (ao_ref_alias_set): Likewise.
18606         (refs_may_alias_p_1): Change signature.
18607         (refs_may_alias_p): Adjust.
18608         (refs_anti_dependent_p): Likewise.
18609         (refs_output_dependent_p): Likewise.
18610         (call_may_clobber_ref_p_1): Change signature.
18611         (call_may_clobber_ref_p): Adjust.
18612         (stmt_may_clobber_ref_p_1): New function split out from ...
18613         (stmt_may_clobber_ref_p): ... here.
18614         (maybe_skip_until): Adjust signature.
18615         (get_continuation_for_phi): Likewise.
18616         (walk_non_aliased_vuses): Likewise.
18617         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
18618         (ao_ref_init): Declare.
18619         (ao_ref_base): Likewise.
18620         (ao_ref_alias_set): Likewise.
18621         (stmt_may_clobber_ref_p_1): Likewise.
18622         (walk_non_aliased_vuses): Adjust.
18623         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
18624         (get_ref_from_reference_ops): remove.
18625         (vn_reference_lookup_2): Adjust signature.
18626         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
18627         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
18628         (vn_reference_lookup): Adjust.
18629         (vn_reference_insert): Likewise.
18630         (vn_reference_insert_pieces): Adjust signature.
18631         (visit_reference_op_call): Adjust.
18632         * tree-ssa-pre.c (get_expr_type): Simplify.
18633         (phi_translate_1): Adjust.
18634         (compute_avail): Likewise.
18635         (translate_vuse_through_block): Do not re-build trees.
18636         (value_dies_in_block_x): Likewise.
18637         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
18638         fields.
18639         (vn_reference_lookup_pieces): Adjust declaration.
18640         (vn_reference_insert_pieces): Likewise.
18641
18642 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
18643
18644         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
18645         with checking disabled.
18646
18647 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
18648
18649         PR target/37216
18650
18651         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
18652         macro definition for support of three-operand format aligned
18653         .comm directive in assembler on cygwin/pe/mingw target OS.
18654         * configure:  Regenerate.
18655         * config.h:  Regenerate.
18656
18657         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
18658         aligned form of .comm directive if -mpe-aligned-commons is in effect.
18659         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
18660
18661         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
18662         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
18663
18664 2009-05-28  Ira Rosen  <irar@il.ibm.com>
18665
18666         PR tree-optimization/40254
18667         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
18668         in analysis of basic blocks.
18669
18670 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
18671
18672         PR middle-end/33699
18673         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
18674         * target-def.h (TARGET_CONST_ANCHOR): New macro.
18675         (TARGET_INITIALIZER): Use it.
18676         * cse.c (CHEAPER): Move it up to the other macros.
18677         (insert): Rename this ...
18678         (insert_with_costs): ... to this.  Add cost parameters.  Update
18679         function comment.
18680         (insert): New function.  Call insert_with_costs.
18681         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
18682         find_reg_offset_for_const, try_const_anchors): New functions.
18683         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
18684         when using a const-anchor.  Call insert_const_anchors.
18685         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
18686         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
18687
18688 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
18689
18690         * tree-inline.c (remap_decls): Enable nonlocalized variables
18691         when not optimizing.
18692
18693 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
18694
18695         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
18696         Simplify other tests involving optimize.
18697
18698 2009-05-27  Tom Tromey  <tromey@redhat.com>
18699
18700         * unwind-dw2.c (_Unwind_DebugHook): New function.
18701         (uw_install_context): Call _Unwind_DebugHook.
18702
18703 2009-05-27  Tom Tromey  <tromey@redhat.com>
18704
18705         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
18706
18707 2009-05-27  Ian Lance Taylor  <iant@google.com>
18708
18709         * Makefile.in (LINKER, LINKER_FLAGS): Define.
18710         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
18711         (ALL_LINKERFLAGS): Define.
18712         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
18713         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
18714         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
18715         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
18716         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
18717         $(LINKER_FOR_BUILD).
18718         (build/gcov-iov$(build_exeext)): Likewise.
18719
18720 2009-05-27  Julian Brown  <julian@codesourcery.com>
18721
18722         * gcse.c (target.h): Include.
18723         (can_assign_to_reg_without_clobbers_p): Check that the target allows
18724         copy of argument to a pseudo register.
18725
18726 2009-05-27  Diego Novillo  <dnovillo@google.com>
18727
18728         * tree-ssa-live.c (dump_scope_block): Document arguments.
18729         (dump_scope_blocks): Document.
18730         (debug_scope_blocks): New.
18731         * tree-flow.h (debug_scope_blocks): Declare.
18732
18733 2009-05-21  Denis Chertykov  <denisc@overta.ru>
18734
18735         * doc/contrib.texi (Contributors): Add myself to the list.
18736
18737 2009-05-27  Olivier Hainque  <hainque@adacore.com>
18738
18739         * expr.c (target_align): New function.  Alignment the TARGET of an
18740         assignment may be assume to have.
18741         (highest_pow2_factor_for_target): Use it instead of relying on
18742         immediate tree attributes of TARGET, not necessarily honored when
18743         intermediate bitfields are involved.
18744
18745 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
18746
18747         PR target/40266
18748         * config/i386/driver-i386.c (host_detect_local_cpu): Support
18749         AVX, SSE4, AES, PCLMUL and POPCNT.
18750
18751 2009-05-27  Diego Novillo  <dnovillo@google.com>
18752
18753         * tree-pretty-print.c (dump_location): New.
18754         (dump_generic_node): Call it.
18755         Factor code to handle BLOCK nodes ...
18756         (dump_block_node): ... here.
18757
18758 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
18759
18760         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
18761         with it.
18762         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
18763         included.
18764         * gcc-plugin.h: Include config.h and system.h.
18765         (IN_GCC): Define if not defined.
18766
18767 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
18768
18769         PR middle-end/40249
18770         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
18771         with -fno-inline.
18772
18773 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
18774
18775         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
18776         applicable.
18777         * config/m32r/m32r.h: Ditto.
18778         * config/m32r/m32r.md: Ditto.
18779         * config/m32r/predicates.md: Ditto.
18780
18781 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
18782
18783         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
18784
18785 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
18786
18787         * doc/plugins.texi
18788         (Loading plugins): typo.
18789         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
18790         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
18791         (Interacting with the GCC Garbage Collector): Added new section.
18792         (Giving information about a plugin): Added new section for
18793         PLUGIN_INFO.
18794         * ggc.h (ggc_register_root_tab): Added declaration.
18795         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
18796         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
18797         (register_callback): Improved comment in declaration.
18798         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
18799         (extra_root_vec) Added static variable for dynamic roots registration.
18800         (ggc_register_root_tab) Added new routine.
18801         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
18802         PLUGIN_GGC_MARKING event.
18803         * ggc-zone.c: Include plugin.h.
18804         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
18805         * ggc-page.c: Include plugin.h.
18806         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
18807         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
18808         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
18809         (register_callback): check lack of callbacks for
18810         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
18811         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
18812         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
18813         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
18814         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
18815         dependency on plugin.h.
18816         (plugin.o): Added dependency on ggc.h...
18817
18818 2009-05-26  Richard Guenther  <rguenther@suse.de>
18819
18820         PR middle-end/40248
18821         Revert
18822         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
18823         with mismatched comparison modes.
18824
18825         * expr.c (expand_expr_real_1): Expand the operand of a
18826         VIEW_CONVERT_EXPR in its natural mode.
18827
18828 2009-05-26  Ian Lance Taylor  <iant@google.com>
18829
18830         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
18831         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
18832         (ALL_COMPILERFLAGS): Define.
18833         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
18834         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
18835         (collect2$(exeext), collect2.o): Likewise.
18836         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
18837         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
18838         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
18839         (libbackend.o, intl.o, cppdefault.o): Likewise.
18840         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
18841         (build/%.o): Use $(COMPILER_FOR_BUILD).
18842         (build/gen%$(build_exeext)): Likewise.
18843         (build/gcov-iov$(build_exeext)): LIkewise.
18844         * config/t-darwin (darwin.o): Use $(COMPILER).
18845         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
18846         * config/t-sol2 (sol2-c.o): Likewise.
18847         (sol2.o): Likewise.
18848         * config/t-vxworks (vxworks.o): Likewise.
18849         * config/x-darwin (host-darwin.o): Likewise.
18850         * config/x-hpux (host-hpux.o): Likewise.
18851         * config/x-linux (host-linux.o): Likewise.
18852         * config/x-solaris (host-solaris.o): Likewise.
18853         * config/alpha/x-alpha (driver-alpha.o): Likewise.
18854         * config/arm/t-arm (arm-c.o): Likewise.
18855         * config/arm/t-pe (pe.o): Likewise.
18856         * config/arm/t-wince-pe (pe.o): Likewise.
18857         * config/i386/t-cygming (winnt.o): Likewise.
18858         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
18859         * config/i386/t-cygwin (cygwin1.o): Likewise.
18860         (cygwin2.o): Likewise.
18861         * config/i386/t-i386 (i386-c.o): Likewise.
18862         * config/i386/t-interix (winnt.o): Likewise.
18863         * config/i386/t-netware (netware.o): Likewise.
18864         * config/i386/t-nwld (nwld.o): Likewise.
18865         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
18866         * config/i386/x-i386 (driver-i386.o): Likewise.
18867         * config/i386/x-cygwin (host-cygwin.o): Likewise.
18868         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
18869         * config/ia64/t-ia64 (ia64-c.o): Likewise.
18870         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
18871         * config/mips/x-native (driver-native.o): Likewise.
18872         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
18873         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
18874         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
18875         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
18876         * config/score/t-score-elf (score7.o): Likewise.
18877         (score3.o): Likewise.
18878         * config/sh/t-sh (sh-c.o): Likewise.
18879         * config/sh/t-symbian (sh-c.o): Likewise.
18880         (symbian.o): Likewise.
18881         * config/spu/t-spu-elf (spu-c.o): Likewise.
18882         * config/v850/t-v850 (v850-c.o): Likewise.
18883         * config/v850/t-v850e (v850-c.o): Likewise.
18884
18885 2009-05-26  Richard Guenther  <rguenther@suse.de>
18886
18887         PR tree-optimization/40122
18888         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
18889         VECTOR_CSTs if possible.
18890         (fold_gimple_assign): Likewise.
18891
18892 2009-05-26  Richard Guenther  <rguenther@suse.de>
18893
18894         PR middle-end/40252
18895         * fold-const.c (fold_binary): Use the correct types for building
18896         rotates.
18897
18898 2009-05-26  Richard Guenther  <rguenther@suse.de>
18899
18900         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
18901         redundant calls to merge_alias_info.
18902         (bump_vector_ptr): Likewise.
18903         * tree-ssa-copy.c (merge_alias_info): Remove.
18904         (replace_exp_1): Remove call to merge_alias_info.
18905         (propagate_tree_value): Likewise.
18906         (fini_copy_prop): Propagate points-to info.
18907         * tree-flow.h (merge_alias_info): Remove.
18908
18909 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
18910
18911         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
18912
18913 2009-05-25  Jan Hubicka  <jh@suse.cz>
18914
18915         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
18916         * cgraph.h (struct inline_summary): New filed self_wize,
18917         size_inlining_benefit, self_time and time_inlining_benefit.
18918         (struct cgraph_global_info): Replace insns by time ans size fields.
18919         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
18920         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
18921         (ipcp_update_callgraph): Do not touch function bodies.
18922         * ipa-inline.c: Include except.h
18923         (MAX_TIME): New constant.
18924         (overall_insns): Remove.
18925         (leaf_node_p): New.
18926         (overall_size, max_benefit): New static variables.
18927         (cgraph_estimate_time_after_inlining): New function.
18928         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
18929         (cgraph_clone_inlined_nodes): Update size.
18930         (cgraph_mark_inline_edge): Update size.
18931         (cgraph_estimate_growth): Use size info.
18932         (cgraph_check_inline_limits): Check size.
18933         (cgraph_default_inline_p): Likewise.
18934         (cgraph_edge_badness): Compute badness based on benefit and size cost.
18935         (cgraph_decide_recursive_inlining): Check size.
18936         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
18937         and times.
18938         (cgraph_decide_inlining): Likewise.
18939         (cgraph_decide_inlining_incrementally): Likewise; honor
18940         PARAM_EARLY_INLINING_INSNS.
18941         (likely_eliminated_by_inlining_p): New predicate.
18942         (estimate_function_body_sizes): New function.
18943         (compute_inline_parameters): Use it.
18944         * except.c (must_not_throw_labels): New function.
18945         * except.h (must_not_throw_labels): Declare.
18946         * tree-inline.c (init_inline_once): Kill inlining_weigths
18947         * tree-ssa-structalias.c: Avoid uninitialized warning.
18948         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
18949         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
18950         (PARAM_INLINE_CALL_COST): Remove.
18951         (PARAM_EARLY_INLINING_INSNS): New.
18952
18953 2009-05-25  Richard Guenther  <rguenther@suse.de>
18954
18955         PR tree-optimization/36327
18956         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
18957         callback for reference translation or lookup at the point of may-defs.
18958         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
18959         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
18960         for union COMPONENT_REFs.
18961         (vn_reference_lookup_3): New callback.  Lookup from memset
18962         and CONSTRUCTOR assignment, translate through struct copies.
18963         (vn_reference_lookup_pieces): Make sure to not free the
18964         passed operands array.  Adjust walk_non_aliased_vuses call.
18965         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
18966         make sure we do not leak memory.
18967
18968 2009-05-25  Richard Guenther  <rguenther@suse.de>
18969
18970         * tree-ssa-alias.h (dump_points_to_solution): Declare.
18971         * tree-inline.c (expand_call_inline): Reset the escaped and
18972         callused solutions.
18973         * tree-ssa-structalias.c (pass_build_ealias): New.
18974         * tree-pass.h (pass_build_ealias): Declare.
18975         * passes.c (init_optimization_passes): Add PTA during
18976         early optimizations.
18977         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
18978         and CALLUSED solutions.
18979         (dump_points_to_solution): New function, split out from ...
18980         (dump_points_to_info_for): ... here.
18981         * tree-parloops.c (parallelize_loops): Reset the escaped and
18982         callused solutions.
18983
18984 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
18985
18986         PR bootstrap/40027
18987         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
18988         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
18989
18990 2009-05-25  Ira Rosen  <irar@il.ibm.com>
18991
18992         PR tree-optimization/40238
18993         * tree-vect-stmts.c (vect_init_vector): Insert initialization
18994         statements after basic block's labels.
18995         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
18996         to free the allocated memory.
18997
18998 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
18999
19000         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
19001         return address with a USE.
19002
19003 2009-05-24  Richard Guenther  <rguenther@suse.de>
19004
19005         PR middle-end/40233
19006         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
19007         array type from the main variant of the inner type.
19008
19009 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
19010
19011         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
19012         definition to bool (from int) to un-break build.
19013         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
19014
19015 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
19016
19017         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
19018         discard_stmt_changes): Delete.
19019         * tree-ssa-operands.c (scb_stack): Delete.
19020         (init_ssa_operands): Do not initialize it.
19021         (fini_ssa_operands): Do not free it.
19022         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
19023
19024         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
19025         update_stmt, remove the others.  Fix comments.
19026         * tree-dfa.c (optimize_stack_restore): Likewise.
19027         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
19028         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
19029         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
19030         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
19031         Likewise.
19032         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
19033         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
19034         (dom_opt_finalize_block): Likewise, adjusting access to
19035         stmts_to_rescan.
19036         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
19037         (stmts_to_rescan): Change item type to gimple.
19038         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
19039
19040 2009-05-24  Ira Rosen  <irar@il.ibm.com>
19041
19042         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
19043         * tree-pass.h (pass_slp_vectorize): New pass.
19044         * params.h (SLP_MAX_INSNS_IN_BB): Define.
19045         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
19046         * tree-vectorizer.c (timevar.h): Include.
19047         (user_vect_verbosity_level): Declare.
19048         (vect_location): Fix comment.
19049         (vect_set_verbosity_level): Update user_vect_verbosity_level
19050         instead of vect_verbosity_level.
19051         (vect_set_dump_settings): Add an argument. Ignore user defined
19052         verbosity if dump flags require higher level of verbosity. Print to
19053         stderr only for loop vectorization.
19054         (vectorize_loops): Update call to vect_set_dump_settings.
19055         (execute_vect_slp): New function.
19056         (gate_vect_slp): Likewise.
19057         (struct gimple_opt_pass pass_slp_vectorize): New.
19058         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
19059         access its members.
19060         (vec_info_for_bb): New function.
19061         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
19062         (VECTORIZATION_ENABLED): New macro.
19063         (SLP_ENABLED, SLP_DISABLED): Likewise.
19064         (vect_is_simple_use): Add bb_vec_info argument.
19065         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
19066         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
19067         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
19068         vect_schedule_slp, vect_analyze_slp): Likewise.
19069         (vect_analyze_stmt): Add slp_tree argument.
19070         (find_bb_location): Declare.
19071         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
19072         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
19073         (vect_analyze_loop_operations, vect_analyze_loop,
19074         get_initial_def_for_induction, vect_create_epilog_for_reduction,
19075         vect_finalize_reduction, vectorizable_reduction,
19076         vectorizable_live_operation, vect_transform_loop): Likewise.
19077         * tree-data-ref.c (dr_analyze_innermost): Update comment,
19078         skip evolution analysis if analyzing a basic block.
19079         (dr_analyze_indices): Likewise.
19080         (initialize_data_dependence_relation): Skip the test whether the
19081         object is invariant for basic blocks.
19082         (compute_all_dependences): Skip dependence analysis for data
19083         references in basic blocks.
19084         (find_data_references_in_stmt): Don't fail in case of invariant
19085         access in basic block.
19086         (find_data_references_in_bb): New function.
19087         (find_data_references_in_loop): Move code to
19088         find_data_references_in_bb and add a call to it.
19089         (compute_data_dependences_for_bb): New function.
19090         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
19091         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
19092         that STEP is 0.
19093         (vect_analyze_data_ref_dependence): Check for interleaving in case of
19094         unknown dependence in basic block and fail in case of dependence in
19095         basic block.
19096         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
19097         dependence instances from either loop or basic block vectorization
19098         info.
19099         (vect_compute_data_ref_alignment): Check if it is loop vectorization
19100         before calling nested_in_vect_loop_p.
19101         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
19102         dependence instances from either loop or basic block vectorization
19103         info.
19104         (vect_verify_datarefs_alignment): Likewise.
19105         (vect_enhance_data_refs_alignment): Adjust function calls.
19106         (vect_analyze_data_refs_alignment): Likewise.
19107         (vect_analyze_group_access): Fix printing. Skip different checks if
19108         DR_STEP is 0. Keep strided stores either in loop or basic block
19109         vectorization data structure. Fix indentation.
19110         (vect_analyze_data_ref_access): Fix comments, allow zero step in
19111         basic blocks.
19112         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
19113         dependence instances from either loop or basic block vectorization
19114         info.
19115         (vect_analyze_data_refs): Update comment. Call
19116         compute_data_dependences_for_bb to analyze basic blocks.
19117         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
19118         case of loop vectorization. In case of basic block vectorization use
19119         data-ref itself as a base.
19120         (vect_create_data_ref_ptr): In case of basic block vectorization:
19121         don't advance the pointer, add new statements before the current
19122         statement.  Adjust function calls.
19123         (vect_supportable_dr_alignment): Support only aligned accesses in
19124         basic block vectorization.
19125         * common.opt (ftree-slp-vectorize): New flag.
19126         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
19127         (vect_pattern_recog_1): Likewise.
19128         * tree-vect-stmts.c (process_use): Likewise.
19129         (vect_init_vector): Add new statements in the beginning of the basic
19130         block in case of basic block SLP.
19131         (vect_get_vec_def_for_operand): Adjust function calls.
19132         (vect_finish_stmt_generation): Likewise.
19133         (vectorizable_call): Add assert that it is loop vectorization, adjust
19134         function calls.
19135         (vectorizable_conversion, vectorizable_assignment): Likewise.
19136         (vectorizable_operation): In case of basic block SLP, take
19137         vectorization factor from statement's type and skip the relevance
19138         check. Adjust function calls.
19139         (vectorizable_type_demotion): Add assert that it is loop
19140         vectorization, adjust function calls.
19141         (vectorizable_type_promotion): Likewise.
19142         (vectorizable_store): Check for outer loop only in case of loop
19143         vectorization. Adjust function calls. For basic blocks, skip the
19144         relevance check and don't advance pointers.
19145         (vectorizable_load): Likewise.
19146         (vectorizable_condition): Add assert that it is loop vectorization,
19147         adjust function calls.
19148         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
19149         that it is not reduction, get vector type, call only supported
19150         functions, skip loop specific parts.
19151         (vect_transform_stmt): Check for outer loop only in case of loop
19152         vectorization.
19153         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
19154         (vect_is_simple_use): Fix comment, add new argument, fix conditions
19155         for external definition.
19156         * passes.c (pass_slp_vectorize): New pass.
19157         * tree-vect-slp.c (find_bb_location): New function.
19158         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
19159         check for patterns only in loops.
19160         (vect_build_slp_tree): Add argument, adjust function calls, fail in
19161         case of multiple types in basic block SLP.
19162         (vect_mark_slp_stmts_relevant): New function.
19163         (vect_supported_load_permutation_p): Fix comment.
19164         (vect_analyze_slp_instance): Add argument. In case of basic block
19165         SLP, take vectorization factor from statement's type, check that
19166         unrolling factor is 1. Adjust function call. Save SLP instance in
19167         either loop or basic block vectorization structure. Return FALSE,
19168         if SLP failed.
19169         (vect_analyze_slp): Add argument. Get strided stores groups from
19170         either loop or basic block vectorization structure. Return FALSE
19171         if basic block SLP failed.
19172         (new_bb_vec_info): New function.
19173         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
19174         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
19175         (vect_schedule_slp): Add argument. Get SLP instances from either
19176         loop or basic block vectorization structure. Set vectorization factor
19177         to be 1 for basic block SLP.
19178         (vect_slp_transform_bb): New function.
19179         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
19180
19181 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
19182
19183         * final.c (shorten_branches): Do not align labels for jump tables.
19184         (final_scan_insn): Use JUMP_TABLE_DATA_P.
19185
19186 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
19187
19188         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
19189         Remove outdated reference to flow.c and fix nits.
19190         * doc/gccint.texi: Tweak RTL description.
19191         * doc/rtl.texi: Likewise.
19192
19193 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
19194
19195         * config/avr/avr.c: Change my email address.
19196         * config/avr/avr.h: Likewise.
19197         * config/avr/avr.md: Likewise.
19198         * config/avr/avr-protos.h: Likewise.
19199         * config/avr/libgcc.S: Likewise.
19200
19201 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
19202
19203         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
19204         (spu_split_load, spu_split_store): Change return type to int.
19205         (spu_split_convert): Declare.
19206         * config/spu/predicates.md (spu_mem_operand): Remove.
19207         (spu_mov_operand): Update.
19208         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
19209         * config/spu/spu.c (regno_aligned_for_load): Remove.
19210         (reg_aligned_for_addr, spu_expand_load): Define.
19211         (spu_expand_extv): Reimplement and handle MEM.
19212         (spu_expand_insv): Handle MEM.
19213         (spu_sched_reorder): Handle insn's with length 0.
19214         (spu_legitimate_address_p): Reimplement.
19215         (store_with_one_insn_p): Return TRUE for any mode with size
19216         larger than 16 bytes.
19217         (address_needs_split): Define.
19218         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
19219         operands.
19220         (spu_convert_move): Define.
19221         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
19222         (spu_split_store): Change all MEM's to TImode.
19223         (spu_init_expanders): Preallocate registers that correspond to
19224         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
19225         mark_reg_pointer.
19226         (spu_split_convert): Define.
19227         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
19228         (_move<mode>, _movdi, _movti): Update predicate and condition.
19229         (load, store): Change to define_split.
19230         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
19231         extend<mode>ti2.
19232         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
19233         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
19234         define_insn_and_split of lshr<mode>3.
19235         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
19236         (<v>ashr<mode>3_imm): Define.
19237         (extv, extzv, insv): Allow MEM operands.
19238         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
19239         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
19240         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
19241         (_spu_convert2): Change to define_insn_and_split and remove the
19242         corresponding define_peephole2.
19243         (stack_protect_set, stack_protect_test, stack_protect_test_si):
19244         Change predicates to memory_operand.
19245
19246 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
19247
19248         * config/arm/thumb2.md: Add 16-bit multiply instructions.
19249
19250 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
19251
19252         PR tree-optimization/40219
19253         * tree.c (iterative_hash_expr): Make sure the builtin function is
19254         a normal builtin function and not a front end or back end builtin
19255         before indexing into the built_in_decls array.
19256
19257 2009-05-22  Richard Guenther  <rguenther@suse.de>
19258
19259         PR middle-end/38964
19260         * alias.c (write_dependence_p): Do not use TBAA for answering
19261         anti-dependence or output-dependence.
19262         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
19263         (emit_pointer_definition): Remove.
19264         (emit_alias_warning): Likewise.
19265         (find_what_var_points_to): Remove TBAA pruning code.
19266         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
19267         violations.
19268         (compute_points_to_sets): Remove code computing the set of
19269         dereferenced pointers.
19270         * tree-data-ref.c (dr_may_alias_p): Properly use the split
19271         oracle for querying anti and output dependencies.
19272         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
19273         if TBAA may be applied.
19274         (refs_anti_dependent_p): New function.
19275         (refs_output_dependent_p): Likewise.
19276         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
19277         (refs_output_dependent_p): Likewise.
19278         * doc/tree-ssa.texi (Memory model): New section.
19279         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
19280         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
19281         * cfgexpand.c (expand_gimple_basic_block): Do not handle
19282         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
19283         * expr.c (expand_expr_real_1): Likewise.
19284         * gimple-low.c (lower_stmt): Likewise.
19285         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
19286         (dump_gimple_cdt): Remove.
19287         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
19288         (gimple_size): Likewise.
19289         (walk_gimple_op): Likewise.
19290         (is_gimple_stmt): Likewise.
19291         (walk_stmt_load_store_addr_ops): Likewise.
19292         (gimple_build_cdt): Remove.
19293         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
19294         * gimple.h (gimple_cdt_new_type): Remove.
19295         (gimple_cdt_new_type_ptr): Likewise.
19296         (gimple_cdt_set_new_type): Likewise.
19297         (gimple_cdt_location): Likewise.
19298         (gimple_cdt_location_ptr): Likewise.
19299         (gimple_cdt_set_location): Likewise.
19300         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
19301         * tree-cfg.c (remove_useless_stmts_1): Do not handle
19302         GIMPLE_CHANGE_DYNAMIC_TYPE.
19303         (verify_types_in_gimple_stmt): Likewise.
19304         * tree-inline.c (estimate_num_insns): Likewise.
19305         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
19306         (copy_decl_to_var): Likewise.
19307         (copy_result_decl_to_var): Likewise.
19308         * tree-pretty-print.c (dump_generic_node): Do not handle
19309         CHANGE_DYNAMIC_TYPE_EXPR.
19310         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
19311         * tree-ssa-operands.c (get_expr_operands): Likewise.
19312         * tree-ssa-structalias.c (struct variable_info): Remove
19313         no_tbaa_pruning member.
19314         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
19315         (unify_nodes): Do not copy it.
19316         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
19317         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
19318         (set_uids_in_ptset): Do not check it.
19319         (find_what_var_points_to): Likewise.
19320         (compute_tbaa_pruning): Remove.
19321         (compute_points_to_sets): Do not call it.
19322         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
19323         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
19324         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
19325         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
19326         (DECL_NO_TBAA_P): Likewise.
19327         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
19328         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
19329         (expand_omp_atomic_pipeline): Do not set it.
19330         * print-tree.c (print_node): Do not dump it.
19331         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
19332         redundant check.
19333
19334 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
19335
19336         PR target/39856
19337         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
19338         for clobber.
19339
19340 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
19341
19342         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
19343         non-external.
19344
19345 2009-05-22  Ben Elliston  <bje@au.ibm.com>
19346
19347         * Makefile.in (bversion.h, s-bversion): New targets.
19348         (TOPLEV_H): Add bversion.h.
19349         * toplev.h: Include "bversion.h".
19350         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
19351         the __format__ attribute only if compiling with the same version
19352         of GCC as the sources (the "build version").
19353
19354 2009-05-22  Ben Elliston  <bje@au.ibm.com>
19355
19356         * c-format.c (handle_format_attribute): Fix comment typo.
19357
19358 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
19359
19360         PR target/37846
19361         * config/ia64/ia64.opt (mfused-madd): New.
19362         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
19363         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
19364         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
19365         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
19366         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
19367         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
19368         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
19369         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
19370         instruction if !TARGET_FUSED_MADD.
19371         (fpma, fpms): Remove colon from name.
19372
19373 2009-05-22  Richard Guenther  <rguenther@suse.de>
19374
19375         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
19376         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
19377         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
19378         TARGET_MEM_REF.
19379         (create_expression_by_pieces): Only convert if necessary.
19380         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
19381         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
19382
19383 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
19384
19385         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
19386         regular pattern from a template and rename it ...
19387         (*extzv_truncsi_exts): ... to this.
19388
19389 2009-05-21  Richard Guenther  <rguenther@suse.de>
19390
19391         * cgraph.h (struct cgraph_node): Remove inline_decl member.
19392         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
19393         (cgraph_default_inline_p): Likewise.
19394         (cgraph_decide_inlining_incrementally): Likewise.
19395
19396 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
19397             Uros Bizjak  <ubizjak@gmail.com>
19398
19399         * config/i386/cpuid.h (bit_MOVBE): New.
19400
19401         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
19402
19403         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
19404         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
19405         (ix86_handle_option): Handle OPT_mmovbe.
19406         (ix86_target_string): Add -mmovbe.
19407         (pta_flags): Add PTA_MOVBE.
19408         (processor_alias_table): Add PTA_MOVBE to "atom".
19409         (override_options): Handle PTA_MOVBE.
19410
19411         * config/i386/i386.h (TARGET_MOVBE): New.
19412
19413         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
19414         (*bswapsi_movbe): New.
19415         (*bswapdi_movbe): Likewise.
19416         (bswapdi2): Renamed to ...
19417         (*bswapdi_1): This.
19418         (bswapdi2): New expander.
19419
19420         * config/i386/i386.opt (mmovbe): New.
19421
19422         * doc/invoke.texi: Document -mmovbe.
19423
19424 2009-05-21  Taras Glek  <tglek@mozilla.com>
19425
19426         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
19427         * gcc-plugin.h (plugin_init): Updated signature.
19428         * gcc-plugin.h (plugin_name_args): Moved to this header.
19429         * doc/plugins.texi (plugin_init): Updated documention to reflect
19430         API change.
19431         * doc/plugins.texi (plugin_name_args): Added to documention.
19432
19433 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
19434
19435         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
19436         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
19437
19438 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
19439
19440         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
19441         JUMP_TABLE_DATA_P predicates where applicable.
19442         * config/i386/predicates.md: Ditto.
19443         * config/i386/sse.md: Ditto.
19444
19445 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
19446
19447         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
19448         operand2 -128 override length_immediate attribute to 1.
19449         * config/i386/predicates.md (constm128_operand): New predicate.
19450
19451         * config/i386/i386.c (memory_address_length): Handle %r12
19452         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
19453         also check REGNO.
19454         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
19455         mode look through optional ZERO_EXTEND and SUBREG.
19456         * config/i386/i386.md (R12_REG): New define_constant.
19457         (prefix_data16): For sse unit set also for MODE_TI insns.
19458         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
19459         insns set if operand 1 is ext_QIreg_operand.
19460         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
19461         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
19462         immediate.
19463         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
19464         mode from MODE_DI to MODE_SI.
19465         (movdi_1_rex64): Override modrm and length_immediate attributes
19466         only for movabs (TYPE_IMOV, alternative 2).
19467         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
19468         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
19469         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
19470         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
19471         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
19472         prefix_rex attribute if DImode.
19473         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
19474         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
19475         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
19476         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
19477         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
19478         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
19479         Likewise.  For TYPE_IMOV clear length_immediate attribute.
19480         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
19481         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
19482         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
19483         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
19484         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
19485         or one operand TYPE_ISHIFT.
19486         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
19487         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
19488         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
19489         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
19490         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
19491         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
19492         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
19493         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
19494         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
19495         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
19496         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
19497         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
19498         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
19499         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
19500         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
19501         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
19502         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
19503         set mode attribute, don't override length attribute.
19504         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
19505         to 1.
19506         (return_internal_long): Set length attribute to 2 instead of 1.
19507         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
19508         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
19509         prefix_rex attribute.
19510         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
19511         New predicates.
19512         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
19513
19514 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19515
19516         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
19517
19518 2009-05-20  Ian Lance Taylor  <iant@google.com>
19519
19520         * tree.c (build_tree_list_vec_stat): New function.
19521         (ctor_to_vec): New function.
19522         (build_nt_call_vec): New function.
19523         (build_call_array): Change args to be a const pointer.
19524         (build_call_vec): New function.
19525         * tree.h (build_nt_call_vec): Declare.
19526         (build_tree_list_vec_stat): Declare.
19527         (build_tree_list_vec): Define.
19528         (build_call_array): Update declaration.
19529         (build_call_vec): Declare.
19530         (ctor_to_vec): Declare.
19531         * c-common.c (tree_vector_cache): New static variable.
19532         (make_tree_vector): New function.
19533         (release_tree_vector): New function.
19534         (make_tree_vector_single): New function.
19535         (make_tree_vector_copy): New function.
19536         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
19537         (make_tree_vector_single, make_tree_vector_copy): Declare.
19538         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
19539         (c_parser_expr_list): Don't manage cache here, instead call
19540         make_tree_vector.
19541         (c_parser_release_expr_list): Remove static function.
19542         (c_parser_vec_to_tree_list): Remove static function.
19543         (c_parser_attributes): Call build_tree_list_vec instead of
19544         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
19545         c_parser_release_expr_list.
19546         (c_parser_postfix_expression_after_primary): Likewise.
19547         (c_parser_objc_keywordexpr): Likewise.
19548
19549 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
19550
19551         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
19552         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
19553         TARGET_CONVERT_TO_TYPE.
19554         * hooks.c (hook_tree_const_tree_null): Define.
19555         * hooks.h (hook_tree_const_tree_null): Declare.
19556         * target.h (struct gcc_target):  Add invalid_parameter_type,
19557         invalid_return_type, promoted_type, and convert_to_type fields.
19558         * target-def.h (TARGET_INVALID_PARAMETER_TYPE): Define.
19559         (TARGET_INVALID_RETURN_TYPE): Define.
19560         (TARGET_PROMOTED_TYPE): Define.
19561         (TARGET_CONVERT_TO_TYPE): Define.
19562         (TARGET_INITIALIZER): Update for new fields.
19563         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
19564         (grokparms): Check targetm.invalid_parameter_type.
19565         * c-typeck.c (default_conversion): Check targetm.promoted_type.
19566         * c-convert.c (convert): Check targetm.convert_to_type.
19567
19568 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
19569
19570         * config/mips/mips.md (*extenddi_truncate<mode>,
19571         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
19572         defintions.
19573         (*extendhi_truncateqi): New define_insn_and_sptit.
19574
19575 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
19576
19577         PR middle-end/40204
19578         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
19579         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
19580
19581 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
19582
19583         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
19584         the operand of VIEW_CONVERT_EXPR.
19585
19586 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
19587
19588         * config/i386/driver-i386.c (host_detect_local_cpu): Check
19589         extended family and model for Intel processors.  Support Intel Atom.
19590
19591 2009-05-20  Olivier Hainque  <hainque@adacore.com>
19592
19593         * gstab.h (stab_code_type): Define, to be used instead of the
19594         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
19595         notice.
19596         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
19597         occurrences by stab_code_type.
19598         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
19599
19600 2009-05-20  Martin Jambor  <mjambor@suse.cz>
19601
19602         * tree-flow.h (insert_edge_copies_seq): Undeclare.
19603         (sra_insert_before): Likewise.
19604         (sra_insert_after): Likewise.
19605         (sra_init_cache): Likewise.
19606         (sra_type_can_be_decomposed_p): Likewise.
19607         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
19608         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
19609         (sra_insert_before): Likewise.
19610         (sra_insert_after): Likewise.
19611         (sra_init_cache): Likewise.
19612         (insert_edge_copies_seq): Made static and moved upwards.
19613
19614         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
19615         case.
19616
19617         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
19618
19619         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
19620         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
19621         simple copies.
19622
19623 2009-05-20  Richard Guenther  <rguenther@suse.de>
19624
19625         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
19626         with mismatched comparison modes.
19627
19628 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19629
19630         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
19631         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
19632         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
19633         with shifts for Thumb2.
19634         (orsi_notsi): New for orn.
19635         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
19636         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
19637         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
19638         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
19639         Don't invert remainder for IOR.
19640
19641 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
19642
19643         PR tree-optimization/40087
19644         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
19645         number_of_iterations_ne): Rename never_infinite argument.
19646         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
19647         number_of_iterations_le): Handle pointer-type ivs when
19648         exit_must_be_taken is false.
19649         (number_of_iterations_cond):  Do not always assume that
19650         exit_must_be_taken if the control variable is a pointer.
19651
19652 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19653
19654         * c-typeck.c (build_binary_op): Allow % on integal vectors.
19655         * doc/extend.texi (Vector Extension): Document that % is allowed too.
19656
19657 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
19658
19659         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
19660         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
19661
19662 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19663
19664         PR c/40172
19665         * c.opt (Wlogical-op): Disabled by default.
19666         * c-opt (c_common_post_options): Do not enable Wlogical-op with
19667         Wextra.
19668         * doc/invoke.texi (Wlogical-op): Likewise.
19669
19670 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
19671
19672         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
19673         into CASE_CONVERT.
19674         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
19675         Propagate the type of the first operand.
19676         <ASSERT_EXPR>: Simplify.
19677         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
19678         Rewrite using the RHS code as discriminant.
19679         <NOP_EXPR>: Turn into CASE_CONVERT.
19680         <PLUS_EXPR>: Propagate the type of the first operand.
19681
19682 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
19683
19684         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
19685         (ia64_dconst_0_375): New.
19686         * config/ia64/ia64.c (ia64_override_options): Remove
19687         -minline-sqrt-min-latency warning.
19688         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
19689         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
19690         * config/ia64/ia64.md (*sqrt_approx): Remove.
19691         (sqrtsf2): Remove #if 0.
19692         (sqrtsf2_internal_thr): Rewrite and move to div.md.
19693         (sqrtdf): Remove assert.
19694         (sqrtdf2_internal_thr): Rewrite and move to div.md.
19695         (sqrtxf2): Remove #if 0.
19696         (sqrtxf2_internal_thr): Rewrite and move to div.md.
19697         * div.md (sqrt_approx_rf): New.
19698         (sqrtsf2_internal_thr): New implementation.
19699         (sqrtsf2_internal_lat): New.
19700         (sqrtdf2_internal_thr: New implementation.
19701         (sqrtxf2_internal): New implementation.
19702
19703 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
19704             Hans-Peter Nilsson  <hp@axis.com>
19705
19706         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
19707         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
19708         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
19709         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
19710         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
19711         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
19712         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
19713         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
19714         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
19715         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
19716         * c-common.c: ...from here.
19717
19718 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19719
19720         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
19721
19722 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19723
19724         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
19725
19726 2009-05-19  Ben Elliston  <bje@au.ibm.com>
19727
19728         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
19729         assignments with memcpy calls.
19730         (add_fdes): Likewise.
19731         (binary_search_unencoded_fdes): Likewise.
19732         (linear_search_fdes): Eliminate type puns.
19733
19734 2009-05-19  Richard Guenther  <rguenther@suse.de>
19735
19736         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
19737         not falsely claim to have propagated into all uses.
19738
19739 2009-05-19  Ben Elliston  <bje@au.ibm.com>
19740
19741         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
19742         version to v3.0.
19743
19744 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
19745
19746         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
19747         * config/sh/sh.c (sh_legitimate_address_p): Make static.
19748         (TARGET_LEGITIMATE_ADDRESS_P): New.
19749         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
19750         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
19751
19752 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
19753
19754         PR debug/40109
19755         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
19756         child of the containing namespace's DIE.
19757
19758 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
19759
19760         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
19761         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
19762         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
19763         extend patterns.
19764
19765 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
19766
19767         PR target/39942
19768         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
19769         gen_align with gen_pad.
19770         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
19771         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
19772
19773         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
19774         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
19775
19776         * config/i386/i386.md (align): Renamed to ...
19777         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
19778         ASM_OUTPUT_MAX_SKIP_PAD.
19779
19780 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
19781
19782         * config.gcc: Fix variable syntax.
19783
19784         PR target/39531
19785         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
19786         before calling exact_log2.
19787         (output_iorsi3): Likewise.
19788         (output_xorsi3): Likewise.
19789
19790 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
19791
19792         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
19793         for the none zero constant operand except for EQ and NE
19794         comprisons even when the first operand is R0.
19795
19796 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
19797
19798         * config/s390/2064.md: Remove trailing whitespaces.
19799         * config/s390/2084.md: Likewise.
19800         * config/s390/constraints.md: Likewise.
19801         * config/s390/fixdfdi.h: Likewise.
19802         * config/s390/libgcc-glibc.ver: Likewise.
19803         * config/s390/s390-modes.def: Likewise.
19804         * config/s390/s390-protos.h: Likewise.
19805         * config/s390/s390.c: Likewise.
19806         * config/s390/s390.h: Likewise.
19807         * config/s390/s390.md: Likewise.
19808         * config/s390/tpf-unwind.h: Likewise.
19809
19810 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
19811
19812         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
19813
19814 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
19815
19816         M68K TLS support.
19817         * configure.ac (m68k-*-*): Check if binutils support TLS.
19818         * configure: Regenerate.
19819         * config/m68k/predicates.md (symbolic_operand): Extend comment.
19820         * config/m68k/constraints.md (Cu): New constraint.
19821         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
19822         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
19823         (movsi): Handle TLS symbols.
19824         (addsi3_5200): Handle XTLS symbols, indent.
19825         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
19826         (m68k_tls_reference_p): Declare.
19827         (m68k_legitimize_address): Declare.
19828         (m68k_unwrap_symbol): Declare.
19829         * config/m68k/m68k.opt (mxtls): New option.
19830         * config/m68k/m68k.c (ggc.h): Include.
19831         (m68k_output_dwarf_dtprel): Implement hook.
19832         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
19833         (m68k_expand_prologue): Load GOT pointer when function needs it.
19834         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
19835         (m68k_legitimate_constant_address_p): Same.
19836         (m68k_decompose_address): Handle TLS references.
19837         (m68k_get_gp): New static function.
19838         (enum m68k_reloc): New contants.
19839         (TLS_RELOC_P): New macro.
19840         (m68k_wrap_symbol): New static function.
19841         (m68k_unwrap_symbol): New function.
19842         (m68k_final_prescan_insn_1): New static function.
19843         (m68k_final_prescan_insn): New function.
19844         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
19845         functions.
19846         (legitimize_pic_address): Handle TLS references..
19847         (m68k_tls_get_addr, m68k_get_tls_get_addr)
19848         (m68k_libcall_value_in_a0_p)
19849         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
19850         (m68k_call_m68k_read_tp): Helper variables and functions for ...
19851         (m68k_legitimize_tls_address): Handle TLS references.
19852         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
19853         New functions.
19854         (m68k_legitimize_address): Handle TLS symbols.
19855         (m68k_get_reloc_decoration): New static function.
19856         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
19857         UNSPEC_RELOC32.
19858         (m68k_output_dwarf_dtprel): Implement hook.
19859         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
19860         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
19861         m68k_call_* routines.
19862         (sched_attr_op_type): Handle TLS symbols.
19863         (gt-m68k.h): Include.
19864         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
19865         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
19866
19867 2009-05-18  Martin Jambor  <mjambor@suse.cz>
19868
19869         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
19870         (visit_store_addr_for_mod_analysis): New function.
19871         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
19872         (determine_cst_member_ptr): Use gimple_assign_single_p.
19873         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
19874         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
19875         operands.  Don't check number of operands of a NOP_EXPR.
19876
19877 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
19878
19879         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
19880
19881 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19882
19883         PR c/40172
19884         * c-common.c (warn_logical_operator): Don't warn if one of
19885         expression isn't always true or false.
19886
19887 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
19888
19889         * config/i386/biarch32.h: New file.
19890         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
19891
19892 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
19893
19894         * config/mips/mips.md (*zero_extend<mode>_trunchi,
19895         *zero_extend<mode>_truncqi): Merge these into ...
19896         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
19897         Name the pattern following this as *zero_extendhi_truncqi.
19898
19899 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
19900
19901         PR middle-end/39301
19902         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
19903         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
19904         (output_info): Make field HOST_WIDEST_INT.
19905         (print_statistics): Use HOST_WIDEST_INT_PRINT.
19906         (dump_bitmat_statistics): Same.
19907
19908 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
19909
19910         * config.gcc (use_gcc_stdint):  Set to wrap.
19911         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
19912         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
19913         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
19914         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
19915         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
19916         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
19917         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
19918         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
19919
19920 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
19921
19922         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
19923         tune_64.
19924         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
19925         Move definitions earlier.
19926         (OPT_ARCH64, OPT_ARCH32): Define.
19927         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
19928         and tune_64.
19929
19930 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
19931
19932         PR target/40153
19933         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
19934         implies.
19935
19936 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
19937
19938         * arm.md (movdi2): Copy non-reg values to DImode registers.
19939
19940 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
19941
19942         PR target/39942
19943         * final.c (label_to_max_skip): New function.
19944         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
19945         CODE_LABEL_NUMBER <= max_labelno.
19946         * output.h (label_to_max_skip): New prototype.
19947         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
19948         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
19949         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
19950         Handle CODE_LABELs with >= 16 byte alignment or with
19951         max_skip == (1 << align) - 1.
19952         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
19953         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
19954
19955         PR target/39942
19956         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
19957         .p2align 3 if MAX_SKIP is smaller than 7.
19958         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
19959
19960 2009-05-15  Ian Lance Taylor  <iant@google.com>
19961
19962         * alias.c (struct alias_set_entry_d): Rename from struct
19963         alias_set_entry.  Change all uses.
19964         * except.c (struct call_site_record_d): Rename from struct
19965         call_site_record.  Change all uses.
19966         * except.h (struct eh_region_d): Rename from struct eh_region.
19967         Change all uses.
19968         * gcse.c (struct hash_table_d): Rename from struct hash_table.
19969         Change all uses.
19970         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
19971         ivtype_map_elt.  Change all uses.
19972         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
19973         Change all uses.
19974         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
19975         * graphite.h (struct name_tree_d): Rename from struct name_tree.
19976         Change all uses.
19977         (struct sese_d): Rename from struct sese.  Change all uses.
19978         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
19979         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
19980         * optabs.h (struct optab_d): Rename from struct optab.  Change all
19981         uses.
19982         (struct convert_optab_d): Rename from struct convert_optab.
19983         Change all uses.
19984         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
19985         ipa_opt_pass.  Change all uses.
19986         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
19987         all uses.
19988
19989         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
19990         defined as a typedef.
19991         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
19992         defined as a tag.
19993
19994 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19995
19996         PR 16302
19997         * fold-const.c (make_range,build_range_check,merge_ranges): Move
19998         declaration to...
19999         (merge_ranges): Returns bool.
20000         * tree.h (make_range): .. to here.
20001         (build_range_check): Likewise.
20002         (merge_ranges): Likewise. Renamed from merge_ranges.
20003         * c-typeck.c (parser_build_binary_op): Update calls to
20004         warn_logical_operator.
20005         * c-common.c (warn_logical_operator): Add new warning.
20006         * c-common.h (warn_logical_operator): Update declaration.
20007
20008 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20009
20010         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
20011
20012 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20013
20014         * doc/install.texi: Document MPC requirements, flags etc.
20015
20016         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
20017         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
20018         Evaluate constant arguments.
20019         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
20020         (fold_builtin_1): Likewise, also evaluate constant arguments.
20021         Remove superfluous break.
20022         (do_mpc_ckconv): New.
20023         * real.h: Include mpc.h.
20024         * toplev.c (print_version): Output MPC version info if available.
20025
20026 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
20027
20028         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
20029
20030 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
20031
20032         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
20033         only once.
20034
20035 2009-05-15  Jan Hubicka  <jh@suse.cz>
20036
20037         * doc/invoke.texi (max-early-inliner-iterations): New flag.
20038         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
20039         (try_inline): Fix return value.
20040         (cgraph_decide_inlining_incrementally): Honor new value.
20041         (cgraph_early_inlining): Handle indirect inlining.
20042         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
20043
20044 2009-05-15  Jan Hubicka  <jh@suse.cz>
20045
20046         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
20047         * cgraphunit.c (cgraph_finalize_function): Set it.
20048         (cgraph_expand_function): Use it.
20049
20050 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
20051
20052         * real.c (encode_ieee_half): Define.
20053         (decode_ieee_half): Define.
20054         (ieee_half_format): Define.
20055         (arm_half_format): Define.
20056         * real.h (ieee_half_format): Declare.
20057         (arm_half_format): Declare.
20058
20059 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
20060
20061         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
20062         swapped, and reversed optabs exist before trying to use them.
20063
20064 2009-05-15  Paul Brook  <paul@codesourcery.com>
20065             Sandra Loosemore  <sandra@codesourcery.com>
20066
20067         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
20068         loads.  Allow PRE_DEC.
20069         (output_move_neon): Handle PRE_DEC.
20070         (arm_print_operand): Add 'A' for neon structure loads.
20071         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
20072         * config/arm/neon.md (neon_mov): Update comment.
20073         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
20074         calls.
20075         (Um): New constraint.
20076
20077 2009-05-15  Jan Hubicka  <jh@suse.cz>
20078
20079         Revert the following patch until testsuite fallout is fixed:
20080         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
20081         * cgraph.h (struct inline_summary): New filed self_wize,
20082         size_inlining_benefit, self_time and time_inlining_benefit.
20083         (struct cgraph_global_info): Replace insns by time ans size fields.
20084         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
20085         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
20086         (ipcp_update_callgraph): Do not touch function bodies.
20087         * ipa-inline.c: Include except.h
20088         (MAX_TIME): New constant.
20089         (overall_insns): Remove
20090         (overall_size, max_benefit): New static variables.
20091         (cgraph_estimate_time_after_inlining): New function.
20092         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
20093         (cgraph_clone_inlined_nodes): Update size.
20094         (cgraph_mark_inline_edge): Update size.
20095         (cgraph_estimate_growth): Use size info.
20096         (cgraph_check_inline_limits): Check size.
20097         (cgraph_default_inline_p): Likewise.
20098         (cgraph_edge_badness): Compute badness based on benefit and size cost.
20099         (cgraph_decide_recursive_inlining): Check size.
20100         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
20101         and times.
20102         (cgraph_decide_inlining): Likewise.
20103         (cgraph_decide_inlining_incrementally): Likewise; honor
20104         PARAM_EARLY_INLINING_INSNS.
20105         (likely_eliminated_by_inlining_p): New predicate.
20106         (estimate_function_body_sizes): New function.
20107         (compute_inline_parameters): Use it.
20108         * except.c (must_not_throw_labels): New function.
20109         * except.h (must_not_throw_labels): Declare.
20110         * tree-inline.c (init_inline_once): Kill inlining_weigths
20111         * tree-ssa-structalias.c: Avoid uninitialized warning.
20112         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
20113         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
20114         (PARAM_INLINE_CALL_COST): Remove.
20115         (PARAM_EARLY_INLINING_INSNS): New.
20116
20117 2009-05-15  Richard Guenther  <rguenther@suse.de>
20118
20119         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
20120         not TODO_update_ssa.
20121
20122 2009-05-15  Richard Guenther  <rguenther@suse.de>
20123
20124         PR tree-optimization/39999
20125         * gimple.h (gimple_expr_type): Use the expression type looking
20126         through useless conversions.
20127         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
20128         (vn_nary_op_insert_stmt): Likewise.
20129         (simplify_binary_expression): Likewise.
20130
20131 2009-05-15  Richard Guenther  <rguenther@suse.de>
20132
20133         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
20134         New options, enabled by default.
20135         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
20136         Document.
20137         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
20138         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
20139         * tree-ssa-structalias.c (gate_tree_pta): New function.
20140         (pass_build_alias): Use it.
20141
20142 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
20143
20144         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
20145         recurse on an invariant address if a conversion from a pointer
20146         type to a wider integer type is involved.
20147
20148 2009-05-15  Jan Hubicka  <jh@suse.cz>
20149
20150         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
20151         * cgraph.h (struct inline_summary): New filed self_wize,
20152         size_inlining_benefit, self_time and time_inlining_benefit.
20153         (struct cgraph_global_info): Replace insns by time ans size fields.
20154         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
20155         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
20156         (ipcp_update_callgraph): Do not touch function bodies.
20157         * ipa-inline.c: Include except.h
20158         (MAX_TIME): New constant.
20159         (overall_insns): Remove
20160         (overall_size, max_benefit): New static variables.
20161         (cgraph_estimate_time_after_inlining): New function.
20162         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
20163         (cgraph_clone_inlined_nodes): Update size.
20164         (cgraph_mark_inline_edge): Update size.
20165         (cgraph_estimate_growth): Use size info.
20166         (cgraph_check_inline_limits): Check size.
20167         (cgraph_default_inline_p): Likewise.
20168         (cgraph_edge_badness): Compute badness based on benefit and size cost.
20169         (cgraph_decide_recursive_inlining): Check size.
20170         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
20171         and times.
20172         (cgraph_decide_inlining): Likewise.
20173         (cgraph_decide_inlining_incrementally): Likewise; honor
20174         PARAM_EARLY_INLINING_INSNS.
20175         (likely_eliminated_by_inlining_p): New predicate.
20176         (estimate_function_body_sizes): New function.
20177         (compute_inline_parameters): Use it.
20178         * except.c (must_not_throw_labels): New function.
20179         * except.h (must_not_throw_labels): Declare.
20180         * tree-inline.c (init_inline_once): Kill inlining_weigths
20181         * tree-ssa-structalias.c: Avoid uninitialized warning.
20182         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
20183         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
20184         (PARAM_INLINE_CALL_COST): Remove.
20185         (PARAM_EARLY_INLINING_INSNS): New.
20186         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
20187         (inline-call-cost): Remove.
20188         (early-inlining-insns): New.
20189
20190 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
20191
20192         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
20193         for bounds.
20194         (print_int_cst_bounds_in_octal_p): Likewise.
20195         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
20196         with subtypes.
20197         * dwarf2out.c (base_type_die): Likewise.
20198         (is_subrange_type): Delete.
20199         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
20200         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
20201         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
20202         if the destination type is boolean.
20203         (build_range_check): Do not special-case subtypes.
20204         (fold_sign_changed_comparison): Likewise.
20205         (fold_unary): Likewise.
20206         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
20207         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
20208         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
20209         * tree.c (subrange_type_for_debug_p): New predicate based on the
20210         former is_subrange_type.
20211         * tree.h (subrange_type_for_debug_p): Declare.
20212         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
20213         (convert_affine_scev): Remove call to above function.
20214         (chrec_convert_aggressive): Likewise.
20215         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
20216         false for conversions involving subtypes.
20217         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
20218         (vrp_val_min): Likewise.
20219         (needs_overflow_infinity): Likewise.
20220         (extract_range_from_unary_expr): Likewise.
20221
20222 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
20223
20224         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
20225         * config/frv/frv.c: Likewise.
20226         * config/s390/s390.c: Likewise.
20227         * config/sparc/sparc.h: Likewise.
20228         * config/i386/i386.h: Likewise.
20229         * config/i386/i386.c: Likewise.
20230         * config/crx/crx.c: Likewise.
20231         * config/m68hc11/m68hc11.h: Likewise.
20232         * config/iq2000/iq2000.c: Likewise.
20233         * config/mn10300/mn10300.h: Likewise.
20234         * config/mn10300/mn10300.c: Likewise.
20235         * config/m68k/m68k.c: Likewise.
20236         * config/rs6000/rs6000.c: Likewise.
20237         * config/rs6000/xcoff.h: Likewise.
20238         * config/rs6000/linux64.h: Likewise.
20239         * config/rs6000/sysv4.h: Likewise.
20240         * config/score/score3.c: Likewise.
20241         * config/score/score7.c: Likewise.
20242         * config/score/score.c: Likewise.
20243         * config/arm/arm.md: Likewise.
20244         * config/mips/mips.c: Likewise.
20245         * config/mips/mips.md: Likewise.
20246         * config/bfin/bfin.h: Likewise.
20247         * config/pa/pa.c: Likewise.
20248         * config/pa/constraints.md: Likewise.
20249
20250         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
20251         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
20252         * config/pdp11/pdp11.h: Use memory_address_p instead.
20253
20254 2009-05-14  Ian Lance Taylor  <iant@google.com>
20255
20256         * passes.c (finish_optimization_passes): Change i to int.
20257         * plugin.c (plugins_active_p): Change event to int.
20258         (dump_active_plugins): Likewise.
20259         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
20260         Add cast.
20261         * tree.c (tree_range_check_failed): Change c to unsigned int.
20262         (omp_clause_range_check_failed): Likewise.
20263         (build_common_builtin_nodes): Change mode to int.  Add cast.
20264         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
20265         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
20266
20267         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
20268         ++ or -- with a variable of enum type.
20269
20270 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
20271
20272         PR driver/40144
20273         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
20274
20275 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
20276
20277         * store-motion.c: Do not include params.h
20278         * Makefile.in: Fix dependencies for various files.
20279
20280 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
20281
20282         * auto-inc-dec.c: Fix pass description, remove apparent
20283         accidental duplication.
20284
20285 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
20286
20287         PR middle-end/40147
20288         * ipa-utils.h (memory_identifier_string): Moved to ...
20289         * tree.h (memory_identifier_string): Here.  Add GTY(()).
20290
20291 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
20292
20293         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
20294         in the former documentation of...
20295         (GO_IF_LEGITIMATE_ADDRESS): ... this.
20296         * ira-conflicts.c (get_dup_num): Use address_operand.
20297         * targhooks.c (default_legitimate_address_p): New.
20298         * targhooks.h (default_legitimate_address_p): New.
20299         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
20300         Call hook.
20301         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
20302         * target.h (struct target): Add legitimate_address_p.
20303         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
20304         (TARGET_INITIALIZER): Include it.
20305
20306         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20307         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
20308         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
20309         (TARGET_LEGITIMATE_ADDRESS_P): New.
20310
20311         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20312         (REG_OK_STRICT_P): Delete.
20313         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
20314         (frv_legitimate_address_p_1): ... this.
20315         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
20316         (frv_legitimate_address_p_1): ... the renamed old
20317         frv_legitimate_address_p.
20318         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
20319         (TARGET_LEGITIMATE_ADDRESS_P): New.
20320
20321         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20322         * config/s390/s390-protos.h (legitimate_address_p): Remove.
20323         * config/s390/s390.c (legitimate_address_p): Rename to...
20324         (s390_legitimate_address_p): ... this, make static.
20325         (legitimize_address): Adjust call.
20326         (TARGET_LEGITIMATE_ADDRESS_P): New.
20327         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
20328
20329         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20330         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
20331         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
20332         (TARGET_LEGITIMATE_ADDRESS_P): New.
20333
20334         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20335         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
20336         * config/spu/spu.c (spu_legitimate_address): Rename to...
20337         (spu_legitimate_address_p): ... this, make static.
20338         (TARGET_LEGITIMATE_ADDRESS_P): New.
20339
20340         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20341         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
20342         * config/sparc/sparc.c (legitimate_address_p): Rename to...
20343         (sparc_legitimate_address_p): ... this, make static and return bool.
20344         (legitimize_address): Adjust call.
20345         (TARGET_LEGITIMATE_ADDRESS_P): New.
20346
20347         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20348         * config/i386/i386-protos.h (legitimate_address_p): Remove.
20349         * config/i386/i386.c (legitimate_address_p): Rename to...
20350         (ix86_legitimate_address_p): ... this, make static.
20351         (constant_address_p): Move after it, adjust call.
20352         (TARGET_LEGITIMATE_ADDRESS_P): New.
20353
20354         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20355         * config/avr/avr-protos.h (legitimate_address_p): Remove.
20356         * config/avr/avr.c (legitimate_address_p): Rename to...
20357         (avr_legitimate_address_p): ... this, make static.
20358         (legitimize_address): Adjust call.
20359         (TARGET_LEGITIMATE_ADDRESS_P): New.
20360
20361         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20362         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
20363         * config/crx/crx.c (crx_legitimate_address_p): Make static.
20364         (TARGET_LEGITIMATE_ADDRESS_P): New.
20365
20366         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20367         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
20368         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
20369         (TARGET_LEGITIMATE_ADDRESS_P): New.
20370
20371         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20372         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
20373         Remove.
20374         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
20375         Make static.
20376         (TARGET_LEGITIMATE_ADDRESS_P): New.
20377
20378         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20379         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
20380         Remove.
20381         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
20382         Rename to...
20383         (m68hc11_legitimate_address_p): ... this, make static.
20384         (go_if_legitimate_address_internal): Rename to...
20385         (m68hc11_legitimate_address_p_1): ... this.
20386         (legitimize_address): Adjust call.
20387         (TARGET_LEGITIMATE_ADDRESS_P): New.
20388
20389         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20390         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
20391         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
20392         (TARGET_LEGITIMATE_ADDRESS_P): New.
20393
20394         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20395         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
20396         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
20397         (mn10300_legitimate_address_p): ... this, make static.
20398         (TARGET_LEGITIMATE_ADDRESS_P): New.
20399
20400         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20401         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
20402         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
20403         (TARGET_LEGITIMATE_ADDRESS_P): New.
20404
20405         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20406         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
20407         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
20408         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20409         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
20410         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
20411         (rs6000_legitimate_address_p): ... this, make static.
20412         (TARGET_LEGITIMATE_ADDRESS_P): New.
20413         (REG_MODE_OK_FOR_BASE_P): Delete.
20414         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
20415
20416         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20417         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
20418         Delete.
20419         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
20420         static, adjust types.
20421         (TARGET_LEGITIMATE_ADDRESS_P): New.
20422
20423         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20424         * config/score/score.c (score_address_p): Rename to...
20425         (score_legitimate_address_p): ... this.
20426         (TARGET_LEGITIMATE_ADDRESS_P): New.
20427         * config/score/score3.c (score3_address_p): Rename to...
20428         (score3_legitimate_address_p): ... this.
20429         * config/score/score7.c (score7_address_p): Rename to...
20430         (score7_legitimate_address_p): ... this.
20431
20432         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
20433         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
20434         GO_IF_LEGITIMATE_ADDRESS): Delete.
20435         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
20436         thumb2_legitimate_address_p): Delete.
20437         (arm_legitimate_address_p): Rename to...
20438         (arm_legitimate_address_outer_p): ... this.
20439         * config/arm/constraints.md ("Uq"): Adjust call.
20440         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
20441         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
20442         to...
20443         (arm_legitimate_address_outer_p): ... this.
20444         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
20445         static.
20446         (TARGET_LEGITIMATE_ADDRESS_P): New.
20447
20448         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20449         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
20450         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
20451         (TARGET_LEGITIMATE_ADDRESS_P): New.
20452
20453         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20454         * config/vax/vax-protos.h (legitimate_address_p): Remove.
20455         * config/vax/vax.c (legitimate_address_p): Rename to...
20456         (vax_legitimate_address_p): ... this, make static.
20457         (TARGET_LEGITIMATE_ADDRESS_P): New.
20458
20459         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20460         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
20461         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
20462         (TARGET_LEGITIMATE_ADDRESS_P): New.
20463
20464         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20465         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
20466         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
20467         (mmix_legitimate_address_p): ... this, make static.
20468         (TARGET_LEGITIMATE_ADDRESS_P): New.
20469
20470         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20471         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
20472         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
20473         (TARGET_LEGITIMATE_ADDRESS_P): New.
20474
20475 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
20476
20477         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
20478         of MODE_COMPLEX_INT.
20479
20480 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
20481
20482         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
20483         LCT_NORMAL in function call.
20484         * mips-tdump.c (print_file_desc): Add cast to enum type.
20485         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
20486         (mark_stabs): Add casts to enum types.
20487         (parse_stabs_common): Add casts to enum types.
20488
20489 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
20490
20491         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
20492         Check for invalid values of LETTER.
20493
20494 2009-05-13  Taras Glek  <tglek@mozilla.com>
20495
20496         * attribs.c (register_attribute): moved out attribute registration
20497         into register_attribute.
20498         * doc/plugins.texi: Documented register_attribute and
20499         PLUGIN_ATTRIBUTES.
20500         * gcc-plugin.h: Added forward decl for register_attribute.
20501         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
20502         * plugin.c (register_callback, invoke_plugin_callbacks): Added
20503         PLUGIN_ATTRIBUTES boilerplate.
20504
20505 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
20506
20507         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
20508         values even in sentinel and empty entries.
20509         (ms_printf_flag_specs):  Likewise.
20510         (ms_scanf_flag_specs):  Likewise.
20511         (ms_strftime_flag_specs):  Likewise.
20512         (ms_print_char_table):  Likewise.
20513         (ms_scan_char_table):  Likewise.
20514         (ms_time_char_table):  Likewise.
20515
20516 2009-05-13  Doug Kwan  <dougkwan@google.com>
20517
20518         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
20519
20520 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
20521
20522         * config/mips/mips.md (store): Add attributes for QI and HI.
20523         Update comment.
20524         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
20525         (truncdi<mode>2): ... this new pattern.
20526
20527 2009-05-13  Brad Hards  <bradh@kde.org>
20528
20529         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
20530
20531 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
20532             Ben Elliston <bje@au.ibm.com>
20533
20534         PR middle-end/40035
20535         * dse.c (check_mem_read_rtx): Guard against width == -1.
20536
20537 2009-05-13  Michael Matz  <matz@suse.de>
20538
20539         PR middle-end/39976
20540         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
20541         (trivially_conflicts_p): New function.
20542         (insert_backedge_copies): Use it.
20543
20544 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
20545
20546         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
20547         (handle_stdc_pragma): Use new enum constant names.
20548         (handle_pragma_float_const_decimal64): Ditto.
20549
20550 2009-05-13  Ian Lance Taylor  <iant@google.com>
20551
20552         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
20553         tree.def.
20554
20555 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
20556
20557         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
20558         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
20559         multilibs.
20560         * config/m68k/m68k.h (FL_UCLINUX): Define.
20561
20562 2009-05-13  Jan Hubicka  <jh@suse.cz>
20563
20564         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
20565
20566 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
20567
20568         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
20569         unless -fschedule-insns is specified.
20570
20571 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
20572
20573         PR target/39561
20574         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
20575         TARGET_EXPAND_CBRANCHDI4.
20576         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
20577         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
20578         (cmpeqdi): Fix comment.
20579
20580 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
20581
20582         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
20583         (sh_legitimate_address_p): Likewise.
20584         * config/sh/sh.c (sh_legitimate_index_p): New.
20585         (sh_legitimate_address_p): Likewise.
20586         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
20587         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
20588         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
20589         (MAYBE_BASE_REGISTER_RTX_P): New macro.
20590         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
20591         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
20592         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
20593         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
20594         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
20595
20596 2009-05-12  Jan Hubicka  <jh@suse.cz>
20597
20598         * tree-inline.c (estimate_operator_cost): Add operands;
20599         when division happens by constant, it is cheap.
20600         (estimate_num_insns): Loads and stores are not having cost of 0;
20601         EH magic stuff is cheap; when computing runtime cost of switch,
20602         use log2 base of amount of its cases; builtin_expect has cost of 0;
20603         compute cost for moving return value of call.
20604         (init_inline_once): Initialize time_based flags.
20605         * tree-inline.h (eni_weights_d): Add time_based flag.
20606
20607 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20608
20609         * df-core.c: Update head documentation.
20610
20611 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
20612
20613         PR bootstrap/40118
20614         * rs6000.c (rs6000_generate_compare): Use op1b instead of
20615         shadowing exisiting variable op1.
20616
20617 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
20618
20619         PR target/37179
20620         * config/i386/driver-i386.c (processor_signatures): New enum.
20621         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
20622         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
20623         processor signature to detect geode processor.
20624
20625 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20626
20627         Revert:
20628
20629         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20630
20631         * optabs.c (prepare_cmp_insn): Temporarily disable test that
20632         causes spurious differences between trunk and cond-optab branch.
20633
20634 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20635
20636         * dojump.c (compare_from_rtx): Delete.
20637         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
20638         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
20639         if the comparison does not satisfy the predicate; test predicates for
20640         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
20641         further if one existing pattern fails.
20642         * expr.h (compare_from_rtx): Delete.
20643         (prepare_operand): Declare it.
20644         * optabs.c: Change "lib call" to "libcall" throughout.
20645         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
20646         HAVE_conditional_trap, emit_cmp_insn): Delete.
20647         (can_compare_p): Delete cmp_optab case.
20648         (prepare_float_lib_cmp): Return an rtx and a machine mode.
20649         Accept other parameters by value.
20650         (prepare_operand): Make non-static.
20651         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
20652         other parameters by value.  Try to widen operands here based on
20653         an optab_methods argument and looking at cbranch_optab.
20654         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
20655         loop.  Use cbranch_optab directly.
20656         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
20657         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
20658         assertion.
20659         (emit_conditional_move, emit_conditional_add): Inline what's needed
20660         of compare_from_rtx, using new prepare_cmp_insn for the rest.
20661         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
20662         with COMPARE.  Move cmov_optab and cstore_optab above
20663         with cbranch_optab, move cmp_optab down with ucmp_optab,
20664         remove tst_otpab.  Do not initialize trap_rtx.
20665         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
20666         for trap code.  Do not check HAVE_conditional_trap.  Use
20667         prepare_cmp_insn.  Accept no predicate for operand 3.
20668         * optabs.h (OTI_cmp): Mark as used only for libcalls.
20669         (OTI_ctrap, ctrap_optab): New.
20670         (tst_optab): Delete.
20671         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
20672         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
20673         with lookup of ctrap_optab.
20674         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
20675         Delete.
20676         (ctrap_optab): New.
20677
20678         * combine.c (combine_simplify_rtx, simplify_set): Do not
20679         special case comparing against zero for cc0 machines.
20680         * simplify-rtx.c (simplify_binary_operation_1): Never remove
20681         COMPARE on cc0 machines.
20682         (simplify_relational_operation): Return a new expression when
20683         a COMPARE could be removed.
20684         * final.c (final_scan_insn): Compare cc_status values
20685         against LHS of a (compare FOO (const_int 0)) cc0 source.
20686         Also check if cc_status.value is the full compare.
20687
20688         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
20689         (cstoreMM4): Document.
20690         (conditional_trap): Document ctrapMM4 instead.
20691         (sync_compare_and_swapMM): Refer to cbranchcc4.
20692         (Dependent Patterns): Eliminate obsolete information referring to
20693         the old jump optimization phase.
20694         (Canonicalization): Include cbranchcc4 case, omit canonicalization
20695         of compares with 0 on cc0 machines.
20696         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
20697         avoiding references to cc0.  Remove text about storing operands
20698         in cmpMM.
20699         * doc/tm.texi (Condition Codes): Include blurb on different
20700         condition code representations, separate into subsections for
20701         CC0, MODE_CC and conditional execution.
20702
20703         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
20704         alpha_emit_setcc): Accept operands and a machine mode.
20705         * config/alpha/alpha.c (alpha_emit_conditional_branch):
20706         Get code/op0/op1 from operands, use machine mode argument
20707         instead of alpha_compare.fp_p.  Emit the branch here.
20708         (alpha_emit_setcc): Likewise, and return boolean.
20709         (alpha_emit_conditional_move): Likewise.  Assert that
20710         cmp_op_mode == cmp_mode, and simplify accordingly.
20711         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
20712         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
20713         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
20714         Delete.
20715         (stack probe test): Use cbranchdi4.
20716         * config/alpha/predicates.md (alpha_cbranch_operator): New.
20717
20718         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
20719         * config/arc/arc.h (movsicc, movsfcc): Use it.
20720         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
20721         (cbranchsi4, cstoresi4): New.
20722         (cmpsi, bCC and sCC expanders): Remove.
20723
20724         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
20725         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
20726         * config/arm/predicates.md (arm_comparison_operator): Only include
20727         floating-point operators if there is a hardware floating-point unit.
20728         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
20729         deferring to cbranch_cc and cstore_cc respectively.
20730         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
20731         cbranch_cc, cstore_cc): New.
20732         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
20733         arm_compare_op1.
20734         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
20735
20736         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
20737         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
20738         as an argument.
20739         (adjust_insn_length): Adjust calls.
20740         (avr_reorg): Handle (compare (foo) (const_int 0)).
20741         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
20742         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
20743         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
20744         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
20745         (bCC): Remove.
20746         (cbranchqi4, cbranchhi4, cbranchsi4): New.
20747         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
20748
20749         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
20750         (cbranchsi4, cstorebi4, cstoresi4): New.
20751         (movbisi): This insn is duplicate, split it to zero_extend.
20752         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
20753         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
20754         (bfin_optimize_loop): Use cbranch expander.
20755         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
20756         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
20757         (bfin_bimode_comparison_operator): ... this.
20758         (bfin_direct_comparison_operator): New.
20759
20760         * config/cris/cris.c (cris_normal_notice_update_cc): Look
20761         inside (compare FOO (const_int 0)).
20762         (cris_rtx_costs): Handle ZERO_EXTRACT.
20763         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
20764         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
20765         (*tstdi_v32): Delete.
20766         (*cmpdi_non_v32): Add M alternative for operand 1.
20767         (cmpsi, cmp<mode>): Make private.
20768         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
20769         with COMPARE.
20770         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
20771
20772         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
20773         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
20774         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
20775         (cc_reg_operand): New.
20776         (any_cond): Delete.
20777         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
20778         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
20779         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
20780         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
20781         crx_expand_scond): Delete.
20782
20783         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
20784         (cbranchsi4): New.
20785         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
20786         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
20787
20788         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
20789         cstoresi4, cstoresf4, cstoredf4): New.
20790         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
20791         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
20792         Receive the entire operands array.
20793         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
20794         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
20795         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
20796         Get test/op0/op1 from the operands array.
20797         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
20798
20799         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
20800         (h8300_expand_store): New.
20801         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
20802         (const_int 0)).
20803         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
20804         (h8300_expand_store): New.
20805         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
20806         or do not try to produce (set (cc0) REG).
20807         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
20808         change a compare into a move to a scratch register.  Disable some
20809         peepholes when comparing with zero.
20810         (tstsi, tsthi, tstsi, cmpqi): Make private.
20811         (cmphi): Delete.
20812         (bCC, sCC): Delete.
20813         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
20814         cstoresi4): New.
20815
20816         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
20817         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
20818         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
20819         (ix86_emit_i387_log1p): Use cbranchxf2.
20820         (ix86_expand_setcc): Return void.
20821         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
20822         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
20823         cmp<MODEF>, cmpcc): Remove.
20824         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
20825         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
20826         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
20827         (sCC and bCC expanders): Remove.
20828         (stack_protect_test): Use cbranchcc4.
20829
20830         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
20831         Delete.
20832         (ia64_expand_compare): Accept three rtx by reference and return void.
20833         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
20834         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
20835         from *expr.  Update *expr with the BImode comparison to do.
20836         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
20837         cmptf, bCC, sCC, conditional_trap): Delete.
20838         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
20839         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
20840         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
20841         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
20842         * config/ia64/predicates.md (ia64_cbranch_operator): New.
20843
20844         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
20845         type of last argument.
20846         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
20847         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
20848         use machine mode argument instead of branch_type.  Remove dead
20849         code for floating-point comparisons.
20850         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
20851         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
20852         Remove.
20853         (cbranchsi4, cstoresi4): New.
20854         * config/iq2000/predicates.md (reg_or_const_operand): New.
20855
20856         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
20857         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
20858         (b<code>_op): Rewrite to...
20859         (bcc_op): ... this, using match_operator.
20860         (s<code>_op): Rewrite to...
20861         (scc_op): ... this, using match_operator.
20862         (s<code>_24_op): Rewrite to...
20863         (scc_op_24): ... this, using match_operator.
20864         (s<code>_<mode>): Rewrite to...
20865         (cstore<mode>4): ... this, using match_operator.
20866         (s<code>_<mode>_24): Rewrite to...
20867         (cstore<mode>4_24): ... this, using match_operator.
20868         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
20869         m32c_unpend_compare, m32c_expand_scc): Delete.
20870         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
20871         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
20872         (m32c_expand_movcc): Change NE to EQ if necessary.
20873         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
20874
20875         * config/m32r/m32r-protos.h (gen_cond_store): New.
20876         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
20877         (gen_cond_store): New, from sCC patterns.
20878         (m32r_expand_block_move): Use cbranchsi4.
20879         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
20880         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
20881         (cbranchsi4, cstoresi4): New.
20882
20883         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
20884         Delete.
20885         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
20886         (m68hc11_notice_update_cc): Look into a compare with 0.
20887         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
20888         Delete.
20889         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
20890         cmphi, cmpqi, bCC): Delete.
20891         (cbranchsi4, cbranchhi4, cbranchqi4): New.
20892         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
20893         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
20894         sets with COMPARE.
20895
20896         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
20897         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
20898         * config/m68k/constraints.md (H): New.
20899         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
20900         the define_insn below.
20901         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
20902         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
20903         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
20904         patterns): Wrap RHS with COMPARE.
20905         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
20906         (*cmpdi_internal): Name this pattern.
20907         (cmpdi): Change to define_insn.
20908         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
20909         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
20910         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
20911         predicate.
20912         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
20913         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
20914         (conditional_trap): Change to...
20915         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
20916         (*conditional_trap): Use the ordered_comparison_operator and
20917         const1_operand predicates.
20918         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
20919         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
20920         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
20921         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
20922
20923         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
20924         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
20925         (mcore_gen_compare): New.
20926         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
20927         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
20928         (mcore_gen_compare): ... this.
20929         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
20930         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
20931         (stack probe pattern): Use cbranchsi4.
20932
20933         * config/mips/predicates.md (mips_cstore_operator): New.
20934         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
20935         * config/mips/mips.md (any_cond): Delete.
20936         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
20937         always succeed.
20938         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
20939         fixuns_truncsfdi2): Use cbranch patterns.
20940         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
20941         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
20942         Adjust call to mips_expand_conditional_branch.
20943         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
20944         cstore<GPR:mode>4.
20945         * config/mips/mips-protos.h (mips_expand_conditional_branch,
20946         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
20947         * config/mips/mips.c (cmp_operands): Delete.
20948         (mips_emit_compare): Get comparison operands from *op0/*op1.
20949         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
20950         that it succeeds.  Use op0/op1 instead of cmp_operands.
20951         (mips_expand_conditional_branch, mips_expand_conditional_move,
20952         mips_expand_conditional_trap): Likewise.
20953         (mips_block_move_loop): Use cbranch patterns.
20954         * config/mips/mips.h (cmp_operands): Delete.
20955
20956         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
20957         (mmix_gen_compare_reg): Just return a register in the right CC mode.
20958         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
20959         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
20960         (*cmpcc_folded): Rename to...
20961         (*cmpdi_folded): this.
20962         (*cmpcc): Rename to...
20963         (*cmps): ... this.
20964         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
20965         (bCC): Remove.
20966         (cbranchdi4): New.
20967         (cbranchdf4): New.  Handle invalid comparisons here.
20968         * config/mmix/predicates.md (float_comparison_operator): New.
20969
20970         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
20971         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
20972         * config/mn10300/mn10300.md (tst): Delete.
20973         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
20974         Name these patterns and wrap RHS in a compare.
20975         (*cmpsi): Make this pattern private.  Include tst.
20976         (*cmpsf): Make this pattern private.
20977         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
20978         (compare with zero peepholes): Likewise.
20979         (bCC): Remove.
20980         (cbranchsi4, cbranchsf4): New.
20981         (casesi): Use cbranchsi4.
20982
20983         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
20984         hppa_branch_type): Delete.
20985         (return_addr_rtx): Use cbranchsi4.
20986         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
20987         Emit CCFPmode comparison here.
20988         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
20989         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
20990         hppa_branch_type): Delete.
20991         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
20992         (movsicc, movdicc): Remove references to hppa_compare_op0,
20993         hppa_compare_op1 and compare_from_rtx.
20994         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
20995         (casesi): Use cbranchsi4.
20996
20997         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
20998         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
20999         * config/pdp11/pdp11.md (register_or_const0_operand): New.
21000         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
21001         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
21002         (bCC): Delete.
21003         (cbranchdf4, cbranchhi4, cbranchqi4): New.
21004         (*branch, *branch_inverted): New.
21005
21006         * config/picochip/picochip.md (cbranchhi4): Use
21007         ordered_comparison_operator.
21008         (cmphi, bCC): Remove.
21009
21010         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
21011         (trap_comparison_operator): Delete.
21012         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
21013         rs6000_emit_cbranch): Accept mode and operands.
21014         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
21015         rs6000_compare_fp_p): Delete.
21016         (rs6000_generate_compare): Accept mode and comparison.  Extract code
21017         and op0/op1 from there.  Replace references to rs6000_compare_op0
21018         and rs6000_compare_op1.
21019         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
21020         extract result from passed operands.
21021         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
21022         extract loc from passed operands.
21023         (rs6000_emit_cmove): Likewise.
21024         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
21025         rs6000_compare_fp_p): Delete.
21026         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
21027         (cbranch<GPR>4, cbranch<FP>4): New.
21028         (cstore<mode>4): New.  Consolidate here all choices about when to use
21029         portable or specialized sCC sequences.
21030         (stack_protect_test): Use cbranchsi4.
21031         (conditional_trap): Replace with ctrap<GPR>4.
21032         (conditional trap insn): Replace trap_comparison_operator with
21033         ordered_comparison_operator.
21034
21035         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
21036         (s390_emit_prologue): Use ctrap.
21037         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
21038         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
21039         New predicates replacing...
21040         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
21041         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
21042         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
21043         (add<mode>cc): Do not use s390_compare_op0/op1.
21044         (s<code>): Change to...
21045         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
21046         (seq): Change to...
21047         (cstorecc4): ... this.  Handle EQ or NE equally.
21048         (*sne): Un-privatize for use in cstorecc4.
21049         (b<code>): Change to...
21050         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
21051         (conditional_trap): Replace with...
21052         (ctrap<GPR>4, ctrap<FP>4): ... these.
21053         (stack_protect): Use cbranchcc4.
21054
21055         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
21056         * config/score/score-protos.h (score_gen_cmp): Delete.
21057         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
21058         (score_block_move-loop): Use cbranchsi4.
21059         * config/score/score.md (cbranchsi4): New.
21060         (cmpsi, bCC): Delete.
21061         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
21062         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
21063         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
21064         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
21065         * config/score/score3.h (score3_gen_cmp): Delete.
21066         * config/score/score7.h (score7_gen_cmp): Delete.
21067
21068         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
21069         (sh_emit_scc_to_t): ... this.  Return void.
21070         (from_compare): Rename to...
21071         (sh_emit_compare_and_branch): ... this.
21072         (sh_emit_compare_and_set): New.
21073         (sh_expand_t_scc): Accept operands.
21074         * config/sh/predicates.md (sh_float_comparison_operator): New.
21075         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
21076         (prepare_scc_operands): Rename to...
21077         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
21078         arguments.
21079         (sh_emit_cheap_store_flag): New.
21080         (sh_emit_set_t_insn): New.
21081         (from_compare): Rename to...
21082         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
21083         handling of TARGET_SH2E floating point to avoid recursive call.
21084         Generate branch here.
21085         (sh_emit_compare_and_set): New.
21086         (sh_expand_t_scc): Get op0/op1 from arguments.
21087         (sh_emit_cheap_store_flag): New.
21088         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
21089         cases.
21090         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
21091         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
21092         (movsicc, movdicc): Do nothing when it recreated operands from
21093         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
21094         prepare_scc_operands (now sh_emit_scc_to_t).
21095         (udivdi3): Use cstoresi4.
21096         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
21097         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
21098         (cbranchint4_media, cbranchfp4_media): New.
21099         (casesi): Use cbranchdi4.
21100         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
21101         Delete.
21102         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
21103         (movnegt): Remove second operand.
21104         (cbranchsf4, cbranchdf4): New.
21105         (stack_protect): Use cbranchdi4/cbranchsi4.
21106
21107         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
21108         (gen_compare_reg): Accept comparison, extract part of it to...
21109         (gen_compare_reg_1): ... this.
21110         (gen_compare_operator): Delete.
21111         (gen_v9_scc): Accept separate destination, comparison code and arms.
21112         Do not use sparc_compare_op0/sparc_compare_op1.
21113         (emit_scc_insn, emit_conditional_branch_insn): New.
21114         (emit_v9_brxx): Make static.  Remove useless assertion.
21115         (sparc_emit_float_lib_cmp): Return RTL instead of calling
21116         emit_cmp_insn.
21117         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
21118         * config/sparc/sparc-protos.h (gen_compare_reg,
21119         sparc_emit_float_lib_cmp): Adjust prototype.
21120         (emit_scc_insn, emit_conditional_branch_insn): New.
21121         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
21122         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
21123         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
21124         iterators to the top.
21125         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
21126         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
21127         snedi_special_trunc): Delete.
21128         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
21129         and snedi_special_trunc.
21130         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
21131         cbranchdi4, cbranch<F:mode>4): New.
21132         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
21133         here.  Use gen_compare_reg instead of gen_compare_operator.
21134         (conditional_trap): Replace with...
21135         (ctrapsi4, ctrapdi4): ... this.
21136         (stack_protect_test): Use cbranchcc4.
21137
21138         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
21139         argument to rtx.
21140         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
21141         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
21142         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
21143         from operands[0] or operands[3] depending on is_set.
21144         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
21145         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
21146         cmpdf, bCC), sCC: Remove.
21147         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
21148         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
21149         cstoredf4): New.
21150         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
21151         spu_emit_branch_or_set.
21152
21153         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
21154         Add two arguments.
21155         * config/stormy16/stormy16.h (xstormy16_compare_op0,
21156         xstormy16_compare_op1): Delete.
21157         * config/stormy16/stormy16.c (xstormy16_compare_op0,
21158         xstormy16_compare_op1): Delete.
21159         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
21160         Adjust calls.
21161         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
21162         (cmphi, cmpsi, bCC): Remove.
21163
21164         * config/v850/v850.md (tstsi, cmpsi): Fold into...
21165         (*cmpsi): ... this one.
21166         (cbranchsi4, cstoresi4): New.
21167         (bCC expanders): Delete.
21168         (sCC insns): Fold into...
21169         (*setcc): ... this one.
21170         (casesi): Do not use gen_cmpsi and gen_bgtu.
21171         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
21172         (movsicc): Simplify.
21173         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
21174
21175         * config/vax/vax-protos.h (cond_name): New.
21176         (vax_output_conditional_branch): Remove.
21177         * config/vax/vax.c (cond_name): New.
21178         (vax_output_conditional_branch): Remove.
21179         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
21180         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
21181         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
21182         (bit<VAXint>): Wrap source with (compare).
21183         (b<code> and following unnamed pattern): Rename to *branch and
21184         *branch_reversed.  Change macroization to match_operator.
21185         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
21186
21187         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
21188         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
21189         Change last argument to machine_mode.
21190         (xtensa_expand_scc): Add machine_mode argument.
21191         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
21192         (gen_conditional_move, xtensa_expand_conditional_branch,
21193         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
21194         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
21195         Adjust operand numbers.
21196         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
21197         Delete.
21198         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
21199         (cmpsi, cmpsf, b<code>, s<code>): Delete.
21200         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
21201
21202 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
21203
21204         * optabs.c (prepare_cmp_insn): Temporarily disable test that
21205         causes spurious differences between trunk and cond-optab branch.
21206
21207 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
21208
21209         PR target/37137
21210         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
21211
21212 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
21213
21214         * tree.c (iterative_hash_pointer): Delete.
21215         (iterative_hash_expr): Short-circuit handling of NULL pointer.
21216         Hash UIDs and versions of SSA names.  Don't special-case built-in
21217         function declarations.
21218
21219 2009-05-11  Ian Lance Taylor  <iant@google.com>
21220
21221         PR bootstrap/40103
21222         * graphite.c: Force -Wc++-compat to only be a warning before
21223         #including "cloog/cloog.h".
21224
21225 2009-05-11  Martin Jambor  <mjambor@suse.cz>
21226
21227         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
21228
21229 2009-05-11  Jan Hubicka  <jh@suse.cz>
21230
21231         * tree-ssa-loop-ivcanon.c: Include target.h
21232         (struct loop_size): new structure.
21233         (constant_after_peeling): New predicate.
21234         (tree_estimate_loop_size): New function.
21235         (estimated_unrolled_size): Rewrite for new estimates.
21236         (try_unroll_loop_completely): Use new estimates.
21237         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
21238
21239 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21240
21241         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
21242         libcpp interface change.
21243         (spu_macro_to_expand): Likewise.
21244
21245 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
21246
21247         PR tree-optimization/40026
21248         * gimplify.c (gimplify_init_constructor): Change initial conditional
21249         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
21250         optimize_compound_literals_in_ctor.
21251
21252 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
21253
21254         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
21255         New devices.
21256         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
21257
21258 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
21259
21260         * tree-vect-data-refs.c (vect_analyze_group_access): Use
21261         HOST_WIDE_INT for gap.
21262
21263 2009-05-11  Ira Rosen  <irar@il.ibm.com>
21264
21265         PR tree-optimization/40074
21266         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
21267         account in group size and step comparison.
21268
21269 2009-05-11  Richard Guenther  <rguenther@suse.de>
21270
21271         * passes.c (init_optimization_passes): Strip now incorrect comment.
21272         (execute_function_todo): Do not set PROP_alias.
21273         * tree-pass.h (PROP_alias): Remove.
21274         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
21275         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
21276         * tree-nrv.c (pass_return_slot): Likewise.
21277         * tree-object-size.c (pass_object_sizes): Likewise.
21278         * tree-ssa-dom.c (pass_dominator): Likewise.
21279         (pass_phi_only_cprop): Likewise.
21280         * tree-ssa-dse.c (pass_dse): Likewise.
21281         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
21282         (pass_cselim): Likewise.
21283         * tree-ssa-pre.c (pass_pre): Likewise.
21284         (pass_fre): Likewise.
21285         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
21286         * tree-ssa-sink.c (pass_sink_code): Likewise.
21287         * tree-stdarg.c (pass_stdarg): Likewise.
21288         * tree-tailcall.c (pass_tail_calls): Likewise.
21289         * tree-vrp.c (pass_vrp): Likewise.
21290
21291 2009-05-10  Ian Lance Taylor  <iant@google.com>
21292
21293         * basic-block.h (enum profile_status): Break out of struct
21294         control_flow_graph.
21295         * cgraph.h (struct inline_summary): Break out of struct
21296         cgraph_local_info.
21297         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
21298         of struct cgraph_order_sort.
21299         * combine.c (enum undo_kind): New enum, broken out of struct undo.
21300         * cse.c (struct branch_path): Break out of struct
21301         cse_basic_block_data.
21302         * except.h (enum eh_region_type): Break out of struct eh_region.
21303         * gcc.c (enum add_del): Break out of struct modify_target.
21304         * genrecog.c (enum decision_type): Break out of struct decision_test.
21305         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
21306         ggc_pch_data.
21307         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
21308         * regmove.c (enum match_use): New enum, broken out of struct match.
21309         * sched-int.h (enum post_call_group): New enum, broken out of
21310         struct deps.
21311         (struct deps_reg): Break out of struct deps.
21312         * target.h (struct asm_int_op): Break out of struct gcc_target.
21313         * tree-eh.c (struct goto_queue_node): Break out of struct
21314         leh_tf_state.
21315         * tree-inline.h (enum copy_body_cge_which): Break out of
21316         copy_body_data.
21317         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
21318
21319         * c-decl.c (in_struct, struct_types): New static variables.
21320         (pushtag): Add loc parameter.  Change all callers.
21321         (lookup_tag): Add ploc parameter.  Change all callers.
21322         (check_compound_literal_type): New function.
21323         (parser_xref_tag): Add loc parameter.  Change all callers.  If
21324         -Wc++-compat, warn about struct/union/enum types defined within a
21325         struct or union.
21326         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
21327         and loc parameters.  Change all callers.  Change error calls to
21328         error_at, using loc.  For a redefinition, if the location of the
21329         original definition is known, report it.  Set in_struct and
21330         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
21331         (finish_struct): Add new parameters enclosing_in_struct and
21332         enclosing_struct_types.  Change all callers.  Set
21333         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
21334         in the struct.  If in a struct, add this struct to struct_types.
21335         (start_enum): Add loc parameter.  Change all callers.  Use
21336         error_at for errors, using loc.  For a redefinition, if the
21337         location of the original definition is known, report it.  If in a
21338         struct, add this enum type to struct_types.  If -Wc++-compat warn
21339         if in sizeof, typeof, or alignof.
21340         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
21341         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
21342         (c_parser_enum_specifier): Get enum location for start_enum.
21343         (c_parser_struct_or_union_specifier): Get struct location for
21344         start_struct.  Save in_struct and struct_types status between
21345         start_struct and finish_struct.
21346         (c_parser_cast_expression): Get location of cast.
21347         (c_parser_alignof_expression): Get location of type.
21348         (c_parser_postfix_expression): Likewise.
21349         (c_parser_postfix_expression_after_paren_type): Add type_loc
21350         parameter.  Change all callers.  Call check_compound_literal_type.
21351         Use type_loc for error about variable size type.
21352         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
21353         of an enum constant from an enum type defined in a struct or union.
21354         (c_cast_expr): Add loc parameter.  Change all callers.  If
21355         -Wc++-compat, warn about defining a type in a cast.
21356         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
21357         (start_enum, start_struct, finish_struct): Update declarations.
21358         (parser_xref_tag, c_cast_expr): Update declarations.
21359         (check_compound_literal_type): Declare.
21360
21361 2009-05-11  Ben Elliston  <bje@au.ibm.com>
21362
21363         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
21364         for recent libcpp interface change.
21365         (rs6000_macro_to_expand): Likewise.
21366
21367 2009-05-10  Michael Matz  <matz@suse.de>
21368
21369         PR target/40031
21370         * config/arm/arm.c (require_pic_register): Emit on entry edge,
21371         not at entry of function.
21372
21373 2009-05-10  Richard Guenther  <rguenther@suse.de>
21374
21375         PR tree-optimization/40081
21376         Revert
21377         * tree-sra.c (instantiate_element): Instantiate scalar replacements
21378         using the main variant of the element type.  Do not fiddle with
21379         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
21380
21381         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
21382         structs with volatile fields.
21383
21384 2009-05-10  Jan Hubicka  <jh@suse.cz>
21385
21386         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
21387         (estimate_move_cost): Assert that it does not get called for
21388         VOID_TYPE_P.
21389         (estimate_num_insns): Skip VOID types in argument handling.
21390         (optimize_inline_calls): Delete unreachable blocks and verify that
21391         callgraph is valid.
21392
21393 2009-05-10  Jan Hubicka  <jh@suse.cz>
21394
21395         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
21396         * cgraph.c (cgraph_mark_address_taken_node): New function.
21397         (dump_cgraph_node): Dump new flag.
21398         * cgraph.h (struct cgraph_node): Add address_taken.
21399         (cgraph_mark_address_taken_node): New function.
21400         * ipa.c (cgraph_postorder): Prioritize functions with address taken
21401         since new direct calls can be born.
21402
21403 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
21404
21405         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
21406         tok->val.node.node.
21407
21408 2009-05-10  Jan Hubicka  <jh@suse.cz>
21409
21410         PR middle-end/40084
21411         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
21412         argument; rewrite.
21413         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
21414         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
21415         * tree-inline.c (copy_bb): Set frequency correctly.
21416         (fold_marked_statements): Update call to
21417         cgraph_update_edges_for_call_stmt.
21418
21419 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
21420
21421         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
21422         identifiers in diagnostics.
21423         * config/arm/arm.c (arm_handle_fndecl_attribute,
21424         arm_handle_isr_attribute): Likewise.
21425         * config/avr/avr.c (avr_handle_progmem_attribute,
21426         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
21427         * config/bfin/bfin.c (handle_int_attribute,
21428         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
21429         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
21430         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
21431         Likewise.
21432         * config/darwin.c (darwin_handle_kext_attribute,
21433         darwin_handle_weak_import_attribute): Likewise.
21434         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
21435         h8300_handle_eightbit_data_attribute,
21436         h8300_handle_tiny_data_attribute): Likewise.
21437         * config/i386/i386.c (ix86_handle_cconv_attribute,
21438         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
21439         * config/i386/winnt.c (ix86_handle_shared_attribute,
21440         ix86_handle_selectany_attribute): Likewise.
21441         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
21442         * config/m32c/m32c.c (function_vector_handler): Likewise.
21443         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
21444         m68hc11_handle_fntype_attribute): Likewise.
21445         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
21446         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
21447         * config/mips/mips.c (mips_insert_attributes,
21448         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
21449         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
21450         rs6000_handle_struct_attribute): Likewise.
21451         * config/sh/sh.c (sh_insert_attributes,
21452         sh_handle_resbank_handler_attribute,
21453         sh_handle_interrupt_handler_attribute,
21454         sh2a_handle_function_vector_handler_attribute,
21455         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
21456         Likewise.
21457         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
21458         * config/spu/spu.c (spu_handle_fndecl_attribute,
21459         spu_handle_vector_attribute): Likewise.
21460         * config/stormy16/stormy16.c
21461         (xstormy16_handle_interrupt_attribute): Likewise.
21462         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
21463         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
21464
21465 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
21466
21467         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
21468         (pp_translate_identifiers): New.
21469         (pp_identifier): Only conditionally translate identifier to locale
21470         character set.
21471         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
21472         (pp_base_tree_identifier): Only conditionally translate identifier
21473         to locale character set.
21474         * c-pretty-print.c (M_): Define.
21475         (pp_c_type_specifier, pp_c_primary_expression): Mark English
21476         fragments for conditional translation with M_.
21477         * tree-pretty-print.c (maybe_init_pretty_print): Disable
21478         identifier translation.
21479
21480 2009-05-10  Richard Guenther  <rguenther@suse.de>
21481
21482         PR tree-optimization/40081
21483         * tree-sra.c (instantiate_element): Instantiate scalar replacements
21484         using the main variant of the element type.  Do not fiddle with
21485         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
21486
21487 2009-05-09  Jan Hubicka  <jh@suse.cz>
21488
21489         PR middle-end/40080
21490         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
21491         indirect calls; verify cgraph afterwards.
21492
21493 2009-05-09  Jan Hubicka  <jh@suse.cz>
21494
21495         PR bootstrap/40082
21496         * ipa.c (update_inlined_to_pointer): New function.
21497         (cgraph_remove_unreachable_nodes): Use it.
21498
21499 2009-05-09  Jan Hubicka  <jh@suse.cz>
21500
21501         * tree-eh.c (struct leh_state): Remove prev_try.
21502         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
21503         not track prev_try.
21504         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
21505         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
21506         remove_eh_handler_and_replace, foreach_reachable_handler,
21507         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
21508         * except.h (struct eh_region): Remove eh_region_u_cleanup.
21509         (gen_eh_region_cleanup): Update prototype.
21510
21511 2009-05-09  Jan Hubicka  <jh@suse.cz>
21512
21513         PR middle-end/40043
21514         * except.c (copy_eh_region): Always set prev_try.
21515         (redirect_eh_edge_to_label): Find outer try.
21516         (foreach_reachable_handler): When looking for prev try
21517         handle case where previous try is not going to be taken.
21518
21519 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
21520
21521         PR tree-optimization/40049
21522         * tree-vect-stmts.c (vectorizable_operation): If the machine has
21523         only vector/vector shifts, convert the type of the constant to the
21524         appropriate type to avoid building incorrect trees, which
21525         eventually have problems with garbage collection.
21526
21527 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
21528
21529         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
21530         -1 for complex floating-point types if honoring signed zeros.
21531
21532 2009-05-08  Jan Hubicka  <jh@suse.cz>
21533
21534         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
21535         argument; handle correctly when profile is absent.
21536         (build_cgraph_edges): Update.
21537         (rebuild_cgraph_edges): Update.
21538         * cgraph.c: Do not include varray.h.
21539         (cgraph_set_call_stmt_including_clones): New function.
21540         (cgraph_create_edge_including_clones): Likewise
21541         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
21542         (cgraph_update_edges_for_call_stmt): Handle clones.
21543         (cgraph_remove_node): Handle clone tree.
21544         (cgraph_remove_node_and_inline_clones): New function.
21545         (dump_cgraph_node): Dump clone tree.
21546         (cgraph_clone_node): Handle clone tree.
21547         (clone_function_name): Bring here from tree-inline.c.
21548         (cgraph_create_virtual_clone): New function.
21549         * cgraph.h (ipa_replace_map): Move here from ipa.h.
21550         (cgraph_clone_info): New function.
21551         (strut cgraph_node): Add clone_info and new clone tree pointers.
21552         (cgraph_remove_node_and_inline_clones,
21553         cgraph_set_call_stmt_including_clones,
21554         cgraph_create_edge_including_clones,
21555         cgraph_create_virtual_clone): Declare.
21556         (cgraph_function_versioning): Use VEC argument.
21557         (compute_call_stmt_bb_frequency): Update prototype.
21558         (cgraph_materialize_all_clones): New function.
21559         * ipa-cp.c (ipcp_update_cloned_node): Remove.
21560         (ipcp_create_replace_map): Update to VECtors.
21561         (ipcp_update_callgraph): Use virtual clones.
21562         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
21563         (ipcp_update_profiling): Do not update local profiling.
21564         (ipcp_insert_stage): Use VECtors and virtual clones.
21565         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
21566         (clone_of_p): New function.
21567         (cgraph_preserve_function_body_p): Use clone tree.
21568         (cgraph_optimize): Materialize clones.
21569         (cgraph_function_versioning): Update for VECtors.
21570         (save_inline_function_body): Use clone tree.
21571         (cgraph_materialize_clone): New function.
21572         (cgraph_materialize_all_clones): Likewise.
21573         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
21574         * ipa.c: Include gimple.h.
21575         (cgraph_remove_unreachable_nodes): Use clone tree.
21576         * ipa-prop.c (ipa_note_param_call): Update call to
21577         compute_call_stmt_bb_frequencycall.
21578         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
21579         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
21580         (copy_bb): Handle updating of clone tree; add new edge when new call
21581         appears.
21582         (expand_call_inline): Be strict about every call having edge.
21583         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
21584         (delete_unreachable_blocks_update_callgraph): New function.
21585         (tree_function_versioning): Use VECtors; always remove unreachable
21586         blocks and fold conditionals.
21587         * tree-inline.h: Do not include varray.h.
21588         (tree_function_versioning): Remove.
21589         * Makefile.in (GTFILES): Remove tree-inline.c
21590         * passes.c (do_per_function): Do only functions having body.
21591         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
21592         tree.
21593
21594 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
21595             Andrew Morrow  <acm@google.com>
21596
21597         PR c/36892
21598         * c-common.c (c_common_attribute_table): Permit deprecated
21599         attribute to take an optional argument.
21600         (handle_deprecated_attribute): If the optional argument to
21601         __attribute__((deprecated)) is not a string ignore the attribute
21602         and emit a warning.
21603
21604         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
21605         * c-typeck.c (build_component_ref): Likewise.
21606         (build_external_ref): Likewise.
21607
21608         * toplev.c (warn_deprecated_use): Add an attribute argument.
21609         Emit the message associated with __attribute__((deprecated)).
21610
21611         * toplev.h (warn_deprecated_use): Updated.
21612
21613         * doc/extend.texi: Document new optional parameter to
21614         __attribute__((deprecated))
21615
21616 2009-05-08  Michael Eager <eager@eagercon.com>
21617
21618         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
21619         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
21620
21621 2009-05-08  Richard Guenther  <rguenther@suse.de>
21622
21623         PR tree-optimization/40062
21624         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
21625         Avoid exponential behavior.
21626
21627 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
21628
21629         PR rtl-optimization/33928
21630         PR 26854
21631         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
21632         process_uses, build_single_def_use_links): New.
21633         (update_df): Update use_def_ref.
21634         (forward_propagate_into): Use get_def_for_use instead of use-def
21635         chains.
21636         (fwprop_init): Call build_single_def_use_links and let it initialize
21637         dataflow.
21638         (fwprop_done): Free use_def_ref.
21639         (fwprop_addr): Eliminate duplicate call to df_set_flags.
21640         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
21641         df_rd_simulate_one_insn): New.
21642         (df_rd_bb_local_compute_process_def): Update head comment.
21643         (df_chain_create_bb): Use the new RD simulation functions.
21644         * df.h (df_rd_simulate_artificial_defs_at_top,
21645         df_rd_simulate_one_insn): New.
21646         * opts.c (decode_options): Enable fwprop at -O1.
21647         * doc/invoke.texi (-fforward-propagate): Document this.
21648
21649 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
21650
21651         PR c/24581
21652         * c-typeck.c (build_binary_op): Handle arithmetic between one real
21653         and one complex operand specially.
21654         * tree-complex.c (some_nonzerop): Do not identify a real value as
21655         zero if flag_signed_zeros.
21656
21657 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
21658
21659         PR rtl-optimization/33928
21660         * loop-invariant.c (record_use): Fix && vs. || mishap.
21661
21662 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
21663
21664         PR rtl-optimization/33928
21665         * loop-invariant.c (struct use): Add addr_use_p.
21666         (struct def): Add n_addr_uses.
21667         (struct invariant): Add cheap_address.
21668         (create_new_invariant): Set cheap_address.
21669         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
21670         (record_uses): Pass df_ref to record_use.
21671         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
21672         used only as such.
21673
21674 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
21675
21676         * config/sh/sh.c: Do not include c-pragma.h.
21677
21678 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21679
21680         * config/spu/spu.c: Remove include of c-common.h.
21681
21682 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
21683
21684         PR c/39037
21685         * c-common.h (mark_valid_location_for_stdc_pragma,
21686         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
21687         clear_float_const_decimal64, float_const_decimal64_p): New.
21688         * c.opt (Wunsuffixed-float-constants): New.
21689         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
21690         unsuffixed float constant, handle new warning.
21691         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
21692         * c-decl.c (c_scope): New flag float_const_decimal64.
21693         (set_float_const_decimal64, clear_float_const_decimal64,
21694         float_const_decimal64_p): New.
21695         (push_scope): Set new flag.
21696         * c-parser.c (c_parser_translation_unit): Mark when it's valid
21697         to use STDC pragmas.
21698         (c_parser_external_declaration): Ditto.
21699         (c_parser_compound_statement_nostart): Ditto.
21700         * c-pragma.c (valid_location_for_stdc_pragma,
21701         mark_valid_location_for_stdc_pragma,
21702         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
21703         handle_pragma_float_const_decimal64): New.
21704         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
21705         * cp/semantics.c (valid_location_for_stdc_pragma_p,
21706         set_float_const_decimal64, clear_float_const_decimal64,
21707         float_const_decimal64_p): New dummy functions.
21708         * doc/extend.texi (Decimal Float): Remove statement that the
21709         pragma, and suffix for double constants, are not supported.
21710         * doc/invoke.texi (Warning Options): List new option.
21711         (-Wunsuffixed-float-constants): New.
21712
21713 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
21714
21715         * config/i386/i386.c: Do not include c-common.h.
21716
21717 2009-05-07  Mark Heffernan  <meheff@google.com>
21718
21719         * doc/invoke.texi (Debugging Options): Document change of debugging
21720         dump location.
21721         * opts.c (decode_options): Make dump_base_name relative to
21722         aux_base_name directory.
21723
21724 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
21725
21726         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
21727         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
21728
21729 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
21730
21731         * Makefile.in (install-plugin): Simplify a bit.
21732
21733 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
21734
21735         * Makefile.in (OBJS-common): Add regcprop.o.
21736         (regcprop.o): New.
21737         * timevar.def (TV_CPROP_REGISTERS): New.
21738         * regrename.c (regrename_optimize): Return 0.
21739         (rest_of_handle_regrename): Delete.
21740         (pass_rename_registers): Point to regrename_optimize.
21741         (struct value_data_entry, struct value_data,
21742         kill_value_one_regno, kill_value_regno, kill_value,
21743         set_value_regno, init_value_data, kill_clobbered_value,
21744         kill_set_value, kill_autoinc_value, copy_value,
21745         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
21746         replace_oldest_value_reg, replace_oldest_value_addr,
21747         replace_oldest_value_mem, copyprop_hardreg_forward_1,
21748         debug_value_data, validate_value_data): Move...
21749         * regcprop.c: ... here.
21750         (rest_of_handle_cprop): Delete.
21751         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
21752
21753 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
21754
21755         PR middle-end/40057
21756         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
21757         GEN_INT for 1 << bitnum.
21758         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
21759         build_int_cst_type.
21760
21761 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
21762
21763         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
21764         Remove wrong description of "nand" operation.
21765
21766 2009-05-06  Richard Guenther  <rguenther@suse.de>
21767             Adam Nemet  <anemet@caviumnetworks.com>
21768
21769         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
21770         comment.  Add that if LHS is not a gimple register, then RHS1 has
21771         to be a single object (GIMPLE_SINGLE_RHS).
21772
21773 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
21774
21775         * expr.c (get_def_for_expr): Move it up in the file.
21776         (store_field): When expanding a bit-field store, look at the
21777         defining gimple stmt for the masking conversion.
21778
21779 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
21780
21781         PR middle-end/39986
21782         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
21783         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
21784         32-bit memcpy into long.
21785
21786 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
21787
21788         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
21789         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
21790         new_reg_loc_descr.
21791         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
21792         instead of appending DW_OP_deref*.
21793
21794 2009-05-06  Michael Matz  <matz@suse.de>
21795
21796         PR middle-end/40021
21797         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
21798         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
21799
21800 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
21801
21802         * Makefile.in (install-plugin): Fix srcdir handling.
21803
21804 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
21805
21806         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
21807         when processing for not_regs_needed bitmap.
21808         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
21809         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
21810         handling it for rhs.
21811
21812 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
21813
21814         * config/i386/i386.md (unnamed inc/dec peephole): Use
21815         optimize_insn_for_size_p instead of optimize_size.
21816         * config/i386/predicates.md (incdec_operand): Likewise.
21817         (aligned_operand): Likewise.
21818         * config/i386/sse.md (divv8sf3): Likewise.
21819         (sqrtv8sf2): Likewise.
21820
21821 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
21822
21823         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
21824
21825         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
21826
21827 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
21828
21829         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
21830         ssemodesuffixf2c with avxmodesuffixf2c.
21831
21832 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
21833
21834         PR c/40032
21835         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
21836
21837 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
21838
21839         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
21840         (struct tree_base): Adjust spacing for 8 bit boundaries.
21841         (struct tree_decl_common): Add decl_by_reference_flag bit.
21842         (DECL_BY_REFERENCE): Adjust.
21843         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
21844         print DECL_BY_REFERENCE bit.
21845         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
21846         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
21847         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
21848         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
21849         unconditionally.
21850
21851         PR middle-end/39666
21852         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
21853         range of the type, but default label is missing, add it with one
21854         of the existing labels instead of adding a new label for it.
21855
21856 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
21857
21858         * dwarf.h: Remove.
21859
21860 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
21861
21862         * Makefile.in (enable_plugin, plugin_includedir): New.
21863         (install): Depend on install-plugin.
21864         (PLUGIN_HEADERS): New.
21865         (install-plugin): New.
21866         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
21867
21868 2009-05-05  Richard Guenther  <rguenther@suse.de>
21869
21870         PR tree-optimization/40022
21871         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
21872         the only vuse.
21873         (phivn_valid_p): Fix tuplification error, simplify.
21874         (phiprop_insert_phi): Add dumps.
21875         (propagate_with_phi): Simplify.
21876
21877 2009-05-05  Richard Guenther  <rguenther@suse.de>
21878
21879         PR middle-end/40023
21880         * builtins.c (gimplify_va_arg_expr): Properly build the address.
21881
21882 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
21883
21884         * tree.h (strip_float_extensions): Remove duplicate declaration.
21885         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
21886         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
21887         block_ultimate_origin): Rearrange the declarations line to match the
21888         comment that indicates the .c file which the functions are defined.
21889         (dwarf2out_*, set_decl_rtl): Add comment.
21890         (get_base_address): Adjust comment.
21891         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
21892         declarations line and add comment.
21893         (is_builtin_name): Add blank after function name, for clarity.
21894
21895 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
21896
21897         * attribs.c (decl_attributes): Use %qE for identifiers in
21898         diagnostics.
21899         * cgraphunit.c (verify_cgraph_node): Translate function names to
21900         locale character set in diagnostics.
21901         * coverage.c (get_coverage_counts): Use %qE for identifiers in
21902         diagnostics.
21903         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
21904         Document that functions are named in UTF-8.
21905         * expr.c (expand_expr_real_1): Translate function names to locale
21906         character set in diagnostics.
21907         * gimplify.c (omp_notice_variable, omp_is_private,
21908         gimplify_scan_omp_clauses): Use %qE for identifiers in
21909         diagnostics.
21910         * langhooks.c (lhd_print_error_function): Translate function names
21911         to locale character set.
21912         * langhooks.h (decl_printable_name): Document that return value is
21913         in internal character set.
21914         * stmt.c: Include pretty-print.h
21915         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
21916         diagnostics.
21917         (resolve_operand_name_1): Translate named operand name to locale
21918         character set.
21919         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
21920         diagnostics.
21921         * toplev.c (announce_function): Translate function names to locale
21922         character set.
21923         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
21924         (default_tree_printer): Use pp_identifier or translate identifiers
21925         to locale character set.  Mark "<anonymous>" for translation.
21926         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
21927         for identifiers in diagnostics.
21928         * tree.c (handle_dll_attribute): Use %qE for identifiers in
21929         diagnostics.
21930         * varasm.c (output_constructor): Use %qE for identifiers in
21931         diagnostics.
21932
21933 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
21934
21935         * configure.ac: use ` ` instead of $()
21936         * configure: Regenerate.
21937
21938 2009-05-05  Ben Elliston  <bje@au.ibm.com>
21939
21940         * config/pa/linux-atomic.c: Eliminate conditional include of
21941         errno.h on non-LP64 systems to simplify build requirements.
21942
21943 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
21944
21945         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
21946         diagnostics.
21947         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
21948         and pass value to identifier_to_locale.
21949         (warn_variable_length_array): Make name a tree.
21950         (grokdeclarator): Separate diagnostic texts for named and unnamed
21951         declarators.  Use %qE for named declarators.
21952         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
21953         diagnostics.
21954         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
21955         identifiers in diagnostics.
21956         * c-typeck.c (push_member_name, start_init): Pass identifiers to
21957         identifier_to_locale.  Mark "anonymous" strings for translation.
21958
21959 2009-05-04  Michael Eager <eager@eagercon.com>
21960
21961         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
21962         address for DImode/DFmode only if double-precision FP regs.
21963
21964 2009-05-04  Michael Eager <eager@eagercon.com>
21965
21966         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
21967         TARGET_SINGLE_FLOAT check.
21968
21969 2009-05-04  Michael Eager <eager@eagercon.com>
21970
21971         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
21972
21973 2009-05-04  Michael Eager <eager@eagercon.com>
21974
21975         * gcc/config.gcc (powerpc-xilinx-eabi*): Add tm t-xilinx
21976         * config/rs6000/t-xilinx: New
21977
21978 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
21979
21980         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
21981         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
21982         * gcc/explow.c (memory_address): Use target hook.
21983         * gcc/targhooks.c (default_legitimize_address): New.
21984         * gcc/targhooks.h (default_legitimize_address): New.
21985         * gcc/target.h (legitimize_address): New.
21986         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
21987         (TARGET_INITIALIZER): Include it.
21988         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
21989
21990         * config/bfin/bfin-protos.h (legitimize_address): Remove.
21991         * config/bfin/bfin.c (legitimize_address): Remove.
21992         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
21993         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
21994         Remove.
21995         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
21996         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
21997
21998         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
21999         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
22000         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
22001         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
22002         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
22003         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
22004         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
22005         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
22006         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
22007         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
22008         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
22009         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
22010         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
22011         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
22012         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
22013         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
22014         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
22015         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
22016         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
22017         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
22018         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
22019         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
22020         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
22021
22022         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
22023         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
22024         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
22025         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
22026         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
22027         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
22028         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
22029         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
22030         (thumb_legitimize_address): Delete.
22031         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
22032         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
22033         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
22034         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
22035         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
22036         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
22037         Delete.
22038         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
22039         Delete.
22040
22041         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
22042         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
22043         * config/m32r/m32r.c (m32r_legitimize_address): New.
22044         * config/m68k/m68k.c (m68k_legitimize_address): New.
22045         * config/score/score.c (score_legitimize_address): Standardize.
22046         * config/score/score3.c (score3_legitimize_address): Standardize.
22047         * config/score/score3.h (score3_legitimize_address): Adjust.
22048         * config/score/score7.c (score7_legitimize_address): Standardize.
22049         * config/score/score7.h (score7_legitimize_address): Adjust.
22050         * config/sh/sh.c (sh_legitimize_address): New.
22051         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
22052
22053         * gcc/config/s390/s390.c (legitimize_address): Rename to...
22054         (s390_legitimize_address): ... this.
22055         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
22056         (sparc_legitimize_address): ... this.
22057         * gcc/config/i386/i386.c (legitimize_address): Rename to...
22058         (ix86_legitimize_address): ... this.
22059         * gcc/config/avr/avr.c (legitimize_address): Rename to...
22060         (avr_legitimize_address): ... this.
22061         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
22062         (mn10300_legitimize_address): ... this.
22063         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
22064         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
22065         (alpha_expand_mov): Adjust call.
22066
22067         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
22068         * config/spu/spu.c (spu_legitimize_address): Likewise.
22069         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
22070         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
22071
22072 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
22073
22074         * intl.c (locale_encoding, locale_utf8): New.
22075         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
22076         * intl.h (locale_encoding, locale_utf8): Declare.
22077         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
22078         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
22079         New.
22080         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
22081         argument.
22082         (pp_tree_identifier): Define to call pp_base_tree_identifier.
22083         (pp_base_tree_identifier): Declare as function.
22084         (identifier_to_locale): Declare.
22085         * Makefile.in (pretty-print.o): Update dependencies.
22086         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
22087
22088 2009-05-04  Richard Guenther  <rguenther@suse.de>
22089
22090         PR middle-end/40015
22091         * builtins.c (fold_builtin_memory_op): Do not decay to element
22092         type if the size matches the whole array.
22093
22094 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
22095
22096         * expmed.c (synth_mult): When trying out a shift, pass the result
22097         of a signed shift.
22098
22099 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
22100
22101         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
22102         (shiftsub1_cost): New.
22103         (init_expmed): Compute shiftsub1_cost.
22104         (synth_mult): Optimize multiplications by constants of the form
22105         -(2^^m-1) for some constant positive integer m.
22106
22107 2009-05-03  Richard Guenther  <rguenther@suse.de>
22108
22109         PR c/39983
22110         * c-typeck.c (array_to_pointer_conversion): Do not built
22111         ADDR_EXPRs of arrays of pointer-to-element type.
22112         * c-gimplify.c (c_gimplify_expr): Revert change fixing
22113         up wrong ADDR_EXPRs after-the-fact.
22114         * c-common.c (strict_aliasing_warning): Strip pointer
22115         conversions for obtaining the original type.
22116         * builtins.c (fold_builtin_memset): Handle array types.
22117         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
22118         and array types
22119
22120 2009-05-03  Richard Guenther  <rguenther@suse.de>
22121
22122         PR middle-end/23329
22123         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
22124         Do not lose casts from array types with unknown extent to array
22125         types with known extent.
22126         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
22127         alias set compatibility.
22128
22129 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
22130
22131         * flags.h (extra_warnings): Delete.
22132         * toplev.c (process_options): Handle Wuninitialized here.
22133         * opts.c (extra_warnings): Delete.
22134         (set_Wextra): Delete.
22135         (common_handle_option): -Wextra can be handled automatically.
22136         * c-opts.c (c_common_handle_option): Delete obsolete code.
22137         (c_common_post_options): Simplify comment.
22138         * common.opt (W): Add Var.
22139         (Wextra): Add Var.
22140         (Wuninitialized): Initialize to -1.
22141
22142 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
22143             Richard Guenther  <rguenther@suse.de>
22144
22145         * expr.c (get_def_for_expr): New function.
22146         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
22147         SSA rather than trees.
22148         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
22149         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
22150
22151 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
22152
22153         * c-common.c (reswords): Add _Imaginary.
22154         * c-common.c (enum rid): Add RID_IMAGINARY.
22155
22156 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
22157
22158         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
22159         Patch by Richard Guenther.
22160
22161 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
22162
22163         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
22164         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
22165         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
22166         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
22167         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
22168         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
22169         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
22170         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
22171         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
22172         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
22173         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
22174         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
22175         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
22176         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
22177         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
22178         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
22179         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
22180         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
22181
22182 2009-05-02  Richard Guenther  <rguenther@suse.de>
22183
22184         PR tree-optimization/39940
22185         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
22186         doing so.
22187
22188 2009-05-02  Richard Guenther  <rguenther@suse.de>
22189
22190         PR middle-end/40001
22191         * tree-ssa.c (execute_update_addresses_taken): Properly check
22192         if we can mark a variable DECL_GIMPLE_REG_P.
22193         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
22194         back to the end of the function.
22195         (is_gimple_reg_type): Remove complex type special casing.
22196         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
22197         if not optimizing.
22198
22199 2009-05-02  Ben Elliston  <bje@au.ibm.com>
22200
22201         * doc/collect2.texi (Collect2): Document search path behaviour
22202         when configured with --with-ld.
22203
22204 2009-05-02  Jan Hubicka  <jh@suse.cz>
22205
22206         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
22207         parameter; update callers.
22208         (coalesce_cost_edge): EH edges are costier because they needs
22209         splitting even if not critical and even more costier when there are
22210         multiple EH predecestors.
22211
22212 2009-05-02  Jan Hubicka  <jh@suse.cz>
22213
22214         * except.c (remove_eh_handler_and_replace): Handle updating after
22215         removing TRY blocks.
22216
22217 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
22218
22219         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
22220
22221 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
22222
22223         * varasm.c: Do not include c-pragma.h.
22224         * attribs.c: Do not incude c-common.h.
22225
22226 2009-05-01  Michael Matz  <matz@suse.de>
22227
22228         * calls.c (initialize_argument_information): Handle SSA names like
22229         decls with a non MEM_P DECL_RTL.
22230
22231 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
22232
22233         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
22234         * ipa-utils.c: Likewise.
22235         * ipa-type-escape.c: Likewise.
22236         * cgraphunit.c Do not include c-common.h.
22237         * ipa-pure-const.c: Likewise.
22238         * tree-if-conv.c: Likewise.
22239         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
22240         * ipa-struct-reorg.c: Likewise.
22241         * tree-nomudflap.c: Likewise.
22242         * tree-ssa-structalias.c: Likewise.
22243
22244 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
22245
22246         * store-motion.c: Many cleanups to make this pass a first-class
22247         citizen instead of an appendix to gcse load motion.  Add TODO list
22248         to make this pass faster/cleaner/better.
22249
22250         (struct ls_expr): Post gcse.c-split cleanups.
22251         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
22252         "stores" field to "avail_stores".
22253         (pre_ldst_mems): Rename to store_motion_mems.
22254         (pre_ldst_table): Rename to store_motion_mems_table.
22255         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
22256         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
22257         (ldst_entry): Rename to st_expr_entry, update users.
22258         (free_ldst_entry): Rename to free_st_expr_entry, update users.
22259         (free_ldst_mems): Rename to free_store_motion_mems, update users.
22260         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
22261         update caller.
22262         (first_ls_expr): Rename to first_st_expr, update users.
22263         (next_ls_expr): Rename to next_st_expr, update users.
22264         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
22265         fields properly for store motion instead of names inherited from load
22266         motion in gcse.c.
22267         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
22268         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
22269         are done with it.
22270
22271         (ae_kill): Rename to st_kill, update users.
22272         (ae_gen): Rename to st_avloc, update users.
22273         (transp): Rename to st_transp, update users.
22274         (pre_insert_map): Rename to st_insert_map, update users.
22275         (pre_delete_map): Rename to st_delete_map, update users.
22276         (insert_store, build_store_vectors, free_store_memory,
22277         one_store_motion_pass): Update for abovementioned changes.
22278
22279         (gcse_subst_count, gcse_create_count): Remove.
22280         (one_store_motion_pass): New statistics counters "n_stores_deleted"
22281         and "n_stores_created", local variables.
22282
22283         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
22284         use for_each_rtx.
22285
22286         (regvec, compute_store_table_current_insn): Remove.
22287         (reg_set_info, reg_clear_last_set): Remove.
22288         (compute_store_table): Use DF caches instead of local dataflow
22289         solvers.
22290
22291 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
22292
22293         * c-objc-common.c (c_tree_printer): Print identifiers with
22294         pp_identifier, not pp_string.  Mark "({anonymous})" for
22295         translation.
22296         * c-pretty-print.c (pp_c_ws_string): New.
22297         (pp_c_cv_qualifier, pp_c_type_specifier,
22298         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
22299         pp_c_storage_class_specifier, pp_c_function_specifier,
22300         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
22301         pp_c_primary_expression, pp_c_postfix_expression,
22302         pp_c_unary_expression, pp_c_shift_expression,
22303         pp_c_relational_expression, pp_c_equality_expression,
22304         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
22305         use pp_string and pp_c_ws_string in place of pp_identifier and
22306         pp_c_identifier for non-identifiers.  Mark English strings for
22307         translation.
22308         * c-pretty-print.h (pp_c_ws_string): Declare.
22309
22310 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
22311             Roland McGrath <roland@redhat.com>
22312
22313         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
22314         (ENABLE_LD_BUILDID): New configuration option.
22315         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
22316         (LINK_BUILDID_SPEC): New macro.
22317         (init_spec): If defined, prepend it between LINK_EH_SPEC and
22318         link_spec.
22319         * doc/install.texi: Document --enable-linker-build-id option.
22320         * configure: Rebuild.
22321         * config.in: Rebuild.
22322
22323 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
22324
22325         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
22326         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
22327         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
22328         MIPS_GP_SAVE_AREA_SIZE.
22329         * config/mips/mips.c (struct mips_frame_info): Update comment
22330         before arg_pointer_offset and hard_frame_pointer_offset.
22331         (mips_compute_frame_info): Update diagram before function: to
22332         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
22333         indicate the position of frame_pointer_rtx with -fstack-protector and
22334         to show args_size.  Don't allocate cprestore area for leaf functions
22335         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
22336         cprestore_size.
22337         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
22338
22339 2009-04-30  Michael Matz  <matz@suse.de>
22340
22341         PR tree-optimization/39955
22342         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
22343
22344 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
22345
22346         * ira.c (setup_cover_and_important_classes):  Use safe macro
22347         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
22348         directly.
22349         * genpreds.c (write_tm_preds_h):  Output suitable definition of
22350         REG_CLASS_FOR_CONSTRAINT.
22351
22352 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
22353
22354         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
22355         instead of an int.
22356         * bitmap.c (bitmap_descriptor): Likewise.
22357         * ggc-common.c (loc_descriptor): Likewise.
22358         * varray.c (varray_descriptor): Likewise.
22359         * vec.c (vec_descriptor): Likewise.
22360
22361 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
22362
22363         * Makefile.in (dce.o): Add $(EXCEPT_H).
22364         * dce.c: Include except.h and delete redundant vector definitions.
22365         (deletable_insn_p): Return false for non-call insns that can throw
22366         if DF is running.
22367
22368 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
22369
22370         * gcse.c (ae_gen): Remove.
22371         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
22372         and make non-static function to make it available in store-motion.c.
22373         Update call sites with search-and-replace.
22374         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
22375         extract_mentioned_regs, extract_mentioned_regs_helper,
22376         find_moveable_store, compute_store_table, load_kills_store, find_loads,
22377         store_killed_in_insn, store_killed_after, store_killed_before,
22378         build_store_vectors, insert_insn_start_basic_block, insert-store,
22379         remove_reachable_equiv_notes, replace_store_insn, delete_store,
22380         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
22381         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
22382         * store-motion.c: ...new file.  Also copy data structures from gcse.c
22383         and clean up to remove parts not used by store motion.
22384         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
22385         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
22386
22387 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22388
22389         PR target/38571
22390         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
22391         when optimizing for size.
22392
22393 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
22394
22395         * gcse.c (gcse_constant_p): Fix typo in last change.
22396
22397 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
22398
22399         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
22400
22401 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
22402
22403         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
22404
22405 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
22406
22407         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
22408         CONST_HIGH_PART result.
22409
22410 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
22411
22412         * config/avr/avr.c (initial_elimination_offset): Rename to
22413         avr_initial_elimination_offset.
22414         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
22415         change return type to bool.
22416         (avr_can_eliminate): New function.
22417         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
22418         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
22419         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
22420         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
22421         avr_initial_elimination_offset.
22422         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
22423         (avr_initial_elimination_offset): Define.
22424
22425 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
22426             Steven Bosscher  <steven@gcc.gnu.org>
22427
22428         PR rtl-optimization/39938
22429         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
22430         * cfgrtl.c: Include insn-attr.h.
22431         (rest_of_pass_free_cfg): New function.
22432         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
22433         * resource.c (init_resource_info): Remove call to df_analyze.
22434
22435 2009-04-29  Richard Guenther  <rguenther@suse.de>
22436
22437         PR target/39943
22438         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
22439         allow conversion to signed integers.
22440
22441 2009-04-29  Richard Guenther  <rguenther@suse.de>
22442
22443         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
22444         shifts of floating point vectors if the shift amount is
22445         a constant multiple of the element size.
22446
22447 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
22448             Michael Matz  <matz@suse.de>
22449
22450         PR middle-end/39927
22451         PR bootstrap/39929
22452         * tree-outof-ssa.c (emit_partition_copy): New function.
22453         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
22454         insert_part_to_rtx_on_edge): Perform the partition base var
22455         copy using emit_partition_copy.
22456         (insert_value_copy_on_edge): Convert constants to the right mode.
22457         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
22458         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
22459
22460 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22461
22462         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
22463         scan backwards to try to find a constant to initialize it.
22464
22465         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
22466         insn before the loop_end instruction, don't look past labels.
22467
22468 2009-04-29  Richard Guenther  <rguenther@suse.de>
22469
22470         PR middle-end/39937
22471         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
22472         loose type conversions.
22473         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
22474         stmts only if there are no uses of its definition.
22475
22476 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22477
22478         * config/bfin/bfin.h (splitting_loops): Declare.
22479         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
22480         Reorder bit definitions to be ascending.
22481         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
22482         * config/bfin/bfin.c (splitting_loops): New variable.
22483         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
22484         (struct loop_info): Remove members INIT and LOOP_INIT.
22485         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
22486         the LSETUP sequence.  Allow LC to be loaded from any register, but
22487         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
22488         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
22489         set to 1.
22490         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
22491         of reload_completed.
22492
22493         From Jie Zhang:
22494         * config/bfin/bfin.md (movsi_insn): Refine constraints.
22495
22496 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
22497
22498         * Makefile.in (PLUGIN_VERSION_H): New.
22499         (OBJS-common): Remove plugin-version.o.
22500         (plugin.o): Depend on (PLUGIN_VERSION_H).
22501         (plugin-version.o): Remove.
22502         * configure: Regenerate
22503         * configure.ac: Create plugin-version.h.
22504         * gcc-plugin.h (plugin_gcc_version): Remove.
22505         (plugin_default_version_check): Change signature.
22506         * plugin-version.c: Remove.
22507         * plugin.c: Include plugin-version.h.
22508         (str_plugin_gcc_version_name): Remove.
22509         (try_init_one_plugin): Pass gcc version to plugin_init.
22510         (plugin_default_version_check): Both gcc and plugin versions are now
22511         arguments.
22512
22513 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22514
22515         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
22516         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
22517         Remove special case testing for last insn of inner loops. Don't fail
22518         if the loop ends with a jump, emit an extra nop instead.
22519
22520         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
22521         DREGS rather than comparing directly.  Remove code that tries to
22522         account for latencies.
22523
22524 2009-04-29  Richard Guenther  <rguenther@suse.de>
22525
22526         PR tree-optimization/39941
22527         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
22528         eliminating an indirect call.
22529
22530 2009-04-29  Richard Guenther  <rguenther@suse.de>
22531
22532         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
22533         parameter.  Allow invariants as base if !require_lvalue.
22534         (verify_gimple_assign_single): Adjust.
22535
22536 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22537
22538         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
22539         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
22540         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
22541         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
22542         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
22543         a VEC_SELECT.
22544         * config/bfin/bfin.c (bfin_expand_builtin,
22545         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
22546
22547 2009-04-28  Richard Guenther  <rguenther@suse.de>
22548
22549         * tree-vect-loop.c (get_initial_def_for_induction): Use
22550         correct types for pointer increment.
22551
22552 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22553
22554         * toplev.c (print_version): Update GMP version string calculation.
22555
22556 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
22557
22558         PR rtl-optimization/39938
22559         * resource.c (init_resource_info): Add call to df_analyze.
22560
22561 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22562
22563         * config/alpha/alpha.md (usegp): Cast the result of
22564         alpha_find_lo_sum_using_gp to enum attr_usegp.
22565         * config/alpha/alpha.c (override_options): Remove end-of-structure
22566         marker element from cpu_table.  Use array size of cpu_table to handle
22567         -mcpu and -mtune options.
22568         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
22569
22570 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
22571
22572         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
22573         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
22574         tune_32 and tune_64.
22575         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
22576         support on PowerPC.
22577         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
22578         * config/rs6000/option-defaults.h: ... here.  New file.
22579         (OPT_64, OPT_32): Define.
22580         (MASK_64BIT): Define to 0 if not already defined.
22581         (OPT_ARCH64, OPT_ARCH32): Define.
22582         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
22583         and tune_64.
22584
22585 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22586
22587         * config/arm/arm.c (arm_override_options): Emit error on using
22588         fpa with AAPCS.
22589
22590 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22591
22592         PR rtl-optimization/39914
22593         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
22594         registers for allocnos created from user-defined variables only
22595         when not optimizing.
22596
22597 2009-04-28  Richard Guenther  <rguenther@suse.de>
22598
22599         PR middle-end/39937
22600         * fold-const.c (fold_binary): Use distribute_real_division only
22601         on float types.
22602
22603 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
22604
22605         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
22606         add hpux-stdint.h to tm_file.
22607         (hppa[12]*-*-hpux11*): Ditto.
22608         (ia64*-*-hpux*): Ditto.
22609         * config/hpux-stdint.h: New.
22610         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
22611         __STDC_EXT__ for all compiles.
22612         * config/pa/pa-hpux.h: Ditto.
22613         * config/pa/pa-hpux10.h: Ditto.
22614         * config/pa/pa-hpux11.h: Ditto.
22615
22616 2009-04-28  Catherine Moore  <clm@codesourcery.com>
22617
22618         * debug.h (set_name): Add comment.
22619
22620 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
22621
22622         PR target/39929
22623         * config/darwin.c (machopic_gen_offset): Check
22624         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
22625         * config/arm/arm.c (require_pic_register): Likewise.
22626
22627 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
22628
22629         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
22630         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
22631         m32c_promote_prototypes): Delete.
22632
22633 2009-04-28  Michael Matz  <matz@suse.de>
22634
22635         PR middle-end/39922
22636         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
22637         constants.
22638
22639 2009-04-28  Richard Guenther  <rguenther@suse.de>
22640
22641         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
22642
22643 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22644
22645         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
22646         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
22647         * config/arm/arm-tune.md: Regenerate.
22648
22649 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
22650
22651         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
22652         block if there are complex incoming edges.
22653         (sel_merge_blocks): Remove useless assert.
22654         (sel_redirect_edge_and_branch): Check that edge was redirected.
22655         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
22656         (sel_find_rgns): Delete declaration.
22657         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
22658         the region when it is not a preheader.
22659
22660 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22661
22662         PR c/39323
22663         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
22664
22665 2009-04-28  Richard Guenther  <rguenther@suse.de>
22666
22667         * tree.h (SSA_NAME_VALUE): Remove.
22668         (struct tree_ssa_name): Remove value_handle member.
22669         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
22670         array for jump threading.
22671         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
22672         SSA_NAME_VALUEs.
22673         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
22674         * tree-flow.h (threadedge_initialize_values): Declare.
22675         (threadedge_finalize_values): Likewise.
22676         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
22677         (SSA_NAME_VALUE): Define.
22678         (threadedge_initialize_values): New function.
22679         (threadedge_finalize_values): Likewise.
22680         * tree-ssa-dom.c (ssa_name_values): New global variable.
22681         (SSA_NAME_VALUE): Define.
22682         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
22683
22684 2009-04-28  Ira Rosen  <irar@il.ibm.com>
22685
22686         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
22687         Use REPORT_VECTORIZED_LOCATIONS instead
22688         REPORT_VECTORIZED_LOOPS.
22689         * tree-vectorizer.c (vect_verbosity_level): Make static.
22690         (vect_loop_location): Rename to vect_location.
22691         (vect_set_verbosity_level): Update comment.
22692         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
22693         and vect_location.
22694         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
22695         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
22696         instead REPORT_UNVECTORIZED_LOOPS.
22697         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
22698         and vect_loop_def to vect_external_def and vect_internal_def.
22699         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
22700         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
22701         REPORT_UNVECTORIZED_LOCATIONS.
22702         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
22703         and vect_used_in_loop and to vect_unused_in_scope and
22704         vect_used_in_scope.
22705         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
22706         (vect_verbosity_level): Remove declaration.
22707         (vect_analyze_operations): Likewise.
22708         (vect_analyze_stmt): Declare.
22709         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
22710         REPORT_UNVECTORIZED_LOCATIONS.
22711         (vect_get_loop_niters): Fix indentation.
22712         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
22713         (vect_analyze_loop_operations): New function.
22714         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
22715         vect_analyze_operations.
22716         (vect_is_simple_reduction): Use new names.
22717         (vectorizable_live_operation, vect_transform_loop): Likewise.
22718         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
22719         to specify whether the data references can be a part of interleaving
22720         chain.
22721         (vect_analyze_data_ref_dependence): Use new names.
22722         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
22723         (vect_create_addr_base_for_vector_ref): Remove redundant code.
22724         * tree-vect-patterns.c (widened_name_p): Use new names.
22725         (vect_recog_dot_prod_pattern): Likewise.
22726         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
22727         (process_use, vect_mark_stmts_to_be_vectorized,
22728         vect_model_simple_cost, vect_model_store_cost,
22729         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
22730         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
22731         vectorizable_operation, vectorizable_type_demotion,
22732         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
22733         vectorizable_condition): Likewise.
22734         (vect_analyze_operations): Split into vect_analyze_loop_operations
22735         and ...
22736         (vect_analyze_stmt): ... new function.
22737         (new_stmt_vec_info): Use new names.
22738         (vect_is_simple_use): Use new names and fix comment.
22739         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
22740         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
22741
22742 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22743
22744         PR target/39911
22745         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
22746         and integer modes for x87 operands.  Do not ICE for unsupported size,
22747         generate error instead.  Generate error for unsupported operand types.
22748         ['z']: Do not handle HImode memory operands specially.  Warning
22749         for floating-point operands.  Fallthru to 'Z' for unsupported operand
22750         types.  Do not ICE for unsupported size, generate error instead.
22751         (output_387_binary_op): Use %Z to output operands.
22752         (output_fp_compare): Ditto.
22753         (output_387_reg_move): Ditto.
22754
22755 2009-04-28  Ben Elliston  <bje@au.ibm.com>
22756
22757         PR c++/35652
22758         Revert:
22759
22760         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22761
22762         * builtins.c (c_strlen): Do not warn here.
22763         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
22764         * c-common.c (pointer_int_sum): Take an explicit location.
22765         Warn about offsets out of bounds.
22766         * c-common.h (pointer_int_sum): Adjust declaration.
22767
22768 2009-04-27  Ian Lance Taylor  <iant@google.com>
22769
22770         * collect2.c (is_ctor_dtor): Change type of ret field in struct
22771         names to symkind.
22772         * dce.c (run_fast_df_dce): Change type of old_flags to int.
22773         * df-core.c (df_set_flags): Change return type to int.  Change
22774         type of old_flags to int.
22775         (df_clear_flags): Likewise.
22776         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
22777         (df_get_conditional_uses): Likewise.
22778         * df.h (df_set_flags, df_clear_flags): Update declarations.
22779         * dwarf2out.c (struct indirect_string_node): Change type of form
22780         field to enum dwarf_form.
22781         (AT_string_form): Change return type to enum dwarf_form.
22782         * fixed-value.c (fixed_compare): Add cast to enum type.
22783         * fwprop.c (update_df): Change 0 to VOIDmode.
22784         * gensupport.c: Change 0 to UNKNOWN.
22785         * gimple.h (gimple_cond_code): Add cast to enum type.
22786         * haifa-sched.c (reemit_notes): Add cast to enum type.
22787         * hooks.c (hook_int_void_no_regs): Remove function.
22788         * hooks.h (hook_int_void_no_regs): Remove declaration.
22789         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
22790         * predict.c (combine_predictions_for_insn): Add casts to enum type.
22791         * real.c (real_arithmetic): Add cast to enum type.
22792         (real_compare): Likewise.
22793         * target.h (struct gcc_target): Change return type of
22794         branch_target_register_class to enum reg_class.
22795         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
22796         default_branch_target_register_class.
22797         * targhooks.c (default_branch_target_register_class): New function.
22798         * targhooks.h (default_branch_target_register_class): Declare.
22799         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
22800         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
22801         cast to int.
22802         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
22803         ERROR_MARK.
22804         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
22805         vect_uninitialized_def.  Change 0 to ERROR_MARK.
22806         * tree-vect-stmts.c (supportable_widening_operation): Don't
22807         initialize icode1 and icode2.
22808         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
22809         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
22810         and to STD_C89.
22811         (cmn_err_flag_specs): Change 0 to STD_C89.
22812         (cmn_err_char_table): Likewise.
22813         * config/arm/arm.c (get_arm_condition_code): Change type of code
22814         to enum arm_cond_code.
22815         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
22816         (IWMMXT_BUILTIN2): Likewise.
22817         (neon_builtin_type_bits): Don't define typedef.
22818         (neon_builtin_datum): Change type of bits field to int.
22819         (arm_expand_neon_args): Add cast to enum type.
22820         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
22821         TLS_MODEL_NONE.
22822         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
22823         casts to enum type.
22824         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
22825         MIPS_FP_COND_f.
22826         * config/mips/mips.md (jal_macro): Return enum constant.
22827         (single_insn): Likewise.
22828         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
22829         CODE_FOR_nothing.
22830         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
22831         casts to enum type.
22832         * config/s390/s390.c (s390_tune_flags): Change type to int.
22833         (s390_arch_flags): Likewise.
22834         (s390_handle_arch_option): Change flags field of struct pta to int.
22835         * config/s390/s390.h (s390_tune_flags): Update declaration.
22836         (s390_arch_flags): Likewise.
22837         * config/sh/sh.c (prepare_move_operands): Compare
22838         tls_symbolic_operand result with enum constant.
22839         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
22840         (sh_expand_prologue): Add cast to enum type.
22841         (sh_expand_epilogue): Likewise.
22842         (tls_symbolic_operand): Change return type to enum tls_model.
22843         (fpscr_set_from_mem): Add cast to enum type.
22844         (legitimize_pic_address): Compare tls_symbolic_operand result with
22845         enum constant.
22846         (sh_target_reg_class): Change return type to enum reg_class.
22847         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
22848         PROCESSOR_xxx.
22849         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
22850         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
22851         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
22852         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
22853         (delayed_branch, tls_call_delay): Likewise.
22854         (eligible_for_sibcall_delay): Likewise.
22855         (eligible_for_return_delay): Likewise.
22856         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
22857         (spu_expand_builtin_1): Likewise.
22858
22859         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
22860         for all types of conversions.
22861         (output_init_element): Issue -Wc++-compat warning if needed when
22862         initializing a bitfield with enum type.
22863         * c-parser.c (c_parser_expression): Set original_type to
22864         original_type of right hand operand of comma operator.
22865
22866 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22867
22868         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
22869         grammar nits.
22870         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
22871         * doc/cpp.texi (Standard Predefined Macros)
22872         (Implementation-defined behavior): Likewise.
22873         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
22874         * doc/gimple.texi (GIMPLE Exception Handling)
22875         (@code{GIMPLE_ASSIGN}): Likewise.
22876         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
22877         * doc/invoke.texi (Warning Options, Optimize Options)
22878         (AVR Options, Darwin Options): Likewise.
22879         (Optimize Options): Reformulate -fwhole-program description.
22880         * doc/loop.texi (Lambda): Likewise.
22881         * doc/md.texi (Output Template, Define Constraints)
22882         (Standard Names, Insn Splitting): Likewise.
22883         * doc/options.texi (Option properties): Likewise.
22884         * doc/passes.texi (Tree-SSA passes): Likewise.
22885         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
22886         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
22887         (File Names and DBX): Likewise.
22888         * doc/trouble.texi (Incompatibilities): Likewise.
22889
22890 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
22891
22892         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
22893         instruction is correct.
22894
22895 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
22896
22897         Allow non-constant arguments to conversion intrinsics.
22898         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
22899         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
22900         * spu.c (print_operand): Handle 'v' and 'w'.
22901         (exp2_immediate_p, spu_gen_exp2): Define.
22902         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
22903         spu_convtf_1): Update parameter descriptions.
22904         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
22905         * constraints.md ('v', 'w'): New.
22906         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
22907         Remove.
22908         (i2f, I2F): New define_mode_attr.
22909         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
22910         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
22911         fixuns_truncv4sfv4si2):  Update to use mode attribute.
22912         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
22913         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
22914         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
22915         patterns for combine.
22916
22917 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
22918
22919         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
22920         (cprop, hoist, pre, store_motion): New debug counters.
22921         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
22922         is not an RTL pass anymore.
22923         (pass_profiling): Remove extern decl for pass removed in 2005.
22924         (pass_gcse, pass_jump_bypass): Remove.
22925         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
22926         to 0 for clean state.
22927         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
22928         * cse.c (gate_handle_cse_after_global_opts,
22929         rest_of_handle_cse_after_global_opts): New functions.
22930         (pass_cse_after_global_opts): New pass, does local CSE.
22931         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
22932         (TV_CPROP): New timevar.
22933         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
22934         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
22935         (gcse_main, recompute_all_luids): Remove.
22936         (compute_hash_table_work): Call max_reg_num instead of reading
22937         max_gcse_regno.
22938         (cprop_jump): Don't set run_jump_opt_after_gcse.
22939         (constprop_register): Always allow to alter jumps.
22940         (cprop_insn): Likewise.
22941         (do_local_cprop): Likewise.
22942         (local_cprop_pass): Likewise.  Return non-zero if something changed.
22943         (cprop): Remove function, fold interesting bits into one_cprop_pass.
22944         (find_implicit_sets): Add note about missed optimization opportunity.
22945         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
22946         pass_rtl_cprop execute function.
22947         Don't bother tracking the pass number, each pass gets its own dumpfile
22948         now anyway.
22949         Always allow to alter jumpsand bypass jumps.
22950         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
22951         will just find no suitable set.
22952         (pre_edge_insert): Fix dumping, this function is for PRE only.
22953         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
22954         pass_rtl_pre execute function.
22955         (hoist_code): Return non-zero if something changed.  Keep track of
22956         substitutions and insertions for statistics gathering similar to PRE.
22957         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
22958         called from the pass_rtl_hoist execute function.  Show pass statistics.
22959         (compute_store_table): Use max_reg_num directly instead of using the
22960         formerly global max_gcse_regno.
22961         (build_store_vectors): Likewise.
22962         (replace_store_insn): Fix dumping.
22963         (store_motion): Rename to ...
22964         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
22965         pass, called from the pass_rtl_store_motion execute function.  Keep
22966         track of substitutions and insertions for statistics gathering similar
22967         to PRE.
22968         (bypass_jumps): Remove, fold interesting bits into ...
22969         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
22970         from the pass_rtl_cprop execute function.
22971         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
22972         pass_jump_bypass): Remove.
22973         (gate_handle_gcse, rest_of_handle_gcse): Remove.
22974         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
22975         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
22976         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
22977         (gate_rtl_store_motion, execute_rtl_store_motion,
22978         pass_rtl_store_motion): New.
22979         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
22980         make it clear that -fcse-skip-blocks is a no-op for backward compat.
22981         * passes.c (init_optimization_passes): Remove pass_gcse and
22982         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
22983         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
22984         instead of pass_jump_bypass.
22985
22986 2009-04-27  Richard Guenther  <rguenther@suse.de>
22987
22988         PR middle-end/39928
22989         * gimplify.c (gimplify_expr): If we are required to create
22990         a temporary make sure it ends up as register.
22991
22992 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
22993
22994         PR target/39903
22995         * config/i386/i386.c (construct_container): Don't call
22996         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
22997         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
22998
22999 2009-04-27  Michael Matz  <matz@suse.de>
23000
23001         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
23002         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
23003         * tree-ssa-live.h (find_replaceable_exprs): Return a bitmap.
23004         (dump_replaceable_exprs): Take a bitmap.
23005         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
23006         array.
23007         (expand_gimple_basic_block): Likewise.
23008         * tree-ssa-ter.c (struct temp_expr_table_d): Make
23009         replaceable_expressions member a bitmap.
23010         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
23011         (mark_replaceable): Likewise.
23012         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
23013         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
23014
23015 2009-04-27  Richard Guenther  <rguenther@suse.de>
23016
23017         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
23018         (verify_stmts): Dispatch to gimple/type verification code.
23019         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
23020         issue with call argument types.
23021
23022 2009-04-27  Michael Matz  <matz@suse.de>
23023
23024         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
23025         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
23026         to above.
23027
23028 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
23029             Eric Botcazou  <ebotcazou@adacore.com>
23030
23031         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
23032         a label's basic block.
23033         (mark_target_live_regs): Tidy and rework obsolete comments.
23034         Change back DF problem to LIVE.  If a label starts a basic block,
23035         assume that all registers that used to be live then still are.
23036         (init_resource_info): If a label starts a basic block, set its
23037         BLOCK_FOR_INSN accordingly.
23038         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
23039
23040 2009-04-27  Richard Guenther  <rguenther@suse.de>
23041
23042         * tree-flow-inline.h (function_ann): Remove.
23043         (get_function_ann): Likewise.
23044         * tree-dfa.c (create_function_ann): Remove.
23045         * tree-flow.h (struct static_var_ann_d): Remove.
23046         (struct function_ann_d): Likewise.
23047         (union tree_ann_d): Remove fdecl member.
23048         (function_ann_t): Remove.
23049         (function_ann, get_function_ann, create_function_ann): Remove
23050         declarations.
23051
23052 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
23053
23054         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
23055
23056 2009-04-27  Jan Hubicka  <jh@suse.cz>
23057
23058         * ipa-pure-const.c (struct funct_state_d): New fields
23059         state_previously_known, looping_previously_known; remove
23060         state_set_in_source.
23061         (analyze_function): Use new fields.
23062         (propagate): Avoid assumption that state_set_in_source imply
23063         nonlooping.
23064
23065         * tree-ssa-loop-niter.c (finite_loop_p): New function.
23066         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
23067         * cfgloop.h (finite_loop_p): Declare.
23068
23069 2009-04-26  Michael Matz  <matz@suse.de>
23070
23071         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
23072
23073 2009-04-26  Michael Matz  <matz@suse.de>
23074
23075         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
23076         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
23077         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
23078         pass_mark_used_blocks): Remove.
23079         * tree-optimize.c (pass_free_datastructures,
23080         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
23081         * passes.c (init_optimization_passes): Don't call
23082         pass_mark_used_blocks, remove dead code.
23083
23084 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
23085
23086         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
23087         * tree-ssa-live.h (register_ssa_partition): Likewise.
23088
23089 2009-04-26  Michael Matz  <matz@suse.de>
23090
23091         Expand from SSA.
23092         * builtins.c (fold_builtin_next_arg): Handle SSA names.
23093         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
23094         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
23095         SSA names.
23096         (compare_pairs): Swap cost comparison.
23097         (coalesce_ssa_name): Don't use change_partition_var.
23098         * tree-nrv.c (struct nrv_data): Add modified member.
23099         (finalize_nrv_r): Set it.
23100         (tree_nrv): Use it to update statements.
23101         (pass_nrv): Require PROP_ssa.
23102         * tree-mudflap.c (mf_decl_cache_locals,
23103         mf_build_check_statement_for): Use make_rename_temp.
23104         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
23105         * alias.c (find_base_decl): Handle SSA names.
23106         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
23107         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
23108         * rtl.h (set_reg_attrs_for_parm): Declare.
23109         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
23110         to "optimized", remove unused locals at finish.
23111         (execute_free_datastructures): Make global, call
23112         delete_tree_cfg_annotations.
23113         (execute_free_cfg_annotations): Don't call
23114         delete_tree_cfg_annotations.
23115
23116         * ssaexpand.h: New file.
23117         * expr.c (toplevel): Include ssaexpand.h.
23118         (expand_assignment): Handle SSA names the same as register variables.
23119         (expand_expr_real_1): Expand SSA names.
23120         * cfgexpand.c (toplevel): Include ssaexpand.h.
23121         (SA): New global variable.
23122         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
23123         (SSAVAR): New macro.
23124         (set_rtl): New helper function.
23125         (add_stack_var): Deal with SSA names, use set_rtl.
23126         (expand_one_stack_var_at): Likewise.
23127         (expand_one_stack_var): Deal with SSA names.
23128         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
23129         before unique numbers.
23130         (expand_stack_vars): Use set_rtl.
23131         (expand_one_var): Accept SSA names, add asserts for them, feed them
23132         to above subroutines.
23133         (expand_used_vars): Expand all partitions (without default defs),
23134         then only the local decls (ignoring those expanded already).
23135         (expand_gimple_cond): Remove edges when jumpif() expands an
23136         unconditional jump.
23137         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
23138         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
23139         SSA name.
23140         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
23141         members of SA; deal with PARM_DECL partitions here; expand
23142         all PHI nodes, free tree datastructures and SA.  Commit instructions
23143         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
23144         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
23145         info and statements at start, collect garbage at finish.
23146         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
23147         (VAR_ANN_PARTITION) Remove.
23148         (change_partition_var): Don't declare.
23149         (partition_to_var): Always return SSA names.
23150         (var_to_partition): Only accept SSA names.
23151         (register_ssa_partition): Only check argument.
23152         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
23153         member.
23154         (delete_var_map): Don't free it.
23155         (var_union): Only accept SSA names, simplify.
23156         (partition_view_init): Mark only useful SSA names as used.
23157         (partition_view_fini): Only deal with SSA names.
23158         (change_partition_var): Remove.
23159         (dump_var_map): Use ssa_name instead of partition_to_var member.
23160         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
23161         basic blocks.
23162         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
23163         (struct _elim_graph): New member const_dests; nodes member vector of
23164         ints.
23165         (set_location_for_edge): New static helper.
23166         (create_temp): Remove.
23167         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
23168         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
23169         (new_elim_graph): Allocate const_dests member.
23170         (clean_elim_graph): Truncate const_dests member.
23171         (delete_elim_graph): Free const_dests member.
23172         (elim_graph_size): Adapt to new type of nodes member.
23173         (elim_graph_add_node): Likewise.
23174         (eliminate_name): Likewise.
23175         (eliminate_build): Don't take basic block argument, deal only with
23176         partition numbers, not variables.
23177         (get_temp_reg): New static helper.
23178         (elim_create): Use it, deal with RTL temporaries instead of trees.
23179         (eliminate_phi): Adjust all calls to new signature.
23180         (assign_vars, replace_use_variable, replace_def_variable): Remove.
23181         (rewrite_trees): Only do checking.
23182         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
23183         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
23184         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
23185         contains_tree_r, MAX_STMTS_IN_LATCH,
23186         process_single_block_loop_latch, analyze_edges_for_bb,
23187         perform_edge_inserts): Remove.
23188         (expand_phi_nodes): New global function.
23189         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
23190         functions, initialize new parameter, remember partitions having a
23191         default def.
23192         (finish_out_of_ssa): New global function.
23193         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
23194         don't reset in_ssa_p here, don't disable TER when mudflap.
23195         (pass_del_ssa): Remove.
23196         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
23197         partition members.
23198         (execute_free_datastructures): Declare.
23199         * Makefile.in (SSAEXPAND_H): New variable.
23200         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
23201         * basic-block.h (commit_one_edge_insertion): Declare.
23202         * passes.c (init_optimization_passes): Move pass_nrv and
23203         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
23204         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
23205         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
23206         (redirect_branch_edge): Deal with super block when expanding, split
23207         out jump patching itself into ...
23208         (patch_jump_insn): ... here, new static helper.
23209
23210 2009-04-26  Michael Matz  <matz@suse.de>
23211
23212         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
23213         beyond num_ssa_names.
23214         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
23215         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
23216
23217 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
23218
23219         PR inline-asm/39543
23220         * fwprop.c (forward_propagate_asm): New function.
23221         (forward_propagate_and_simplify): Propagate also into __asm, if it
23222         doesn't increase the number of referenced registers.
23223
23224         PR c/39889
23225         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
23226
23227 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
23228
23229         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
23230         note_nonlocal_vla_type for nonlocal VLAs.
23231         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
23232         contains_remapped_vars, remap_vla_decls): New functions.
23233         (convert_nonlocal_reference_stmt): If not optimizing, call
23234         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
23235         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
23236         if it wasn't found in var_map.
23237         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
23238         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
23239         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
23240         declare_vars.
23241         * gimplify.c (nonlocal_vlas): New variable.
23242         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
23243         referenced VLAs.
23244         (gimplify_body): Create and destroy nonlocal_vlas.
23245
23246         * dwarf2out.c (loc_descr_plus_const): New function.
23247         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
23248         mem_loc_descriptor, loc_descriptor_from_tree_1,
23249         descr_info_loc, gen_variable_die): Use it.
23250
23251         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
23252         !TREE_STATIC VAR_DECLs.
23253         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
23254         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
23255         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
23256         DECL_BY_REFERENCE is valid.
23257         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
23258         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
23259         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
23260         Copy DECL_BY_REFERENCE.
23261         (struct nesting_copy_body_data): New type.
23262         (nesting_copy_decl): New function.
23263         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
23264         if they have variable length.
23265
23266 2009-04-26  Michael Matz  <matz@suse.de>
23267
23268         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
23269         mark new temporaries for renaming.
23270
23271 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
23272
23273         PR c/39581
23274         * c-decl.c (global_bindings_p): Return negative value.
23275         (c_variable_size): New.  Based on variable_size from
23276         stor-layout.c.
23277         (grokdeclarator): Call c_variable_size not variable_size.
23278
23279 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
23280
23281         * config/i386/i386.c (print_operand) ['z']: Fix typo.
23282
23283 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
23284
23285         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
23286         Redefine it to just use mingw/include.
23287         (ASM_SPEC): Rules for -m32 and -m64.
23288         (LINK_SPEC): Use Likewise.
23289         (SPEC_32): New define.
23290         (SPEC_64): Likewise.
23291         (SUB_LINK_SPEC): Likewise.
23292         (MULTILIB_DEFAULTS): New define.
23293         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
23294         Add multilib options.
23295         (MULTILIB_DIRNAMES): Likewise.
23296         (MULTILIB_OSDIRNAMES): Likewise.
23297         (LIBGCC): Likewise.
23298         (INSTALL_LIBGCC): Likewise.
23299
23300 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
23301
23302         PR c/39556
23303         * c-tree.h (enum c_inline_static_type): New.
23304         (record_inline_static): Declare.
23305         * c-decl.c (struct c_inline_static, c_inline_statics,
23306         record_inline_static, check_inline_statics): New.
23307         (pop_file_scope): Call check_inline_statics.
23308         (start_decl): Call record_inline_static instead of pedwarning
23309         directly for static in inline function.
23310         * c-typeck.c (build_external_ref): Call record_inline_static
23311         instead of pedwarning directly for static referenced in inline
23312         function.
23313
23314 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
23315
23316         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
23317         not new but only being rescanned.
23318         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
23319         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
23320         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
23321         record_set_info, compute_set, grealloc): Remove.
23322         (recompute_all_luids): New function.
23323         (gcse_main): Don't compute sets, and don't do related memory
23324         allocations/free-ing.  If something changed before the end of the
23325         pass, update LUIDs using recompute_all_luids.
23326         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
23327         (free_gcse_mem): Don't free it either.
23328         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
23329         Use the df insn LUIDs.
23330         (load_killed_in_block): Likewise.
23331         (compute_hash_table_work): Don't compute reg_set_in_block.
23332         (compute_transp): Use DF_REG_DEF_CHAINs.
23333         (local_cprop_pass): Don't use compute_sets and related functions.
23334         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
23335         Use get_max_uid() instead of max_cuid.
23336         (insert_insn_end_basic_block, pre_insert_copy_insn,
23337         update_ld_motion_stores): Don't try to
23338         keep reg_set tables up to date.
23339         (pre_insert_copies): Use df insn LUIDs.
23340         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
23341         (reg_set_info): Don't use extra bitmap argument.
23342         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
23343         information to compute regs_set_in_block.
23344         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
23345         (bypass_jumps): Don't use compute_sets and friends.
23346
23347 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23348
23349         PR testsuite/39710
23350         * opts.c (undocumented_msg): Do not leave blank even with
23351         ENABLE_CHECKING.
23352
23353 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
23354
23355         * c-decl.c (build_enumerator): Allow values folding to integer
23356         constants but not integer constant expressions with a pedwarn if
23357         pedantic.
23358
23359 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
23360
23361         PR c/39582
23362         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
23363         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
23364         type is an integer constant.
23365
23366 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
23367
23368         PR target/39897
23369         * config/i386/i386.c (print_operand) ['z']: Revert handling of
23370         HImode operands.
23371
23372 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
23373
23374         PR c/39564
23375         * c-decl.c (grokdeclarator): Diagnose declarations of functions
23376         with variably modified return type and no storage class
23377         specifiers, except for the case of nested functions.  Distinguish
23378         extern declarations of functions with variably modified return
23379         types from those of objects with variably modified types.
23380
23381 2009-04-25  Jan Hubicka  <jh@suse.cz>
23382
23383         * tree.c (list_equal_p): New function.
23384         * tree.h (list_equal_p): Declare.
23385         * coretypes.h (edge_def, edge, const_edge, basic_block_def
23386         basic_block_def, basic_block, const_basic_block): New.
23387         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
23388         (redirect_eh_edge): New function.
23389         (make_eh_edge_update_phi): EH edges are not abnormal.
23390         * except.c: Include tree-flow.h.
23391         (list_match): New function.
23392         (eh_region_replaceable_by_p): New function.
23393         (replace_region): New function.
23394         (hash_type_list): New function.
23395         (hash_eh_region): New function.
23396         (eh_regions_equal_p): New function.
23397         (merge_peers): New function.
23398         (remove_unreachable_regions): Verify EH tree when checking;
23399         merge peers.
23400         (copy_eh_region_1): New function.
23401         (copy_eh_region): New function.
23402         (push_reachable_handler): New function.
23403         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
23404         regions without label but with live RESX.
23405         * except.h (redirect_eh_edge_to_label): New.
23406         * tree-flow.h (redirect_eh_edge): New.
23407         * coretypes.h (edge_def, edge, const_edge, basic_block_def
23408         basic_block_def, basic_block, const_basic_block): Remove.
23409         * Makefile.in (except.o): Add dependency on tree-flow.h
23410         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
23411         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
23412         Remove.
23413
23414 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
23415
23416         PR bootstrap/39645
23417         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
23418         on the destination of memcpy.
23419
23420 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
23421
23422         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
23423         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
23424         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
23425
23426 2009-04-25  Jan Hubicka  <jh@suse.cz>
23427
23428         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
23429         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
23430         to be reached by different label than left.
23431         (update_eh_edges): Update comment; remove edge_to_remove if possible
23432         and return true if suceeded.
23433         (cleanup_empty_eh): Accept sharing map; handle shared regions.
23434         (cleanup_eh): Compute sharing map.
23435         * except.c (remove_eh_handler_and_replace): Add argument if we should
23436         update regions.
23437         (remove_unreachable_regions): Update for label sharing.
23438         (label_to_region_map): Likewise.
23439         (get_next_region_sharing_label): New function.
23440         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
23441         prev_try pointers.
23442         (remove_eh_handler): Update.
23443         (remove_eh_region_and_replace_by_outer_of): New function.
23444         * except.h (struct eh_region): Add next_region_sharing_label.
23445         (remove_eh_region_and_replace_by_outer_of,
23446         get_next_region_sharing_label): Declare.
23447         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
23448
23449 2009-04-25  Jan Hubicka  <jh@suse.cz>
23450
23451         * tree-cfg.c (split_critical_edges): Split also edges where we can't
23452         insert code even if they are not critical.
23453
23454 2009-04-25  Jan Hubicka  <jh@suse.cz>
23455
23456         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
23457         (gimple_can_remove_branch_p): EH edges won't remove branch by
23458         redirection.
23459         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
23460         updating of non-abnormal EH edges.
23461         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
23462         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
23463         (split_critical_edges): Split also edges where emitting code on them
23464         will lead to splitting later.
23465
23466 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
23467             H.J. Lu  <hongjiu.lu@intel.com>
23468
23469         PR target/39590
23470         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
23471         the configured assembler supports fildq and fistpq mnemonics.
23472         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
23473         * configure: Regenerated.
23474         * config.in: Ditto.
23475
23476         * config/i386/i386.c (print_operand): Handle 'Z'.
23477         ['z']: Remove handling of special fild/fist suffixes.
23478         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
23479         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
23480         suffix of fild insn.
23481         (*floatsi<mode>2_vector_mixed): Ditto.
23482         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
23483         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
23484         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
23485         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
23486         * config/i386/gas.h (GAS_MNEMONICS): Remove.
23487
23488 2009-04-25  Ben Elliston  <bje@au.ibm.com>
23489
23490         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
23491         the source of a set operation.
23492
23493 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
23494
23495         * target.h (struct gcc_target): Add case_values_threshold field.
23496         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
23497         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
23498         * targhooks.c (default_case_values_threshold): New function.
23499         * targhooks.h (default_case_values_threshold): Declare function.
23500         * stmt.c (expand_case): Use case_values_threshold target hook.
23501         * expr.h (case_values_threshold): Remove declartation.
23502         * expr.c (case_values_threshold): Remove function.
23503         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
23504
23505         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
23506         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
23507         (avr_case_values_threshold): Declare as static.
23508         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
23509
23510         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
23511         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
23512         (mn10300_case_values_threshold): New function.
23513
23514 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
23515
23516         * ira.c (setup_cover_and_important_classes): Add enum cast.
23517
23518 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
23519
23520         * genpreds.c (write_enum_constraint_num): Output definition of
23521         CONSTRAINT_NUM_DEFINED_P macro.
23522         * ira.c (setup_cover_and_important_classes): Use
23523         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
23524
23525 2009-04-24  DJ Delorie  <dj@redhat.com>
23526
23527         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
23528         __SH2A_SINGLE_ONLY__ also.
23529
23530 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
23531
23532         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
23533         (movdf_internal): Ditto.
23534         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
23535         SFmode and DFmode constants.
23536         (ia64_print_operand): Add 'G' format for printing
23537         floating point constants.
23538
23539 2009-04-24  Richard Guenther  <rguenther@suse.de>
23540
23541         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
23542         from unsigned additions.
23543
23544 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
23545
23546         * c-typeck.c (set_init_index): Allow array designators that are
23547         not integer constant expressions with a pedwarn if pedantic.
23548
23549 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
23550
23551         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
23552         zero if no overlap in nonzero bits between the operands.
23553
23554 2009-04-24  Ian Lance Taylor  <iant@google.com>
23555
23556         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
23557         (record_dead_and_set_regs): Likewise.
23558         * df.h (struct df_mw_hardreg): Change flags field to int.
23559         (struct df_base_ref): Likewise.
23560         (struct df): Change changeable_flags field to int.
23561         * df-scan.c (df_defs_record): Change clobber_flags to int.
23562         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
23563         constants rather than #define macros.
23564         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
23565         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
23566         (enum dwarf_calling_convention): Likewise.
23567         (enum dwarf_line_number_x_ops): Likewise.
23568         (enum dwarf_call_frame_info): Likewise.
23569         (enum dwarf_source_language): Likewise.
23570         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
23571         (add_calling_convention_attribute): Likewise.
23572         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
23573         (combine_comparisons): Change compcode to int.  Add cast to enum type.
23574         * genrecog.c (maybe_both_true_2): Change c to int.
23575         (write_switch): Likewise.  Add cast to enum type.
23576         * gimplify.c (gimplify_omp_for): Handle return values from
23577         gimplify_expr using MIN rather than bitwise or.
23578         (gimplify_expr): Add cast to enum type.
23579         * ipa-prop.c (update_jump_functions_after_inlining): Change
23580         IPA_BOTTOM to IPA_JF_UNKNOWN.
23581         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
23582         Add casts to enum type.
23583         (setup_cover_and_important_classes): Change cl to int.  Add casts
23584         to enum type.
23585         (setup_class_translate): Change cl and mode to int.
23586         (ira_init_once): Change mode to int.
23587         (free_register_move_costs): Likewise.
23588         (setup_prohibited_mode_move_regs): Add casts to enum type.
23589         * langhooks.c (add_builtin_function_common): Rework assertion that
23590         value fits bitfield.
23591         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
23592         * omega.c (omega_do_elimination): Avoid math on enum types.
23593         * optabs.c (expand_vec_shift_expr): Remove casts to int.
23594         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
23595         int local to handle integral_argment value.
23596         * regmove.c (try_auto_increment): Change PUT_MODE to
23597         PUT_REG_NOTE_KIND.
23598         * reload.c (push_secondary_reload): Add casts to enum type.
23599         (secondary_reload_class, find_valid_class): Likewise.
23600         * reload1.c (emit_input_reload_insns): Likewise.
23601         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
23602         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
23603         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
23604         constant.
23605         * tree.c (build_common_builtin_nodes): Add casts to enum type.
23606         * tree-complex.c (complex_lattice_t): Typedef to int rather than
23607         enum type.
23608         (expand_complex_libcall): Add casts to enum type.
23609         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
23610         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
23611         with ERROR_MARK, not NUM_TREE_CODES.
23612         (vect_create_epilog_for_reduction): Likewise.
23613         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
23614         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
23615         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
23616         enum machine_mode.
23617         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
23618         vect_unused_in_loop.  Change 0 to loop_vect.
23619         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
23620         * var-tracking.c (get_init_value): Change return type to enum
23621         var_init_status.
23622         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
23623         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
23624         arm_fp_model.
23625         (arm_override_options): Add casts to enum type.
23626         (arm_emit_tls_decoration): Likewise.
23627         * config/i386/i386.c (ix86_function_specific_restore): Add casts
23628         to enum type.
23629         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
23630         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
23631         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
23632         enum type.
23633         * config/s390/s390.c (code_for_builtin_64): Change to array of
23634         enum insn_code.
23635         (code_for_builtin_31): Likewise.
23636         (s390_expand_builtin): Change code_for_builtin to enum insn_code
23637         const *.
23638         * config/sparc/sparc.c (sparc_override_options): Change value
23639         field in struct code_model to enum cmodel.  In initializer change
23640         0 to NULL and add cast to enum type.
23641
23642         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
23643         Change all callers.  Issue a -Wc++-compat warning using
23644         lhs_origtype if necessary.
23645         (convert_for_assignment): Issue -Wc++-compat warnings about
23646         invalid conversions to enum type on assignment.
23647         * c-common.h (build_modify_expr): Update declaration.
23648
23649 2009-04-24  Nick Clifton  <nickc@redhat.com>
23650
23651         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
23652         (function_arg_advance): Likewise.
23653         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
23654         5th alternative.
23655
23656 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
23657
23658         * config/s390/constraints.md ('I', 'J'): Fix condition.
23659
23660 2009-04-24  Diego Novillo  <dnovillo@google.com>
23661
23662         * gengtype-parse.c (parse_error): Add newline after message.
23663
23664 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
23665
23666         * config/i386/sse.md (avxmodesuffixs): Removed.
23667         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
23668         (*avx_pinsr<ssevecsize>): This.
23669
23670 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
23671
23672         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
23673         follow chains of regs with a single definition, and allow expressions
23674         that are function_invariant_p.
23675         (simple_rhs_p): Allow expressions that are function_invariant_p.
23676
23677 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
23678
23679         PR middle-end/39867
23680         * fold-const.c (fold_cond_expr_with_comparison): When folding
23681         > and >= to MAX, make sure the MAX uses the same type as the
23682         comparison's operands.
23683
23684 2009-04-24  Nick Clifton  <nickc@redhat.com>
23685
23686         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
23687         addressing for DImode accesses.
23688         (frv_print_operand_address): Handle PLUS case.
23689         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
23690
23691 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
23692
23693         PR rtl-optimization/39794
23694         * alias.c (canon_true_dependence): Add x_addr argument.
23695         * rtl.h (canon_true_dependence): Adjust prototype.
23696         * cse.c (check_dependence): Adjust canon_true_dependence callers.
23697         * cselib.c (cselib_invalidate_mem): Likewise.
23698         * gcse.c (compute_transp): Likewise.
23699         * dse.c (scan_reads_nospill): Likewise.
23700         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
23701         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
23702         canon_base_addr of the group, plus optional offset.
23703         (struct group_info): Rename canon_base_mem to
23704         canon_base_addr.
23705         (get_group_info): Set canon_base_addr to canon_rtx of base, not
23706         canon_rtx of base_mem.
23707
23708 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
23709
23710         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
23711         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
23712
23713 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23714
23715         * config/spu/spu-builtins.h: Delete file.
23716
23717         * config/spu/spu.h (enum spu_builtin_type): Move here from
23718         spu-builtins.h.
23719         (struct spu_builtin_description): Likewise.  Add GTY marker.
23720         Do not use enum spu_function_code or enum insn_code.
23721         (spu_builtins): Add extern declaration.
23722
23723         * config/spu/spu.c: Do not include "spu-builtins.h".
23724         (enum spu_function_code, enum spu_builtin_type_index,
23725         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
23726         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
23727         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
23728         unsigned_V2DI_type_node): Move here from spu-builtins.h.
23729         (spu_builtin_types): Make static.  Add GTY marker.
23730         (spu_builtins): Add extern declaration with GTY marker.
23731         Include "gt-spu.h".
23732
23733         * config/spu/spu-c.c: Do not include "spu-builtins.h".
23734         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
23735         Check programmatically whether all parameters are scalar.
23736
23737         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
23738
23739 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
23740
23741         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
23742         assignment from the constructor either if the target is volatile.
23743
23744 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
23745
23746         * config/arm/arm.md (insv): Do not share operands[0].
23747
23748 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
23749
23750         * config/vxlib-tls.c (active_tls_threads): Delete.
23751         (delete_hook_installed): New.
23752         (tls_delete_hook): Don't delete the delete hook.
23753         (tls_destructor): Delete it here.
23754         (__gthread_set_specific): Adjust installing the delete hook.
23755         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
23756         __gthread_leave_tsd_dtor_context.
23757
23758 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
23759
23760         * c-format.c (gcc_tdiag_char_table): Add support for %E.
23761
23762 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
23763
23764         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
23765         enum type.
23766         (alpha_rtx_costs): Ditto.
23767         (emit_unlikely_jump): Use add_reg_note.
23768         (emit_frame_store_1): Ditto.
23769         (alpha_expand_prologue): Ditto.
23770         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
23771         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
23772
23773 2009-04-23  Nick Clifton  <nickc@redhat.com>
23774
23775         * config/v850/v850.md (epilogue): Remove suppressed code.
23776         (return): Rename to return_simple and remove test of frame size.
23777         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
23778         to gen_return_simple.
23779
23780 2009-04-22  Jing Yu  <jingyu@google.com>
23781
23782         PR testsuite/39781
23783         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
23784
23785 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23786
23787         PR C/31499
23788         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
23789         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
23790         value is a VECTOR_CST, the element type is the element type of the
23791         vector.
23792
23793 2009-04-22  DJ Delorie  <dj@redhat.com>
23794
23795         * config/m32c/m32c.h: Update GTY annotations to new syntax.
23796
23797 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
23798
23799         * alias.c (find_base_term): Move around LO_SUM case, so that
23800         CONST falls through into PLUS/MINUS handling.
23801
23802         PR c/39855
23803         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
23804         into 0, use omit_one_operand.
23805
23806 2009-04-23  Ben Elliston  <bje@au.ibm.com>
23807
23808         * config/rs6000/linux-unwind.h (get_regs): Remove type
23809         puns. Change the type of `pc' to an array of unsigned ints and
23810         update all users.  Constify frame24.
23811
23812 2009-04-22  DJ Delorie  <dj@redhat.com>
23813
23814         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
23815         declarations before code.
23816         (current_function_special_page_vector): Likewise.
23817         (m32c_expand_insv): Silence a warning.
23818
23819 2009-04-21  Taras Glek  <tglek@mozilla.com>
23820
23821         * alias.c: Update GTY annotations to new syntax.
23822         * basic-block.h: Likewise.
23823         * bitmap.h: Likewise.
23824         * c-common.h: Likewise.
23825         * c-decl.c: Likewise.
23826         * c-parser.c: Likewise.
23827         * c-pragma.c: Likewise.
23828         * c-tree.h: Likewise.
23829         * cfgloop.h: Likewise.
23830         * cgraph.h: Likewise.
23831         * config/alpha/alpha.c: Likewise.
23832         * config/arm/arm.h: Likewise.
23833         * config/avr/avr.h: Likewise.
23834         * config/bfin/bfin.c: Likewise.
23835         * config/cris/cris.c: Likewise.
23836         * config/darwin.c: Likewise.
23837         * config/frv/frv.c: Likewise.
23838         * config/i386/i386.c: Likewise.
23839         * config/i386/i386.h: Likewise.
23840         * config/i386/winnt.c: Likewise.
23841         * config/ia64/ia64.h: Likewise.
23842         * config/iq2000/iq2000.c: Likewise.
23843         * config/mips/mips.c: Likewise.
23844         * config/mmix/mmix.h: Likewise.
23845         * config/pa/pa.c: Likewise.
23846         * config/pa/pa.h: Likewise.
23847         * config/rs6000/rs6000.c: Likewise.
23848         * config/s390/s390.c: Likewise.
23849         * config/sparc/sparc.c: Likewise.
23850         * config/xtensa/xtensa.c: Likewise.
23851         * cselib.h: Likewise.
23852         * dbxout.c: Likewise.
23853         * dwarf2out.c: Likewise.
23854         * except.c: Likewise.
23855         * except.h: Likewise.
23856         * fixed-value.h: Likewise.
23857         * function.c: Likewise.
23858         * function.h: Likewise.
23859         * gimple.h: Likewise.
23860         * integrate.c: Likewise.
23861         * optabs.c: Likewise.
23862         * output.h: Likewise.
23863         * real.h: Likewise.
23864         * rtl.h: Likewise.
23865         * stringpool.c: Likewise.
23866         * tree-data-ref.c: Likewise.
23867         * tree-flow.h: Likewise.
23868         * tree-scalar-evolution.c: Likewise.
23869         * tree-ssa-address.c: Likewise.
23870         * tree-ssa-alias.h: Likewise.
23871         * tree-ssa-operands.h: Likewise.
23872         * tree.c: Likewise.
23873         * tree.h: Likewise.
23874         * varasm.c: Likewise.
23875         * varray.h: Likewise.
23876         * vec.h: Likewise.
23877         * coretypes.h: Do not define GTY macro if it is already defined.
23878         * doc/gty.texi: Update GTY documentation to new syntax.
23879         * gengtype-lex.l: Enforce attribute-like syntax for GTY
23880         annotations on structs.
23881         * gengtype-parse.c: Likewise.
23882
23883 2009-04-22  Mark Heffernan  <meheff@google.com>
23884
23885         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
23886
23887 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
23888
23889         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
23890         where appropriate.
23891
23892 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
23893
23894         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
23895         the same as a PLUS without a shift.  Increase the cost of a
23896         CONST_INT in MULT.
23897
23898 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23899
23900         * Makefile.in: Update dependencies.
23901         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
23902         * errors.h: Remove bogus comment about compatibility.
23903         (warning): Update declaration.
23904         * genautomata.c: Update all calls to warning.
23905         * gimple.c: Do not include errors.h. Include toplev.h.
23906         * tree-ssa-structalias.c: Do not include errors.h.
23907         * omega.c: Likewise.
23908         * tree-ssa-reassoc.c: Likewise.
23909         * config/spu/spu-c.c: Likewise.
23910         * config/spu/t-spu-elf: Update dependencies.
23911
23912 2009-04-22  Richard Guenther  <rguenther@suse.de>
23913
23914         PR tree-optimization/39824
23915         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
23916         make sure the types are compatible.
23917
23918 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23919
23920         PR c++/14875
23921         * c-common.c (c_parse_error): Take a token_flags parameter.
23922         Use token_type for the token type instead.
23923         Pass token_flags to cpp_type2name.
23924         * c-common.h (c_parse_error): Update declaration.
23925         * c-parser.c (c_parser_error): Pass 0 as token flags.
23926
23927 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
23928
23929         PR rtl-optimization/39580
23930         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
23931
23932 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23933
23934         * function.c (expand_function_end): Do not emit a jump to the "naked"
23935         return label for fall-through returns.
23936         * except.c (sjlj_emit_function_exit): Always place the call to the
23937         unregister function at the location installed by expand_function_end.
23938
23939 2009-04-22  Richard Guenther  <rguenther@suse.de>
23940
23941         PR tree-optimization/39845
23942         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
23943         (gen_inbound_check): Likewise.
23944
23945 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
23946
23947         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
23948         padding for PPC.
23949         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
23950         * config/vxlib.c (__gthread_once): Add race guard for PPC.
23951
23952 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
23953
23954         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
23955         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
23956         shift counts to avoid out-of-bounds array accesses.
23957
23958 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
23959
23960         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
23961         (Pmode): Move above.
23962
23963 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
23964
23965         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
23966         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
23967         GET_CODE macro.  Use IN_RANGE macro where appropriate.
23968         * config/alpha/alpha.h: Ditto.
23969         * config/alpha/alpha.md: Ditto.
23970         * config/alpha/constraints.md: Ditto.
23971         * config/alpha/predicates.md: Ditto.
23972
23973 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
23974
23975         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
23976         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23977         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23978         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23979         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23980         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23981         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23982         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23983         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23984         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23985         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23986         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23987         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23988         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23989         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23990         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23991         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23992         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23993         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23994         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23995         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23996         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23997         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23998         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23999         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24000         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24001         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24002
24003 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
24004
24005         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
24006         references from comments.
24007         * cfgbuild.c (count_basic_blocks): Delete.
24008         (find_basic_blocks_1): Delete.
24009         (find_basic_blocks): Delete.
24010         * except.c (finish_eh_generation): Make static.  Move comment from
24011         except.h here.  Remove find_basic_blocks references from comments.
24012         * except.h (finish_eh_generation): Delete.
24013         * basic-block.h (find_basic_blocks): Delete.
24014         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
24015
24016 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
24017
24018         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
24019         (sdbout_parms):  Likewise.
24020
24021 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
24022
24023         * config/sh/sh.c (prepare_cbranch_operands): Use
24024         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
24025         (expand_cbranchdi4): Likewise.
24026         (from_compare): Add cast to enum type.
24027         (expand_cbranchsi4): Use add_reg_note.
24028         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
24029         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
24030         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
24031         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
24032         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
24033         instead of CODE_FOR_nothing.
24034         (cbranchdi4): Likewise.  Fix the order of arguments for
24035         gen_rtx_fmt_ee.
24036         (push_fpscr): Use add_reg_note.
24037         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
24038         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
24039
24040 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
24041
24042         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
24043         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
24044         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
24045         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
24046         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
24047         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
24048         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
24049         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
24050         config/alpha/x-vms, config/arc/t-arc,
24051         config/arm/README-interworking, config/arm/arm-c.c,
24052         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
24053         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
24054         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
24055         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
24056         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
24057         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
24058         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
24059         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
24060         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
24061         config/cris/t-elfmulti, config/crx/t-crx,
24062         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
24063         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
24064         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
24065         config/h8300/t-h8300, config/i386/athlon.md,
24066         config/i386/darwin-libgcc.10.4.ver,
24067         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
24068         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
24069         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
24070         config/i386/t-linux64, config/i386/t-nwld,
24071         config/i386/t-rtems-i386, config/i386/t-sol2-10,
24072         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
24073         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
24074         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
24075         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
24076         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
24077         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
24078         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
24079         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
24080         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
24081         config/m68k/t-uclinux, config/mcore/t-mcore,
24082         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
24083         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
24084         config/mips/crtn.asm, config/mips/irix-crti.asm,
24085         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
24086         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
24087         config/mips/mips-fixed.md, config/mips/sb1.md,
24088         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
24089         config/mips/t-iris6, config/mips/t-isa3264,
24090         config/mips/t-libgcc-mips16, config/mips/t-linux64,
24091         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
24092         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
24093         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
24094         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
24095         config/mn10300/t-linux, config/mn10300/t-mn10300,
24096         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
24097         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
24098         config/picochip/libgccExtras/clzsi2.asm,
24099         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
24100         config/rs6000/darwin-libgcc.10.4.ver,
24101         config/rs6000/darwin-libgcc.10.5.ver,
24102         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
24103         config/rs6000/t-aix43, config/rs6000/t-aix52,
24104         config/rs6000/t-darwin, config/rs6000/t-fprules,
24105         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
24106         config/rs6000/t-lynx, config/rs6000/t-netbsd,
24107         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
24108         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
24109         config/rs6000/t-rtems, config/rs6000/t-spe,
24110         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
24111         config/score/t-score-elf, config/sh/divcost-analysis,
24112         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
24113         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
24114         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
24115         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
24116         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
24117         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
24118         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
24119         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
24120         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
24121         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
24122         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
24123         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
24124         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
24125         limitx.h, version.c, xcoff.h: Add copyright and license notices.
24126         * config/h8300/genmova.sh: Include copyright and license notices
24127         in generated output.
24128         * config/h8300/mova.md: Regenerate.
24129         * doc/install.texi2html: Include word "Copyright" in copyright
24130         notice and use name "Free Software Foundation, Inc.".
24131         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
24132         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
24133         ChangeLog-2007, ChangeLog-2008: Correct dates.
24134
24135 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
24136
24137         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
24138         NE_EXPR operations as well.
24139         * c-parser.c (c_parser_condition): Do not set location information on
24140         the condition.
24141         (c_parser_conditional_expression): Likewise.
24142         (c_parser_binary_expression): Set location information on operators.
24143         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
24144         TRUTH_NOT_EXPR has been folded.
24145         * fold-const.c (fold_truth_not_expr): Copy location information from
24146         the incoming expression to the outgoing one.
24147         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
24148         recursive calls on the LHS of the operator but pass that of the
24149         operator to recursive calls on the RHS of the operator.  Set it
24150         on the COND_EXPR.
24151         (shortcut_cond_expr): Set the locus of the operator on the second
24152         COND_EXPR and that of the expression on the first in degenerate cases.
24153         Pass the locus of the expression to calls to shortcut_cond_r.
24154         Set the locus of the 'then' block on the associated jump, if any.
24155         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
24156         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
24157         expression to call to gimplify_boolean_expr.
24158
24159 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
24160
24161         * config.gcc: Add additional configuration for
24162         i686-w64-mingw* and x86_64-w64-mingw* triplet.
24163         * config/i386/mingw-w64.h: New mingw-w64 specific header.
24164         (CPP_SPEC): Redefine for allowing -municode option.
24165         (STARTFILE_SPEC): Likewise.
24166         * config/i386/t-mingw-w64: New.
24167         * config/i386/mingw-w64.opt: New.
24168         (municode): Add new target option.
24169         * doc/invoke.texi (municode): Add documentation for new option.
24170
24171 2009-04-21  Ian Lance Taylor  <iant@google.com>
24172
24173         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
24174         Correct test for number of arguments.
24175         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
24176
24177 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
24178
24179         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
24180         argument of emit_library_call.
24181
24182 2009-04-21  Richard Guenther  <rguenther@suse.de>
24183
24184         PR middle-end/39829
24185         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
24186         inside VIEW_CONVERT_EXPRs.
24187
24188 2009-04-21  Martin Jambor  <mjambor@suse.cz>
24189
24190         * tree-switch-conversion.c (build_constructors): Split a long line.
24191         (constructor_contains_same_values_p): New function.
24192         (build_one_array): Create assigns of constants if possible, do not
24193         call mark_sym_for_renaming, call update_stmt.
24194         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
24195         make_rename_temp.  Do not call mark_symbols_for_renaming, call
24196         update_stmt.
24197         (gen_def_assigns): Do not call mark_symbols_for_renaming or
24198         find_new_referenced_vars, call update_stmt.
24199         (gen_inbound_check): Use create_tmp_var and create ssa names manually
24200         instead of calling make_rename_temp.  Do not call
24201         find_new_referenced_vars or mark_symbols_for_renaming, call
24202         update_stmt.
24203
24204 2009-04-21  Richard Guenther  <rguenther@suse.de>
24205
24206         PR tree-optimization/39827
24207         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
24208         (tree_ssa_phiprop): Pass the correct array size.
24209
24210 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
24211
24212         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
24213
24214 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
24215
24216         PR 16202
24217         * c-typeck.c (lvalue_p): Move declaration ...
24218         * c-common.h (lvalue_p): ... to here.
24219         * c-common.c (candidate_equal_p): New.
24220         (add_tlist): Use it.
24221         (merge_tlist): Use it.
24222         (warn_for_collisions_1): Likewise.
24223         (warning_candidate_p): Accept more candidates.
24224         (verify_tree): A warning candidate can be an expression. Use
24225         candidate_equal_p.
24226
24227 2009-04-21  Ben Elliston  <bje@au.ibm.com>
24228
24229         PR target/5267
24230         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
24231         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
24232         options.  Remove -mcall-solaris documentation.
24233
24234 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24235
24236         PR c++/13358
24237         * doc/invoke.texi (-Wlong-long): Update description.
24238         * c-lex (interpret_integer): Only warn if there was no previous
24239         overflow and -Wlong-long is enabled.
24240         * c-decl.c (declspecs_add_type): Drop redundant flags.
24241         * c.opt (Wlong-long): Init to -1.
24242         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
24243         and front-end warn_long_long. Wlong-long only depends on other
24244         flags if it is uninitialized.
24245         * c-parser.c (disable_extension_diagnostics): warn_long_long is
24246         the same for CPP and FE.
24247         (restore_extension_diagnostics): Likewise.
24248
24249 2009-04-20  Ian Lance Taylor  <iant@google.com>
24250
24251         Fix enum conversions which are invalid in C++:
24252         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
24253         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
24254         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
24255         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
24256         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
24257         (dbxout_parms): Likewise.
24258         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
24259         (df_clear_flags): Likewise.
24260         * df-problems.c (df_rd_bb_local_compute_process_def): Change
24261         top_flag parameter to int.
24262         (df_chain_create_bb_process_use): Likewise.
24263         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
24264         Remove cast.
24265         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
24266         (df_ref_create_structure, df_def_record_1): Likewise.
24267         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
24268         (df_notes_rescan): Change 0 to VOIDmode in function call.
24269         (df_get_call_refs, df_insn_refs_collect): Likewise.
24270         (df_bb_regs_collect): Likewise.
24271         (df_entry_block_defs_collect): Likewise.
24272         (df_exit_block_uses_collect): Likewise.
24273         * df.h: Update declarations.
24274         * double-int.c (double_int_divmod): Add cast to enum type.
24275         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
24276         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
24277         (based_loc_descr): Likewise.
24278         (loc_descriptor_from_tree_1): Change first_op and second_op to
24279         enum dwarf_location_atom.  Add cast to enum type.
24280         * expmed.c (init_expmed): Change 0 to SET in function call.
24281         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
24282         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
24283         (do_store_flag): Likewise.
24284         * fixed-value.h (struct fixed_value): Change mode to enum
24285         machine_mode.
24286         * function.c (assign_parms): Change 0 to VOIDmode in function call.
24287         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
24288         function call.
24289         (insert_insn_decl, insert_decl, insert_state): Likewise.
24290         (automata_list_finish): Likewise.
24291         * genrecog.c (process_define_predicate): Add cast to enum type.
24292         * gensupport.c (init_predicate_table): Add cast to enum type.
24293         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
24294         function call.
24295         (gimple_build_call_1, gimple_build_label): Likewise.
24296         (gimple_build_goto, gimple_build_asm_1): Likewise.
24297         (gimple_build_switch_1, gimple_build_cdt): Likewise.
24298         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
24299         (enum fallback): Rename from enum fallback_t.
24300         (fallback_t): Typedef as int.
24301         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
24302         GSI_SAME_STMT in function call.
24303         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
24304         enum type.
24305         (setup_reg_class_relations): Likewise.
24306         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
24307         (setup_prohibited_class_mode_regs): Add cast to enum type.
24308         (setup_prohibited_mode_move_regs): Likewise.
24309         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
24310         (record_address_regs): Change i to enum reg_class.
24311         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
24312         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
24313         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
24314         (GET_MODE_2XWIDER_MODE): Likewise.
24315         (GET_CLASS_NARROWEST_MODE): Likewise.
24316         * omp-low.c (expand_omp_for): Add cast to enum type.
24317         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
24318         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
24319         * postreload.c (reload_cse_simplify_operands): Change rclass local
24320         to enum reg_class.
24321         * predict.c (combine_predictions_for_insn): Change best_predictor
24322         and predictor to enum br_predictor.
24323         (combine_predictions_for_bb): Likewise.
24324         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
24325         use SET_PREDICT_EXPR_OUTCOME.
24326         * real.c (real_arithmetic): Change icode to code in function call.
24327         * reginfo.c (init_move_cost): Add casts to enum type.
24328         (init_reg_sets_1, init_fake_stack_mems): Likewise.
24329         * regmove.c (regclass_compatible_p): Change class0 and class1 to
24330         enum reg_class.
24331         * reload.c (find_valid_class): Add casts to enum type.
24332         (push_reload): Change 0 to NO_REGS in function call.
24333         (find_reloads): Change this_alternative to array of enum
24334         reg_class.  Remove some now-unnecessary casts.
24335         (make_memloc): Change 0 to VOIDmode in function call.
24336         * reload1.c (reload): Change 0 to VOIDmode in function call.
24337         (eliminate_regs_1, elimination_effects): Likewise.
24338         (eliminate_regs_in_insn): Likewise.
24339         (emit_input_reload_insns): Add cast to enum type.
24340         (delete_output_reload): Change 0 to VOIDmode in function call.
24341         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
24342         to enum type in function call.
24343         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
24344         (SET_PREDICT_EXPR_OUTCOME): Define.
24345         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
24346         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
24347         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
24348         (dump_function): Likewise.
24349         * tree-dump.h: Update declarations.
24350         * tree-pass.h: Update declarations.
24351         * varasm.c (assemble_integer): Change mclass to enum mode_class.
24352         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
24353         enum type.
24354         (arm_rtx_costs_1): Correct parenthesization.
24355         (arm_rtx_costs): Add casts to enum type.
24356         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
24357         (vfp_emit_fstmd): Use add_rg_note.
24358         (emit_multi_reg_push, emit_sfm): Likewise.
24359         (thumb_set_frame_pointer): Likewise.
24360         (arm_expand_prologue): Likewise.
24361         (arm_regno_class): Change return type to enum reg_class.
24362         (thumb1_expand_prologue): Use add_reg_note.
24363         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
24364         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
24365         in function call.
24366         * config/arm/gentune.sh: Add cast to enum type.
24367         * config/arm/arm-tune.md: Rebuild.
24368         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
24369         (ix86_split_fp_branch, predict_jump): Likewise.
24370         (ix86_expand_multi_arg_builtin): Change sub_code from enum
24371         insn_code to enum rtx_code.
24372         (ix86_builtin_vectorized_function): Add cast to enum type.
24373         * config/i386/i386.md (truncdfsf2): Change slot to enum
24374         ix86_stack_slot.
24375         (truncxf<mode>2, isinf<mode>2): Likewise.
24376         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
24377         enum type.
24378         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
24379         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
24380         (insert_bundle_state): Change 1 to INSERT in function call.
24381         (ia64_add_bundle_selector_before): Likewise.
24382         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
24383         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
24384         (restore_stack_nonlocal): Likewise.
24385         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
24386         function call.
24387         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
24388         function call.
24389         (mips_rtx_costs): Likewise.
24390         (mips_override_options): Add casts to enum type.
24391         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
24392         in function call.
24393         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
24394         (store_reg, set_reg_plus_d): Likewise.
24395         (hppa_expand_prologue, hppa_profile_hook): Likewise.
24396         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
24397         cast to enum type.
24398         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
24399         function call.
24400         (emit_unlikely_jump): Use add_reg_note.
24401         (rs6000_emit_allocate_stack): Likewise.
24402         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
24403         (output_toc): Change 1 to INSERT in function call.
24404         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
24405         (rs6000_initialize_trampoline): Likewise.
24406         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
24407         function call.
24408         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
24409         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
24410         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
24411         (save_gprs): Use add_reg_note.
24412         (s390_emit_prologue): Likewise.
24413         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
24414         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
24415         (sparc_fold_builtin): Add cast to enum type.
24416         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
24417         enum insn_code.
24418         (spu_expand_prologue): Use add_reg_note.
24419         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
24420
24421 2009-04-20  Ian Lance Taylor  <iant@google.com>
24422
24423         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
24424         (c_parser_postfix_expression_after_primary): Get VEC for list of
24425         arguments.  Get original types of arguments.  Call
24426         build_function_call_vec.
24427         (cached_expr_list_1, cached_expr_list_2): New static variables.
24428         (c_parser_expr_list): Change return type to VEC *.  Add
24429         p_orig_types parameter.  Change all callers.
24430         (c_parser_release_expr): New static function.
24431         (c_parser_vec_to_tree_list): New static function.
24432         * c-typeck.c (build_function_call): Rewrite to build a VEC and
24433         call build_function_call_vec.
24434         (build_function_call_vec): New function, based on old
24435         build_function_call.
24436         (convert_arguments): Remove nargs and argarray parameters.  Change
24437         values to a VEC.  Add origtypes parameter.
24438         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
24439         (convert_for_assignment): Add origtype parameter.  Change all
24440         callers.  If warn_cxx_compat, check for conversion to an enum
24441         type when calling a function.
24442         (store_init_value): Add origtype parameter.  Change all callers.
24443         (digest_init): Likewise.
24444         (struct init_node): Add origtype field.
24445         (add_pending_init): Add origtype parameter.  Change all callers.
24446         (output_init_element): Likewise.
24447         (output_pending_init_elements): Pass origtype from init_node to
24448         output_init_element.
24449         (process_init_element): Pass origtype from c_expr to
24450         output_init_element.
24451         (c_finish_return): Add origtype parameter.  Change all callers.
24452         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
24453         caller.
24454         (sync_resolve_params): Likewise.
24455         (sync_resolve_return): Change params to first_param.  Change caller.
24456         (resolve_overloaded_builtins): Change params to VEC *.  Change
24457         callers.  Save first parameter around call to build_function_call_vec.
24458         * c-decl.c (finish_decl): Add origtype parameter.  Change all
24459         callers.  Call build_function_call_vec rather than
24460         build_function_call for cleanup.
24461         * c-tree.h: Update declarations.
24462         * c-common.h: Update declarations.
24463         * stub-objc.c (objc_rewrite_function_call): Change parameter from
24464         params to first_param.
24465         * target.h (struct gcc_target): Change resolve_overloaded_builtin
24466         params parameter from tree to void *.
24467         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
24468         Change arglist parameter to have type void *, and to be a pointer
24469         to a VEC.
24470         * config/rs6000/rs6000-protos.h
24471         (altivec_resolve_overloaded_builtin): Update declaration.
24472         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
24473         fnargs parameter to have type void *, and to be a pointer to a
24474         VEC.  Call build_function_call_vec instead of
24475         build_function_call.
24476         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
24477
24478 2009-04-20  Joey Ye  <joey.ye@intel.com>
24479             Xuepeng Guo  <xuepeng.guo@intel.com>
24480             H.J. Lu  <hongjiu.lu@intel.com>
24481
24482         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
24483
24484         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
24485         (IX86_LEA_PRIORITY): Likewise.
24486         (distance_non_agu_define): New function.
24487         (distance_agu_use): Likewise.
24488         (ix86_lea_for_add_ok): Likewise.
24489         (ix86_dep_by_shift_count): Likewise.
24490
24491         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
24492         should split for LEA.
24493
24494         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
24495         function.
24496         (ix86_dep_by_shift_count): Likewise.
24497
24498 2009-04-20  Richard Guenther  <rguenther@suse.de>
24499
24500         * expr.c (handled_component_p): Move ...
24501         * tree.h (handled_component_p): ... here.
24502         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
24503         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
24504         and REALPART_EXPR to be in one group.
24505
24506 2009-04-20  Richard Guenther  <rguenther@suse.de>
24507
24508         * basic-block.h (get_all_dominated_blocks): Declare.
24509         * dominance.c (get_all_dominated_blocks): New function.
24510         * tree-cfg.c (get_all_dominated_blocks): Remove.
24511         (remove_edge_and_dominated_blocks): Adjust.
24512         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
24513         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
24514         instead of recursing.
24515
24516 2009-04-20  Doug Kwan  <dougkwan@google.com>
24517
24518         * cgraph.h (cgraph_node_ptr): New type for vector functions.
24519         (struct cgraph_node_set_def): New type.
24520         (cgraph_node_set) New type. Also declare vector functions.
24521         (struct cgraph_node_set_element_def): New type.
24522         (cgraph_node_set_element): Ditto.
24523         (cgraph_node_set_iterator): New iterator type.
24524         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
24525         cgraph_node_set_remove, dump_cgraph_node_set,
24526         debug_cgraph_node_set): New prototypes.
24527         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
24528         cgraph_node_set_size): New inlines.
24529         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
24530         including cgraph.h.
24531         (struct ipa_opt_pass): Add struct cgraph_node_set_def
24532         argument to function 'write_summary'.
24533         * ipa.c: Include ggc.h.
24534         (hash_cgraph_node_set_element,
24535         eq_cgraph_node_set_element, cgraph_node_set_new,
24536         cgraph_node_set_add, cgraph_node_set_remove,
24537         cgraph_node_set_find, dump_cgraph_node_set,
24538         debug_cgraph_node_set): New functions.
24539         * Makefile.in (ipa.o): Add dependency on GGC_H.
24540
24541 2009-04-20  Ira Rosen  <irar@il.ibm.com>
24542
24543         PR tree-optimization/39675
24544         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
24545         check of the return code of vect_schedule_slp. Check that
24546         stmt_vec_info still exists for the statement, before checking its
24547         vectorization type.
24548
24549 2009-04-20  Michael Matz  <matz@suse.de>
24550
24551         * Makefile.in (generated_files): Take out $(simple_generated_c).
24552
24553 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
24554
24555         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
24556         (UINTPTR_TYPE):  Likewise.
24557
24558 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
24559
24560         PR c/37481
24561         * c-typeck.c (digest_init): Check for initializing an array with a
24562         string literal.
24563
24564 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
24565
24566         PR c/19771
24567         * c-semantics.c (pop_stmt_list): Propagate
24568         STATEMENT_LIST_HAS_LABEL to parent statement list.
24569
24570 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
24571
24572         * config/mips/mips.h (mips_tune_attr): New macro.
24573         * config/mips/mips.md (cpu): Use it.
24574
24575 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
24576
24577         PR c/38243
24578         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
24579         declaring a tag.
24580
24581 2009-04-19  Diego Novillo  <dnovillo@google.com>
24582
24583         * toplev.c (compile_file): Move call to coverage_finish ...
24584         * cgraphunit.c (ipa_passes): ... here.
24585         Call cgraph_process_new_functions.
24586         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
24587         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
24588
24589 2009-04-19  Jan Hubicka  <jh@suse.cz>
24590
24591         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
24592         cfun.
24593         (dump_cgraph_node): Dump can throw external flag.
24594         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
24595
24596 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
24597
24598         PR c/32061
24599         PR c++/36954
24600         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
24601         * common.opt (Wlogical-op): Move from here...
24602         * c.opt (Wlogical-op): ... to here.
24603         * c-typeck.c (parser_build_binary_op): Update call to
24604         warn_logical_operator.
24605         * c-opts.c (c_common_post_options): Enable warn_logical_op with
24606         extra_warnings.
24607         * c-common.c (warn_logical_op): Update.
24608         * c-common.h (warn_logical_op): Update declaration.
24609
24610 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
24611
24612         * tree.c (protected_set_expr_location): Fix formatting.
24613
24614 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
24615
24616         PR c/27676
24617         * c-typeck.c (readonly_warning): new.
24618         (build_unary_op, build_modify_expr): Use readonly_warning for
24619         storing into something readonly but not const-qualified.
24620
24621 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
24622
24623         PR c/22367
24624         * c-typeck.c (build_unary_op): Check for taking address of
24625         expression of type void.
24626
24627 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
24628
24629         PR c/35210
24630         * c-typeck.c (build_function_call): Check for calling a function
24631         with qualified void return types.  Call require_complete_type when
24632         generating a trap.
24633
24634 2009-04-18  Jan Hubicka  <jh@suse.cz>
24635
24636         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
24637         Set nothrow flag.
24638         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
24639         can_throw_external flag.
24640         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
24641         * ipa-pure-const.c (ignore_edge): New function.
24642         (propagate): Compute order for NOTHROW computation; set NOTHROWs
24643         only over can_throw_external edges.
24644         (local_pure_const): Add nothrow flag.
24645         * ipa-utils.c (searchc): Add ignore_edge callback.
24646         (ipa_utils_reduced_inorder): Add ignore_edge callback.
24647         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
24648         (set_nothrow_function_flags): Update cgraph.
24649         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
24650
24651 2009-04-18  Richard Guenther  <rguenther@suse.de>
24652
24653         PR middle-end/39804
24654         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
24655         (fold_stmt): ... this and ...
24656         (fold_stmt_inplace): ... this.
24657         (fold_stmt_1): Fold references in calls and asms.
24658         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
24659
24660 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24661
24662         * tree-vrp.c (ssa_name_nonzero_p): Remove.
24663         * tree.h: Remove the prototype for ssa_name_nonzero_p.
24664
24665 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24666
24667         * tree.c (function_args_count): Remove.
24668         * tree.h: Remove the prototype for function_args_count.
24669
24670 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24671
24672         * tree-iterator.c (expr_only): Remove.
24673         * tree.h: Remove the prototype for expr_only.
24674
24675 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24676
24677         * reginfo.c (cannot_change_mode_set_regs): Remove.
24678         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
24679
24680 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
24681
24682         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
24683         whether operands 0 and 1 overlaps.
24684
24685 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
24686
24687         PR middle-end/36902
24688         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
24689         pointer. Use warning_at instead of warning.
24690         (search_for_addr_array): Likewise.
24691         (check_array_bounds): Likewise.
24692         (check_all_array_refs): Check that the incoming edge is not in the
24693         list of edges to be removed.
24694         (check_all_array_refs): Avoid the temporal pointer.
24695         (vrp_visit_cond_stmt): Fix typo.
24696         (simplify_switch_using_ranges): Handle the case where the switch
24697         index is an integer constant.
24698
24699 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
24700
24701         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
24702
24703 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24704
24705         * doc/extend.texi, doc/invoke.texi: Fix typos.
24706
24707 2009-04-17  Cary Coutant  <ccoutant@google.com>
24708
24709         * tree-flow-inline.h (get_lineno): Fix inverted test.
24710
24711 2009-04-17  Diego Novillo  <dnovillo@google.com>
24712
24713         * tree-ssa-pre.c (create_expression_by_pieces): Remove
24714         assertion for AVAIL_OUT.
24715
24716 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
24717
24718         PR target/38627
24719         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
24720         * config/sh/linux-atomic.asm: Likewise.
24721
24722 2009-04-17  Diego Novillo  <dnovillo@google.com>
24723
24724         * except.c (debug_eh_tree): New.
24725         (struct eh_region, struct eh_status): Move ...
24726         * except.h: ... here.
24727         (add_type_for_runtime): Declare extern.
24728         (lookup_type_for_runtime): Likewise.
24729         (debug_eh_tree): Declare.
24730         * Makefile.in (GTFILES): List except.h before except.c
24731
24732 2009-04-17  Diego Novillo  <dnovillo@google.com>
24733
24734         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
24735         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
24736         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
24737         (find_vars_r): ... here.
24738         * tree-flow.h (find_referenced_vars_in): Declare.
24739         * tree-ssa-pre.c (create_expression_by_pieces): Assert
24740         that AVAIL_OUT exists for BLOCK.
24741         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
24742         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
24743         (tree-parloops.o): Likewise.
24744
24745 2009-04-17  Simon Baldwin  <simonb@google.com>
24746
24747         * toplev.c (default_tree_printer): Add handling for %E format.
24748
24749 2009-04-17  Diego Novillo  <dnovillo@google.com>
24750
24751         * tree-pretty-print.c (dump_generic_node): Add break after
24752         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
24753         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
24754         FUNCTION_TYPE together.  Call print_struct_decl when printing
24755         structures and TDF_SLIM is not given.
24756         (print_struct_decl): Fix logic for detecting recursion.
24757
24758 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
24759
24760         PR 31567
24761         * gcc.c (create_at_file): New.
24762         (compile_input_file_p): New.
24763         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
24764         * main.c (main): Update call to toplev_main.
24765         * toplev.c (toplev_main): Change signature. Call expandargv.
24766         * toplev.h (toplev_main): Change signature.
24767
24768 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
24769
24770         * dwarf2out.c (field_byte_offset): Use the type size as the field size
24771         if the latter is not constant.
24772
24773 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
24774
24775         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
24776
24777 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
24778
24779         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
24780         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
24781
24782 2009-04-17  Richard Guenther  <rguenther@suse.de>
24783
24784         * tree-ssa-structalias.c (get_constraint_for_component_ref):
24785         Handle component references view-converting an invariant address.
24786
24787 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
24788
24789         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
24790         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
24791         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
24792         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
24793         Use @deftypevr rather than @deftypevar.
24794
24795 2009-04-17  Richard Guenther  <rguenther@suse.de>
24796
24797         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
24798         (get_prop_source_stmt): Likewise.
24799         (can_propagate_from): Likewise.
24800
24801 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
24802
24803         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
24804         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
24805         (--with-multilib-list): Add default value.
24806         * configure: Regenerate.
24807         * Makefile.in (TM_ENDIAN_CONFIG): Define.
24808         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
24809         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
24810         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
24811         Don't add default cpu to multilib list unnecessarily, but do enable
24812         the relevant compiler option..
24813         Add support for --with-multilib-list=<blank> and
24814         --with-multilib-list=!<somelib> to supress unwanted multilibs.
24815         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
24816         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
24817         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
24818         TM_MULTILIB_CONFIG.
24819         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
24820         (MULTILIB_OSDIRNAMES): New variable.
24821         * config/sh/t-1e: Delete file.
24822         * config/sh/t-mlib-sh1: Delete file.
24823         * config/sh/t-mlib-sh2: Delete file.
24824         * config/sh/t-mlib-sh2a: Delete file.
24825         * config/sh/t-mlib-sh2a-nofpu: Delete file.
24826         * config/sh/t-mlib-sh2a-single: Delete file.
24827         * config/sh/t-mlib-sh2a-single-only: Delete file.
24828         * config/sh/t-mlib-sh2e: Delete file.
24829         * config/sh/t-mlib-sh3e: Delete file.
24830         * config/sh/t-mlib-sh4: Delete file.
24831         * config/sh/t-mlib-sh4-nofpu: Delete file.
24832         * config/sh/t-mlib-sh4-single: Delete file.
24833         * config/sh/t-mlib-sh4-single-only: Delete file.
24834         * config/sh/t-mlib-sh4a: Delete file.
24835         * config/sh/t-mlib-sh4a-nofpu: Delete file.
24836         * config/sh/t-mlib-sh4a-single: Delete file.
24837         * config/sh/t-mlib-sh4a-single-only: Delete file.
24838         * config/sh/t-mlib-sh4al: Delete file.
24839         * config/sh/t-mlib-sh5-32media: Delete file.
24840         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
24841         * config/sh/t-mlib-sh5-64media: Delete file.
24842         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
24843         * config/sh/t-mlib-sh5-compact: Delete file.
24844         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
24845         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
24846         * doc/install.texi (Options specification): Add
24847         --with-multilib-list and --with-endian.
24848
24849 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
24850
24851         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
24852         REVISION_c.
24853         (OBJS-common): Add plugin-version.o.
24854         (plugin-version.o): New.
24855         * gcc-plugin.h (plugin_gcc_version): New.
24856         (plugin_default_version_check): New.
24857         (plugin_init_func, plugin_init): Add version argument.
24858         * plugin-version.c: New.
24859         * plugin.c (str_plugin_gcc_version_name): New.
24860         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
24861         pass it to the init function.
24862         (plugin_default_version_check): New.
24863
24864 2009-04-17  Richard Guenther  <rguenther@suse.de>
24865
24866         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
24867         for decl-vs-decl disambiguation.
24868
24869 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
24870
24871         * config/s390/s390.h (s390_tune_attr): New macro definition.
24872         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
24873
24874 2009-04-17  Richard Guenther  <rguenther@suse.de>
24875
24876         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
24877         (fold_stmt_r): Likewise.
24878         (maybe_fold_reference): New function.
24879         (fold_gimple_assign): Handle cases fold_stmt_r did.
24880         (fold_stmt): Do not use fold_stmt_r.
24881         (fold_stmt_inplace): Likewise.
24882
24883 2009-04-17  Richard Guenther  <rguenther@suse.de>
24884
24885         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
24886         (record_equivalences_from_stmt): Remove useless checks and
24887         simplifications.
24888         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
24889         the type is already suitable.
24890
24891 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
24892
24893         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
24894
24895 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
24896
24897         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
24898         (CMPtype): Define as __gcc_CMPtype.
24899
24900 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
24901
24902         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
24903         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
24904
24905 2009-04-17  Richard Guenther  <rguenther@suse.de>
24906
24907         PR tree-optimization/39746
24908         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
24909         special-casing for builtins and static variable use/def.
24910         (call_may_clobber_ref_p_1): Likewise.
24911
24912 2009-04-16  Ian Lance Taylor  <iant@google.com>
24913
24914         * df.h: Include "timevar.h".
24915         (struct df_problem): Change tv_id field to timevar_id_t.
24916         * tree-pass.h: Include "timevar.h".
24917         (struct opt_pass): Change tv_id field to timevar_id_t.
24918         * timevar.h (timevar_id_t): Define TV_NONE.
24919         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
24920         TV_NONE rather than tv_id != 0.
24921         (execute_one_pass): Likewise.
24922         * Makefile.in (DF_H): Add $(TIMEVAR_H).
24923         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
24924         dependencies to $(TREE_PASS_H).
24925         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
24926         to TV_NONE.
24927         (pass_branch_target_load_optimize2): Likewise.
24928         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
24929         (pass_outof_cfg_layout_mode): Likewise.
24930         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
24931         (pass_rebuild_cgraph_edges): Likewise.
24932         (pass_remove_cgraph_callee_edges): Likewise.
24933         * df-core.c (pass_df_initialize_opt): Likewise.
24934         (pass_df_initialize_no_opt): Likewise.
24935         (pass_df_finish): Likewise.
24936         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
24937         * except.c (pass_set_nothrow_function_flags): Likewise.
24938         (pass_convert_to_eh_region_ranges): Likewise.
24939         * final.c (pass_compute_alignments): Likewise.
24940         * function.c (pass_instantiate_virtual_regs): Likewise.
24941         (pass_init_function): Likewise.
24942         (pass_leaf_regs): Likewise.
24943         (pass_match_asm_constraints): Likewise.
24944         * gimple-low.c (pass_lower_cf): Likewise.
24945         (pass_mark_used_blocks): Likewise.
24946         * init-regs.c (pass_initialize_regs): Likewise.
24947         * integrate.c (pass_initial_value_sets): Likewise.
24948         * ira.c (pass_ira): Likewise.
24949         * jump.c (pass_cleanup_barriers): Likewise.
24950         * omp-low.c (pass_expand_omp): Likewise.
24951         (pass_lower_omp): Likewise.
24952         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
24953         * recog.c (pass_split_all_insns): Likewise.
24954         (pass_split_after_reload): Likewise.
24955         (pass_split_before_regstack): Likewise.
24956         (pass_split_before_sched2): Likewise.
24957         (pass_split_for_shorten_branches): Likewise.
24958         * reginfo.c (pass_reginfo_init): Likewise.
24959         (pass_subregs_of_mode_init): Likewise.
24960         (pass_subregs_of_mode_finish): Likewise.
24961         * passes.c (pass_postreload): Likewise.
24962         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
24963         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
24964         (pass_warn_function_return): Likewise.
24965         (pass_warn_function_noreturn): Likewise.
24966         * tree-complex.c (pass_lower_complex): Likewise.
24967         (pass_lower_complex_O0): Likewise.
24968         * tree-if-conv.c (pass_if_conversion): Likewise.
24969         * tree-into-ssa.c (pass_build_ssa): Likewise.
24970         * tree-mudflap.c (pass_mudflap_1): Likewise.
24971         (pass_mudflap_2): Likewise.
24972         * tree-nomudflap.c (pass_mudflap_1): Likewise.
24973         (pass_mudflap_2): Likewise.
24974         * tree-nrv.c (pass_return_slot): Likewise.
24975         * tree-object-size.c (pass_object_sizes): Likewise.
24976         * tree-optimize.c (pass_all_optimizations): Likewise.
24977         (pass_early_local_passes): Likewise.
24978         (pass_all_early_optimizations): Likewise.
24979         (pass_cleanup_cfg): Likewise.
24980         (pass_cleanup_cfg_post_optimizing): Likewise.
24981         (pass_free_datastructures): Likewise.
24982         (pass_free_cfg_annotations): Likewise.
24983         (pass_fixup_cfg): Likewise.
24984         (pass_init_datastructures): Likewise.
24985         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
24986         (pass_late_warn_uninitialized): Likewise.
24987         (pass_update_address_taken): Likewise.
24988         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
24989         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
24990         (pass_cse_sincos): Likewise.
24991         (pass_convert_to_rsqrt): Likewise.
24992         * tree-ssa-structalias.c (pass_build_alias): Likewise.
24993         * tree-stdarg.c (pass_stdarg): Likewise.
24994         * tree-tailcall.c (pass_tail_recursion): Likewise.
24995         (pass_tail_calls): Likewise.
24996         * tree-vect-generic.c (pass_lower_vector): Likewise.
24997         (pass_lower_vector_ssa): Likewise.
24998         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
24999
25000 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
25001
25002         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
25003         XLR entry.
25004         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
25005         Handle -march=xlr.
25006         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
25007         logical and signext.
25008
25009 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
25010
25011         PR target/39767
25012         * config/sh/predicates.md (arith_operand): Check if the operand
25013         of TRUNCATE is a REG.
25014
25015 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25016
25017         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
25018         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
25019
25020 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25021
25022         * tree-iterator.c (tsi_split_statement_list_after,
25023         tsi_split_statement_list_before): Remove.
25024         * tree-iterator.h: Remove the prototypes for
25025         tsi_split_statement_list_after and tsi_split_statement_list_before.
25026
25027 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25028
25029         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
25030         * tree-ssa-propagate.h: Remove the prototype for
25031         stmt_makes_single_load.
25032
25033 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25034
25035         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
25036         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
25037
25038 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25039
25040         * tree-iterator.c (EXPR_LAST_BODY): Remove.
25041
25042 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25043
25044         * except.c (eh_region_outer_p): Remove.
25045         * except.h: Remove the prototype for eh_region_outer_p.
25046
25047 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25048
25049         * function.c (current_function_assembler_name): Remove.
25050         * function.h: Remove the prototype for
25051         current_function_assembler_name.
25052
25053 2009-04-16  Ian Lance Taylor  <iant@google.com>
25054
25055         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
25056         (add_reg_note): Call alloc_reg_note.
25057         * rtl.h (alloc_reg_note): Declare.
25058         * combine.c (try_combine): Use alloc_reg_note.
25059         (recog_for_combine, move_deaths): Likewise.
25060         (distribute_notes): Use alloc_reg_note and add_reg_note.
25061         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
25062         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
25063         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
25064
25065 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
25066
25067         PR rtl-optimization/39762
25068         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
25069         ira_may_move_out_cost): Add comments about way of their usage.
25070         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
25071
25072         * ira-conflicts.c (process_regs_for_copy): Use function
25073         ira_get_register_move_cost instead of global
25074         ira_register_move_cost.
25075
25076         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
25077         color_pass, move_spill_restore, update_curr_costs): Ditto.
25078
25079         * ira-lives.c (process_single_reg_class_operands): Ditto.
25080
25081         * ira-emit.c (emit_move_list): Ditto.
25082
25083         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
25084         (record_reg_classes): Ditto.  Use functions
25085         ira_get_register_move_cost and ira_get_may_move_cost instead of
25086         global vars ira_register_move_cost, ira_may_move_out_cost and
25087         ira_may_move_in_cost.
25088         (record_address_regs): Don't call ira_init_register_move_cost.
25089         Use function ira_get_may_move_cost instead of global
25090         ira_may_move_in_cost.
25091         (process_bb_node_for_hard_reg_moves): Use function
25092         ira_get_register_move_cost instead of global ira_register_move_cost.
25093         (ira_costs): Don't call ira_init_register_move_cost.
25094
25095 2009-04-16  Richard Guenther  <rguenther@suse.de>
25096
25097         * tree-cfg.c (verify_gimple_assign_binary):
25098         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
25099         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
25100         (create_general_new_stmt): Note that this function is broken.
25101
25102 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
25103
25104         * common.opt (fhelp): Add Var(help_flag).
25105         * gcc-plugin.h (plugin_info): Add help.
25106         * plugin.c (plugin_name_args): Add help.
25107         (register_plugin_info): Set plugin->help.
25108         (print_help_one_plugin): New.
25109         (print_plugins_help): New.
25110         * plugin.h (print_plugins_help): New.
25111         * toplev.c (toplev_main): Call print_plugins_help if needed.
25112
25113 2009-04-16  Richard Guenther  <rguenther@suse.de>
25114
25115         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
25116         (gimple_ior_addresses_taken_1): New function.
25117         (gimple_ior_addresses_taken): Likewise.
25118         * gimple.h (struct gimple_statement_with_ops_base): Remove
25119         addresses_taken member.
25120         (gimple_ior_addresses_taken): Declare.
25121         (gimple_addresses_taken, gimple_addresses_taken_ptr,
25122         gimple_set_addresses_taken): Remove.
25123         * ipa-reference.c (mark_address): New function.
25124         (scan_stmt_for_static_refs): Use it for marking addresses taken.
25125         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
25126         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
25127         (gimple_add_to_addresses_taken): Remove.
25128         (get_tmr_operands): Call mark_address_taken.
25129         (get_asm_expr_operands): Likewise.
25130         (get_expr_operands): Likewise.
25131         (build_ssa_operands): Do not clear the addresses_taken bitmap.
25132         (free_stmt_operands): Do not free it.
25133         * tree-ssa.c (delete_tree_ssa): Likewise.
25134         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
25135
25136 2009-04-16  Richard Guenther  <rguenther@suse.de>
25137
25138         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
25139         (walk_stmt_load_store_ops): Likewise.
25140         * gimple.c (get_base_loadstore): New function.
25141         (walk_stmt_load_store_addr_ops): Likewise.
25142         (walk_stmt_load_store_ops): Likewise.
25143         * ipa-pure-const.c (check_op): Simplify.
25144         (check_load, check_store): New functions.
25145         (check_stmt): Use walk_stmt_load_store_ops.
25146         * ipa-reference.c (mark_load): Adjust signature.
25147         (mark_store): Likewise.
25148         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
25149
25150 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
25151
25152         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
25153         (plugin_info): New.
25154         * opts.c (common_handle_option): Don't call print_version.
25155         * plugin.c (plugin_name_args): Add version.
25156         (register_plugin_info): New.
25157         (register_callback): Handle PLUGIN_INFO.
25158         (try_init_one_plugin): New.
25159         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
25160         if failed to init.
25161         (finalize_one_plugin): New.
25162         (finalize_plugins): New.
25163         (print_one_plugin): New.
25164         (print_plugins_versions): New.
25165         * plugin.h (print_plugins_versions): New.
25166         (finalize_plugins): New.
25167         * toplev.c (compile_file): Don't call initialize_plugins.
25168         (print_version): Call print_plugins_versions.
25169         (toplev_main): Call initialize_plugins. Print version if needed.
25170         Call finalize_plugins.
25171
25172 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
25173
25174         * common.opt (fversion): New.
25175         * gcc.c (print_version): New.
25176         (process_command): Don't print the version. Just set print_version.
25177         (main): Print version. Call subprocesses if print_version and
25178         verbose_flag are set.
25179         * opts.c (common_handle_option): Handle OPT_fversion.
25180
25181 2009-04-16  Richard Guenther  <rguenther@suse.de>
25182             Ira Rosen  <irar@il.ibm.com>
25183
25184         PR tree-optimization/39698
25185         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
25186         type of the reduction variable.  Only generate the def if
25187         it is needed.
25188
25189         * omp-low.c (expand_omp_for_generic): When converting to a pointer
25190         make sure to first convert to an integer of the same precision.
25191         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
25192         the type of the evolution correctly in computing the new
25193         induction variable base.
25194
25195 2009-04-16  Richard Guenther  <rguenther@suse.de>
25196
25197         PR middle-end/39625
25198         * tree-cfg.c (make_blocks): Split statements with to-be
25199         abnormal SSA names on the lhs.
25200
25201 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
25202
25203         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
25204         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
25205         * c-typeck.c (really_start_incremental_init): Likewise.
25206         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
25207         (TARGET_INITIALIZER): Remove it.
25208         * target.h (struct target): Remove vector_opaque_p.
25209         * tree.c (build_opaque_vector_type): New.
25210         * tree.h (TYPE_VECTOR_OPAQUE): New.
25211         (build_opaque_vector_type): Declare.
25212         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
25213         * config/rs6000/rs6000.c (build_opaque_vector_type,
25214         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
25215         (rs6000_init_builtins): Use build_opaque_vector_type for
25216         opaque_V4SI_type_node.
25217
25218 2009-04-15  Catherine Moore  <clm@codesourcery.com>
25219
25220         * debug.h (set_name):  Declare.
25221         * dwarf2out.c (dwarf2out_set_name): Declare.
25222         (dwarf2_debug_hooks): Add set_name.
25223         (find_AT_string): New.
25224         (add_AT_string): Call find_AT_string.
25225         (dwarf2out_set_name): New.
25226         * cp/decl.c (grokdeclarator): Call set_name.
25227         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
25228         * debug.c (do_nothing_debug_hooks):  Likewise.
25229         * dbxout.c (dbx_debug_hooks): Likewise.
25230         * sdbout.c (sdb_debug_hooks): Likewise.
25231
25232 2009-04-15  Michael Eager  <eager@eagercon.com>
25233
25234         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
25235         reg for single-precision FPU.
25236         * config/rs6000/rs6000.md (movsi_internal1): Only for
25237         !TARGET_SINGLE_FPU.
25238         (movsi_internal1_single): New. Add pattern to move SI values to/from
25239         single-precision FP regs.
25240
25241 2009-04-15  Richard Guenther  <rguenther@suse.de>
25242
25243         * omp-low.c (lower_rec_input_clauses): Build correct address
25244         expressions.
25245         (expand_omp_for_generic): Fix multiplication type.
25246         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
25247         (generate_memset_zero): Fix types.
25248         * tree-profile.c (prepare_instrumented_value): Correctly
25249         widen a pointer.
25250
25251 2009-04-15  Ian Lance Taylor  <iant@google.com>
25252
25253         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
25254         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
25255         for -Wall and for -Wc++-compat.
25256         (c_common_post_options): For C++, set warn_enum_compare if not
25257         already set.
25258         * c-tree.h (struct c_expr): Add field original_type.
25259         (build_external_ref): Update declaration.
25260         * c-parser.c (c_parser_braced_init): Set original_type.
25261         (c_parser_initelt): Likewise.
25262         (c_parser_expr_no_commas): Likewise.
25263         (c_parser_conditional_expression): Likewise.
25264         (c_parser_cast_expression): Likewise.
25265         (c_parser_unary_expression): Likewise.  Pull setting of
25266         original_code to top of function.
25267         (c_parser_sizeof_expression): Set original_type.
25268         (c_parser_alignof_expression): Likewise.
25269         (c_parser_postfix_expression): Likewise.  Pull setting of
25270         original_code to top of function.
25271         (c_parser_postfix_expression_after_paren_type): Set original_type.
25272         (c_parser_postfix_expression_after_primary): Likewise.
25273         (c_parser_expression): Likewise.
25274         * c-typeck.c (build_external_ref): Add type parameter.  Change all
25275         callers.
25276         (c_expr_sizeof_expr): Set original_type field.
25277         (parser_build_unary_op): Likewise.
25278         (parser_build_binary_op): Likewise.  Optionally warn about
25279         comparisons of enums of different types.
25280         (digest_init): Set original_type field.
25281         (really_start_incremental_init): Likewise.
25282         (push_init_level, pop_init_level): Likewise.
25283         * doc/invoke.texi (Warning Options): -Wenum-compare now
25284         supported in C.
25285
25286 2009-04-15  Richard Guenther  <rguenther@suse.de>
25287
25288         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
25289         out a necessary conversion.
25290         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
25291         names we didn't value number.
25292         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
25293
25294 2009-04-15  Richard Guenther  <rguenther@suse.de>
25295
25296         PR tree-optimization/39764
25297         * tree-ssa-ccp.c (get_value): Canonicalize value with
25298         canonicalize_float_value.
25299
25300 2009-04-15  Jan Hubicka  <jh@suse.cz>
25301
25302         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
25303         Wrong version of patch.
25304
25305 2009-04-15  Jan Hubicka  <jh@suse.cz>
25306
25307         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
25308
25309 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
25310
25311         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
25312         our distinct integral and vector types.
25313
25314 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
25315
25316         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
25317         * init.c (build_vtbl_address): Remove call to assemble_external.
25318
25319 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
25320
25321         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
25322         output for other floating point modes.
25323
25324 2009-04-14  Diego Novillo  <dnovillo@google.com>
25325
25326         * diagnostic.c (diagnostic_report_diagnostic): Do not
25327         warn about loaded plugins for DK_ERROR and DK_WARNING.
25328         * c-decl.c (declspecs_add_type): Move call to
25329         invoke_plugin_callbacks ...
25330         * c-parser.c (c_parser_declspecs): ... here.
25331         * plugin.c (dump_active_plugins): Tidy output.
25332
25333 2009-04-14  Diego Novillo  <dnovillo@google.com>
25334             Le-Chun Wu  <lcwu@google.com>
25335
25336         * configure.ac: Add --enable-plugin support.
25337         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
25338         * Makefile.in (PLUGIN_H): Define.
25339         Export ENABLE_PLUGIN and GMPINC to site.exp.
25340         Add PLUGINLIBS to link command.
25341         Add/modify dependencies for plugin.o and files including plugin.h.
25342         (plugin.o): New.
25343         * config.in: Regenerate.
25344
25345         * opts.c (common_handle_option): Handle OPT_fplugin_ and
25346         OPT_fplugin_arg_.
25347
25348 2009-04-14  Le-Chun Wu  <lcwu@google.com>
25349
25350         * tree-pass.h (register_one_dump_file): Add a prototype for
25351         register_one_dump_file.
25352         * toplev.c (compile_file): Call initialize_plugins.
25353         (do_compile): Call invoke_plugin_callbacks.
25354         (toplev_main): Call invoke_plugin_callbacks.
25355         * common.opt: Add -fplugin= and -fplugin-arg-.
25356         * gcc-plugin.h: New public header file for plugins to include.
25357         * plugin.c: New source file.
25358         * plugin.h: New internal header file.
25359         * passes.c (register_one_dump_file): Make it external.
25360
25361         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
25362
25363 2009-04-14  Diego Novillo  <dnovillo@google.com>
25364
25365         * doc/plugins.texi: New.
25366         * doc/gccint.texi: Add reference to Plugins chapter.
25367         * doc/invoke.texi: Document -fplugin and -fplugin-arg
25368         * diagnostic.c (diagnostic_report_diagnostic): Warn about
25369         loaded plugins, if any.
25370         * timevar.def (TV_PLUGIN_INIT): Define.
25371         (TV_PLUGIN_RUN): Define.
25372         * plugin.c: Include timevar.h
25373         (plugins_active_p): New.
25374         (dump_active_plugins): New.
25375         (debug_active_plugins): New.
25376
25377 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
25378
25379         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
25380         library paths.
25381         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
25382
25383 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
25384
25385         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
25386         the same as a minus without a shift.
25387
25388 2009-04-14  Nick Clifton  <nickc@redhat.com>
25389
25390         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
25391         comparisons with small integers will always produce a short
25392         branch.
25393
25394 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
25395
25396         Merge:
25397         2008-12-19  Diego Novillo  <dnovillo@google.com>
25398
25399         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
25400
25401 2009-04-14  Richard Guenther  <rguenther@suse.de>
25402
25403         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
25404         verification.
25405         (verify_gimple_assign_binary): Likewise.  Handle shifts and
25406         rotates correctly.
25407         (verify_gimple_phi): Print the mismatched argument position.
25408         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
25409         Fix types.
25410         (vect_update_init_of_dr): Likewise.
25411         * matrix-reorg.c (transform_access_sites): Do what the
25412         comment suggests.
25413         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
25414
25415 2009-04-13  Michael Eager  <eager@eagercon.com>
25416
25417         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
25418         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
25419         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
25420         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
25421         remove duplicate config
25422
25423 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
25424
25425         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
25426         file_name:line_number type locator of the call site.
25427
25428 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
25429
25430         * genautomata.c: Put blank after comma.
25431         (automaton_decls): New.
25432         (struct unit_usage): Add comments to member next.
25433         (store_alt_unit_usage): Keep the list ordered.
25434         (unit_present_on_list_p, equal_alternatives_p): New.
25435         (check_regexp_units_distribution): Check units distribution
25436         correctness correctly.
25437         (main): Don't write automata if error is found.  Return correct
25438         exit code.
25439
25440         * config/m68k/cf.md (cfv4_ds): Remove.
25441         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
25442         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
25443
25444         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
25445         power4-load-ext, power4-store, power4-store-update,
25446         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
25447         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
25448         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
25449         power4-sqrt, power4-isync): Modify reservation to make correct
25450         unit distribution to automata.
25451
25452         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
25453         power5-store-update, power5-two, power5-three, power5-lmul,
25454         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
25455
25456 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
25457
25458         * except.c (pass_set_nothrow_function_flags): Set name and add
25459         TODO_dump_func.
25460         (set_nothrow_function_flags): Mention in the dump file when
25461         changing a function to nothrow.
25462
25463 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
25464
25465         PR/39066
25466         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
25467         instead of unsigned long.
25468
25469 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
25470
25471         * config/arm/arm.c (return_used_this_function): Remove.
25472         (arm_output_function_prologue): Remove use of
25473         return_used_this_function.
25474         (output_return_instruction): Replace use of
25475         return_used_this_function
25476         by cfun->machine->return_used_this_function.
25477         (arm_output_epilogue): Likewise.
25478         (arm_output_function_epilogue): Likewise.
25479         (thumb_unexpanded_epilogue): Likewise.
25480         * config/arm/arm.h (struct machine_function):
25481         New member return_used_this_function.
25482
25483 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
25484
25485         * doc/install.texi: Correct description of default directory for
25486         --with-gxx-include-dir.
25487
25488 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
25489
25490         * fold-const.c (build_range_check): Properly deal with enumeral and
25491         boolean base types.
25492
25493 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
25494
25495         * doc/invoke.texi (max_gcse_passes): Remove documentation.
25496         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
25497         * params.h (MAX_GCSE_PASSES): Remove.
25498         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
25499         in sequence.  Remove ability to run multiple passes.
25500         (bypass_jumps): Report run as third CPROP pass.
25501
25502 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
25503
25504         PR middle-end/39651
25505         * except.c (can_throw_external): Look at each insn in a SEQUENCE
25506         when deciding whether the whole SEQUENCE can throw.
25507
25508 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
25509
25510         PR target/39740
25511         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
25512         offseted label references.
25513
25514 2009-04-11  Jan Hubicka  <jh@suse.cz>
25515
25516         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
25517
25518 2009-04-11  Richard Guenther  <rguenther@suse.de>
25519
25520         PR middle-end/39732
25521         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
25522         return variables as TREE_ADDRESSABLE.
25523
25524 2009-04-11  Richard Guenther  <rguenther@suse.de>
25525
25526         PR tree-optimization/39713
25527         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
25528         reference trees have SSA_NAME operands.
25529
25530 2009-04-11  Richard Guenther  <rguenther@suse.de>
25531
25532         PR c/39712
25533         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
25534         address expressions.
25535
25536 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
25537
25538         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
25539         match changes in Cygwin 1.7
25540         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
25541         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
25542
25543 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
25544
25545         PR tree-optimization/39701
25546         * doc/invoke.texi (Optimization Options): Document change in
25547         meaning and initialization of -fdelete-null-pointer-checks.
25548
25549 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
25550
25551         PR middle-end/39701
25552         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
25553
25554         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
25555         here.
25556
25557         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
25558
25559 2009-04-10  Chao-ying Fu  <fu@mips.com>
25560
25561         * doc/tm.texi (Instruction Output): Document
25562         TARGET_ASM_FINAL_POSTSCAN_INSN.
25563         * target.h (final_postscan_insn): New field in asm_out.
25564         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
25565         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
25566         * final.c (final_scan_insn): Call
25567         targetm.asm_out.final_postscan_insn after outputting
25568         an asm macro and a normal instruction.
25569
25570         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
25571         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
25572         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
25573         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
25574         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
25575
25576 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
25577
25578         PR middle-end/39701
25579         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
25580         variables as non-NULL even with -fdelete-null-pointer-checks.
25581
25582 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
25583
25584         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
25585
25586 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
25587
25588         PR target/39678
25589         * config/i386/i386.c (classify_argument): Handle SCmode with
25590         (bit_offset % 64) != 0.
25591
25592 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
25593
25594         * doc/invoke.texi (Optimize Options): Add cross-reference to
25595         -Q --help=optimizers examples.
25596
25597 2009-04-10  Ben Elliston  <bje@au.ibm.com>
25598
25599         PR target/36800
25600         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
25601         regalign for the reg == fpr and TDmode case.
25602
25603 2009-04-09  David Ayers  <ayers@fsfe.org>
25604
25605         PR objc/29200
25606         * objc/objc-act.c (warn_with_method): Remove helper function.
25607         (check_duplicates): Call warning and inform directly.
25608         (really_start_method): Likewise.
25609
25610 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
25611
25612         * expmed.c (expand_divmod): Always use a comparison for a division
25613         by a large unsigned integer.
25614
25615         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
25616         for things others than variables or functions as nonzero.
25617
25618 2009-04-09  Nick Clifton  <nickc@redhat.com>
25619
25620         * unwind-compat.c: Change copyright header to refer to version
25621         3 of the GNU General Public License with version 3.1 of the
25622         GCC Runtime Library Exception and to point readers at the
25623         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
25624         * config/alpha/crtfastmath.c: Likewise.
25625         * config/alpha/linux-unwind.h: Likewise.
25626         * config/alpha/qrnnd.asm: Likewise.
25627         * config/alpha/vms-crt0-64.c: Likewise.
25628         * config/alpha/vms-crt0.c: Likewise.
25629         * config/alpha/vms-dwarf2.asm: Likewise.
25630         * config/alpha/vms-dwarf2eh.asm: Likewise.
25631         * config/alpha/vms-psxcrt0-64.c: Likewise.
25632         * config/alpha/vms-psxcrt0.c: Likewise.
25633         * config/alpha/vms_tramp.asm: Likewise.
25634         * config/arc/initfini.c: Likewise.
25635         * config/arc/lib1funcs.asm: Likewise.
25636         * config/arm/bpabi-v6m.S: Likewise.
25637         * config/arm/bpabi.S: Likewise.
25638         * config/arm/bpabi.c: Likewise.
25639         * config/arm/crti.asm: Likewise.
25640         * config/arm/crtn.asm: Likewise.
25641         * config/arm/ieee754-df.S: Likewise.
25642         * config/arm/ieee754-sf.S: Likewise.
25643         * config/arm/lib1funcs.asm: Likewise.
25644         * config/arm/libunwind.S: Likewise.
25645         * config/arm/linux-atomic.c: Likewise.
25646         * config/arm/mmintrin.h: Likewise.
25647         * config/arm/pr-support.c: Likewise.
25648         * config/arm/unaligned-funcs.c: Likewise.
25649         * config/arm/unwind-arm.c: Likewise.
25650         * config/arm/unwind-arm.h: Likewise.
25651         * config/avr/libgcc.S: Likewise.
25652         * config/bfin/crti.s: Likewise.
25653         * config/bfin/crtlibid.s: Likewise.
25654         * config/bfin/crtn.s: Likewise.
25655         * config/bfin/lib1funcs.asm: Likewise.
25656         * config/bfin/linux-unwind.h: Likewise.
25657         * config/cris/arit.c: Likewise.
25658         * config/cris/cris_abi_symbol.c: Likewise.
25659         * config/darwin-64.c: Likewise.
25660         * config/darwin-crt2.c: Likewise.
25661         * config/darwin-crt3.c: Likewise.
25662         * config/darwin.h: Likewise.
25663         * config/dbxelf.h: Likewise.
25664         * config/dfp-bit.c: Likewise.
25665         * config/dfp-bit.h: Likewise.
25666         * config/elfos.h: Likewise.
25667         * config/fixed-bit.c: Likewise.
25668         * config/fixed-bit.h: Likewise.
25669         * config/fp-bit.c: Likewise.
25670         * config/fp-bit.h: Likewise.
25671         * config/fr30/crti.asm: Likewise.
25672         * config/fr30/crtn.asm: Likewise.
25673         * config/fr30/lib1funcs.asm: Likewise.
25674         * config/freebsd-spec.h: Likewise.
25675         * config/frv/cmovd.c: Likewise.
25676         * config/frv/cmovh.c: Likewise.
25677         * config/frv/cmovw.c: Likewise.
25678         * config/frv/frvbegin.c: Likewise.
25679         * config/frv/frvend.c: Likewise.
25680         * config/frv/lib1funcs.asm: Likewise.
25681         * config/glibc-stdint.h: Likewise.
25682         * config/h8300/clzhi2.c: Likewise.
25683         * config/h8300/crti.asm: Likewise.
25684         * config/h8300/crtn.asm: Likewise.
25685         * config/h8300/ctzhi2.c: Likewise.
25686         * config/h8300/fixunssfsi.c: Likewise.
25687         * config/h8300/lib1funcs.asm: Likewise.
25688         * config/h8300/parityhi2.c: Likewise.
25689         * config/h8300/popcounthi2.c: Likewise.
25690         * config/i386/ammintrin.h: Likewise.
25691         * config/i386/att.h: Likewise.
25692         * config/i386/avxintrin.h: Likewise.
25693         * config/i386/biarch64.h: Likewise.
25694         * config/i386/bmmintrin.h: Likewise.
25695         * config/i386/cpuid.h: Likewise.
25696         * config/i386/cross-stdarg.h: Likewise.
25697         * config/i386/crtfastmath.c: Likewise.
25698         * config/i386/crtprec.c: Likewise.
25699         * config/i386/cygming-crtbegin.c: Likewise.
25700         * config/i386/cygming-crtend.c: Likewise.
25701         * config/i386/cygwin.asm: Likewise.
25702         * config/i386/emmintrin.h: Likewise.
25703         * config/i386/gmm_malloc.h: Likewise.
25704         * config/i386/gthr-win32.c: Likewise.
25705         * config/i386/i386.h: Likewise.
25706         * config/i386/immintrin.h: Likewise.
25707         * config/i386/linux-unwind.h: Likewise.
25708         * config/i386/linux64.h: Likewise.
25709         * config/i386/mm3dnow.h: Likewise.
25710         * config/i386/mmintrin-common.h: Likewise.
25711         * config/i386/mmintrin.h: Likewise.
25712         * config/i386/nmmintrin.h: Likewise.
25713         * config/i386/pmm_malloc.h: Likewise.
25714         * config/i386/pmmintrin.h: Likewise.
25715         * config/i386/smmintrin.h: Likewise.
25716         * config/i386/sol2-c1.asm: Likewise.
25717         * config/i386/sol2-ci.asm: Likewise.
25718         * config/i386/sol2-cn.asm: Likewise.
25719         * config/i386/sol2-gc1.asm: Likewise.
25720         * config/i386/tmmintrin.h: Likewise.
25721         * config/i386/unix.h: Likewise.
25722         * config/i386/w32-unwind.h: Likewise.
25723         * config/i386/wmmintrin.h: Likewise.
25724         * config/i386/x86-64.h: Likewise.
25725         * config/i386/x86intrin.h: Likewise.
25726         * config/i386/xmmintrin.h: Likewise.
25727         * config/ia64/crtbegin.asm: Likewise.
25728         * config/ia64/crtend.asm: Likewise.
25729         * config/ia64/crtfastmath.c: Likewise.
25730         * config/ia64/crti.asm: Likewise.
25731         * config/ia64/crtn.asm: Likewise.
25732         * config/ia64/fde-glibc.c: Likewise.
25733         * config/ia64/lib1funcs.asm: Likewise.
25734         * config/ia64/linux-unwind.h: Likewise.
25735         * config/ia64/quadlib.c: Likewise.
25736         * config/ia64/unwind-ia64.c: Likewise.
25737         * config/linux.h: Likewise.
25738         * config/m32c/m32c-lib1.S: Likewise.
25739         * config/m32c/m32c-lib2-trapv.c: Likewise.
25740         * config/m32c/m32c-lib2.c: Likewise.
25741         * config/m32r/initfini.c: Likewise.
25742         * config/m68hc11/larith.asm: Likewise.
25743         * config/m68hc11/m68hc11-crt0.S: Likewise.
25744         * config/m68k/cf.md: Likewise.
25745         * config/m68k/crti.s: Likewise.
25746         * config/m68k/crtn.s: Likewise.
25747         * config/m68k/lb1sf68.asm: Likewise.
25748         * config/m68k/linux-unwind.h: Likewise.
25749         * config/mcore/crti.asm: Likewise.
25750         * config/mcore/crtn.asm: Likewise.
25751         * config/mcore/lib1.asm: Likewise.
25752         * config/mips/linux-unwind.h: Likewise.
25753         * config/mips/loongson.h: Likewise.
25754         * config/mips/mips16.S: Likewise.
25755         * config/mmix/crti.asm: Likewise.
25756         * config/mmix/crtn.asm: Likewise.
25757         * config/pa/fptr.c: Likewise.
25758         * config/pa/hpux-unwind.h: Likewise.
25759         * config/pa/lib2funcs.asm: Likewise.
25760         * config/pa/linux-atomic.c: Likewise.
25761         * config/pa/linux-unwind.h: Likewise.
25762         * config/pa/milli64.S: Likewise.
25763         * config/pa/quadlib.c: Likewise.
25764         * config/pa/stublib.c: Likewise.
25765         * config/picochip/libgccExtras/adddi3.asm: Likewise.
25766         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
25767         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
25768         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
25769         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
25770         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
25771         * config/picochip/libgccExtras/divmod15.asm: Likewise.
25772         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
25773         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
25774         * config/picochip/libgccExtras/longjmp.asm: Likewise.
25775         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
25776         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
25777         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
25778         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
25779         * config/picochip/libgccExtras/setjmp.asm: Likewise.
25780         * config/picochip/libgccExtras/subdi3.asm: Likewise.
25781         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
25782         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
25783         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
25784         * config/rs6000/750cl.h: Likewise.
25785         * config/rs6000/altivec.h: Likewise.
25786         * config/rs6000/biarch64.h: Likewise.
25787         * config/rs6000/crtresfpr.asm: Likewise.
25788         * config/rs6000/crtresgpr.asm: Likewise.
25789         * config/rs6000/crtresxfpr.asm: Likewise.
25790         * config/rs6000/crtresxgpr.asm: Likewise.
25791         * config/rs6000/crtsavfpr.asm: Likewise.
25792         * config/rs6000/crtsavgpr.asm: Likewise.
25793         * config/rs6000/darwin-asm.h: Likewise.
25794         * config/rs6000/darwin-fallback.c: Likewise.
25795         * config/rs6000/darwin-fpsave.asm: Likewise.
25796         * config/rs6000/darwin-ldouble.c: Likewise.
25797         * config/rs6000/darwin-tramp.asm: Likewise.
25798         * config/rs6000/darwin-unwind.h: Likewise.
25799         * config/rs6000/darwin-vecsave.asm: Likewise.
25800         * config/rs6000/darwin-world.asm: Likewise.
25801         * config/rs6000/e500crtres32gpr.asm: Likewise.
25802         * config/rs6000/e500crtres64gpr.asm: Likewise.
25803         * config/rs6000/e500crtres64gprctr.asm: Likewise.
25804         * config/rs6000/e500crtrest32gpr.asm: Likewise.
25805         * config/rs6000/e500crtrest64gpr.asm: Likewise.
25806         * config/rs6000/e500crtresx32gpr.asm: Likewise.
25807         * config/rs6000/e500crtresx64gpr.asm: Likewise.
25808         * config/rs6000/e500crtsav32gpr.asm: Likewise.
25809         * config/rs6000/e500crtsav64gpr.asm: Likewise.
25810         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
25811         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
25812         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
25813         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
25814         * config/rs6000/eabi-ci.asm: Likewise.
25815         * config/rs6000/eabi-cn.asm: Likewise.
25816         * config/rs6000/eabi.asm: Likewise.
25817         * config/rs6000/linux-unwind.h: Likewise.
25818         * config/rs6000/linux64.h: Likewise.
25819         * config/rs6000/paired.h: Likewise.
25820         * config/rs6000/paired.md: Likewise.
25821         * config/rs6000/ppc64-fp.c: Likewise.
25822         * config/rs6000/ppu_intrinsics.h: Likewise.
25823         * config/rs6000/rs6000.h: Likewise.
25824         * config/rs6000/si2vmx.h: Likewise.
25825         * config/rs6000/sol-ci.asm: Likewise.
25826         * config/rs6000/sol-cn.asm: Likewise.
25827         * config/rs6000/spe.h: Likewise.
25828         * config/rs6000/spu2vmx.h: Likewise.
25829         * config/rs6000/sysv4.h: Likewise.
25830         * config/rs6000/tramp.asm: Likewise.
25831         * config/rs6000/vec_types.h: Likewise.
25832         * config/s390/linux-unwind.h: Likewise.
25833         * config/s390/tpf-unwind.h: Likewise.
25834         * config/score/crti.asm: Likewise.
25835         * config/score/crtn.asm: Likewise.
25836         * config/sh/crt1.asm: Likewise.
25837         * config/sh/crti.asm: Likewise.
25838         * config/sh/crtn.asm: Likewise.
25839         * config/sh/divtab-sh4-300.c: Likewise.
25840         * config/sh/divtab-sh4.c: Likewise.
25841         * config/sh/divtab.c: Likewise.
25842         * config/sh/lib1funcs-4-300.asm: Likewise.
25843         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
25844         * config/sh/lib1funcs.asm: Likewise.
25845         * config/sh/lib1funcs.h: Likewise.
25846         * config/sh/linux-atomic.asm: Likewise.
25847         * config/sh/linux-unwind.h: Likewise.
25848         * config/sh/shmedia.h: Likewise.
25849         * config/sh/sshmedia.h: Likewise.
25850         * config/sh/ushmedia.h: Likewise.
25851         * config/sparc/crtfastmath.c: Likewise.
25852         * config/sparc/linux-unwind.h: Likewise.
25853         * config/sparc/sol2-c1.asm: Likewise.
25854         * config/sparc/sol2-ci.asm: Likewise.
25855         * config/sparc/sol2-cn.asm: Likewise.
25856         * config/spu/divmodti4.c: Likewise.
25857         * config/spu/divv2df3.c: Likewise.
25858         * config/spu/float_disf.c: Likewise.
25859         * config/spu/float_unsdidf.c: Likewise.
25860         * config/spu/float_unsdisf.c: Likewise.
25861         * config/spu/float_unssidf.c: Likewise.
25862         * config/spu/mfc_multi_tag_release.c: Likewise.
25863         * config/spu/mfc_multi_tag_reserve.c: Likewise.
25864         * config/spu/mfc_tag_release.c: Likewise.
25865         * config/spu/mfc_tag_reserve.c: Likewise.
25866         * config/spu/mfc_tag_table.c: Likewise.
25867         * config/spu/multi3.c: Likewise.
25868         * config/spu/spu_internals.h: Likewise.
25869         * config/spu/spu_intrinsics.h: Likewise.
25870         * config/spu/spu_mfcio.h: Likewise.
25871         * config/spu/vec_types.h: Likewise.
25872         * config/spu/vmx2spu.h: Likewise.
25873         * config/stormy16/stormy16-lib2.c: Likewise.
25874         * config/svr4.h: Likewise.
25875         * config/sync.c: Likewise.
25876         * config/v850/lib1funcs.asm: Likewise.
25877         * config/vxlib-tls.c: Likewise.
25878         * config/vxlib.c: Likewise.
25879         * config/vxworks-dummy.h: Likewise.
25880         * config/xtensa/crti.asm: Likewise.
25881         * config/xtensa/crtn.asm: Likewise.
25882         * config/xtensa/ieee754-df.S: Likewise.
25883         * config/xtensa/ieee754-sf.S: Likewise.
25884         * config/xtensa/lib1funcs.asm: Likewise.
25885         * config/xtensa/lib2funcs.S: Likewise.
25886         * config/xtensa/linux-unwind.h: Likewise.
25887         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
25888         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
25889         * coretypes.h: Likewise.
25890         * crtstuff.c: Likewise.
25891         * defaults.h: Likewise.
25892         * dwarf2.h: Likewise.
25893         * emutls.c: Likewise.
25894         * gbl-ctors.h: Likewise.
25895         * gcov-io.h: Likewise.
25896         * ginclude/float.h: Likewise.
25897         * ginclude/iso646.h: Likewise.
25898         * ginclude/stdarg.h: Likewise.
25899         * ginclude/stdbool.h: Likewise.
25900         * ginclude/stddef.h: Likewise.
25901         * ginclude/stdfix.h: Likewise.
25902         * ginclude/stdint-gcc.h: Likewise.
25903         * ginclude/tgmath.h: Likewise.
25904         * gthr-aix.h: Likewise.
25905         * gthr-dce.h: Likewise.
25906         * gthr-gnat.c: Likewise.
25907         * gthr-gnat.h: Likewise.
25908         * gthr-lynx.h: Likewise.
25909         * gthr-mipssde.h: Likewise.
25910         * gthr-nks.h: Likewise.
25911         * gthr-posix.c: Likewise.
25912         * gthr-posix.h: Likewise.
25913         * gthr-posix95.h: Likewise.
25914         * gthr-rtems.h: Likewise.
25915         * gthr-single.h: Likewise.
25916         * gthr-solaris.h: Likewise.
25917         * gthr-tpf.h: Likewise.
25918         * gthr-vxworks.h: Likewise.
25919         * gthr-win32.h: Likewise.
25920         * gthr.h: Likewise.
25921         * libgcc2.c: Likewise.
25922         * libgcc2.h: Likewise.
25923         * libgcov.c: Likewise.
25924         * tsystem.h: Likewise.
25925         * typeclass.h: Likewise.
25926         * unwind-c.c: Likewise.
25927         * unwind-compat.h: Likewise.
25928         * unwind-dw2-fde-compat.c: Likewise.
25929         * unwind-dw2-fde-darwin.c: Likewise.
25930         * unwind-dw2-fde-glibc.c: Likewise.
25931         * unwind-dw2-fde.c: Likewise.
25932         * unwind-dw2-fde.h: Likewise.
25933         * unwind-dw2.c: Likewise.
25934         * unwind-dw2.h: Likewise.
25935         * unwind-generic.h: Likewise.
25936         * unwind-pe.h: Likewise.
25937         * unwind-sjlj.c: Likewise.
25938         * unwind.inc: Likewise.
25939         * config/arm/neon-gen.ml: Change generated copyright header to
25940         refer to version 3 of the GNU General Public License with
25941         version 3.1 of the GCC Runtime Library Exception and to point
25942         readers at the COPYING3 and COPYING3.RUNTIME files and the
25943         FSF's license web page.
25944         * config/arm/arm_neon.h: Regenerate.
25945
25946 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
25947
25948         * config/cris/cris.md: Change copyright header to refer to version
25949         3 of the GNU General Public License.
25950         * doc/install.texi2html: Change copyright header to refer to version
25951         3 of the GNU General Public License and to point readers at the
25952         COPYING3 file and the FSF's license web page.
25953         * config/vax/linux.h: Likewise.
25954
25955 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
25956
25957         * config/i386/i386.md (cmpcc): New.
25958         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
25959         (sync_compare_and_swap_cc*): Delete.
25960
25961         * config/s390/s390.c (s390_compare_emitted): Remove.
25962         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
25963         s390_compare_emitted used to be handled.  Assert that modes match.
25964         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
25965         refer to sync_compare_and_swap_ccsi.
25966         * config/s390/s390.h (s390_compare_emitted): Remove.
25967         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
25968         instead of s390_compare_emitted.
25969         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
25970         instead of s390_compare_emitted.
25971         * config/s390/s390.md (cmpcc): New.
25972         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
25973         CC_REGNUM, do not pretend it's set.
25974         (sync_compare_and_swap_cc*): Delete.
25975         * config/s390/predicates.md (cc_reg_operand): New.
25976
25977         * expr.c (sync_compare_and_swap_cc): Delete.
25978         * optabs.h (sync_compare_and_swap_cc): Delete.
25979         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
25980         is being used with can_compare_p.
25981         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
25982         (find_cc_set): New.
25983         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
25984         look for a MODE_CC set instead.  Use emit_store_flag.
25985         (expand_compare_and_swap_loop): Likewise, with some additional
25986         complication to avoid a force_reg when useless.  Use
25987         emit_cmp_and_jump_insns.
25988         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
25989         * doc/md.texi (sync_compare_and_swap_cc): Merge with
25990         sync_compare_and_swap documentation.
25991
25992 2009-04-09  Jan Hubicka  <jh@suse.cz>
25993
25994         * except.c (find_prev_try): Break out from ....
25995         (duplicate_eh_regions): ... here; properly update prev_try pointers
25996         when duplication part of tree.
25997         (dump_eh_tree): Improve dumping.
25998         (verify_eh_region): New.
25999         (verify_eh_tree): Use it.
26000
26001 2009-04-06  Richard Guenther  <rguenther@suse.de>
26002
26003         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
26004         &ARRAY addresses by adjusting their types and prepending
26005         a conversion.
26006         * tree-cfg.c (verify_gimple_assign_single): Verify that
26007         addresses are correct.
26008
26009 2009-04-09  Richard Guenther  <rguenther@suse.de>
26010
26011         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
26012         indices into an array reference if possible.
26013         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
26014         Fold POINTER_PLUS_EXPR statements with invariant address.
26015
26016 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
26017
26018         PR target/39634
26019         * config.gcc (powerpc64-*-linux*): Always build biarch.
26020
26021 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
26022
26023         PR c/39613
26024         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
26025         it and pedwarn if this results in an INTEGER_CST.
26026
26027 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26028
26029         * doc/install.texi: Update minimum GMP version.  Remove obsolete
26030         text in MPFR section.
26031
26032 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
26033
26034         * dwarf2out.c (class_scope_p): New static inline.
26035         (class_or_namespace_scope_p): Use it.
26036         (gen_variable_die): Use DW_TAG_member tag for static data member
26037         declarations instead of DW_TAG_variable.
26038
26039         PR middle-end/39573
26040         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
26041         variables.
26042
26043 2009-04-08  Richard Guenther  <rguenther@suse.de>
26044
26045         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
26046         valueize random data.
26047
26048 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
26049
26050         * config.gcc (aix tm_file):  Add aix-stdint.h.
26051         (aix tm clause use_gcc_stdint):  Set to wrap.
26052         * config/rs6000/aix-stdint.h:  New file.
26053
26054 2009-04-08  Richard Guenther  <rguenther@suse.de>
26055
26056         PR middle-end/36291
26057         * tree-dfa.c (add_referenced_var): Do not recurse into
26058         global initializers.
26059         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
26060         exposed variables.
26061         (fold_const_aggregate_ref): Likewise.
26062
26063 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
26064
26065         * recog.c (ordered_comparison_operator): New.
26066         * gensupport.c (std_preds): Add it.
26067         * doc/md.texi (Machine-Independent Predicates): Document it.
26068
26069 2009-04-08  Jan Hubicka  <jh@suse.cz>
26070
26071         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
26072         * function.h (rtl_eh): Remove exception_handler_label_map.
26073         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
26074         remove_exception_handler_label, for_each_eh_label_1): Remove.
26075         (rtl_remove_unreachable_regions): Remove.
26076         (convert_from_eh_region_ranges): Do not remove unreachable regions.
26077         (find_exception_handler_labels): Don't build the hashtable.
26078         (maybe_remove_eh_handler): Remove.
26079         (for_each_eh_label): Rewrite to walk the tree.
26080         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
26081         * except.h (maybe_remove_eh_handler): Remove.
26082         * passes.c (init_optimization_passes): Schedule second EH cleanup
26083         before out-of-ssa.
26084         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
26085         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
26086
26087 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
26088
26089         * genoutput.c (validate_optab_operands): New.
26090         (gen_insn, gen_expand): Call it.
26091
26092         * genflags.c (gen_insn): Detect misused iterators.
26093         (main): Pass line_no to gen_insn, exit with status 1 on error.
26094
26095         * genextract.c (line_no): Make global.
26096         (VEC_safe_set_locstr): Change assertion to error message.
26097         (main): Exit with status 1 on error.
26098
26099 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
26100
26101         PR c/39614
26102         PR c/39673
26103         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
26104         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
26105         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
26106         * c-convert.c (convert): Do not call fold on results of conversion
26107         functions when the result is a C_MAYBE_CONST_EXPR.
26108         * c-parser.c (c_parser_postfix_expression): Do not fold condition
26109         of __builtin_choose_expr.
26110         * c-typeck.c (remove_c_maybe_const_expr): New.
26111         (build_unary_op, build_conditional_expr, build_compound_expr,
26112         build_binary_op, c_objc_common_truthvalue_conversion): Call
26113         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
26114         integer operands.
26115
26116 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
26117
26118         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
26119         CODE to produce a new one. Add a prototype to use fold_convert_const
26120
26121 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
26122
26123         PR bootstrap/39660
26124         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
26125         mix declarations and code.
26126
26127 2009-04-08  Ben Elliston  <bje@au.ibm.com>
26128
26129         * gcc.c: Replace `CC' with `GCC' throughout.
26130
26131 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
26132
26133         * doc/invoke.texi: Document Atom support.
26134
26135 2009-04-07  Jason Merrill  <jason@redhat.com>
26136
26137         PR c++/25185
26138         * c-common.h, c-common.c: Add flag_pretty_templates.
26139         * c-opts.c (c_common_handle_option): Set it.
26140         * c.opt: Add -fno-pretty-templates.
26141         * doc/invoke.texi (C++ Dialect Options): Likewise.
26142
26143 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
26144
26145         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
26146         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
26147         (ia64_expand_builtin): Likewise.
26148
26149 2009-04-07  Martin Jambor  <mjambor@suse.cz>
26150
26151         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
26152         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
26153         ADDR_EXPRS are include too.
26154
26155 2009-04-07  Richard Guenther  <rguenther@suse.de>
26156
26157         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
26158         decls are only used if passes as parameters or if they are
26159         local statics and the call is not to a builtin.
26160         (call_may_clobber_ref_p_1): Likewise.
26161
26162 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
26163
26164         * expr.c (do_store_flag): Remove last argument.  Simplify code
26165         to avoid duplication of tests already done by can_compare_p.
26166         (expand_expr_real_1): Adjust caller.
26167
26168 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
26169
26170         * optabs.c (can_compare_p): Test the predicate of a
26171         cbranch and cstore pattern.
26172
26173 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
26174
26175         * expr.c (convert_move): Use emit_store_flag instead of
26176         "emulating" it.
26177
26178 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
26179
26180         * config/i386/i386.c (ix86_compare_emitted): Remove.
26181         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
26182         ix86_compare_op0 like ix86_compare_emitted used to be handled.
26183         * config/i386/i386.h (ix86_compare_emitted): Remove.
26184         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
26185         instead of ix86_compare_emitted.
26186         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
26187
26188 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
26189
26190         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
26191         Add t-sysroot-suffix to tmake_file.
26192         * config/print-sysroot-suffix.sh: New file.
26193         * config/t-sysroot-suffix: New file.
26194
26195 2009-04-07  Ben Elliston  <bje@au.ibm.com>
26196
26197         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
26198         as the latter produces a warning when the target does not support
26199         infinity.
26200
26201 2009-04-07  Ben Elliston  <bje@au.ibm.com>
26202
26203         * dfp.c: Replace type punning assignments with memcpy throughout.
26204         * Makefile.in (dfp.o-warn): Remove.
26205
26206 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
26207
26208         PR target/39634
26209         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
26210         Include soft-fp/t-softfp after rs6000/t-linux64.
26211
26212 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
26213
26214         * stor-layout.c (set_sizetype): Use the full precision of their
26215         machine mode for bitsize types.
26216
26217 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
26218
26219         * config/i386/i386.md: Revert 2 accidental checkins.
26220
26221 2009-04-06  Joey Ye  <joey.ye@intel.com>
26222             Xuepeng Guo  <xuepeng.guo@intel.com>
26223             H.J. Lu  <hongjiu.lu@intel.com>
26224
26225         Atom pipeline model, tuning and insn selection.
26226         * config.gcc (atom): Add atom config options and target.
26227
26228         * config/i386/atom.md: New.
26229
26230         * config/i386/i386.c (atom_cost): New cost.
26231         (m_ATOM): New macro flag.
26232         (initial_ix86_tune_features): Set m_ATOM.
26233         (x86_accumulate_outgoing_args): Likewise.
26234         (x86_arch_always_fancy_math_387): Likewise.
26235         (processor_target): Add Atom cost.
26236         (cpu_names): Add Atom cpu name.
26237         (override_options): Set Atom ISA.
26238         (ix86_issue_rate): New case PROCESSOR_ATOM.
26239         (ix86_adjust_cost): Likewise.
26240
26241         * config/i386/i386.h (TARGET_ATOM): New target macro.
26242         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
26243         (TARGET_OPT_AGU): New target option.
26244         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
26245         (processor_type): Add PROCESSOR_ATOM.
26246
26247         * config/i386/i386.md (cpu): Add new value "atom".
26248         (use_carry, movu): New attr.
26249         (atom.md): Include atom.md.
26250         (adddi3_carry_rex64): Set attr "use_carry".
26251         (addqi3_carry): Likewise.
26252         (addhi3_carry): Likewise.
26253         (addsi3_carry): Likewise.
26254         (*addsi3_carry_zext): Likewise.
26255         (subdi3_carry_rex64): Likewise.
26256         (subqi3_carry): Likewise.
26257         (subhi3_carry): Likewise.
26258         (subsi3_carry): Likewise.
26259         (x86_movdicc_0_m1_rex64): Likewise.
26260         (*x86_movdicc_0_m1_se): Likewise.
26261         (x86_movsicc_0_m1): Likewise.
26262         (*x86_movsicc_0_m1_se): Likewise.
26263         (*adddi_1_rex64): Emit add insn as much as possible.
26264         (*addsi_1): Likewise.
26265         (return_internal): Set atom_unit.
26266         (return_internal_long): Likewise.
26267         (return_pop_internal): Likewise.
26268         (*rcpsf2_sse): Set atom_sse_attr attr.
26269         (*qrt<mode>2_sse): Likewise.
26270         (*prefetch_sse): Likewise.
26271
26272         * config/i386/i386-c.c (ix86_target_macros_internal): New case
26273         PROCESSOR_ATOM.
26274         (ix86_target_macros_internal): Likewise.
26275
26276         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
26277         (*prefetch_sse_rex): Likewise.
26278         (sse_rcpv4sf2): Likewise.
26279         (sse_vmrcpv4sf2): Likewise.
26280         (sse_sqrtv4sf2): Likewise.
26281         (<sse>_vmsqrt<mode>2): Likewise.
26282         (sse_ldmxcsr): Likewise.
26283         (sse_stmxcsr): Likewise.
26284         (*sse_sfence): Likewise.
26285         (sse2_clflush): Likewise.
26286         (*sse2_mfence): Likewise.
26287         (*sse2_lfence): Likewise.
26288         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
26289         (<sse>_movup<ssemodesuffixf2c>): Likewise.
26290         (avx_movdqu<avxmodesuffix>): Likewise.
26291         (avx_lddqu<avxmodesuffix>): Likewise.
26292         (sse2_movntv2di): Change attr "type" to "ssemov".
26293         (sse2_movntsi): Likewise.
26294         (rsqrtv8sf2): Change attr "type" to "sseadd".
26295         (sse3_addsubv2df3): Set attr "atom_unit".
26296         (sse3_h<plusminus_insn>v4sf3): Likewise.
26297         (*sse2_pmaddwd): Likewise.
26298         (*vec_extractv2di_1_rex64): Likewise.
26299         (*vec_extractv2di_1_avx): Likewise.
26300         (sse2_psadbw): Likewise.
26301         (ssse3_phaddwv8hi3): Likewise.
26302         (ssse3_phaddwv4hi3): Likewise.
26303         (ssse3_phadddv4si3): Likewise.
26304         (ssse3_phadddv2si3): Likewise.
26305         (ssse3_phaddswv8hi3): Likewise.
26306         (ssse3_phaddswv4hi3): Likewise.
26307         (ssse3_phsubwv8hi3): Likewise.
26308         (ssse3_phsubwv4hi3): Likewise.
26309         (ssse3_phsubdv4si3): Likewise.
26310         (ssse3_phsubdv2si3): Likewise.
26311         (ssse3_phsubswv8hi3): Likewise.
26312         (ssse3_phsubswv4hi3): Likewise.
26313         (ssse3_pmaddubsw128): Likewise.
26314         (sse3_pmaddubsw: Likewise.
26315         (ssse3_palignrti): Likewise.
26316         (ssse3_palignrdi): Likewise.
26317
26318 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
26319
26320         * doc/install.texi (Specific): Fix two cross-references to MinGW.
26321
26322 2009-04-06  Richard Guenther  <rguenther@suse.de>
26323
26324         PR tree-optimization/28868
26325         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
26326         of which PHI results we inserted.
26327         (insert_into_preds_of_block): Record inserted PHIs.
26328         (eliminate): Eliminate redundant PHI nodes.
26329         (init_pre): Init inserted_phi_names.
26330
26331 2009-04-06  Richard Guenther  <rguenther@suse.de>
26332
26333         PR tree-optimization/39643
26334         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
26335         IMAGPART_EXPRs of complex constants.
26336         (execute_fold_all_builtins): If we folded a call queue
26337         TODO_update_address_taken.
26338
26339 2009-04-06  Jan Hubicka  <jh@suse.cz>
26340
26341         PR middle-end/39659
26342         * except.c (remove_unreachable_regions): Propagate may_contain_throw
26343         flag.
26344
26345 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
26346
26347         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
26348         delay slot.
26349         (ic_invalidate_array): Likewise.
26350
26351 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
26352
26353         * calls.c (emit_library_call_value_1): Fix a problem with parameter
26354         alignment for library calls.
26355
26356 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
26357
26358         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
26359         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
26360         * config/i386/mingw-stdint.h:  New file.
26361
26362 2009-04-05  Richard Guenther  <rguenther@suse.de>
26363
26364         PR tree-optimization/39648
26365         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
26366         our &A vs. &A[0] IL deficiencies.
26367
26368 2009-04-04  Jan Hubicka  <jh@suse.cz>
26369
26370         * except.c (sjlj_find_directly_reachable_regions): Be ready for
26371         removed toplevel regions.
26372         (sjlj_mark_call_sites): Likewise.
26373
26374 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
26375
26376         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
26377         (cygwin tm clause use_gcc_stdint):  Set to wrap.
26378         * config/i386/cygwin-stdint.h:  New file.
26379
26380 2009-04-04  Richard Guenther  <rguenther@suse.de>
26381
26382         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
26383         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
26384         single-argument PHIs if we are in loop-closed SSA form.
26385         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
26386         for the pre-condition.
26387         (slpeel_tree_peel_loop_to_edge): Likewise.
26388         (vect_build_loop_niters): Take an optional sequence to append stmts.
26389         (vect_generate_tmps_on_preheader): Likewise.
26390         (vect_do_peeling_for_loop_bound): Take extra guards for the
26391         pre-condition.
26392         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
26393         the cost model check.
26394         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
26395         guards if we are going to peel.  Do not apply versioning in that case.
26396         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
26397         (vect_do_peeling_for_loop_bound): Likewise.
26398         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
26399         loop bound only record extra pre-conditions, do not apply loop
26400         versioning.
26401
26402 2009-04-04  Richard Guenther  <rguenther@suse.de>
26403
26404         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
26405         renaming code.
26406
26407 2009-04-04  Jan Hubicka  <jh@suse.cz>
26408
26409         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
26410         last_basic_block for size of bb->index indexed array.
26411         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
26412         compute_out, link_btr_uses, build_btr_def_use_webs,
26413         build_btr_def_use_webs, migrate_btr_defs): Likewise.
26414
26415 2009-04-04  Jan Hubicka  <jh@suse.cz>
26416
26417         * except.c (remove_eh_handler_and_replace): Break out from ...
26418         (remove_eh_handler): ... here.
26419         (bring_to_root): New function.
26420         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
26421         handled ones, bring others to root of tree.
26422
26423 2009-04-04  Jan Hubicka  <jh@suse.cz>
26424
26425         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
26426         (all_phis_safe_to_merge): New function.
26427         (update_info): New structure.
26428         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
26429         (cleanup_empty_eh): Update SSA if possible.
26430
26431 2009-04-04  Richard Guenther  <rguenther@suse.de>
26432
26433         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
26434         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
26435         (append_vuse): Likewise.
26436
26437 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
26438
26439         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
26440         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
26441         instead of REG_UNSAVED for DW_CFA_undefined.
26442         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
26443         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
26444         outermost frame.
26445
26446 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
26447
26448         PR target/39501
26449         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
26450
26451 2009-04-04  Richard Guenther  <rguenther@suse.de>
26452
26453         PR tree-optimization/8781
26454         PR tree-optimization/37892
26455         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
26456         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
26457         (valueize_refs): Call it for *& valueizations.
26458         (shared_reference_ops_from_ref): Rename to ...
26459         (valueize_shared_reference_ops_from_ref): ... this and valueize.
26460         (shared_reference_ops_from_call): Rename to ...
26461         (valueize_shared_reference_ops_from_call): ... this and valueize.
26462         (vn_reference_lookup): Update.
26463         (visit_reference_op_call): Likewise.
26464         * tree-ssa-pre.c (phi_translate_1): Fold *&.
26465         (eliminate): Value-replace the call address in call statements.
26466
26467 2009-04-04  Richard Guenther  <rguenther@suse.de>
26468
26469         PR tree-optimization/39636
26470         * tree-ssa-forwprop.c
26471         (forward_propagate_addr_into_variable_array_index): Check for
26472         GIMPLE_ASSIGN before accessing the rhs code.
26473
26474 2009-04-03  Jason Merrill  <jason@redhat.com>
26475
26476         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
26477
26478 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
26479
26480         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
26481         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
26482         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
26483         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
26484         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
26485         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
26486         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
26487         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
26488         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
26489         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
26490         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
26491         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
26492         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
26493         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
26494         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
26495         Use fr_reg_or_fp01_operand instead of fr_register_operand
26496
26497         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
26498         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
26499         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
26500
26501 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
26502
26503         PR rtl-optimization/39607
26504         PR rtl-optimization/39631
26505
26506         Revert:
26507
26508         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
26509         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
26510         instead of DF_LR_OUT.
26511         * ira-lives.c (process_bb_node_lives): Ditto.
26512         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
26513         instead of DF_LR_{OUT,IN}.
26514         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
26515         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
26516
26517 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
26518
26519         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
26520         (execute_lower_omp): Always run but take the short way out if -fopenmp
26521         is not given.
26522         (gate_lower_omp): Remove, forcing the pass manager to always run the
26523         pass and always set PROP_gimple_lomp.
26524         (pass_lower_omp): Remove gate function.
26525         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
26526         PROP_trees.  Instead, require it.
26527         * ipa-cp.c (pass_ipa_cp): Likewise.
26528         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
26529         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
26530         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
26531         and PROP_gimple_leh.
26532
26533 2009-04-03  Richard Guenther  <rguenther@suse.de>
26534
26535         PR middle-end/13146
26536         PR tree-optimization/23940
26537         PR tree-optimization/33237
26538         PR middle-end/33974
26539         PR middle-end/34093
26540         PR tree-optimization/36201
26541         PR tree-optimization/36230
26542         PR tree-optimization/38049
26543         PR tree-optimization/38207
26544         PR tree-optimization/38230
26545         PR tree-optimization/38301
26546         PR tree-optimization/38585
26547         PR middle-end/38895
26548         PR tree-optimization/38985
26549         PR tree-optimization/39299
26550         * tree-ssa-structalias.h: Remove.
26551         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
26552         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
26553         (struct vuse_element_d): Remove.
26554         (struct vuse_vec_d): Likewise.
26555         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
26556         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
26557         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
26558         VUSE_ELEMENT_VAR): Likewise.
26559         (struct voptype_d): Likewise.
26560         (NUM_VOP_FREE_BUCKETS): Likewise.
26561         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
26562         (struct stmt_operands_d): Remove.
26563         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
26564         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
26565         VDEF_NUM, VDEF_VECT): Likewise.
26566         (copy_virtual_operands): Remove.
26567         (operand_build_cmp): Likewise.
26568         (create_ssa_artificial_load_stmt): Likewise.
26569         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
26570         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
26571         vuse_index and mayuse_index members.  Pack and move done and iter_type
26572         members to the front.
26573         (SSA_OP_VMAYUSE): Remove.
26574         (SSA_OP_VIRTUAL_USES): Adjust.
26575         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
26576         (unlink_stmt_vdef): Declare.
26577         (add_to_addressable_set): Remove.
26578         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
26579         (vrp_visit_stmt): Likewise.
26580         * doc/tree-ssa.texi (Alias analysis): Update.
26581         * doc/invoke.texi (max-aliased-vops): Remove docs.
26582         (avg-aliased-vops): Likewise.
26583         * tree-into-ssa.c (syms_to_rename): Remove.
26584         (need_to_update_vops_p): Likewise.
26585         (need_to_initialize_update_ssa_p): Rename to ...
26586         (update_ssa_initialized_fn): ... this.  Track function we are
26587         initialized for.
26588         (symbol_marked_for_renaming): Simplify.
26589         (add_new_name_mapping): Do not set need_to_update_vops_p.
26590         (dump_currdefs): Use SYMS_TO_RENAME.
26591         (rewrite_update_stmt): Always walk all uses/defs.
26592         (dump_update_ssa): Adjust.
26593         (init_update_ssa): Take function argument.  Track what we are
26594         initialized for.
26595         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
26596         (create_new_def_for): Initialize for cfun, assert we are initialized
26597         for cfun.
26598         (mark_sym_for_renaming): Simplify.
26599         (mark_set_for_renaming): Do not initialize update-ssa.
26600         (need_ssa_update_p): Simplify.  Take function argument.
26601         (name_mappings_registered_p): Assert we ask for the correct function.
26602         (name_registered_for_update_p): Likewise.
26603         (ssa_names_to_replace): Likewise.
26604         (release_ssa_name_after_update_ssa): Likewise.
26605         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
26606         (dump_decl_set): Do not print a newline.
26607         (debug_decl_set): Do it here.
26608         (dump_update_ssa): And here.
26609         * tree-ssa-loop-im.c (move_computations): Adjust.
26610         (movement_possibility): Likewise.
26611         (determine_max_movement): Likewise.
26612         (gather_mem_refs_stmt): Likewise.
26613         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
26614         or NAME_MEMORY_TAG.
26615         * tree-complex.c (update_all_vops): Remove.
26616         (expand_complex_move): Adjust.
26617         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
26618         Simplify test for memory referencing statement.  Exclude
26619         non-invariant ADDR_EXPRs.
26620         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
26621         * tree-loop-distribution.c (generate_memset_zero): Adjust.
26622         (rdg_flag_uses): Likewise.
26623         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
26624         related code.
26625         (tree_optimize_tail_calls_1): Also split the
26626         edge from the entry block if we have degenerate PHI nodes in
26627         the first basic block.
26628         * tree.c (init_ttree): Remove memory-tag related code.
26629         (tree_code_size): Likewise.
26630         (tree_node_structure): Likewise.
26631         (build7_stat): Re-write to be build6_stat.
26632         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
26633         (SSA_VAR_P): Adjust.
26634         (struct tree_memory_tag): Remove.
26635         (struct tree_memory_partition_tag): Likewise.
26636         (union tree_node): Adjust.
26637         (build7): Re-write to be build6.
26638         * tree-pass.h (pass_reset_cc_flags): Remove.
26639         (TODO_update_address_taken): New flag.
26640         (pass_simple_dse): Remove.
26641         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
26642         * params.h (MAX_ALIASED_VOPS): Remove.
26643         (AVG_ALIASED_VOPS): Likewise.
26644         * omp-low.c (expand_omp_taskreg): Update SSA form.
26645         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
26646         aliases the lhs in a copy stmt.
26647         * tree-ssa-dse.c (struct address_walk_data): Remove.
26648         (memory_ssa_name_same): Likewise.
26649         (memory_address_same): Likewise.
26650         (get_kill_of_stmt_lhs): Likewise.
26651         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
26652         unused stores.  Look through PHI nodes into post-dominated regions.
26653         (dse_optimize_stmt): Simplify.  Properly remove stores.
26654         (tree_ssa_dse): Compute dominators.
26655         (execute_simple_dse): Remove.
26656         (pass_simple_dse): Likewise.
26657         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
26658         gimple_loaded_syms and gimple_stored_syms computation.
26659         * toplev.c (dump_memory_report): Dump alias and pta stats.
26660         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
26661         (vn_reference_eq): Likewise.
26662         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
26663         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
26664         valueize_vuses): Remove.
26665         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
26666         (get_def_ref_stmt_vuse): ... this.
26667         (vn_reference_lookup_2): New function.
26668         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
26669         walking equivalent vuses.  Simplify.
26670         (vn_reference_lookup): Likewise.
26671         (vn_reference_insert): Likewise.
26672         (vn_reference_insert_pieces): Likewise.
26673         (visit_reference_op_call): Simplify.
26674         (visit_reference_op_load): Likewise.
26675         (visit_reference_op_store): Likewise.
26676         (init_scc_vn): Remove shared_lookup_vuses initialization.
26677         (free_scc_vn): Remove shared_lookup_vuses freeing.
26678         (sort_vuses, sort_vuses_heap): Remove.
26679         (get_ref_from_reference_ops): Export.
26680         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
26681         vector with single vuse pointer.
26682         (vn_reference_lookup_pieces, vn_reference_lookup,
26683         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
26684         (shared_vuses_from_stmt): Remove.
26685         (get_ref_from_reference_ops): Declare.
26686         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
26687         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
26688         memory-tag related code.
26689         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
26690         (likely_value): Add comment, skip static-chain of call statements.
26691         (surely_varying_stmt_p): Adjust.
26692         (gimplify_and_update_call_from_tree): Likewise.
26693         (execute_fold_all_builtins): Do not rebuild alias info.
26694         (gimplify_and_update_call_from_tree): Properly update VOPs.
26695         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
26696         (copy_ref_info): Remove memory-tag related code.
26697         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
26698         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
26699         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
26700         computation.
26701         * tree-ssa-dom.c (gimple_p): Remove typedef.
26702         (eliminate_redundant_computations): Adjust.
26703         (record_equivalences_from_stmt): Likewise.
26704         (avail_expr_hash): Likewise.
26705         (avail_expr_eq): Likewise.
26706         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
26707         (stmt_makes_single_load): Likewise.
26708         (stmt_makes_single_store): Likewise.
26709         * tree-ssa-alias.c: Rewrite completely.
26710         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
26711         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
26712         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
26713         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
26714         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
26715         Remove public functions.
26716         (pass_reset_cc_flags): Remove.
26717         (pass_build_alias): Move ...
26718         * tree-ssa-structalias.c (pass_build_alias): ... here.
26719         * tree-ssa-alias.c (may_be_aliased): Move ...
26720         * tree-flow-inline.h (may_be_aliased): ... here.
26721         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
26722         count_uses_and_derefs): Move ...
26723         * gimple.c: ... here.
26724         * gimple.h (count_uses_and_derefs): Declare.
26725         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
26726         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
26727         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
26728         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
26729         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
26730         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
26731         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
26732         New functions.
26733         * tree-dfa.c (refs_may_alias_p): Move ...
26734         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
26735         * tree-ssa-alias.h: New file.
26736         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
26737         (statement_sink_location): Likewise.
26738         * opts.c (decode_options): Do not adjust max-aliased-vops or
26739         avg-aliased-vops values.
26740         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
26741         (TV_CALL_CLOBBER): Likewise.
26742         (TV_FLOW_SENSITIVE): Likewise.
26743         (TV_FLOW_INSENSITIVE): Likewise.
26744         (TV_MEMORY_PARTITIONING): Likewise.
26745         (TV_ALIAS_STMT_WALK): New timevar.
26746         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
26747         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
26748         (get_address_description): Remove memory-tag related code.
26749         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
26750         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
26751         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
26752         and immediate uses in statements.  Document.
26753         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
26754         (dump_symbols): Remove.
26755         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
26756         * alias.c (get_deref_alias_set): New function split out from ...
26757         (get_alias_set): ... here.
26758         * alias.h (get_deref_alias_set): Declare.
26759         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
26760         type parameter.  Remove restrict pointer handling.  Create a
26761         ref-all pointer in case type-based alias sets do not conflict.
26762         (vect_analyze_data_refs): Remove SMT related code.
26763         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
26764         (vectorizable_load): Likewise.
26765         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
26766         (DR_SYMBOL_TAG, DR_VOPS): Remove.
26767         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
26768         Ignore vops and SMTs.
26769         (dr_analyze_alias): Likewise..
26770         (free_data_ref): Likewise.
26771         (create_data_ref): Likewise.
26772         (analyze_all_data_dependences): Likewise.
26773         (get_references_in_stmt): Adjust.
26774         * tree-flow-inline.h (gimple_aliases_computed_p,
26775         gimple_addressable_vars, gimple_call_clobbered_vars,
26776         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
26777         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
26778         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
26779         gimple_mem_ref_stats): Remove.
26780         (gimple_vop): New function.
26781         (op_iter_next_use): Remove vuses and mayuses cases.
26782         (op_iter_next_def): Remove vdefs case.
26783         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
26784         (clear_and_done_ssa_iter): Do not set removed fields.
26785         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
26786         Assert we are not iterating over vuses or vdefs if not also
26787         iterating over uses or defs.
26788         (op_iter_init_use): Likewise.
26789         (op_iter_init_def): Likewise.
26790         (op_iter_next_vdef): Remove.
26791         (op_iter_next_mustdef): Likewise.
26792         (op_iter_init_vdef): Likewise.
26793         (compare_ssa_operands_equal): Likewise.
26794         (link_use_stmts_after): Handle vuse operand.
26795         (is_call_used): Use is_call_clobbered.
26796         (is_call_clobbered): Global variables are always call clobbered,
26797         query the call-clobbers bitmap.
26798         (mark_call_clobbered): Ignore global variables.
26799         (clear_call_clobbered): Likewise.
26800         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
26801         virtual operands sanity check.
26802         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
26803         Remove.
26804         (TARGET_MEM_REF): Remove TMR_TAG operand.
26805         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
26806         Remove call-clobber related code.
26807         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
26808         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
26809         partitions or escape reason.
26810         (get_single_def_stmt, get_single_def_stmt_from_phi,
26811         get_single_def_stmt_with_phi): Remove.
26812         (dump_referenced_vars): Tidy.
26813         (get_ref_base_and_extent): Allow bare decls.
26814         (collect_dfa_stats): Adjust.
26815         * graphite.c (rename_variables_in_stmt): Adjust.
26816         (graphite_copy_stmts_from_block): Likewise.
26817         (translate_clast): Likewise.
26818         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
26819         (EXPR_DIES): New.
26820         (translate_vuse_through_block): Use the oracle.
26821         (phi_translate_1): Adjust.
26822         (value_dies_in_block_x): Use the oracle.  Cache the outcome
26823         in EXPR_DIES.
26824         (valid_in_sets): Check if the VUSE for
26825         a REFERENCE is available.
26826         (eliminate): Do not remove stmts during elimination,
26827         instead queue and remove them afterwards.
26828         (do_pre): Do not rebuild alias info.
26829         (pass_pre): Run TODO_rebuild_alias before PRE.
26830         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
26831         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
26832         (mark_all_v_defs_stmt): Remove.
26833         (mark_all_v_defs_seq): Adjust.
26834         (sra_replace): Likewise.
26835         (scalarize_use): Likewise.
26836         (scalarize_copy): Likewise.
26837         (scalarize_init): Likewise.
26838         (scalarize_ldst): Likewise.
26839         (todoflags): Remove.
26840         (tree_sra): Do not rebuild alias info.
26841         (tree_sra_early): Adjust.
26842         (pass_sra): Run TODO_update_address_taken before SRA.
26843         * tree-predcom.c (set_alias_info): Remove.
26844         (prepare_initializers_chain): Do not call it.
26845         (mark_virtual_ops_for_renaming): Adjust.
26846         (mark_virtual_ops_for_renaming_list): Remove.
26847         (initialize_root_vars): Adjust.
26848         (initialize_root_vars_lm): Likewise.
26849         (prepare_initializers_chain): Likewise.
26850         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
26851         (may_propagate_copy_into_stmt): Likewise.
26852         (merge_alias_info): Do nothing for now.
26853         (propagate_tree_value_into_stmt): Adjust.
26854         (stmt_may_generate_copy): Likewise.
26855         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
26856         not mark symbols for renaming.
26857         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
26858         with the same statement, make sure to update the new pointed-to one.
26859         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
26860         call statements, do not mark symbols for renaming.
26861         (mark_operand_necessary): Dump something.
26862         (ref_may_be_aliased): New function.
26863         (mark_aliased_reaching_defs_necessary_1): New helper function.
26864         (mark_aliased_reaching_defs_necessary): Likewise.
26865         (mark_all_reaching_defs_necessary_1): Likewise.
26866         (mark_all_reaching_defs_necessary): Likewise.
26867         (propagate_necessity): Do not process virtual PHIs.  For
26868         non-aliased loads mark all reaching definitions as necessary.
26869         For aliased loads and stores mark the immediate dominating
26870         aliased clobbers as necessary.
26871         (visited): New global static.
26872         (perform_tree_ssa_dce): Free visited bitmap after propagating
26873         necessity.
26874         (remove_dead_phis): Perform simple dead virtual PHI removal.
26875         (remove_dead_stmt): Properly unlink virtual operands when
26876         removing stores.
26877         (eliminate_unnecessary_stmts): Schedule PHI removal after
26878         stmt removal.
26879         * tree-ssa-ter.c (is_replaceable_p): Adjust.
26880         (process_replaceable): Likewise.
26881         (find_replaceable_in_bb): Likewise.
26882         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
26883         based on the single gimple vop.
26884         (verify_flow_insensitive_alias_info): Remove.
26885         (verify_flow_sensitive_alias_info): Likewise.
26886         (verify_call_clobbering): Likewise.
26887         (verify_memory_partitions): Likewise.
26888         (verify_alias_info): Likewise.
26889         (verify_ssa): Adjust..
26890         (execute_update_addresses_taken): Export.  Update SSA
26891         manually.  Optimize only when optimizing.  Use a local bitmap.
26892         (pass_update_address_taken): Remove TODO_update_ssa, add
26893         TODO_dump_func.
26894         (pass_update_address_taken): Just use TODO_update_address_taken.
26895         (init_tree_ssa): Do not initialize addressable_vars.
26896         (verify_ssa): Verify new VUSE / VDEF properties.
26897         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
26898         Do not call verify_alias_info.
26899         (delete_tree_ssa): Clear the VUSE, VDEF operands.
26900         Do not free the loaded and stored syms bitmaps.  Reset the escaped
26901         and callused solutions.  Do not free addressable_vars.
26902         Remove memory-tag related code.
26903         (warn_uninitialized_var): Aliases are always available.
26904         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
26905         * lambda-code.c (can_put_in_inner_loop): Adjust.
26906         (can_put_after_inner_loop): Likewise.
26907         (perfect_nestify): Likewise.
26908         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
26909         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
26910         (vectorizable_conversion): Do not mark symbols for renaming.
26911         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
26912         (expand_call_inline): Unlink the calls virtual operands before
26913         replacing it.
26914         (tree_function_versioning): Do not call update_ssa if we are not
26915         updating clones.  Simplify.
26916         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
26917         (propagate_with_phi): Likewise..
26918         * tree-outof-ssa.c (create_temp): Remove memory tag and call
26919         clobber code.  Assert we are not aliased or global.
26920         * tree-flow.h: Include tree-ssa-alias.h
26921         (enum escape_type): Remove.
26922         (struct mem_sym_stats_d): Likewise.
26923         (struct mem_ref_stats_d): Likewise.
26924         (struct gimple_df): Add vop member.  Remove global_var,
26925         call_clobbered_vars, call_used_vars, addressable_vars,
26926         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
26927         escaped and callused members.
26928         (struct ptr_info_def): Remove all members, add points-to solution
26929         member pt.
26930         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
26931         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
26932         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
26933         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
26934         (tree-ssa-alias.o): Likewise.
26935         (toplev.o): Add tree-ssa-alias.h
26936         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
26937         * gimple.c (gimple_set_bb): Fix off-by-one error.
26938         (is_gimple_reg): Do not handle memory tags.
26939         (gimple_copy): Also copy virtual operands.
26940         Delay updating the statement.  Do not reset loaded and stored syms.
26941         (gimple_set_stored_syms): Remove.
26942         (gimple_set_loaded_syms): Likewise.
26943         (gimple_call_copy_skip_args): Copy the virtual operands
26944         and mark the new statement modified.
26945         * tree-ssa-structalias.c (may_alias_p): Remove.
26946         (set_uids_in_ptset): Take the alias set to prune with as
26947         parameter.  Fold in the alias test of may_alias_p.
26948         (compute_points_to_sets): Compute whether a ptr is dereferenced
26949         in a local sbitmap.
26950         (process_constraint): Deal with &ANYTHING on the lhs, reject all
26951         other ADDRESSOF constraints on the lhs.
26952         (get_constraint_for_component_ref): Assert that we don't get
26953         ADDRESSOF constraints from the base of the reference.
26954         Properly generate UNKNOWN_OFFSET for DEREF if needed.
26955         (struct variable_info): Remove collapsed_to member.
26956         (get_varinfo_fc): Remove.
26957         (new_var_info): Do not set collapsed_to.
26958         (dump_constraint): Do not follow cycles.
26959         (dump_constraint_graph): Likewise.
26960         (build_pred_graph): Likewise.
26961         (build_succ_graph): Likewise.
26962         (rewrite_constraints): Likewise.
26963         (do_simple_structure_copy): Remove.
26964         (do_rhs_deref_structure_copy): Remove.
26965         (do_lhs_deref_structure_copy): Remove.
26966         (collapse_rest_of_var): Remove.
26967         (do_structure_copy): Re-implement.
26968         (pta_stats): New global variable.
26969         (dump_pta_stats): New function.
26970         (struct constraint_expr): Make offset signed.
26971         (UNKNOWN_OFFSET): Define special value.
26972         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
26973         (solution_set_expand): New helper function split out from ...
26974         (do_sd_constraint): ... here.
26975         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
26976         (do_ds_constraint): Likewise.
26977         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
26978         and CALLUSED = *CALLUSED.
26979         (set_union_with_increment): Make inc argument signed.
26980         (type_safe): Remove.
26981         (get_constraint_for_ptr_offset): Handle unknown and negative
26982         constant offsets.
26983         (first_vi_for_offset): Handle offsets before start.  Bail
26984         out early for offsets beyond the variable extent.
26985         (first_or_preceding_vi_for_offset): New function.
26986         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
26987         Together with ESCAPED = *ESCAPED this properly computes reachability.
26988         (find_what_var_points_to): New function.
26989         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
26990         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
26991         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
26992         pt_solutions_intersect): New functions.
26993         (compute_call_used_vars): Remove.
26994         (compute_may_aliases): New main entry into PTA computation.
26995         * gimple.h (gimple_p): New typedef.
26996         (struct gimple_statement_base): Remove references_memory_p.
26997         (struct gimple_statement_with_memory_ops_base): Remove
26998         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
26999         members.
27000         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
27001         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
27002         gimple_set_references_memory): Remove.
27003         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
27004         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
27005         New functions.
27006         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
27007         (verify_expr): Allow RESULT_DECL.
27008         (gimple_duplicate_bb): Do not copy virtual operands.
27009         (gimple_duplicate_sese_region): Adjust.
27010         (gimple_duplicate_sese_tail): Likewise.
27011         (mark_virtual_ops_in_region): Remove.
27012         (move_sese_region_to_fn): Do not call it.
27013         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
27014         and pass_simple_dse.
27015         (execute_function_todo): Handle TODO_update_address_taken,
27016         call execute_update_addresses_taken for TODO_rebuild_alias.
27017         (execute_todo): Adjust.
27018         (execute_one_pass): Init dump files early.
27019         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
27020         call-clobbered.
27021         (create_general_new_stmt): Clear vops.
27022         * tree-ssa-reassoc.c (get_rank): Adjust.
27023         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
27024         symbols for renaming.
27025         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
27026         (PARAM_AVG_ALIASED_VOPS): Likewise.
27027         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
27028         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
27029         * tree-ssa-operands.c: Simplify for new virtual operand representation.
27030         (operand_build_cmp, copy_virtual_operands,
27031         create_ssa_artificial_load_stmt, add_to_addressable_set,
27032         gimple_add_to_addresses_taken): Remove public functions.
27033         (unlink_stmt_vdef): New function.
27034
27035 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
27036
27037         * config.gcc (powerpc-*-linux*): Merge variants.
27038
27039 2009-04-02  Chao-ying Fu  <fu@mips.com>
27040             James Grosbach  <james.grosbach@microchip.com>
27041
27042         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
27043         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
27044         cop0_sp_offset.
27045         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
27046         keep_interrupts_masked_p, use_debug_exception_return_p.
27047         (mips_attribute_table): Add interrupt, use_shadow_register_set,
27048         keep_interrupts_masked, use_debug_exception_return.
27049         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
27050         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
27051         New functions.
27052         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
27053         (mips_print_operand): Process COP0 registers to print $0 .. $31
27054         correctly for GAS to process.
27055         (mips_interrupt_extra_call_saved_reg_p): New function.
27056         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
27057         extra registers.
27058         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
27059         (mips_compute_frame_info): Add supports for interrupt context that
27060         includes doubleword accumulators and COP0 registers.
27061         (mips_for_each_saved_acc): New function.
27062         (mips_for_each_saved_gpr_and_fpr): Change the function name from
27063         mips_for_each_saved_reg.
27064         (mips_save_reg): Save accumulators.
27065         (mips_kernel_reg_p): A new for_each_rtx callback.
27066         (mips_expand_prologue): Support interrupt handlers.
27067         (mips_restore_reg): Restore accumulators.
27068         (mips_expand_epilogue): Support interrupt handlers.
27069         (mips_can_use_return_insn): Return false for interrupt handlers.
27070         (mips_epilogue_uses): New function.
27071         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
27072         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
27073         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
27074         cop0_move): New instructions.
27075         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
27076         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
27077         defines.
27078         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
27079         New defines.
27080         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
27081         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
27082         interrupt handlers, we use K0 as the temporary register.
27083         (EPILOGUE_USES): Change to a function call.
27084         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
27085         handlers, we use K0 as the temporary register.
27086
27087         * doc/extend.texi (Function Attributes): Document interrupt,
27088         use_shadow_register_set, keep_interrupts_masked,
27089         use_debug_exception_return for MIPS attributes.
27090
27091 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
27092
27093         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
27094         Remove a number of t-files from tmake_file.
27095         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
27096         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
27097         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
27098         target_prototype, not TARGET_PROTOTYPE.
27099         (LINK_OS_GNU_SPEC): Define.
27100         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
27101         and darwin-ldoubdle.c.
27102
27103 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
27104
27105         PR driver/39293
27106         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
27107         (cpp_options): Ditto.
27108         (default_compilers): Ditto.
27109         (display_help): Ditto.
27110         (process_command): Ditto.
27111         (do_spec_1): Ditto.
27112         (set_input): Use lbasename instead of duplicate code.
27113         (save_temps_prefix): New static for -save-temps=obj.
27114         (save_temps_length): Ditto.
27115
27116         * doc/invoke.texi (-save-temps=obj): Document new variant to
27117         -save-temps switch.
27118
27119 2009-04-02  Jeff Law  <law@redhat.com>
27120
27121         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
27122         variable.
27123
27124 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
27125
27126         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
27127         * configure: Regenerated.
27128
27129 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
27130
27131         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
27132         share the argument list.
27133
27134 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
27135
27136         Merge
27137
27138         2009-02-12  Diego Novillo  <dnovillo@google.com>
27139
27140         * varpool.c (debug_varpool): New.
27141         * cgraph.h (debug_varpool): Declare.
27142
27143 2009-04-02  Jan Hubicka  <jh@suse.cz>
27144
27145         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
27146         pass.
27147
27148 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
27149
27150         * config/i386/i386.c (ix86_abi): Move initialization to ...
27151         (override_options): Here.
27152
27153 2009-04-02  Christian Bruel  <christian.bruel@st.com>
27154
27155         * config/sh/sh.c (sh_dwarf_register_span): New function.
27156         (TARGET_DWARF_REGISTER_SPAN): Define.
27157         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
27158
27159 2009-04-02  Ira Rosen  <irar@il.ibm.com>
27160
27161         PR tree-optimization/39595
27162         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
27163         interleaved loads group is not  greater than the SLP group size.
27164
27165 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
27166
27167         * builtins.c (is_builtin_name): New.
27168         (called_as_built_in): Use is_builtin_name.
27169         * tree.h (is_builtin_name): New.
27170         * varasm.c (incorporeal_function_p): Use is_builtin_name
27171
27172 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
27173
27174         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
27175
27176 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
27177
27178         PR c++/26693
27179         * c-decl.c (clone_underlying_type): Move this ...
27180         * c-common.c (set_underlying_type): ... here.
27181         Also, make sure the function properly sets TYPE_STUB_DECL() on
27182         the newly created typedef variant type.
27183         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
27184         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
27185         points.
27186
27187 2009-04-02  Richard Guenther  <rguenther@suse.de>
27188
27189         PR tree-optimization/37221
27190         * tree-flow.h (degenerate_phi_result): Declare.
27191         * tree-ssa-dom.c (degenerate_phi_result): Export.
27192         * tree-scalar-evolution.c (analyze_initial_condition): If
27193         the initial condition is defined by a degenerate PHI node
27194         use the degenerate value.
27195
27196 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
27197
27198         PR rtl-optimization/39588
27199         * combine.c (merge_outer_ops): Do not set the constant when this
27200         is not necessary.
27201         (simplify_shift_const_1): Do not modify it either in this case.
27202
27203 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
27204
27205         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
27206         tuning is deprecated if -mtune value is set to an Itanium1 variant.
27207
27208 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
27209
27210         PR c/29027
27211         * c-lex.c (interpret_float): Default (no suffix) is double.
27212
27213 2009-04-1  Xinliang David Li  <davidxl@google.com>
27214
27215         * config/i386/i386.c (legitimate_constant_p): Recognize
27216         all one vector constant.
27217
27218 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27219
27220         * config/vax/vax.c: Add #includes to silence warnings.
27221         Change #include order to silence two warnings.
27222
27223 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27224
27225         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
27226         (ASM_SPEC): Pass -k to the assembler for PIC code.
27227
27228 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27229
27230         * config.gcc: Add vax-*-linux* to the switch.
27231         * config/vax/linux.h: New file. (TARGET_VERSION,
27232         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
27233
27234 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27235
27236         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
27237         Use predicate macros instead of GET_CODE() == foo.
27238         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
27239         ashlsi3, rotrsi3, <unnamed>): Likewise.
27240
27241 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27242
27243         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
27244         jbbccihi, jbbccisi): Remova trailing whitespace.
27245         * config/vax/constraints.md: Likewise.
27246         * config/vax/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
27247         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
27248         * config/vax/predicates.md: Likewise.
27249         * config/vax/vax.c (print_operand_address, vax_output_int_move,
27250         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
27251         * config/vax/vax.h: Likewise.
27252         * config/vax/vax.md (nonlocal_goto): Likewise.
27253
27254 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27255
27256         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
27257         (indirectable_address_p, adjacent_operands_p): Add spaces around
27258         braces.
27259         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
27260
27261 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27262
27263         * config/vax/vax.c (legitimate_constant_address_p,
27264         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
27265         index_term_p, reg_plus_index_p, legitimate_address_p,
27266         vax_mode_dependent_address_p): Update comments to match functions
27267         modified by the recent int->bool conversion.
27268
27269 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27270
27271         * config/vax/builtins.md: Update copyright message.
27272         * config/vax/constraints.md: Likewise.
27273         * config/vax/netbsd-elf.h: Likewise.
27274         * config/vax/predicates.md: Likewise.
27275         * config/vax/vax-protos.h: Likewise.
27276         * config/vax/vax.c: Likewise.
27277         * config/vax/vax.h: Likewise.
27278         * config/vax/vax.md: Likewise.
27279         * config/vax/vax.opt: Likewise.
27280
27281 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27282
27283         * config/vax/builtins.md (ffssi2, ffssi2_internal,
27284         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
27285         * config/vax/constraints.md (B, R): Likewise.
27286         * config/vax/predicates.md (external_memory_operand,
27287         nonimmediate_addsub_di_operand): Likewise.
27288         * config/vax/vax.c (vax_output_int_add): Likewise.
27289         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
27290         untyped_call): Likewise.
27291
27292 2009-04-01  Matt Thomas  <matt@3am-software.com>
27293
27294         * config/vax/predicates.md: New file.
27295         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
27296         external_const_operand, nonsymbolic_operand, external_memory_operand,
27297         indirect_memory_operand, indexed_memory_operand,
27298         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
27299         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
27300         predicate.
27301         * config/vax/constraints.md: New file.
27302         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
27303         New constraint.
27304         * config/vax/builtins.md: New file.
27305         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
27306         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
27307         jbbccisi): Define.
27308         * config/vax/vax.opt (mqmath): Add option.
27309         * config/vax/vax.md (isfx): Extend with DI.
27310         (VAXintQH, VAXintQHSD): Define.
27311         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
27312         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
27313         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
27314         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
27315         (movdi): Update constraints and use vax_output_int_move().
27316         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
27317         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
27318         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
27319         nonlocal_goto): New.
27320         (mov<mode>): Extend accepted operand types.
27321         (subdi3_old): Rename from subdi3, change update constraints and use
27322         a new implementation.
27323         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
27324         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
27325         MOVE_RATIO, CLEAR_RATIO): Define.
27326         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
27327         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
27328         (PRINT_OPERAND): Redefine using a function instead of inlined code.
27329         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
27330         (split_quadword_operands): Make static and really allow variable
27331         splitting.
27332         (print_operand_address): Update for PIC generation.
27333         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
27334         indexable_address_p, fixup_mathdi_operand,
27335         vax_expand_addsub_di_operands, adjacent_operands_p): New.
27336         (vax_float_literal, legitimate_constant_p,
27337         indirectable_constant_address_p, index_term_p,
27338         reg_plus_index_p): Return bool instead of int.
27339         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
27340         where needed.
27341         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
27342         generation.
27343         (vax_output_conditional_branch): Indent.
27344         (legitimate_constant_address_p, indirectable_constant_address_p,
27345         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
27346         vax_mode_dependent_address_p): Return bool instead of int, update for
27347         PIC generation.
27348         * config/vax/vax-protos.h (legitimate_constant_address_p,
27349         legitimate_constant_p, legitimate_address_p,
27350         vax_mode_dependent_address_p): Change declaration to bool.
27351         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
27352         vax_expand_addsub_di_operands, vax_output_int_subtract,
27353         vax_output_movmemsi): Declare.
27354         (split_quadword_operands, vax_float_literal): Delete declaration.
27355         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
27356         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
27357         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
27358         ASM_OUTPUT_DWARF_PCREL): Define.
27359         (ASM_SPEC): Change definition to allow PIC generation.
27360
27361 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
27362
27363         * doc/sourcebuild.texi: Update front-end requirements.
27364
27365 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
27366
27367         PR target/39226
27368         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
27369         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
27370         (booldi3_internal3): Use boolean_or_operator instead of
27371         boolean_operator.
27372
27373 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
27374
27375         PR c/39605
27376         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
27377         declarator whose size is not an integer constant expression but
27378         folds to an integer constant, then treat it as a constant
27379         subsequently.
27380
27381 2009-04-01  Richard Guenther  <rguenther@suse.de>
27382
27383         * fold-const.c (fold_plusminus_mult_expr): Do not fold
27384         i * 4 + 2 to (i * 2 + 1) * 2.
27385
27386 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
27387
27388         PR c/37772
27389         * c-parser.c (c_parser_asm_statement): Skip until close paren and
27390         return if c_parser_asm_string_literal returned NULL.
27391
27392 2009-04-01  Nick Clifton  <nickc@redhat.com>
27393
27394         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
27395         already defined.
27396         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
27397         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
27398         other typedefs to avoid conflicts with libgcc2.c.  Define labels
27399         to gain 16-bit bit-manipulation functions from libgcc2.c and then
27400         include it.
27401         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
27402         to gain 16-bit trapping arithmetic functions from libgcc2.c and
27403         then include it.
27404
27405 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
27406
27407         * varasm.c (default_function_rodata_section): Declare DOT as
27408         const char*.
27409
27410 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
27411             Andrey Galkin  <agalkin@hypercom.com>
27412
27413         PR/39492
27414         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
27415         Make object_name unique for each process.
27416
27417 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
27418
27419         PR other/39591
27420         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
27421         addressable variables in the parallel that could go out of scope while
27422         running queued tasks.
27423
27424 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
27425
27426         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
27427         (CASE_VALUES_THRESHOLD): Redefine.
27428         * config/avr/avr.c (avr_override_options): Remove initialization of
27429         avr_case_values_threshold variable.
27430         (avr_case_values_threshold): Remove variable. Add new function.
27431         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
27432         * config/avr/avr.opt (mno-tablejump): Remove option.
27433         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
27434
27435 2009-04-01  DJ Delorie  <dj@redhat.com>
27436
27437         * varasm.c (default_function_rodata_section): Don't assume
27438         anything about where the first '.' in the section name is.
27439
27440 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
27441
27442         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
27443         rs6000_emit_stack_tie.
27444
27445 2009-03-31  Ian Lance Taylor  <iant@google.com>
27446
27447         * tree-eh.c (tree_remove_unreachable_handlers): Compare
27448         gimple_code with GIMPLE_RESX, not RESX.
27449
27450 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27451
27452         * c-common.c (c_get_ident): New.
27453         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
27454
27455 2009-04-01  Ben Elliston  <bje@au.ibm.com>
27456
27457         * config/rs6000/sysv4.opt (msdata): Improve option description.
27458
27459 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
27460
27461         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
27462         (divdf3_internal_lat): Remove.
27463         (divxf3_internal_lat): Remove.
27464         (divxf3_internal_thr): Remove.
27465         (divxf): Use divxf3_internal.
27466         * config/ia64/div.md (divsf3_internal_lat): New.
27467         (divdf3_internal_lat): New.
27468         (divxf3_internal): New.
27469
27470 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27471
27472         PR c/448
27473         * Makefile.in (USE_GCC_STDINT): Define.
27474         (stmp-int-hdrs): Install stdint.h if applicable.
27475         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
27476         if known.
27477         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
27478         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
27479         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
27480         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
27481         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
27482         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
27483         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
27484         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
27485         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
27486         (c_common_nodes_and_builtins): Initialize
27487         underlying_wchar_type_node.  Do not initialize
27488         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
27489         nodes for new types.
27490         (c_stddef_cpp_builtins): Define macros for new types.
27491         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
27492         Remove.
27493         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
27494         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
27495         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
27496         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
27497         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
27498         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
27499         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
27500         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
27501         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
27502         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
27503         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
27504         int16_type_node, int32_type_node, int64_type_node,
27505         uint8_type_node, uint16_type_node, c_uint32_type_node,
27506         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
27507         int_least32_type_node, int_least64_type_node,
27508         uint_least8_type_node, uint_least16_type_node,
27509         uint_least32_type_node, uint_least64_type_node,
27510         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
27511         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
27512         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
27513         uintptr_type_node): Define.
27514         * c-cppbuiltin.c (builtin_define_constants,
27515         builtin_define_type_minmax): New.
27516         (builtin_define_stdint_macros): Define more macros.
27517         (c_cpp_builtins): Define more limit macros.
27518         (type_suffix): New.
27519         (builtin_define_type_max): Define in terms of
27520         builtin_define_type_minmax.  Remove is_long parameter.  All
27521         callers changed.
27522         * config.gcc (use_gcc_stdint): Define.
27523         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
27524         Add newlib-stdint.h for generic targets.
27525         * config/glibc-stdint.h, config/newlib-stdint.h,
27526         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
27527         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
27528         * config/score/score.h (UINTPTR_TYPE): Define.
27529         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
27530         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
27531         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
27532         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
27533         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
27534         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
27535         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
27536         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
27537         * config/spu/spu.h (STDINT_LONG32): Define.
27538         * configure.ac (use_gcc_stdint): Substitute.
27539         * configure: Regenerate.
27540         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
27541         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
27542         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
27543         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
27544         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
27545         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
27546         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
27547         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
27548         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
27549         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
27550         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
27551         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
27552         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
27553         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
27554         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
27555         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
27556         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
27557         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
27558         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
27559         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
27560         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
27561         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
27562         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
27563         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
27564         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
27565         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
27566         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
27567         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
27568         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
27569
27570 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
27571
27572         * loop-iv.c (suitable_set_for_replacement): Renamed from
27573         simplify_using_assignment; changed to return bool and to accept new
27574         args DEST and SRC.  Return true iff we find a source/destination pair
27575         that can be used to make a replacement, and fill SRC and DEST if so.
27576         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
27577         changed.
27578         (simplify_using_initial_values): Deal with altered regs here and track
27579         more precisely the effect they have on the validity of our expression.
27580
27581         * loop-iv.c (simplify_using_condition): A condition of the form
27582         (EQ REG CONST) can be used to simply make a substitution.
27583         (simplify_using_initial_values): Keep track of conditions we have seen
27584         and keep using them to simplify new expressions, while applying the
27585         same substitutions to them as to the expression.
27586
27587         * simplify-rtx.c (simplify_relational_operation_1): Simplify
27588         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
27589         GEU/LTU reversed.
27590
27591         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
27592         changed.  Use this when trying to improve the upper bound.
27593         Generate the comparison by using simplify_gen_relational.
27594
27595         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
27596
27597         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
27598         functions.
27599         (simplify_using_assignment, simplify_using_initial_values): Call
27600         replace_in_expr to make replacements.  Call replace_single_def_regs
27601         once on the initial version of the expression.
27602
27603 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
27604
27605         PR target/27237
27606         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
27607
27608 2009-03-31  Richard Guenther  <rguenther@suse.de>
27609
27610         PR middle-end/31029
27611         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
27612         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
27613
27614 2009-03-31  Richard Guenther  <rguenther@suse.de>
27615
27616         * tree.h (div_if_zero_remainder): Declare.
27617         * fold-const.c (div_if_zero_remainder): Export.
27618         * tree-ssa-forwprop.c
27619         (forward_propagate_addr_into_variable_array_index): Handle
27620         constant array index addition outside of the variable index.
27621
27622 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27623
27624         PR target/39592
27625         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
27626         define_splits, floatunssi<mode>2): Require x87 conversions from
27627         DImode to be permitted.
27628
27629 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27630
27631         PR preprocessor/15638
27632         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
27633
27634 2009-03-31  Richard Guenther  <rguenther@suse.de>
27635
27636         PR middle-end/23401
27637         PR middle-end/27810
27638         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
27639         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
27640         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
27641         a separate statement.
27642         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
27643         (lookup_tmp_var): Likewise.
27644         (is_gimple_formal_tmp_or_call_rhs): Remove.
27645         (is_gimple_reg_or_call_rhs): Rename to ...
27646         (is_gimple_reg_rhs_or_call): ... this.
27647         (is_gimple_mem_or_call_rhs): Rename to ...
27648         (is_gimple_mem_rhs_or_call): ... this.
27649         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
27650         DECL_GIMPLE_REG_P only if is_formal is true.
27651         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
27652         for non-proper post-modify expression gimplification.
27653         (gimplify_self_mod_expr): For post-modify expressions gimplify
27654         the lvalue to a minimal lvalue.
27655         (rhs_predicate_for): Remove formal temp case.
27656         (gimplify_modify_expr_rhs): Likewise.
27657         (gimplify_addr_expr): Use is_gimple_reg.
27658         (gimplify_expr): Remove formal temp cases.
27659         (gimple_regimplify_operands): Likewise.
27660         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
27661         and FILTER_EXPR like constants.
27662         * gimple.c (walk_gimple_op): Fix val_only initialization, use
27663         is_gimple_reg.
27664         (is_gimple_formal_tmp_rhs): Remove.
27665         (is_gimple_reg_rhs): Remove special casing.
27666         (is_gimple_mem_rhs): Fix.
27667         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
27668         (is_gimple_formal_tmp_var): Remove.
27669         (is_gimple_formal_tmp_reg): Likewise.
27670         (is_gimple_min_lval): Allow invariant component ref parts.
27671         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
27672         is_gimple_formal_tmp_reg): Remove declarations.
27673         * tree-cfg.c (verify_expr): Verify that variables with address
27674         taken do not have DECL_GIMPLE_REG_P set.
27675         * tree-mudflap.c (mf_build_check_statement_for): Use
27676         force_gimple_operand instead of gimplify_expr.
27677
27678 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
27679
27680         * modulo-sched.c (sms_schedule_by_order): Pass the actual
27681         schedulable rows to compute_split_row.
27682
27683 2009-03-31  Ben Elliston  <bje@au.ibm.com>
27684
27685         PR target/31635
27686         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
27687         OPT_mvrsave.
27688
27689 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
27690
27691         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
27692         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
27693         * configure: Regenerate.
27694         * config.in: Regenerate.
27695         * config/rs6000/rs6000.opt (mtls-markers): Add.
27696         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
27697         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
27698         (tls_ld_aix, tls_ld_sysv): Likewise.
27699         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
27700         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
27701
27702 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
27703
27704         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
27705
27706 2009-03-30  Jan Hubicka  <jh@suse.cz>
27707
27708         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
27709         out of RESX.
27710         (tree_remove_unreachable_handlers): Cleanup EH predecestor
27711         detection and label handling.
27712
27713 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
27714
27715         * ira-int.h (ira_allocno): Rename left_conflicts_num to
27716         left_conflicts_size.
27717         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
27718         ALLOCNO_LEFT_CONFLICTS_SIZE.
27719
27720         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
27721         remove_allocno_from_bucket_and_push,
27722         allocno_spill_priority_compare, push_allocnos_to_stack,
27723         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
27724         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
27725         (setup_allocno_left_conflicts_num): Ditto.  Rename to
27726         setup_allocno_left_conflicts_size.
27727         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
27728         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
27729         setup_allocno_left_conflicts_size instead of
27730         setup_allocno_left_conflicts_num.
27731
27732         * ira-build.c (ira_create_allocno): Use
27733         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
27734         ALLOCNO_LEFT_CONFLICTS_NUM.
27735
27736 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
27737
27738         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
27739         instead of DF_LR_OUT.
27740
27741         * ira-lives.c (process_bb_node_lives): Ditto.
27742
27743         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
27744         instead of DF_LR_{OUT,IN}.
27745
27746         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
27747
27748         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
27749
27750 2009-03-30  Jan Hubicka  <jh@suse.cz>
27751
27752         * except.c (label_to_region_map): Fix thinko.
27753
27754 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
27755
27756         PR middle-end/38237
27757         * tree.h (tree_find_value): New declaration.
27758         * tree.c (tree_find_value): New function.
27759         * varasm.c (assemble_external): Avoid duplicate entries on lists.
27760
27761 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
27762
27763         PR debug/39563
27764         * c-decl.c (struct c_binding): Add locus field.
27765         (bind): Add locus argument, set locus field from it.
27766         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
27767         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
27768         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
27769         implicitly_declare, undeclared_variable, lookup_label,
27770         declare_label, c_make_fname_decl, c_builtin_function,
27771         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
27772         bind callers.
27773
27774 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
27775
27776         PR target/38781
27777         * config/i386/i386.c (classify_argument): Check total size of
27778         structure.
27779
27780 2009-03-30  Martin Jambor  <mjambor@suse.cz>
27781
27782         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
27783         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
27784         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
27785         respectively.
27786
27787         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
27788         seen_variable_array_ref while also traversing a union.
27789
27790         * tree-inline.c (optimize_inline_calls): Do not call
27791         cgraph_node_remove_callees.
27792         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
27793         (pass_remove_cgraph_callee_edges): New variable.
27794         * passes.c (init_optimization_passes): Add
27795         pass_remove_cgraph_callee_edges after early inlining and before all
27796         late intraprocedural passes.
27797
27798         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
27799
27800 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27801
27802         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
27803         Fix typos in names.
27804
27805 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27806
27807         * combine.c (simplify_comparison): Use have_insn_for.
27808         * dojump.c (do_jump): Likewise.
27809
27810 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27811
27812         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
27813         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
27814         sparc_compare_op0 like sparc_compare_emitted used to be handled.
27815         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
27816         instead of sparc_compare_emitted.
27817         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
27818         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
27819         instead of sparc_compare_emitted.
27820
27821 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27822
27823         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
27824         enter/exit cfglayout mode.
27825         (pass_partition_block): Require it.
27826         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
27827         (combine_instructions): Track basic blocks instead of labels.
27828         (update_cfg_for_uncondjump): New.
27829         (try_combine): Use it.  Update jumps after rescanning.
27830         (pass_combine): Require PROP_cfglayout.
27831         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
27832
27833 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27834
27835         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
27836         Provide/destroy PROP_cfglayout respectively.
27837         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
27838         * tree-pass.h (PROP_cfglayout): New.
27839
27840 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27841
27842         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
27843         fold_convert_const_fixed_from_fixed,
27844         fold_convert_const_fixed_from_int,
27845         fold_convert_const_fixed_from_real, fold_negate_const): Do not
27846         set TREE_CONSTANT_OVERFLOW.
27847         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
27848         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
27849
27850 2009-03-30  Ira Rosen  <irar@il.ibm.com>
27851
27852         * tree-vect-loop-manip.c: New file.
27853         * tree-vectorizer.c: Update documentation and included files.
27854         (vect_loop_location): Make extern.
27855         (rename_use_op): Move to tree-vect-loop-manip.c
27856         (rename_variables_in_bb, rename_variables_in_loop,
27857         slpeel_update_phis_for_duplicate_loop,
27858         slpeel_update_phi_nodes_for_guard1,
27859         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
27860         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
27861         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
27862         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
27863         find_loop_location): Likewise.
27864         (new_stmt_vec_info): Move to tree-vect-stmts.c.
27865         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
27866         get_vectype_for_scalar_type, vect_is_simple_use,
27867         supportable_widening_operation, supportable_narrowing_operation):
27868         Likewise.
27869         (bb_in_loop_p): Move to tree-vect-loop.c.
27870         (new_loop_vec_info, destroy_loop_vec_info,
27871         reduction_code_for_scalar_code, report_vect_op,
27872         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
27873         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
27874         (vect_supportable_dr_alignment): Likewise.
27875         * tree-vectorizer.h (tree-data-ref.h): Include.
27876         (vect_loop_location): Declare.
27877         Reorganize function declarations according to the new file structure.
27878         * tree-vect-loop.c: New file.
27879         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
27880         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
27881         * tree-vect-data-refs.c: New file.
27882         * tree-vect-patterns.c (timevar.h): Don't include.
27883         * tree-vect-stmts.c: New file.
27884         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
27885         tree-vect-slp.c, tree-vect-loop.c.
27886         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
27887         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
27888         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
27889         (tree-vect-analyze.o): Remove.
27890         (tree-vect-transform.o): Likewise.
27891         (tree-vect-data-refs.o): Add rule.
27892         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
27893         tree-vect-slp.o): Likewise.
27894         (tree-vect-patterns.o): Remove redundant dependencies.
27895         (tree-vectorizer.o): Likewise.
27896         * tree-vect-slp.c: New file.
27897
27898 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
27899
27900         * optc-gen.awk: Warn if an option flag has multiple different
27901         help strings.
27902
27903 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
27904
27905         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
27906         -floop-block): Document dependences on PPL, CLooG and Graphite.
27907
27908 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
27909
27910         PR rtl-optimization/323
27911         * c-common.c (c_fully_fold, convert_and_check,
27912         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
27913         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
27914         * c-common.def (EXCESS_PRECISION_EXPR): New.
27915         * c-cppbuiltin.c (builtin_define_float_constants): Define
27916         constants with enough digits for long double.
27917         * c-lex.c (interpret_float): Interpret constant with excess
27918         precision where appropriate.
27919         * c-opts.c (c_common_post_options): Set
27920         flag_excess_precision_cmdline.  Give an error for
27921         -fexcess-precision=standard for C++ for processors where the
27922         option is significant.
27923         * c-parser.c (c_parser_conditional_expression): Handle excess
27924         precision in condition.
27925         * c-typeck.c (convert_arguments): Handle arguments with excess
27926         precision.
27927         (build_unary_op): Move excess precision outside operation.
27928         (build_conditional_expr): Likewise.
27929         (build_compound_expr): Likewise.
27930         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
27931         (build_modify_expr): Handle excess precision in RHS.
27932         (convert_for_assignment): Handle excess precision in converted
27933         value.
27934         (digest_init, output_init_element, process_init_element): Handle
27935         excess precision in initializer.
27936         (c_finish_return): Handle excess precision in return value.
27937         (build_binary_op): Handle excess precision in operands and add
27938         excess precision as needed for operation.
27939         * common.opt (-fexcess-precision=): New option.
27940         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
27941         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
27942         For standard excess precision, output explicit conversion to and
27943         truncation from XFmode.
27944         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
27945         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
27946         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
27947         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
27948         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
27949         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
27950         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
27951         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
27952         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
27953         define_splits, sqrt<mode>2): Disable where appropriate for
27954         standard excess precision.
27955         * convert.c (convert_to_real): Do not shorten arithmetic to type
27956         for which excess precision would be used.
27957         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
27958         * doc/invoke.texi (-fexcess-precision=): Document option.
27959         (-mfpmath=): Correct index entry.
27960         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
27961         flag_excess_precision): New.
27962         * langhooks.c (lhd_post_options): Set
27963         flag_excess_precision_cmdline.
27964         * opts.c (common_handle_option): Handle -fexcess-precision=.
27965         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
27966         init_excess_precision): New.
27967         (lang_dependent_init_target): Call init_excess_precision.
27968         * tree.c (excess_precision_type): New.
27969         * tree.h (excess_precision_type): Declare.
27970
27971 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
27972
27973         PR c/35235
27974         * c-typeck.c (build_component_ref): Do not copy qualifiers from
27975         non-lvalue to component.
27976
27977 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
27978
27979         PR preprocessor/34695
27980         * Makefile.in (c-opts.o): Depend on c-tree.h.
27981         * c-common.c: Move down include of diagnostic.h.
27982         (done_lexing, c_cpp_error): New.
27983         * c-common.h (done_lexing): Declare.
27984         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
27985         (parse_in).
27986         * c-opts.c: Include c-tree.h.
27987         (c_common_init_options): Set preprocessor error callback.
27988         (c_common_handle_option): Do not set preprocessor
27989         inhibit_warnings, warnings_are_errors, warn_system_headers,
27990         pedantic_errors or inhibit_warnings flags.
27991         (c_common_post_options): Do not check cpp_errors (parse_in).
27992         (c_common_finish): Do not output dependencies if there were
27993         errors.  Do not check return value of cpp_finish.
27994         * c-ppoutput.c (pp_file_change): Set input_location.
27995         * c-tree.h (c_cpp_error): Declare.
27996         * diagnostic.c (diagnostic_set_info_translated): Also initialize
27997         override_column.
27998         (diagnostic_build_prefix): Check override_column.
27999         * diagnostic.h (diagnostic_info): Add override_column field.
28000         (diagnostic_override_column): Define.
28001
28002 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
28003
28004         * c-common.c (c_expand_expr, c_staticp): Remove.
28005         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
28006         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
28007         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
28008         * c-gimplify.c (gimplify_compound_literal_expr,
28009         optimize_compound_literals_in_ctor): Remove.
28010         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
28011         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
28012         * c-semantics.c (emit_local_var): Remove.
28013
28014         * langhooks-def.h (lhd_expand_expr): Remove.
28015         * langhooks.c (lhd_expand_expr): Remove.
28016         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
28017
28018         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
28019         handling from c-semantics.c; don't call into langhook.
28020         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
28021         * gimplify.c (gimplify_compound_literal_expr,
28022         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
28023         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
28024         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
28025         as was done in c-gimplify.c.
28026         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
28027         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
28028         Move from c-common.h.
28029         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
28030
28031         * tree.c (staticp): Do not call langhook.
28032         * langhooks.c (lhd_staticp): Delete.
28033         * langhooks-def.h (lhd_staticp): Delete prototype.
28034         (LANG_HOOKS_STATICP): Delete.
28035         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
28036
28037         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
28038         instead of DECL_STMTs.
28039
28040 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
28041
28042         PR c/456
28043         PR c/5675
28044         PR c/19976
28045         PR c/29116
28046         PR c/31871
28047         PR c/35198
28048         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
28049         void_type_node.
28050         (fold_call_expr): Return a NOP_EXPR from folding rather than the
28051         contained expression.
28052         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
28053         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
28054         conditional expressions for C.
28055         (decl_constant_value_for_optimization): Move from
28056         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
28057         whether optimizing and that the expression is a VAR_DECL not of
28058         array type instead of doing such checks in the caller.  Do not
28059         check pedantic.  Call gcc_unreachable for C++.
28060         * c-common.def (C_MAYBE_CONST_EXPR): New.
28061         * c-common.h (c_fully_fold, c_save_expr,
28062         decl_constant_value_for_optimization): New prototypes.
28063         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
28064         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
28065         EXPR_INT_CONST_OPERANDS): Define.
28066         * c-convert.c (convert): Strip nops from expression.
28067         * c-decl.c (groktypename): Take extra parameters expr and
28068         expr_const_operands.  Update call to grokdeclarator.
28069         (start_decl): Update call to grokdeclarator.  Add statement for
28070         expressions used in type of decl.
28071         (grokparm): Update call to grokdeclarator.
28072         (push_parm_decl): Update call to grokdeclarator.
28073         (build_compound_literal): Add parameter non_const and build a
28074         C_MAYBE_COSNT_EXPR if applicable.
28075         (grokdeclarator): Take extra parameters expr and
28076         expr_const_operands.  Track expressions used in declaration
28077         specifiers and declarators.  Fold array sizes and track whether
28078         they are constant expressions and whether they are integer
28079         constant expressions.
28080         (parser_xref_tag): Set expr and expr_const_operands fields in
28081         return value.
28082         (grokfield): Update call to grokdeclarator.
28083         (start_function): Update call to grokdeclarator.
28084         (build_null_declspecs): Set expr and expr_const_operands fields in
28085         return value.
28086         (declspecs_add_type): Handle expressions in typeof specifiers.
28087         * c-parser.c (c_parser_declspecs): Set expr and
28088         expr_const_operands fields for declaration specifiers.
28089         (c_parser_enum_specifier): Likewise.
28090         (c_parser_struct_or_union_specifier): Likewise.
28091         (c_parser_typeof_specifier): Likewise.  Update call to
28092         groktypename.  Fold expression as needed.  Return expressions with
28093         type instead of adding statements.
28094         (c_parser_attributes): Update calls to c_parser_expr_list.
28095         (c_parser_statement_after_labels): Fold expression before passing
28096         to objc_build_throw_stmt.
28097         (c_parser_condition): Fold expression.
28098         (c_parser_asm_operands): Fold expression.
28099         (c_parser_conditional_expression): Use c_save_expr.  Update call
28100         to build_conditional_expr.
28101         (c_parser_alignof_expression): Update call to groktypename.
28102         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
28103         original_code.  Fold expression argument of va_arg.  Create
28104         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
28105         argument to va_arg.  Update calls to groktypename.  Fold array
28106         index for offsetof.  Verify that first argument to
28107         __builtin_choose_expr has integer type.
28108         (c_parser_postfix_expression_after_paren_type): Update calls to
28109         groktypename and build_compound_literal.  Handle expressions with
28110         side effects in type name.
28111         (c_parser_postfix_expression_after_primary): Update call to
28112         c_parser_expr_list.  Set original_code for calls to
28113         __builtin_constant_p.
28114         (c_parser_expr_list): Take extra parameter fold_p.  Fold
28115         expressions if requested.
28116         (c_parser_objc_type_name): Update call to groktypename.
28117         (c_parser_objc_synchronized_statement): Fold expression.
28118         (c_parser_objc_receiver): Fold expression.
28119         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
28120         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
28121         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
28122         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
28123         (struct c_typespec): Add elements expr and expr_const_operands.
28124         (struct c_declspecs): Add elements expr and expr_const_operands.
28125         (groktypename, build_conditional_expr, build_compound_literal):
28126         Update prototypes.
28127         (in_late_binary_op): Declare.
28128         * c-typeck.c (note_integer_operands): New function.
28129         (in_late_binary_op): New variable.
28130         (decl_constant_value_for_broken_optimization): Move to c-common.c
28131         and rename to decl_constant_value_for_optimization.
28132         (default_function_array_conversion): Do not strip nops.
28133         (default_conversion): Do not call
28134         decl_constant_value_for_broken_optimization.
28135         (build_array_ref): Do not fold result.
28136         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
28137         result when operand is a VLA.
28138         (c_expr_sizeof_type): Update call to groktypename.  Handle
28139         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
28140         result when operand names a VLA type.
28141         (build_function_call): Update call to build_compound_literal.
28142         Only fold result for calls to __builtin_* functions.  Strip
28143         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
28144         the function designator.
28145         (convert_arguments): Fold arguments.  Update call to
28146         convert_for_assignment.
28147         (build_unary_op): Handle increment and decrement of
28148         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
28149         decrement earlier.  Fold operand of increment and decrement.
28150         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
28151         built for integer operand.  Wrap returns that are INTEGER_CSTs
28152         without being integer constant expressions or that have integer
28153         constant operands without being INTEGER_CSTs.
28154         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
28155         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
28156         result is an integer constant expression or can be used in
28157         unevaluated parts of one and avoid folding and wrap as
28158         appropriate.  Fold operands before possibly doing -Wsign-compare
28159         warnings.
28160         (build_compound_expr): Wrap result for C99 if operands can be used
28161         in integer constant expressions.
28162         (build_c_cast): Update call to digest_init.  Do not ignore
28163         overflow from casting floating-point constants to integers.  Wrap
28164         results that could be confused with integer constant expressions,
28165         null pointer constants or floating-point constants.
28166         (c_cast_expr): Update call to groktypename.  Handle expressions
28167         included in type name.
28168         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
28169         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
28170         Update calls to convert_for_assignment.
28171         (convert_for_assignment): Take new parameter
28172         null_pointer_constant.  Do not strip nops or call
28173         decl_constant_value_for_broken_optimization.  Set
28174         in_late_binary_op for conversions to boolean.
28175         (store_init_value): Update call to digest_init.
28176         (digest_init): Take new parameter null_pointer_constant.  Do not
28177         call decl_constant_value_for_broken_optimization.  pedwarn for
28178         initializers not constant expressions.  Update calls to
28179         convert_for_assignment.
28180         (constructor_nonconst): New.
28181         (struct constructor_stack): Add nonconst element.
28182         (really_start_incremental_init, push_init_level, pop_init_level):
28183         Handle constructor_nonconst and nonconst element.
28184         (set_init_index): Call constant_expression_warning for array
28185         designators.
28186         (output_init_element): Fold value.  Set constructor_nonconst as
28187         applicable.  pedwarn for initializers not constant expressions.
28188         Update call to digest_init.  Call constant_expression_warning
28189         where constant initializers are required.
28190         (process_init_element): Use c_save_expr.
28191         (c_finish_goto_ptr): Fold expression.
28192         (c_finish_return): Fold return value.  Update call to
28193         convert_for_assignment.
28194         (c_start_case): Fold switch expression.
28195         (c_process_expr_stmt): Fold expression.
28196         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
28197         ensure statement expression is not evaluated in constant expression.
28198         (build_binary_op): Track whether results are integer constant
28199         expressions or may occur in such, disable folding and wrap results
28200         as applicable.  Fold operands for -Wsign-compare warnings unless
28201         in_late_binary_op.
28202         (c_objc_common_truthvalue_conversion): Handle results folded to
28203         integer constants that are not integer constant expressions.
28204         * doc/extend.texi: Document when typeof operands are evaluated,
28205         that condition of __builtin_choose_expr is an integer constant
28206         expression, and more about use of __builtin_constant_p in
28207         initializers.
28208
28209 2009-03-29  Richard Guenther  <rguenther@suse.de>
28210
28211         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
28212         propagate addresses of array references.
28213
28214 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
28215
28216         * regmove.c (perhaps_ends_bb_p): Remove.
28217         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
28218         from INSN and check that the main loop stays within that basic block.
28219         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
28220         (regmove_forward_pass): Split out from regmove_optimize.  Use
28221         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
28222         (regmove_backward_pass): Split out from regmove_optimize.  Use
28223         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
28224         (regmove_optimize): Simplify.
28225
28226 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
28227
28228         PR target/39545
28229         * config/i386/i386.c (classify_argument): Ignore flexible array
28230         member in struct and warn ABI change.
28231
28232 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
28233
28234         * config/i386/i386-protos.h (ix86_agi_dependent): New.
28235
28236         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
28237         (ix86_adjust_cost): Updated.
28238
28239 2009-03-29  Jan Hubicka  <jh@suse.cz>
28240
28241         PR middle-end/28850
28242         * tree-pass.h (pass_cleanup_eh): New function.
28243         (remove_unreachable_regions): Break code handling RTL
28244         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
28245         that can not be reached by runtime.
28246         (can_be_reached_by_runtime): New function.
28247         (label_to_region_map): New function.
28248         (num_eh_regions): New function.
28249         (rtl_remove_unreachable_regions): New function.
28250         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
28251         (remove_eh_region): New function.
28252         * except.h: Include sbitmap and vecprim.
28253         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
28254         num_eh_regions): Declare.
28255         * passes.c (init_optimization_passes): Schedule cleanup_eh.
28256         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
28257         * tree-eh.c (tree_remove_unreachable_handlers): New function.
28258         (tree_empty_eh_handler_p): New function.
28259         (cleanup_empty_eh): New function.
28260         (cleanup_eh): New function.
28261         (pass_cleanup_eh): New function.
28262
28263 2009-03-29  Jan Hubicka  <jh@suse.cz>
28264
28265         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
28266         for removed regions.
28267
28268 2009-03-29  Jan Hubicka  <jh@suse.cz>
28269
28270         * except.c (dump_eh_tree): Dump all datastructures.
28271
28272 2009-03-29  Jan Hubicka  <jh@suse.cz>
28273
28274         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
28275         (duplicate_eh_regions_1): Likewise.
28276         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
28277         vector; call EH verification.
28278         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
28279         Be ready for region being removed.
28280
28281 2009-03-29  Jan Hubicka  <jh@suse.cz>
28282
28283         * bitmap.c (bitmap_last_set_bit): New function.
28284         * bitmap.h (bitmap_last_set_bit): Declare.
28285
28286 2009-03-29  David Ayers  <ayers@fsfe.org>
28287
28288         PR objc/27377
28289         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
28290         by calling objc_compare_types and surpress warnings about
28291         incompatible C pointers that are compatible ObjC pointers.
28292
28293 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
28294
28295         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
28296         call initialize_inline_failed.
28297         (initialize_inline_failed): Move it from here ...
28298         * cgraph.c (initialize_inline_failed): ... to here.
28299         (cgraph_create_edge): Call initialize_inline_failed rather than
28300         setting inline_failed directly.
28301
28302 2009-03-29  Ben Elliston  <bje@au.ibm.com>
28303
28304         PR target/32542
28305         * sysv4.opt (msdata): Improve comment.
28306         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
28307         * sysv4.h (SVR4_ASM_SPEC): Likewise.
28308
28309 2009-03-29  Ben Elliston  <bje@au.ibm.com>
28310
28311         PR target/30451
28312         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
28313         load and store attributes.
28314
28315 2009-03-29  Ben Elliston  <bje@au.ibm.com>
28316
28317         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
28318         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
28319         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
28320         * doc/extend.texi (X86 Built-in Functions): Add index entries for
28321         __builtin_infq and __builtin_huge_valq.
28322
28323 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
28324
28325         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
28326         atmega8m1 devices.
28327         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
28328         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
28329
28330 2009-03-28  Xinliang David Li  <davidxl@google.com>
28331
28332         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
28333         (do_dbg_cnt): New function.
28334
28335 2009-03-28  Jan Hubicka  <jh@suse.cz>
28336
28337         Merge from pretty-ipa:
28338
28339         2009-03-27  Jan Hubicka  <jh@suse.cz>
28340
28341         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
28342         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
28343         * passes.c (function_called_by_processed_nodes_p): New.
28344         * ipa-pure-const.c (check_call): Fix handling of operands.
28345         (analyze_function): Dump debug output for skipped bodies.
28346         (local_pure_const): Use function_called_by_processed_nodes_p.
28347         * dwarf2out.c (reference_to_unused): Use output.
28348         * passes.c (do_per_function_toporder): Likewise.
28349
28350         2008-11-12  Jan Hubicka  <jh@suse.cz>
28351
28352         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
28353         * ipa-pure-const.c (funct_state_d): Add can throw field; make
28354         state_set_in_source enum
28355         (check_decl): Ignore memory tags; do not set fake looping flags;
28356         dump diagnostics.
28357         (check_operand, check_tree, check_rhs_var, check_lhs_var,
28358         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
28359         (check_call, analyze_function): Rewrite.
28360         (check_stmt): New.
28361         (add_new_function): Update call of analyze_function.
28362         (generate_summary): Add call of analyze_function.
28363         (propagate): Propagate can_throw; handle state_set_in_source correctly.
28364         (local_pure_const): New function.
28365         (pass_local_pure_const): New pass.
28366         * ipa-inline.c (inline_transform): Set after_inlining.
28367         * tree-eh.c (stmt_can_throw_external): New.
28368         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
28369         work with aliasing built.
28370         * tree-flow.h (stmt_can_throw_external): New.
28371         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
28372         and local pure/const pass in early and late optimization queue.
28373
28374 2009-03-28  Martin Jambor  <mjambor@suse.cz>
28375
28376         * fold-const.c (get_pointer_modulus_and_residue): New parameter
28377         allow_func_align.
28378         (fold_binary): Allow function decl aligment consideration is the
28379         second argument is integer constant one.
28380         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
28381         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
28382         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
28383
28384 2009-03-28  Jan Hubicka  <jh@suse.cz>
28385
28386         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
28387         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
28388         * function.h (rtl_data): Add nothrow flag.
28389         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
28390         set DECL_NOTHROW for AVAILABLE functions.
28391
28392 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
28393
28394         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
28395         following vector keyword has expansion starting with pixel or bool
28396         keyword, expand vector to __vector and pixel or bool to __pixel or
28397         __bool.
28398
28399         PR c++/39554
28400         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
28401         warn_if_disallowed_function_p): Removed.
28402         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
28403         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
28404         warning_if_disallowed_function_p.
28405         * flags.h (warn_if_disallowed_function_p,
28406         warn_disallowed_functions): Removed.
28407         * common.opt (Wdisallowed-function-list=): Removed.
28408         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
28409
28410 2009-03-28  Richard Guenther  <rguenther@suse.de>
28411
28412         PR tree-optimization/38723
28413         * tree-ssa-pre.c (compute_avail): Add all default definitions to
28414         the entry block.
28415
28416 2009-03-28  Jan Hubicka  <jh@suse.cz>
28417
28418         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
28419         test introduced by my previous patch.
28420
28421 2009-03-28  Richard Guenther  <rguenther@suse.de>
28422
28423         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
28424         the PHIs value undefined.
28425
28426 2009-03-28  Jan Hubicka  <jh@suse.cz>
28427
28428         * tree-pass.h (pass_fixup_cfg): New pass.
28429         * ipa-inline.c (inline_transform): Set
28430         always_inline_functions_inlined/after_inlining.
28431         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
28432         (pass_fixup_cfg): New pass.
28433         * passes.c (init_optimization_passes): Add fixup_cfg.
28434
28435 2009-03-28  Richard Guenther  <rguenther@suse.de>
28436
28437         PR tree-optimization/38458
28438         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
28439         argument use the arguments copy-of value.
28440
28441 2009-03-28  Richard Guenther  <rguenther@suse.de>
28442
28443         PR tree-optimization/38180
28444         * tree-ssa-ccp.c (get_default_value): Simplify.
28445         (likely_value): Likewise.
28446         (surely_varying_stmt_p): Properly handle VOP case.
28447         (ccp_initialize): Likewise.
28448         (ccp_fold): Handle propagating through *&.
28449         (fold_const_aggregate_ref): Also handle decls.
28450
28451 2009-03-28  Jan Hubicka  <jh@suse.cz>
28452
28453         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
28454         * cgraph.h (cgraph_node): Likewise.
28455         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
28456         (cgraph_reset_node): Use process flag.
28457         (cgraph_mark_functions_to_output): Likewise.
28458         (cgraph_expand_function): Likewise.
28459         (cgraph_expand_all_functions): Likewise.
28460         (cgraph_output_in_order): Likewise.
28461         * dwarf2out.c (reference_to_unused): Likewise.
28462         * passes.c do_per_function_toporder): Likewise.
28463
28464 2009-03-28  Jan Hubicka  <jh@suse.cz>
28465
28466         Bring from lto-branch:
28467
28468         2008-09-03  Doug Kwan  <dougkwan@google.com>
28469
28470         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
28471         enums instead of reason strings.
28472         * cgraph.c (cgraph_create_edge): Same.
28473         (cgraph_inline_failed_string): New function.
28474         * cgraph.h (cgraph_inline_failed_t): New enum type.
28475         (cgraph_inline_failed_string): New prototype.
28476         (struct cgraph_edge): Change type of INLINED_FAILED from constant
28477         char pointer to cgraph_inline_failed_t.
28478         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
28479         (cgraph_default_inline_p): Ditto.
28480         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
28481         to cgraph_inline_failed_t pointer.
28482         * cif-code.def: New file.
28483         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
28484         reason string.
28485         (cgraph_check_inline_limits): Change type of REASON to pointer to
28486         cgraph_inline_failed_t.  Replace reason strings with enums.
28487         (cgraph_default_inline_p): Ditto.
28488         (cgraph_recursive_inlining_p): Ditto.
28489         (update_caller_keys): Change type of FAILED_REASON to
28490         cgraph_inline_failed_t.
28491         (cgraph_set_inline_failed): Change type of REASON to pointer to
28492         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
28493         convert enums to strings for text output.
28494         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
28495         to be of type cgraph_inline_failed_t.  Replace reason strings with
28496         enums.  Call cgraph_inline_failed_string to covert enums
28497         to strings for text output.
28498         (cgraph_decide_inlining): Replace reason strings with enums.
28499         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
28500         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
28501         for text output.
28502         * tree-inline.c (expand_call_inline): Change type of REASON
28503         to cgraph_inline_failed_t.  Replace reason strings with enums.
28504         Call cgraph_inline_failed_string for text output.
28505         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
28506         (cgraph.o): Ditto.
28507
28508 2009-03-28  Jan Hubicka  <jh@suse.cz>
28509
28510         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
28511         cgraph_clone_node): Remove master clone handling.
28512         (cgraph_is_master_clone, cgraph_master_clone): Remove.
28513         * cgraph.h (master_clone): Remove.
28514         (cgraph_is_master_clone, cgraph_master_clone): Remove.
28515         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
28516         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
28517
28518 2009-03-28  Jan Hubicka  <jh@suse.cz>
28519
28520         * cgraph.c (cgraph_function_body_availability): Functions declared
28521         inline are always safe to assume that it is not going to be replaced.
28522
28523 2009-03-28  Richard Guenther  <rguenther@suse.de>
28524
28525         PR tree-optimization/38513
28526         * tree-ssa-pre.c (eliminate): Remove redundant stores.
28527         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
28528         EXC_PTR_EXPR and FILTER_EXPR.
28529         (get_ref_from_reference_ops): Likewise.
28530
28531 2009-03-28  Richard Guenther  <rguenther@suse.de>
28532
28533         PR tree-optimization/38968
28534         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
28535         Use FLOOR_MOD_EXPR to compute misalignment.
28536
28537 2009-03-28  Richard Guenther  <rguenther@suse.de>
28538
28539         PR tree-optimization/37795
28540         * tree.h (combine_comparisons): Declare.
28541         * fold-const.c (combine_comparisons): Export.
28542         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
28543         comparisons.
28544         (ifcombine_iforif): Use combine_comparisons.
28545
28546 2009-03-28  Jan Hubicka  <jh@suse.cz>
28547
28548         * tree-eh.c (inlinable_call_p): New function.
28549         (make_eh_edges): Use it.
28550         (verify_eh_edges): Use it.
28551         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
28552         * except.c (reachable_next_level): Add inlinable_function argument
28553         (sjlj_find_directly_reachable_regions): Update.
28554         (add_reachable_handler): Do not set saw_any_handlers.
28555         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
28556         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
28557         Add new inlinable call parameter.
28558         (can_throw_internal, can_throw_external): Update.
28559         * except.h (can_throw_internal_1, can_throw_external_1,
28560         foreach_reachable_handler): Update declaration.
28561
28562 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
28563
28564         * config/arm/t-arm-coff, config/h8300/coff.h,
28565         config/i386/i386-aout.h, config/i386/i386-coff.h,
28566         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
28567         config/pdp11/2bsd.h, config/rs6000/aix41.h,
28568         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
28569         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
28570         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
28571         sys-types.h: Remove.
28572         * Makefile.in: Remove protoize and fixproto support and references
28573         in comments.
28574         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
28575         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
28576         Remove.
28577         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
28578         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
28579         unprotoize$(exeext).
28580         (rest.encap): Don't depend on $(STMP_FIXPROTO)
28581         (.PHONY): Don't depend on proto.
28582         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
28583         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
28584         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
28585         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
28586         build/gen-protos.o, build/scan.o, xsys-protos.h,
28587         build/fix-header$(build_exeext), build/fix-header.o,
28588         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
28589         stmp-install-fixproto): Remove.
28590         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
28591         SYSCALLS.c or fixproto files.
28592         (install-common): Don't install protoize.
28593         (install-headers-tar, install-headers-cpio, install-headers-cp):
28594         Don't depend on $(STMP_FIXPROTO).
28595         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
28596         install fixproto files or write out fixproto settings.
28597         (uninstall): Don't uninstall protoize.
28598         * config.gcc (use_fixproto): Remove.
28599         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
28600         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
28601         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
28602         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
28603         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
28604         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
28605         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
28606         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
28607         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
28608         * config/t-vxworks (STMP_FIXPROTO): Remove.
28609         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
28610         STMP_FIXPROTO): Remove.
28611         * config.in, configure: Regenerate.
28612         * crtstuff.c (gid_t, uid_t): Don't undefine.
28613         * doc/install.texi: Change m68k-coff to m68k-elf in example.
28614         (arm-*-coff, arm-*-aout: Remove target entries.
28615         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
28616         Remove mention of AIX 4.1.
28617         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
28618         * doc/invoke.texi (Running Protoize): Remove.
28619         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
28620         (Protoize Caveats): Remove.
28621         * tsystem.h: Update comments on headers assumed to exist.
28622
28623 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
28624
28625         * genautomata.c: Add a new year to the copyright.  Add a new
28626         reference.
28627         (struct insn_reserv_decl): Add comments for member bypass_list.
28628         (find_bypass): Remove.
28629         (insert_bypass): New.
28630         (process_decls): Use insert_bypass.
28631         (output_internal_insn_latency_func): Output all bypasses with the
28632         same input insn in one switch case.
28633
28634         * rtl.def (define_bypass): Describe bypass choice.
28635         * doc/md.texi (define_bypass): Ditto.
28636
28637 2009-03-27  Richard Guenther  <rguenther@suse.de>
28638
28639         * gimplify.c (mark_addressable): Export.
28640         * tree-flow.h (mark_addressable): Declare.
28641         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
28642         * tree-ssa.c (verify_phi_args): Verify that address taken
28643         variables have TREE_ADDRESSABLE set.
28644
28645 2009-03-27  Richard Guenther  <rguenther@suse.de>
28646
28647         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
28648         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
28649         Do not mark decls TREE_ADDRESSABLE.
28650         (build_fold_addr_expr): Adjust.
28651         (fold_addr_expr): Remove.
28652         (fold_unary): Use build_fold_addr_expr.
28653         (fold_comparison): Likewise.
28654         (split_address_to_core_and_offset): Likewise.
28655         * coverage.c (tree_coverage_counter_addr): Mark the array decl
28656         TREE_ADDRESSABLE.
28657         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
28658         (gimplify_modify_expr_to_memcpy): Mark source and destination
28659         addressable.
28660         * omp-low.c (create_omp_child_function): Mark the object decl
28661         TREE_ADDRESSABLE.
28662         (lower_rec_input_clauses): Mark the var we take the address of
28663         TREE_ADDRESSABLE.
28664         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
28665
28666 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28667
28668         PR middle-end/39315
28669         * cfgexpand.c (expand_one_stack_var_at): Change alignment
28670         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
28671
28672 2009-03-27  Richard Guenther  <rguenther@suse.de>
28673
28674         PR tree-optimization/39120
28675         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
28676         constraints.
28677         (handle_lhs_call): Process return constraints.  Add escape
28678         constraints if necessary.
28679         (handle_const_call): Fill out return constraints.  Make nested
28680         case more precise.  Avoid consttmp if possible.
28681         (handle_pure_call): Fill out return constraints.  Avoid
28682         callused if possible.
28683         (find_func_aliases): Simplify call handling.
28684
28685 2009-03-27  Richard Guenther  <rguenther@suse.de>
28686
28687         PR tree-optimization/39120
28688         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
28689         as a representative.
28690         (solve_graph): Do propagate CALLUSED.
28691         (handle_pure_call): Use a scalar constraint from CALLUSED for
28692         the return value.
28693         (find_what_p_points_to): CALLUSED shall not appear in poins-to
28694         solutions.
28695
28696 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28697
28698         PR c/39323
28699         * c-common.c (handle_aligned_attribute): Properly check alignment
28700         overflow.  Use (1U << i) instead of (1 << i).
28701
28702         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
28703
28704         * expr.h (get_mem_align_offset): Updated.
28705
28706         * tree.h (tree_decl_common): Change align to "unsigned int" and
28707         move it before pointer_alias_set.
28708
28709 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28710             Jakub Jelinek  <jakub@redhat.com>
28711
28712         PR target/38034
28713         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
28714         gr_register_operand with gr_reg_or_0_operand.
28715         (cmpxchg_rel_di): Likewise.
28716         (sync_lock_test_and_set<mode>): Likewise.
28717
28718 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28719
28720         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
28721         (true_regnum): Likewise.
28722
28723         * rtlanal.c (subreg_info): Moved to ...
28724         * rtl.h (subreg_info): Here.  New.
28725         (subreg_get_info): New.
28726
28727         * rtlanal.c (subreg_get_info): Make it extern.
28728
28729 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28730
28731         PR target/39472
28732         * config/i386/i386.c (ix86_abi): New.
28733         (override_options): Handle -mabi=.
28734         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
28735         (ix86_call_abi_override): Likewise.
28736         (init_cumulative_args): Likewise.
28737         (function_arg_advance): Likewise.
28738         (function_arg_64): Likewise.
28739         (function_arg): Likewise.
28740         (ix86_pass_by_reference): Likewise.
28741         (ix86_function_value_regno_p): Likewise.
28742         (ix86_build_builtin_va_list_abi): Likewise.
28743         (setup_incoming_varargs_64): Likewise.
28744         (is_va_list_char_pointer): Likewise.
28745         (ix86_init_machine_status): Likewise.
28746         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
28747         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
28748         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
28749         (ix86_function_abi): Make it static and return enum calling_abi.
28750         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
28751         with ix86_abi.
28752         (ix86_fn_abi_va_list): Updated.
28753
28754         * config/i386/i386.h (ix86_abi): New.
28755         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
28756         (CONDITIONAL_REGISTER_USAGE): Likewise.
28757         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
28758         (machine_function): Likewise.
28759
28760         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
28761         with ix86_abi.
28762         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
28763         (STACK_BOUNDARY): Likewise.
28764         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
28765
28766         * config/i386/i386.opt (mabi=): New.
28767
28768         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
28769         return enum calling_abi.
28770         (ix86_function_type_abi): Likewise.
28771         (ix86_function_abi): Removed.
28772
28773         * doc/invoke.texi: Document -mabi= option for x86.
28774
28775 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28776
28777         * builtins.c (real_dconstp): Delete.
28778         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
28779
28780 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
28781             Jakub Jelinek  <jakub@redhat.com>
28782
28783         PR debug/37959
28784         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
28785         (gen_subprogram_die): When a function is explicit, generate the
28786         DW_AT_explicit attribute.
28787         * langhooks.h (struct lang_hooks_for_decls): Add
28788         function_decl_explicit_p langhook.
28789         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
28790         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
28791
28792 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
28793
28794         * builtins.c (fold_builtin_memory_op): Optimize memmove
28795         into memcpy if we can prove source and destination don't overlap.
28796
28797         * tree-inline.c: Include gt-tree-inline.h.
28798         (clone_fn_id_num): New variable.
28799         (clone_function_name): New function.
28800         (tree_function_versioning): Use it.
28801         * Makefile.in (GTFILES): Add tree-inline.c.
28802
28803 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
28804
28805         * BASE-VER: Change to 4.5.0.
28806
28807 2009-03-27  Xinliang David Li  <davidxl@google.com>
28808
28809         PR tree-optimization/39557
28810         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
28811
28812 2009-03-27  Xinliang David Li  <davidxl@google.com>
28813
28814         PR tree-optimization/39548
28815         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
28816         candidate check.
28817
28818 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28819
28820         * c-common.c (pointer_int_sum): Use %wd on return from
28821         tree_low_cst.
28822
28823 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28824
28825         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
28826         on return from tree_low_cst.
28827
28828 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
28829
28830         PR c++/36799
28831         * ginclude/stdarg.h (va_copy): Define also for
28832         __GXX_EXPERIMENTAL_CXX0X__.
28833
28834 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28835
28836         PR c++/35652
28837         * builtins.h (c_strlen): Do not warn here.
28838         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
28839         * c-common.c (pointer_int_sum): Take an explicit location.
28840         Warn about offsets out of bounds.
28841         * c-common.h (pointer_int_sum): Adjust declaration.
28842
28843 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28844
28845         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
28846         markup glitch.
28847
28848 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
28849
28850         PR c++/39554
28851         * opts.c (warn_if_disallowed_function_p): Don't assume
28852         get_callee_fndecl must return non-NULL.
28853
28854 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
28855
28856         PR rtl-optimization/39522
28857         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
28858         when reg_reloaded_valid is set.
28859
28860 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
28861
28862         * config/spu/divv2df3.c: New file.
28863         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
28864         (DPBIT_FUNCS): Filter out _div_df.
28865
28866 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
28867
28868         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
28869         a jump insn, count that jump in the distance to the loop start.
28870
28871 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
28872
28873         PR target/39523
28874         * config/sh/sh.c (calc_live_regs): Fix condition for global
28875         registers except PIC_OFFSET_TABLE_REGNUM.
28876
28877 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
28878
28879         PR/39518
28880         * doc/invoke.texi (-mconsole): New.
28881         (-mcygwin): New.
28882         (-mno-cygwin): New.
28883         (-mdll): New.
28884         (-mnop-fun-dllimport): New.
28885         (-mthread): New.
28886         (-mwin32): New.
28887         (-mwindows): New.
28888         (sub section "i386 and x86-64 Windows Options"): New.
28889
28890 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
28891
28892         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
28893         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
28894
28895 2009-03-25  Richard Guenther  <rguenther@suse.de>
28896
28897         PR middle-end/39497
28898         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
28899         of -Wno-error.
28900
28901 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
28902
28903         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
28904         neither of haifa/selective schedulers are working.
28905
28906 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28907
28908         * doc/invoke.texi (Debugging Options): Fix description of
28909         -fno-merge-debug-strings.
28910
28911 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
28912
28913         * config/cris/libgcc.ver: New version-script.
28914         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
28915
28916         * configure.ac <GAS features, nop mnemonic>: Add pattern
28917         crisv32-*-* for "nop".
28918         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
28919         * configure: Regenerate.
28920
28921 2009-03-24  Ira Rosen  <irar@il.ibm.com>
28922
28923         PR tree-optimization/39529
28924         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
28925         mark_sym_for_renaming for the tag copied to the new vector
28926         pointer.
28927
28928 2009-03-24  Arthur Loiret  <aloiret@debian.org>
28929
28930         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
28931         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
28932         EXTRA_SPEC_FUNCTIONS.
28933         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
28934         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
28935         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
28936         -march and -mtune options.
28937
28938 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
28939
28940         * config/m68k/t-rtems: Add m5329 multilib.
28941
28942 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
28943             Jakub Jelinek  <jakub@redhat.com>
28944
28945         PR debug/39524
28946         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
28947         nodes.
28948
28949 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
28950
28951         PR c/39495
28952         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
28953         instead of c_parser_expression_conv, if original_code isn't one of the
28954         4 allowed comparison codes, fail.
28955
28956 2009-03-23  Richard Guenther  <rguenther@suse.de>
28957
28958         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
28959         * tree.h (struct tree_type): Likewise.
28960         * reload.h (struct insn_chain): Likewise.
28961         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
28962         * function.h (struct function): Likewise.
28963         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
28964
28965 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
28966
28967         PR tree-optimization/39516
28968         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
28969
28970 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
28971
28972         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
28973         should be set true if BITS_PER_WORD of target is bigger than 32
28974
28975 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
28976
28977         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
28978         Translate -B-options to -rpath-link.  Correct existing
28979         rpath-link and conditionalize on !nostdlib.
28980
28981 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28982
28983         * doc/extend.texi (Function Attributes, Variable Attributes):
28984         Fix typos.
28985         * doc/invoke.texi (Debugging Options, Optimize Options)
28986         (i386 and x86-64 Options, MCore Options): Likewise.
28987
28988 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
28989
28990         PR debug/37890
28991         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
28992         it for block local namespace aliases.
28993         (gen_decl_die): Pass context_die to gen_namespace_die.
28994
28995 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
28996
28997         PR c/39495
28998         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
28999         minimum or maximum value.
29000
29001 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
29002
29003         * reginfo.c (globalize_reg): Recompute derived reg sets.
29004
29005 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
29006
29007         PR target/39063
29008         * libgcc2.c (mprotect): Do not use signed arguments for
29009         VirtualProtect, use DWORD arguments.  Also fix the 'may
29010         be used uninitialized' warning for the np variable.
29011
29012 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
29013
29014         PR target/39496
29015         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
29016         functions using regparm calling conventions when not optimizing.
29017         (ix86_function_sseregparm): Similarly for sseregparm calling
29018         conventions.
29019
29020 2009-03-19  Li Feng  <nemokingdom@gmail.com>
29021
29022         PR middle-end/39500
29023         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
29024         dependence if the first conflict is after niter iterations.
29025
29026 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
29027
29028         PR middle-end/38609
29029         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
29030         functions with dynamic stack-pointer adjustments.
29031
29032 2009-03-19  Ben Elliston  <bje@au.ibm.com>
29033
29034         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
29035         option; change to -msdata=data.
29036
29037 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29038
29039         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
29040         and -fopenmp.
29041
29042 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
29043
29044         PR target/35180
29045         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
29046
29047 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
29048
29049         * doc/invoke.texi (Code Gen Options): Expand discussion of
29050         -fno-common.
29051
29052 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
29053
29054         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
29055         * matrix-reorg.c (struct matrix_info): Likewise.
29056         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
29057         * rtl.h (struct mem_attrs): Likewise.
29058         * df.h (struct df): Likewise.
29059         * tree-data-ref.h (struct data_dependence_relation): Likewise.
29060         * ira-int.h (struct ira_allocno): Likewise.
29061         * df-scan.c (struct df_collection_rec): Likewise.
29062         * ira.c (struct equivalence): Likewise.
29063         * function.c (struct temp_slot): Likewise.
29064         * cfgloop.h (struct loop): Likewise.
29065
29066         PR debug/39485
29067         * function.c (use_register_for_decl): When not optimizing, disregard
29068         register keyword for variables with types containing methods.
29069
29070 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
29071
29072         PR middle-end/39447
29073         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
29074         (is_simple_operand): Call contains_component_ref_p before calling data
29075         reference analysis that would fail on COMPONENT_REFs.
29076
29077         * tree-vrp.c (search_for_addr_array): Fix formatting.
29078
29079 2009-03-18  Richard Guenther  <rguenther@suse.de>
29080
29081         * tree-vect-transform.c (vect_loop_versioning): Fold the
29082         generated comparisons.
29083         * tree-vectorizer.c (set_prologue_iterations): Likewise.
29084         (slpeel_tree_peel_loop_to_edge): Likewise.
29085
29086 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29087
29088         PR middle-end/37805
29089         * opts.c (print_specific_help): In addition to `undocumented',
29090         accept `separate' and `joined' flags if passed alone.  Describe
29091         output by the first matched one of those.
29092         (common_handle_option): Skip over empty strings.
29093         * gcc.c (display_help): Fix help string for `--help='.
29094         * doc/invoke.texi (Option Summary, Overall Options): With
29095         `--help=', classes and qualifiers can both be repeated, but
29096         only the latter can be negated.  One should not pass only
29097         negated qualifiers.  Fix markup and examples.
29098
29099         Revert
29100         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
29101         PR middle-end/37805
29102         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
29103         and -fhelp=separate.
29104
29105 2009-03-17  Jing Yu  <jingyu@google.com>
29106
29107         PR middle-end/39378
29108         * function.h (struct rtl_data): Move is_thunk from here...
29109         (struct function): ...to here.
29110         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
29111         * varasm.c (assemble_start_function): Change is_thunk from crtl to
29112         cfun.
29113         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
29114         cfun.
29115         (alpha_does_function_need_gp, alpha_start_function): Likewise.
29116         (alpha_output_function_end_prologue): Likewise.
29117         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
29118         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
29119         (rs6000_output_function_epilogue): Likewise.
29120         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
29121
29122 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
29123
29124         PR target/39482
29125         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
29126         from different units in a single alternative.
29127         (*truncdfsf_i387): Ditto.
29128         (*truncxfsf2_mixed): Ditto.
29129         (*truncxfdf2_mixed): Ditto.
29130
29131 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
29132
29133         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
29134         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
29135
29136         PR debug/39474
29137         * tree-ssa-live.c (remove_unused_locals): Don't remove local
29138         unused non-artificial variables when not optimizing.
29139
29140         PR debug/39471
29141         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
29142         DW_TAG_imported_module even if decl is IMPORTED_DECL with
29143         NAMESPACE_DECL in its DECL_INITIAL.
29144
29145         PR middle-end/39443
29146         * optabs.c (set_user_assembler_libfunc): New function.
29147         * expr.h (set_user_assembler_libfunc): New prototype.
29148         * c-common.c: Include libfuncs.h.
29149         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
29150         for memcmp, memset, memcpy, memmove and abort.
29151         * Makefile.in (c-common.o): Depend on libfuncs.h.
29152
29153         PR debug/39412
29154         * dwarf2out.c (gen_inlined_enumeration_type_die,
29155         gen_inlined_structure_type_die, gen_inlined_union_type_die,
29156         gen_tagged_type_instantiation_die): Removed.
29157         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
29158         do nothing.
29159
29160 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
29161
29162         PR testsuite/38526
29163         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
29164         its use.
29165         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
29166         (check-parallel-%): Ditto.
29167         (check-consistency): Ditto.
29168
29169 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
29170
29171         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
29172         local variable rhs by NULL_TREE.
29173
29174 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
29175
29176         PR target/39477
29177         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
29178
29179 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
29180
29181         PR target/39476
29182         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
29183
29184 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
29185
29186         PR target/39473
29187         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
29188         for ms->sysv ABI calls only in 64bit mode.
29189
29190         * config/i386/i386.md (untyped_call): Support 32bit.
29191
29192 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
29193
29194         * doc/extend.texi: Replace x86_65 with x86_64.
29195
29196 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
29197
29198         PR tree-optimization/39455
29199         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
29200         mismatches for POINTER_TYPE_P (type).
29201         (number_of_iterations_le): Likewise.
29202
29203 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
29204
29205         * config/picochip/picochip.c: Removed profiling support.
29206         * config/picochip/picochip.md: Removed profiling instruction.
29207         * config/picochip/picochip.h: Removed profiling builtin.
29208
29209 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
29210
29211         * doc/install.texi (--with-host-libstdcxx): Document.
29212
29213 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
29214
29215         PR target/34299
29216         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
29217         generate a warning if the function name does not begin with
29218         "__vector" and the function has either the 'signal' or 'interrupt'
29219         attribute, from here to ...
29220         (avr_declare_function_name): ...here. New function.
29221         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
29222         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
29223
29224 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
29225
29226         PR bootstrap/39454
29227         * cse.c (fold_rtx): Don't modify original const_arg1 when
29228         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
29229         separate variable instead.
29230         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
29231         from out of range shift counts.
29232         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
29233
29234 2009-03-13  Catherine Moore  <clm@codesourcery.com>
29235
29236         * config/i386/x-mingw32 (host-mingw32.o): Replace
29237         diagnostic.h with $(DIAGNOSTIC_H).
29238
29239 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
29240
29241         PR target/39431
29242         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
29243         predicate.
29244         * config/i386/sync.md (sync_compare_and_swap<mode>,
29245         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
29246         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
29247         into a register.
29248         (sync_double_compare_and_swapdi_pic,
29249         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
29250         cmpxchg8b_pic_memory_operand instead of just memory_operand.
29251
29252 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
29253
29254         PR target/39445
29255         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
29256
29257 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
29258
29259         PR target/39327
29260         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
29261         (avx_addsubv4df3): Likewise.
29262         (*avx_addsubv4sf3): Likewise.
29263         (sse3_addsubv4sf3): Likewise.
29264
29265 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
29266
29267         PR target/38824
29268         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
29269
29270 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
29271
29272         PR debug/39432
29273         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
29274         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
29275         registers for allocnos created from user-defined variables.
29276
29277 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29278
29279         PR target/39181
29280         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
29281         of non-integer mode as well.
29282
29283 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
29284
29285         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
29286         for functions for which the parameter types are unknown.
29287
29288 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
29289
29290         PR target/39137
29291         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
29292         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
29293         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
29294         * config/i386/i386.c (ix86_local_alignment): For
29295         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
29296         long long variables on the stack to avoid dynamic realignment.
29297         Allow the first argument to be a decl rather than type.
29298         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
29299
29300 2009-03-11  Nick Clifton  <nickc@redhat.com>
29301
29302         PR target/5362
29303         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
29304         options.
29305         Add description to mno-lsim option.
29306         * config/mcore/mcore.h: Remove comment about deprecated m4align
29307         option.
29308         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
29309         * doc/invoke.texi: Add description of mno-lsim and
29310         mstack-increment options.
29311
29312         * config/fr30/fr30.opt: Document the -mno-lsim option.
29313         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
29314         and -mno-lsim options.
29315
29316 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29317
29318         * fold-const.c (fold_comparison): Only call fold_inf_compare
29319         if the mode supports infinities.
29320
29321 2009-03-11  Jason Merrill  <jason@redhat.com>
29322
29323         PR debug/39086
29324         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
29325         end already did.  Notice GIMPLE_CALL modifications of the result.
29326         Don't copy debug information from an ignored decl or a decl from
29327         another function.
29328
29329 2009-03-10  Richard Guenther  <rguenther@suse.de>
29330             Nathan Froyd  <froydnj@codesourcery.com>
29331
29332         PR middle-end/37850
29333         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
29334         (__divMODE3): Likewise.
29335
29336 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
29337
29338         PR tree-optimization/39394
29339         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
29340         DECL_SIZE_UNIT of variable length FIELD_DECLs.
29341
29342 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
29343
29344         * recog.c (verfiy_changes): Disallow renaming of hard regs in
29345         inline asms for register asm ("") declarations.
29346
29347 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
29348
29349         * fold-const.c (fold_unary): Fix comment.
29350
29351 2009-03-07  Jan Hubicka  <jh@suse.cz>
29352
29353         PR target/39361
29354         * tree-inline.c (setup_one_parameter): Do replacement of const
29355         argument by constant in SSA form.
29356
29357 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29358
29359         PR middle-end/38028
29360         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
29361         determine alignment passed to assign_stack_local.
29362         (assign_parms_unsplit_complex): Likewise.
29363         * except.c (sjlj_build_landing_pads): Likewise.
29364
29365 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
29366
29367         PR middle-end/39360
29368         * tree-flow.h (add_referenced_var): Return bool instead of void.
29369         * tree-dfa.c (add_referenced_var): Return result of
29370         referenced_var_check_and_insert call.
29371         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
29372         of referenced_var_check_and_insert.
29373
29374         PR debug/39372
29375         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
29376         (gen_variable_die): Emit DW_AT_location on abstract static variable's
29377         DIE, don't emit it if abstract origin already has it.
29378         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
29379         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
29380
29381 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
29382
29383         * genpreds.c (needs_variable): Fix parentheses at variable name
29384         detection.
29385         (write_tm_constrs_h): Indent generated code.
29386
29387 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
29388
29389         * doc/extend.texi (Function Attributes): Add documentation
29390         for isr attributes.
29391
29392 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
29393
29394         PR debug/39387
29395         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
29396         take locus from its DECL_SOURCE_LOCATION instead of input_location.
29397
29398 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
29399
29400         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
29401         the loop as bad.
29402
29403 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
29404
29405         PR debug/39379
29406         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
29407         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
29408
29409 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
29410
29411         * config/i386/i386.md (R8_REG, R9_REG): New constants.
29412         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
29413         constants instead of magic numbers.
29414         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
29415         (QI_REG_P): Ditto.
29416         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
29417         (x86_64_ms_abi_int_parameter_registers): Ditto.
29418         (x86_64_int_return_registers): Ditto.
29419         (ix86_maybe_switch_abi): Ditto.
29420         (ix86_expand_call): Ditto for clobbered_registers array.
29421         (ix86_hard_regno_mode_ok): Ditto.
29422         (x86_extended_QIreg_mentioned_p): Ditto.
29423
29424 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
29425
29426         PR tree-optimization/39349
29427         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
29428
29429         * combine.c (gen_lowpart_for_combine): Use omode when generating
29430         clobber.
29431
29432 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
29433
29434         PR rtl-optimization/39235
29435         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
29436
29437 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
29438
29439         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
29440
29441 2009-03-04  Richard Guenther  <rguenther@suse.de>
29442
29443         PR tree-optimization/39362
29444         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
29445         that occur in abnormal PHIs should be varying.
29446
29447 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
29448
29449         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
29450         Extend comments.
29451         (simple_iv):  Take loop as an argument instead of statement.
29452         * tree-scalar-evolution.h (simple_iv): Declaration changed.
29453         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
29454         to simple_iv.
29455         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
29456         Ditto.
29457         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
29458         * matrix-reorg.c (analyze_transpose): Ditto.
29459         * tree-data-ref.c (dr_analyze_innermost): Ditto.
29460         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
29461         * tree-predcom.c (ref_at_iteration): Ditto.
29462         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
29463
29464 2009-03-04  Richard Guenther  <rguenther@suse.de>
29465
29466         PR tree-optimization/39358
29467         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
29468         escaped_id and callused_id.
29469         (solve_graph): Likewise.
29470
29471 2009-03-04  Richard Guenther  <rguenther@suse.de>
29472
29473         PR tree-optimization/39339
29474         * tree-sra.c (try_instantiate_multiple_fields): Make it
29475         no longer ICE on the above.
29476
29477 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
29478
29479         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
29480         that fits within Pmode.
29481
29482 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
29483
29484         PR middle-end/10109
29485         * tm.texi (LIBCALL_VALUE): Update description.
29486
29487 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
29488
29489         PR middle-end/34443
29490         * doc/extend.texi (section): Update description.
29491
29492 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
29493
29494         PR middle-end/39345
29495         * tree-inline.c (remapped_type): New.
29496         (can_be_nonlocal): Call remapped_type instead of remap_type.
29497
29498 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
29499
29500         PR fortran/39354
29501         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
29502         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
29503
29504 2009-03-03  Richard Guenther  <rguenther@suse.de>
29505
29506         PR middle-end/39272
29507         * tree.c (tree_nonartificial_location): New function.
29508         * tree.h (tree_nonartificial_location): Declare.
29509         * builtins.c (expand_builtin_memory_chk): Provide location
29510         of the call location for artificial function pieces.
29511         (maybe_emit_chk_warning): Likewise.
29512         (maybe_emit_sprintf_chk_warning): Likewise.
29513         (maybe_emit_free_warning): Likewise.
29514         * expr.c (expand_expr_real_1): Likewise.
29515
29516 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
29517
29518         PR tree-optimization/39343
29519         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
29520         COMPONENT_REF t has ARRAY_TYPE.
29521
29522 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
29523
29524         PR middle-end/39335
29525         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
29526         when the type precision of the induction variable should be
29527         larger than the type precision of nit.
29528         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
29529         * graphite.c (graphite_loop_normal_form): Same.
29530         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
29531
29532 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
29533
29534         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
29535         (*call_1_rex64_ms_sysv): Use named constants instead of magic
29536         numbers to describe clobbered registers.
29537         (*call_value_0_rex64_ms_sysv): Ditto.
29538         * config/i386/mmx.md (mmx_emms): Ditto.
29539         (mmx_femms): Ditto.
29540
29541 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
29542
29543         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
29544         of ABI_64.
29545
29546 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29547
29548         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
29549         (spu_section_type_flags): New function.
29550
29551 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
29552
29553         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
29554         reg_class_contents of FLOAT_REGS into a temporary.
29555
29556 2009-03-02  Richard Guenther  <rguenther@suse.de>
29557             Ira Rosen  <irar@il.ibm.com>
29558
29559         PR tree-optimization/39318
29560         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
29561         information to the vectorized statement.
29562
29563 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
29564
29565         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
29566         variable.  Use defined names instead of magic constants for REX SSE
29567         registers.
29568
29569 2009-03-01  Richard Guenther  <rguenther@suse.de>
29570
29571         PR tree-optimization/39331
29572         * omp-low.c (lower_send_shared_vars): Do not receive new
29573         values for the reference of DECL_BY_REFERENCE parms or results.
29574
29575 2009-03-01  Jan Hubicka  <jh@suse.cz>
29576
29577         PR debug/39267
29578         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
29579         BLOCK_NONLOCALIZED_VAR): New macros.
29580         (tree_block): Add nonlocalized_vars.
29581         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
29582         gen_decl_die): Add origin argument.  Allow generation of die with
29583         origin at hand only.
29584         (gen_member_die, gen_type_die_with_usage, force_decl_die,
29585         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
29586         of gen_*.
29587         (gen_block_die): Fix checking for unused blocks.
29588         (process_scope_var): Break out from .... ; work with origins only.
29589         (decls_for_scope) ... here; process nonlocalized list.
29590         (dwarf2out_ignore_block): Look for nonlocalized vars.
29591         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
29592         vars.
29593         (dump_scope_block): Dump them.
29594         * tree-inline.c (remap_decls): Handle nonlocalized vars.
29595         (remap_block): Likewise.
29596         (can_be_nonlocal): New predicate.
29597         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
29598
29599 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29600
29601         * configure: Regenerate.
29602
29603 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29604
29605         * optc-gen.awk: No need to duplicate option flags twice.
29606         Reuse help texts for duplicate options which do not have any.
29607
29608         * gcc.c (display_help): Document --version.
29609
29610         * gcc.c (main): If print_help_list and verbose_flag, ensure
29611         driver output comes before subprocess output.
29612
29613         * optc-gen.awk: Assign all remaining fields to help string,
29614         space-separated, for multi-line help in *.opt.
29615
29616         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
29617         -Wno-pedantic-ms-format is for MinGW targets only.
29618
29619         * doc/options.texi (Option file format): Fix bad indentation,
29620         restoring dropped sentence.
29621
29622 2009-02-28  Jan Hubicka  <jh@suse.cz>
29623
29624         * tree-inline.c (tree_function_versioning): Output debug info.
29625
29626 2009-02-28  Jan Hubicka  <jh@suse.cz>
29627
29628         PR debug/39267
29629         * tree-inline.c (setup_one_parameter): Do not copy propagate
29630         arguments when not optimizing.
29631
29632 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
29633
29634         PR target/39327
29635         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
29636         (avx_addsubv4df3): Likewise.
29637         (*avx_addsubv4sf3): Likewise.
29638         (sse3_addsubv4sf3): Likewise.
29639         (*avx_addsubv2df3): Likewise.
29640         (sse3_addsubv2df3): Likewise.
29641         (avx_unpckhps256): Correct item selectors.
29642         (avx_unpcklps256): Likewise.
29643         (avx_unpckhpd256): Likewise.
29644         (avx_unpcklpd256): Likewise.
29645
29646 2009-02-28  Jan Hubicka  <jh@suse.cz>
29647
29648         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
29649         static vars.
29650         (copy_arguments_for_versioning): If var is declared don't declare it.
29651         (tree_function_versioning): First setup substitutions and then copy
29652         args.
29653
29654 2009-02-27  Jan Hubicka  <jh@suse.cz>
29655
29656         PR debug/39267
29657         * cgraph.h (varpool_output_debug_info): Remove.
29658         * cgraphunit.c (varpool_output_debug_info): Remove.
29659         * dwarf2out.c (deferred_locations_struct): New struct
29660         (deferred_locations): New type.
29661         (deferred_locations_list): New static var.
29662         (deffer_location): New function.
29663         (gen_variable_die): Use it.
29664         (decls_for_scope): Output info on local static vars.
29665         (dwarf2out_finish): Process deferred locations.
29666         * varpool.c (varpool_output_debug_info): Remove.
29667
29668 2009-02-27  Jan Hubicka  <jh@suse.cz>
29669
29670         PR debug/39267
29671         * tree.h (TREE_PROTECTED): Fix comment.
29672         (BLOCK_HANDLER_BLOCK): Remove.
29673         (struct tree_block): Remove handler_block add body_block.
29674         (inlined_function_outer_scope_p): New.
29675         (is_body_block): Remove.
29676         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
29677         * dwarf2out.c (is_inlined_entry_point): Remove.
29678         (add_high_low_attributes): Use inlined_function_outer_scope_p.
29679         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
29680         code.
29681         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
29682         * gimplify.c (gimplify_expr): Gimplify body blocks.
29683         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
29684         block with multiple subblocks.
29685         (dump_scope_block): Prettier output; dump more flags and info.
29686         (dump_scope_blocks): New.
29687         (remove_unused_locals): Use dump_scope_blocks.
29688         * tree-flow.h (dump_scope_blocks): Declare.
29689         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
29690         * stmt.c (is_body_block): Remove.
29691         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
29692         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
29693
29694 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
29695
29696         PR middle-end/39308
29697         * graphite.c (graphite_loop_normal_form): Do not call
29698         number_of_iterations_exit from a gcc_assert.
29699
29700 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
29701
29702         * config/s390/s390.c (s390_swap_cmp): Look for conditional
29703         jumps if COND is NULL.
29704         (find_cond_jump): New function.
29705         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
29706         * config/s390/s390.md: Remove z10_cobra attribute value.
29707
29708 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
29709
29710         * config/alpha/alpha.h (alpha_expand_mov): Return false if
29711         force_const_mem returns NULL_RTX.
29712
29713 2009-02-26  Jan Hubicka  <jh@suse.cz>
29714
29715         PR debug/39267
29716         * cgraph.h (varpool_output_debug_info): Remove.
29717         * cgraphunit.c (varpool_output_debug_info): Remove.
29718         * dwarf2out.c (deferred_locations_struct): New struct
29719         (deferred_locations): New type.
29720         (deferred_locations_list): New static var.
29721         (deffer_location): New function.
29722         (gen_variable_die): Use it.
29723         (decls_for_scope): Output info on local static vars.
29724         (dwarf2out_finish): Process deferred locations.
29725         * varpool.c (varpool_output_debug_info): Remove.
29726
29727 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
29728
29729         PR rtl-optimization/39241
29730         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
29731         to subreg_offset_representable_p.
29732
29733 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
29734
29735         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
29736         execute function prototype.  Get f and nregs from max_reg_num
29737         and get_insns.  Remove the first backward pass as it's dead,
29738         guard the forward pass by flag_expensive_optimizations.
29739         (rest_of_handle_regmove): Delete.
29740         (pass_regmove): Replace it with regmove_optimize.
29741
29742 2009-02-25  Martin Jambor  <mjambor@suse.cz>
29743
29744         PR tree-optimization/39259
29745         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
29746         calls_alloca function flags.
29747         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
29748         calls are detected.
29749
29750 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
29751
29752         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
29753         flags_set_1_rtx, flags_set_1_set): Delete.
29754         (regmove_optimize): Do not call mark_flags_life_zones.
29755
29756 2009-02-24  Julian Brown  <julian@codesourcery.com>
29757
29758         PR target/35965
29759         * config/arm/arm.c (require_pic_register): Only set
29760         cfun->machine->pic_reg once per function.
29761
29762 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
29763
29764         * doc/invoke.texi (Link Options): Document an easier way to pass
29765         options that take arguments to the GNU linker using -Xlinker and -Wl.
29766
29767 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
29768
29769         PR target/33785
29770         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
29771
29772 2009-02-24  Richard Guenther  <rguenther@suse.de>
29773
29774         PR debug/39285
29775         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
29776
29777 2009-02-24  Richard Guenther  <rguenther@suse.de>
29778             Zdenek Dvorak  <ook@ucw.cz>
29779
29780         PR tree-optimization/39233
29781         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
29782         from converting them to a generic type.
29783
29784 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
29785
29786         PR tree-optimization/39260
29787         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
29788         contains a condition with a real type.
29789         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
29790
29791 2009-02-23  Jason Merrill  <jason@redhat.com>
29792
29793         PR c++/38880
29794         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
29795         narrowing_initializer_constant_valid_p.
29796         (narrowing_initializer_constant_valid_p): Don't return
29797         null_pointer_node for adding a pointer to itself.
29798
29799 2009-02-23  Jan Hubicka  <jh@suse.cz>
29800
29801         PR c/12245
29802         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
29803         resizing.
29804
29805 2009-02-23  Jan Hubicka  <jh@suse.cz>
29806
29807         PR tree-optimization/37709
29808         * tree.c (block_ultimate_origin): Move here from dwarf2out.
29809         * tree.h (block_ultimate_origin): Declare.
29810         * dwarf2out.c (block_ultimate_origin): Move to tree.c
29811         * tree-ssa-live.c (remove_unused_scope_block_p):
29812         Eliminate blocks containig no instructions nor live variables nor
29813         nested blocks.
29814         (dump_scope_block): New function.
29815         (remove_unused_locals): Enable removal of dead blocks by default;
29816         enable dumping at TDF_DETAILS.
29817
29818 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
29819
29820         * config/i386/i386.c (classify_argument): Don't allow COImode
29821         and OImode.
29822         (function_arg_advance_32): Don't allow OImode.
29823         (function_arg_32): Likewise.
29824         (function_value_32): Likewise.
29825         (return_in_memory_32): Likewise.
29826         (function_arg_64): Remove OImode comment.
29827
29828 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
29829
29830         PR target/39261
29831         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
29832         ix86_expand_vector_set for V4DImode in 64bit mode only.
29833         (ix86_expand_vector_init_one_var): Likewise.
29834
29835 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
29836
29837         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
29838
29839 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
29840
29841         PR bootstrap/39257
29842         * loop-iv.c: Revert last change.
29843         * emit-rtl.c: Likewise.
29844
29845 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
29846
29847         PR target/39256
29848         * config/i386/i386.c (type_natural_mode): Remove an extra
29849         space in the warning message.
29850         (function_value_32): Handle 32-byte vector modes.
29851         (return_in_memory_32): Likewise.
29852
29853 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
29854
29855         * loop-iv.c (truncate_value): New function.
29856         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
29857         of lowpart_subreg.
29858         (lowpart_subreg): Move to...
29859         * emit-rtl.c: ...here.
29860
29861 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
29862
29863         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
29864         accidental and undocumented change at revision 140860.
29865
29866 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
29867
29868         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
29869         take gimple_seq * arguments.
29870         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
29871         types_compatible_p langhook.
29872
29873 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
29874             Joseph Myers  <joseph@codesourcery.com>
29875
29876         * config/arm/arm.c (arm_builtin_va_list): New function.
29877         (arm_expand_builtin_va_start): Likewise.
29878         (arm_gimplify_va_arg_expr): Likewise.
29879         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
29880         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
29881         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
29882         (va_list_type): New variable.
29883         (arm_mangle_type): Mangle va_list_type appropriately.
29884
29885 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
29886
29887         PR middle-end/39157
29888         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
29889         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
29890         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
29891         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
29892         parameter to 1000 for -O1 by default.
29893         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
29894         parameter.
29895         * loop-invariant.c: Include params.h.
29896         (move_loop_invariants): Don't call move_single_loop_invariants on
29897         very large loops.
29898
29899 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
29900
29901         * calls.c (emit_library_call_value_1): Use slot_offset instead of
29902         offset when calculating bounds for indexing stack_usage_map.  Fixes
29903         a buffer overflow with certain target setups.
29904
29905 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
29906
29907         PR target/39240
29908         * calls.c (expand_call): Clear try_tail_call if caller and callee
29909         disagree in promotion of function return value.
29910
29911 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
29912
29913         PR target/39175
29914         * c-common.c (c_determine_visibility): If visibility changed and
29915         DECL_RTL has been already set, call make_decl_rtl to update symbol
29916         flags.
29917
29918 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
29919
29920         PR c++/39188
29921         * varasm.c (assemble_variable): Don't check DECL_NAME when
29922         globalizing a variable.
29923
29924 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
29925
29926         PR c/38483
29927         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
29928         expression before any __builtin_trap call.
29929         * c-typeck.c (build_function_call): Convert and check function
29930         arguments before generating a call to a trap.  Evaluate the
29931         function arguments before the trap.
29932
29933 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
29934
29935         PR target/39228
29936         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
29937         (UNSPEC_FXAM_MEM): New unspec.
29938         (fxam<mode>2_i387_with_temp): New insn and split pattern.
29939         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
29940         memory using fxam<mode>2_i387_with_temp to remove excess precision.
29941
29942 2009-02-19  Richard Guenther  <rguenther@suse.de>
29943
29944         PR tree-optimization/39207
29945         PR tree-optimization/39074
29946         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
29947         storedanything_tree): New.
29948         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
29949         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
29950         (build_succ_graph): Add edges from STOREDANYTHING to all
29951         non-direct nodes.
29952         (init_base_vars): Initialize STOREDANYTHING.
29953         (compute_points_to_sets): Free substitution info after
29954         building the succ graph.
29955         (ipa_pta_execute): Likewise.
29956
29957         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
29958         field.
29959         (do_ds_constraint): Do not add to special var or non-pointer
29960         field solutions.
29961         (type_could_have_pointers): Split out from ...
29962         (could_have_pointers): ... here.  For arrays use the element type.
29963         (create_variable_info_for): Initialize may_have_pointers.
29964         (new_var_info): Likewise.
29965         (handle_lhs_call): Make the HEAP variable unknown-sized.
29966         (intra_create_variable_infos): Use a type with pointers for
29967         PARM_NOALIAS, make it unknown-sized.
29968
29969 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
29970
29971         PR target/39224
29972         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
29973
29974 2009-02-18  Jason Merrill  <jason@redhat.com>
29975
29976         PR target/39179
29977         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
29978         value if DECL_EXTERNAL.
29979         * tree-sra.c (sra_walk_gimple_assign): Likewise.
29980         * target.h (gcc_target::binds_local_p): Clarify "module".
29981         * tree.h (TREE_PUBLIC): Clarify "module".
29982
29983 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
29984
29985         PR target/38891
29986         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
29987         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
29988
29989 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
29990
29991         PR target/39082
29992         * c.opt (Wabi): Support C and ObjC.
29993         (Wpsabi): New.
29994
29995         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
29996
29997         * config/i386/i386.c (classify_argument): Warn once about the ABI
29998         change when passing union with long double.
29999
30000         * doc/invoke.texi: Update -Wabi for warning psABI changes.
30001
30002 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
30003
30004         PR c/35447
30005         * c-parser.c (c_parser_compound_statement): Always enter and leave
30006         a scope.
30007
30008 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
30009
30010         PR target/34587
30011         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
30012
30013 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
30014
30015         PR tree-optimization/36922
30016         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
30017         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
30018         Likewise.
30019
30020 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
30021
30022         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
30023         to 0 for EABI64.
30024
30025 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
30026
30027         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
30028
30029 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
30030
30031         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
30032         tree sharing.
30033
30034 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
30035             Richard Sandiford  <rdsandiford@googlemail.com>
30036
30037         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
30038         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
30039         (loongson_biadd): ...this.
30040
30041 2009-02-17  Richard Guenther  <rguenther@suse.de>
30042
30043         PR tree-optimization/39202
30044         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
30045         a var make sure to follow existing collapses.
30046
30047 2009-02-17  Richard Guenther  <rguenther@suse.de>
30048
30049         PR middle-end/39214
30050         * langhooks.c (lhd_print_error_function): Check for NULL block.
30051
30052 2009-02-17  Richard Guenther  <rguenther@suse.de>
30053
30054         PR tree-optimization/39204
30055         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
30056         of the PHI arg.
30057
30058 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
30059
30060         * config/soft-fp/double.h: Update from glibc CVS.
30061
30062 2009-02-17  Richard Guenther  <rguenther@suse.de>
30063
30064         PR tree-optimization/39207
30065         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
30066         strict-aliasing warnings for pointers pointing to NULL.
30067
30068 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
30069
30070         PR c/35446
30071         * c-parser.c (c_parser_braced_init): Call pop_init_level when
30072         skipping until next close brace.
30073
30074 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
30075
30076         PR target/37049
30077         * config/i386/i386.c (ix86_expand_push): Set memory alignment
30078         to function argument boundary.
30079
30080 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
30081
30082         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
30083         in the lea_add. Reload eventually constraints it properly.
30084         * config/picochip/constraints.md: Remove the target constraint
30085         "b", since it is not needed anymore.
30086
30087 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
30088
30089         * gthr-dce.h: Uglify function parameter and local variable names.
30090         * gthr-gnat.h: Likewise.
30091         * gthr-mipssde.h: Likewise.
30092         * gthr-nks.h: Likewise.
30093         * gthr-posix95.h: Likewise.
30094         * gthr-posix.h: Likewise.
30095         * gthr-rtems.h: Likewise.
30096         * gthr-single.h: Likewise.
30097         * gthr-solaris.h: Likewise.
30098         * gthr-tpf.h: Likewise.
30099         * gthr-vxworks.h: Likewise.
30100         * gthr-win32.h: Likewise.
30101
30102 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
30103
30104         PR target/39196
30105         * config/i386/i386.md: Restrict the new peephole2 to move
30106         between MMX/SSE registers.
30107
30108 2009-02-15  Richard Guenther  <rguenther@suse.de>
30109
30110         Revert
30111         2009-02-13  Richard Guenther  <rguenther@suse.de>
30112
30113         * configure.ac: Enable LFS.
30114         * configure: Re-generate.
30115         * config.in: Likewise.
30116
30117 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30118
30119         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
30120         spu_srqwbyte, spu_srqwbytebc): Define.
30121         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
30122         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
30123         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
30124         "shrqby_<mode>"): New insn-and-split patterns.
30125         * config/spu/spu.c (expand_builtin_args): Determine and return
30126         number of operands using spu_builtin_description data.
30127         (spu_expand_builtin_1): Use it.
30128
30129 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
30130
30131         PR target/38056
30132         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
30133         TARGET_CONST_GP.
30134
30135 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
30136
30137         PR target/39149
30138         * config/i386/i386.c (override_options): Correct warning
30139         messages for -malign-loops, -malign-jumps and -malign-functions.
30140
30141 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
30142
30143         PR target/39152
30144         * config/i386/i386.md: Restrict the new peephole2 to move
30145         between the general purpose registers.
30146
30147 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
30148
30149         PR target/39162
30150         * config/i386/i386.c (type_natural_mode): Add a new argument.
30151         Return the original mode and warn ABI change if vector size is 32byte.
30152         (function_arg_advance): Updated.
30153         (function_arg): Likewise.
30154         (ix86_function_value): Likewise.
30155         (ix86_return_in_memory): Likewise.
30156         (ix86_sol10_return_in_memory): Likewise.
30157         (ix86_gimplify_va_arg): Likewise.
30158         (function_arg_32): Don't warn ABX ABI change here.
30159         (function_arg_64): Likewise.
30160
30161 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
30162
30163         * loop-iv.c (implies_p): In the final case, test that operands 0
30164         of the two comparisons match.
30165
30166         * config/bfin/bfin.c (find_prev_insn_start): New function.
30167         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
30168         (find_next_insn_start): Move.
30169
30170 2009-02-13  Richard Guenther  <rguenther@suse.de>
30171
30172         * configure.ac: Enable LFS.
30173         * configure: Re-generate.
30174         * config.in: Likewise.
30175
30176 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
30177
30178         PR c/35444
30179         * c-parser.c (c_parser_parms_list_declarator): Discard pending
30180         sizes on syntax error after some arguments have been parsed.
30181
30182 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
30183
30184         * doc/invoke.texi (-fira): Remove.
30185
30186 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
30187
30188         * caller-save.c: Replace regclass.c with reginfo.c in comments.
30189         * recog.c: Likewise.
30190         * rtl.h: Likewise.
30191
30192 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
30193
30194         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
30195         (umul_ppmm): Likewise.
30196         (count_leading_zeros): Likewise.
30197         (count_trailing_zeros): Likewise.
30198         (UMUL_TIME): Likewise.
30199
30200 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
30201
30202         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
30203         soft-fp/t-softfp to tmake_file.
30204
30205         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
30206         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
30207         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
30208         IA64_BUILTIN_INFQ]: New.
30209         (ia64_init_builtins): Initialize __builtin_infq,
30210         __builtin_fabsq and __builtin_copysignq if not HPUX.
30211         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
30212         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
30213
30214         * config/ia64/lib1funcs.asm (__divtf3): Define only if
30215         SHARED is defined.
30216         (__fixtfti): Likewise.
30217         (__fixunstfti): Likewise.
30218         (__floattitf): Likewise.
30219
30220         * config/ia64/libgcc-glibc.ver: New.
30221         * config/ia64/t-fprules-softfp: Likewise.
30222         * config/ia64/sfp-machine.h: Likewise.
30223
30224         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
30225         (LIBGCC2_TF_CEXT): Likewise.
30226         (TF_SIZE): Likewise.
30227         (TARGET_INIT_LIBFUNCS): Likewise.
30228
30229         * config/ia64/t-glibc (SHLINB_MAPFILES):
30230         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
30231
30232 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
30233
30234         * config/i386/i386.c (construct_container): Rewrite processing
30235         BLKmode with X86_64_SSE_CLASS.
30236
30237 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
30238
30239         PR target/39152
30240         * config/i386/i386.md: Replace simplify_replace_rtx with
30241         replace_rtx in the new peephole2.
30242
30243 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
30244
30245         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
30246         loop unrolling do not happen at -O2.
30247
30248 2009-02-12  Michael Matz  <matz@suse.de>
30249
30250         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
30251
30252 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
30253
30254         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
30255         for -g3.
30256
30257 2009-02-12  Ben Elliston  <bje@au.ibm.com>
30258
30259         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
30260         patterns when updating the back chain.  Missed in the 2009-02-10
30261         change.
30262
30263 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
30264
30265         * doc/extend.texi (Decimal Floating Types): Update identifier of
30266         draft TR and list of missing support.
30267
30268 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
30269
30270         PR middle-end/39154
30271         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
30272         bit to variable length decl's flags, add it also to its
30273         pointer replacement variable.
30274
30275 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
30276             Jakub Jelinek  <jakub@redhat.com>
30277
30278         PR target/39118
30279         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
30280         (memory_blockage): New expander.
30281         (*memory_blockage): New insn pattern.
30282         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
30283         instead of general blockage at the end of function prologue when
30284         frame pointer is used to access red zone area.  Do not emit blockage
30285         when profiling, it is emitted in generic code.
30286         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
30287         function epilogue when frame pointer is used to access red zone area.
30288
30289 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
30290
30291         PR target/38824
30292         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
30293         by arithmetic with memory operands.
30294         * config/i386/predicates.md (commutative_operator): New.
30295
30296 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
30297
30298         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
30299         bulleted lists.
30300
30301 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
30302
30303         * alias.h (record_alias_subset): Declare.
30304         * alias.c (record_alias_subset): Make global.
30305
30306 2009-02-10  Nick Clifton  <nickc@redhat.com>
30307
30308         * tree-parloops.c: Change license to GPLv3.
30309         * ipa-struct-reorg.c: Change license to GPLv3.
30310         * ipa-struct-reorg.h: Change license to GPLv3.
30311
30312 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
30313
30314         PR c/39084
30315         * c-decl.c (start_struct): Return NULL on error.
30316
30317 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
30318
30319         PR middle-end/39124
30320         * cfgloopmanip.c (remove_path): Call remove_bbs after
30321         cancel_loop_tree, not before it.
30322
30323         PR target/39139
30324         * function.h (struct function): Add has_local_explicit_reg_vars bit.
30325         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
30326         VAR_DECLs were seen.
30327         * tree-ssa-live.c (remove_unused_locals): Recompute
30328         cfun->has_local_explicit_reg_vars.
30329         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
30330         copies or clearings if cfun->has_local_explicit_reg_vars.
30331
30332 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
30333
30334         PR target/39118
30335         * config/i386/i386.c (expand_prologue): Emit blockage at the end
30336         of function prologue when frame pointer is used to access
30337         red zone area.
30338
30339 2009-02-10  Richard Guenther  <rguenther@suse.de>
30340
30341         PR middle-end/39127
30342         * gimplify.c (gimple_regimplify_operands): Always look if
30343         we need to create a temporary.
30344
30345 2009-02-10  Richard Guenther  <rguenther@suse.de>
30346
30347         PR tree-optimization/39132
30348         * tree-loop-distribution.c (todo): New global var.
30349         (generate_memset_zero): Trigger TODO_rebuild_alias.
30350         (tree_loop_distribution): Return todo.
30351
30352 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
30353
30354         PR target/39119
30355         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
30356         (x86_64_reg_class_name): Removed.
30357         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
30358         first one isn't X86_64_SSE_CLASS or any other ones aren't
30359         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
30360         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
30361         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
30362         and 3 X86_64_SSEUP_CLASS.
30363         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
30364         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
30365
30366 2009-02-10  Ben Elliston  <bje@au.ibm.com>
30367
30368         * config/rs6000/rs6000.md (allocate_stack): Always use an update
30369         form instruction to update the stack back chain word, even if the
30370         user has disabled the generation of update instructions.
30371         (movdi_<mode>_update_stack): New.
30372         (movsi_update_stack): Likewise.
30373         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
30374         always use an update form instruction to update the stack back
30375         chain word.
30376
30377 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
30378
30379         PR middle-end/38953
30380         * graphite.c (if_region_set_false_region): After moving a region in
30381         the false branch of a condition, remove the empty dummy basic block.
30382         (gloog): Remove wrong fix for PR38953.
30383
30384 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30385
30386         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
30387         generation due to implicit sign extension.
30388
30389 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
30390
30391         PR middle-end/38981
30392         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
30393         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
30394
30395 2009-02-09  Richard Guenther  <rguenther@suse.de>
30396
30397         PR middle-end/35202
30398         * convert.c (convert_to_real): Disable (float)fn((double)x)
30399         to fnf(x) conversion if errno differences may occur and
30400         -fmath-errno is set.
30401
30402 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
30403
30404         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
30405         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
30406         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
30407
30408 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
30409
30410         PR c/35434
30411         * c-common.c (handle_alias_attribute): Disallow attribute for
30412         anything not a FUNCTION_DECL or VAR_DECL.
30413
30414 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
30415
30416         PR c/39035
30417         * real.c (do_compare): Special-case compare of zero against
30418         decimal float value.
30419
30420 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
30421
30422         PR c/36432
30423         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
30424         as indicating flexible array members unless the field itself is
30425         being declarared as the incomplete array.
30426
30427 2009-02-06  Jan Hubicka  <jh@suse.cz>
30428
30429         PR tree-optimization/38844
30430         * ipa-inline.c (try_inline): Stop inlining recursion when edge
30431         is already inlined.
30432
30433 2009-02-06  Richard Guenther  <rguenther@suse.de>
30434
30435         PR middle-end/38977
30436         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
30437         fork because we may expand it as __gcov_fork.
30438
30439 2009-02-06  Nick Clifton  <nickc@redhat.com>
30440
30441         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
30442
30443 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
30444
30445         PR tree-optimization/35659
30446         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
30447         vn_phi_eq): Shortcut if hashcode does not match.
30448         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
30449         NULL operands.
30450         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
30451         and avoid iterative_hash_expr.
30452         (FOR_EACH_VALUE_ID_IN_SET): New.
30453         (value_id_compare): Remove.
30454         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
30455         sort expressions by value id.
30456
30457 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
30458
30459         PR target/38991
30460         * config/sh/predicates.md (general_movsrc_operand): Don't check
30461         the subreg of system registers here.
30462
30463 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
30464
30465         PR c++/39106
30466         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
30467         on the copied decl.
30468
30469 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
30470
30471         PR rtl-optimization/39110
30472         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
30473         addresses, not aligned ones.
30474
30475 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
30476             Richard Guenther  <rguenther@suse.de>
30477
30478         PR tree-optimization/39100
30479         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
30480         comment says and add edges.
30481
30482 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
30483
30484         PR c/35435
30485         * c-common.c (handle_tls_model_attribute): Ignore attribute for
30486         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
30487
30488 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
30489
30490         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
30491         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
30492         register_bb_in_sese, new_sese, free_sese): Moved.
30493         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
30494         outermost_loop_in_scop, build_scop_iteration_domain,
30495         expand_scalar_variables_ssa_name, get_vdef_before_scop,
30496         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
30497         Use loop_in_sese_p instead of loop_in_scop_p.
30498         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
30499         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
30500         (scopdet_basic_block_info): Fix bug in scop detection.
30501         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
30502         eq_loop_to_cloog_loop): Remove.
30503         (nb_loops_around_loop_in_scop, nb_loop
30504         ref_nb_loops): Moved here...
30505         * graphite.h (ref_nb_loops): ... from here.
30506         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
30507         (loop_domain_dim, loop_iteration_vector_dim): Remove.
30508         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
30509
30510 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
30511             Hans-Peter Nilsson  <hp@axis.com>
30512
30513         PR rtl-optimization/37889
30514         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
30515         Move offset handling from PLUS to before the switch.  Use new
30516         arguments when considering SYMBOL_REFs too.
30517         (rtx_addr_can_trap_p): Pass dummy offset and size.
30518         (enum may_trap_p_flags): Remove.
30519         (may_trap_p_1): Pass size from MEM_SIZE.
30520
30521         PR rtl-optimization/38921
30522         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
30523         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
30524         * rtlanal.c (may_trap_after_code_motion_p): Delete.
30525         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
30526
30527 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
30528
30529         AVX Programming Reference (January, 2009)
30530         * config/i386/sse.md (*vpclmulqdq): New.
30531
30532 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
30533
30534         PR tree-optimization/38977
30535         PR gcov-profile/38292
30536         * calls.c (special_function_p): Disregard __builtin_ prefix.
30537
30538 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
30539
30540         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
30541         non-indexable addresses even before reload.
30542
30543 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
30544
30545         PR c/29129
30546         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
30547         as having variable size.  Do not give an error for unnamed
30548         parameters with [*] declarators.  Give a warning for type names
30549         with [*] declarators and mark them as variable size.
30550         * c-parser.c (c_parser_sizeof_expression): Do not give an error
30551         for sizeof applied to [*] type names.
30552
30553 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
30554
30555         PR C++/36607
30556         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
30557
30558 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
30559
30560         * gcc.c (process_command): Update copyright notice dates.
30561         * gcov.c (print_version): Likewise.
30562         * gcov-dump.c (print_version): Likewise.
30563         * mips-tfile.c (main): Likewise.
30564         * mips-tdump.c (main): Likewise.
30565
30566 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
30567
30568         PR c/35433
30569         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
30570         for composite type involving a zero-length array type.
30571
30572 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
30573
30574         PR target/35318
30575         * function.c (match_asm_constraints_1): Skip over
30576         initial optional % in the constraint.
30577
30578         PR inline-asm/39059
30579         * c-parser.c (c_parser_postfix_expression): If fixed point is not
30580         supported, don't accept FIXED_CSTs.
30581         * c-decl.c (finish_declspecs): Error if fixed point is not supported
30582         and _Sat is used without _Fract/_Accum.  Set specs->type to
30583         integer_type_node for cts_fract/cts_accum if fixed point is not
30584         supported.
30585
30586 2009-02-02  Catherine Moore  <clm@codesourcery.com>
30587
30588         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
30589
30590 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
30591
30592         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
30593         (ABI_HAS_64BIT_SYMBOLS): Use it.
30594         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
30595
30596 2009-02-02  Paul Brook  <paul@codesourcery.com>
30597
30598         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
30599
30600 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
30601
30602         PR inline-asm/39058
30603         * recog.h (asm_operand_ok): Add constraints argument.
30604         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
30605         recurse on matching constraint.
30606         (check_asm_operands): Pass constraints as 3rd argument to
30607         asm_operand_ok.  Don't look up matching constraint here.
30608         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
30609         to asm_operand_ok.
30610
30611 2009-02-02  Ben Elliston  <bje@au.ibm.com>
30612
30613         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
30614         TARGET_NARROW_VOLATILE_BITFIELD macro names.
30615
30616 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
30617
30618         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
30619         information.  Remove some obsolete information.  Reorganize.
30620
30621         * config/pa/fptr.c: Revert license to GPL 2.
30622         * config/pa/milli64.S: Likewise.
30623
30624 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
30625
30626         PR target/38904
30627         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
30628         LIBRARY name in, instead of hard-coding it.
30629         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
30630         extra target make frag to tmake_files according to EH model.
30631         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
30632         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
30633         frags that define makefile variable EH_MODEL appropriately.
30634         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
30635         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
30636         to "-sjlj" according to type of EH configured.
30637         (LIBGCC_SONAME):  Concatenate it to shared library base name.
30638         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
30639         to "_sjlj" according to type of EH configured.
30640         (LIBGCC_SONAME):  Concatenate it to shared library base name.
30641         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
30642         (SHLIB_LINK):  Add missing semicolon to if-else construct.
30643         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
30644         string value of "pe_dll" command-line option.
30645         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
30646         (SHLIB_SONAME):  Use it when overriding t-cygming default.
30647         (SHLIB_IMPLIB):  Override t-cygming default.
30648         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
30649         string value of "pe_dll" command-line option.
30650
30651 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
30652
30653         PR target/38952
30654         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
30655         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
30656
30657 2009-01-31  Richard Guenther  <rguenther@suse.de>
30658
30659         PR tree-optimization/38937
30660         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
30661         computing the transitive closure.
30662
30663 2009-01-30  Richard Guenther  <rguenther@suse.de>
30664
30665         PR tree-optimization/39041
30666         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
30667         Propagate variable indices only if the types match for this stmt.
30668
30669 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
30670
30671         PR target/39013
30672         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
30673         inline but never defined.
30674
30675 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
30676
30677         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
30678         (*insv_h_di_reg_extimm): New insn.
30679         (*insv_l<mode>_reg_extimm): New insn.
30680
30681 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
30682
30683         * config/picochip/picochip.c (flag_conserve_stack): set
30684         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
30685         fconserve-stack. Reduce call-overhead used by inliner.
30686
30687 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
30688
30689         PR/38157
30690         * common.opt (flag_conserve_stack): Initialised to zero.
30691
30692 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
30693
30694         PR/39002
30695         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
30696         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
30697         method.
30698
30699 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
30700
30701         * ira-color.c (allocno_reload_assign): Update comments.
30702         * regmove.c (regmove_optimize): Likewise.
30703
30704         * ra.h: Removed.
30705
30706 2009-01-29  Robert Millan  <rmh@aybabtu.com>
30707
30708         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
30709         * config/i386/kopensolaris-gnu.h: New file.  Undefine
30710         `MD_UNWIND_SUPPORT'.
30711         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
30712
30713 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
30714
30715         PR tree-optimization/39007
30716         * tree-loop-distribution.c (generate_builtin): Use
30717         recompute_dominator to compute the immediate dominator of the
30718         basic block just after the loop.
30719
30720 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
30721
30722         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
30723         (ASM_OUTPUT_DWARF_PCREL): Define.
30724
30725 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
30726
30727         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
30728         * doc/passes.texi: Remove entries about regclass, local-alloc, and
30729         global.  Modify entries about regmove and IRA.
30730
30731         * ra-conflict.c: Remove the file.
30732
30733         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
30734
30735         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
30736         (pass_regclass_init): Rename to pass_reginfo_init.
30737
30738         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
30739
30740         * toplev.h (flag_ira): Remove.
30741
30742         * caller-save.c (setup_save_areas): Remove flag_ira.
30743
30744         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
30745
30746         * global.c: Remove the file.
30747
30748         * opts.c (decode_options): Remove flag_ira.
30749
30750         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
30751
30752         * regmove.c: Modify file description.
30753         (find_use_as_address, try_auto_increment): Define them only if
30754         AUTO_INC_DEC is defined.
30755         (replacement_quality, replace_in_call_usage, fixup_match_1,
30756         stable_and_no_regs_but_for_p): Remove.
30757         (reg_set_in_bb): Make it static.
30758         (regmove_optimize): Remove flag_ira and code which worked for
30759         !flag_ira.
30760
30761         * local-alloc.c: Remove the file.
30762
30763         * common.opt (fira): Remove.
30764
30765         * ira.c: Include except.h.
30766         (eliminable_regset): Move from global.c.
30767         (mark_elimination): Ditto.  Remove flag_ira.
30768         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
30769         equiv_mem_modified, validate_equiv_mem_from_store,
30770         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
30771         contains_replace_regs, memref_referenced_p, memref_used_between_p,
30772         no_equiv, recorded_label_ref): Move from local-alloc.c.
30773         (update_equiv_regs): Ditto.  Make it static.
30774         (print_insn_chain, print_insn_chains): Move it from global.c.
30775         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
30776         (build_insn_chain): Ditto.  Make it static.
30777         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
30778         Rename to init_live_subregs.
30779         (gate_ira): Remove flag_ira.
30780
30781         * regclass.c: Rename reginfo.c.  Change file description.
30782         (FORBIDDEN_INC_DEC_CLASSES): Remove.
30783         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
30784         (init_reg_sets_1): Remove code for evaluation of
30785         reg_class_superclasses and losing_caller_save_reg_set.
30786         (init_regs): Remove init_reg_autoinc.
30787         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
30788         ok_for_base_p_nonstrict): Remove.
30789         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
30790         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
30791         corresponding entries.
30792         (dump_regclass, record_operand_costs, scan_one_insn,
30793         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
30794         record_address_regs, auto_inc_dec_reg_p): Remove.
30795         (gt-regclass.h): Rename to gt-reginfo.h.
30796
30797         * rtl.h (dump_global_regs, retry_global_alloc,
30798         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
30799
30800         * Makefile.in (RA_H): Remove.
30801         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
30802         Rename regclass.o to reginfo.o.
30803         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
30804         gt-reginfo.h.
30805         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
30806         (GTFILES): Rename regclass.c to reginfo.c.
30807
30808         * passes.c (init_optimization_passes): Remove pass_local_alloc and
30809         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
30810
30811         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
30812         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
30813         Remove flag_ira.
30814         (finish_spills): Ditto.  Remove code for !flag_ira.
30815
30816 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
30817
30818         PR middle-end/35854
30819         * doc/invoke.texi (rtl debug options): Complete rewrite.
30820         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
30821         to auto_inc_dec".
30822         * mode-switching.c (pass_mode_switching): Rename pass from
30823         "mode-sw" to "mode_sw".
30824         * except.c (pass_convert_to_eh_ranges): Rename pass from
30825         "eh-ranges" to "eh_ranges".
30826         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
30827         to "subreg1".
30828
30829
30830 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
30831             Alexander Monakov  <amonakov@ispras.ru>
30832
30833         PR middle-end/38857
30834         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
30835         register.
30836         (move_exprs_to_boundary): Change return type and pass through
30837         should_move from move_op.  Relax assert.  Update usage ...
30838         (schedule_expr_on_boundary): ... here.  Use should_move instead of
30839         cant_move.
30840         (move_op_orig_expr_found): Indicate that insn was disconnected from
30841         stream.
30842         (code_motion_process_successors): Do not call after_merge_succs
30843         callback if original expression was not found when traversing any of
30844         the branches.
30845         (code_motion_path_driver): Change return type.  Update prototype.
30846         (move_op): Update comment.  Add a new parameter (should_move).  Update
30847         prototype.  Set *should_move based on indication provided by
30848         move_op_orig_expr_found.
30849
30850 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
30851
30852         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
30853         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
30854         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
30855         * config/rs6000/rs6000.c (rs6000_override_options): Default
30856         avoid-indexed-addresses on for Power6, off for everything else.
30857         (avoiding_indexed_address_p): New function.
30858         (rs6000_legitimize_address): Use it.
30859         (rs6000_legitimate_address): Likewise.
30860         * config/rs6000/rs6000.md (movXX_updateX): Likewise
30861
30862 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
30863
30864         PR tree-optimization/38997
30865         * tree-loop-distribution.c (generate_memset_zero): Use
30866         POINTER_PLUS_EXPR for a pointer addition.
30867
30868 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
30869
30870         * config/s390/s390.md (bswap<mode>2): New pattern added.
30871
30872 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
30873
30874         * config/s390/s390.md (*tls_load_31): Added type attribute.
30875
30876 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
30877
30878         * config/s390/s390.md: Fix a few comments.
30879
30880 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
30881
30882         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
30883         (*tm<mode>_full): Fixed z10prop attribute.
30884         (*tst<mode>_extimm): Fixed z10prop attribute.
30885         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
30886         (*tstqiCCT_cconly): Fixed z10prop attribute.
30887         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
30888         (*movsi_larl): Fixed z10prop attribute.
30889         (*movsi_zarch): Fixed z10prop attribute.
30890         (*movsi_eas): Fixed z10prop attribute.
30891         (*movhi): Fixed z10prop attribute.
30892         (*movqi): Fixed z10prop attribute.
30893         (*movstrictqi): Fixed z10prop attribute.
30894         (*mov<mode>): Fixed z10prop attribute.
30895         (*movcc): Fixed z10prop attribute.
30896         (*sethighpartdi_64): Fixed z10prop attribute.
30897         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
30898         (*negdi2_sign_cc): Fixed z10prop attribute.
30899         (*negdi2_sign): Fixed z10prop attribute.
30900         (*absdi2_sign_cc): Fixed z10prop attribute.
30901         (*absdi2_sign): Fixed z10prop attribute.
30902         (*negabsdi2_sign_cc): Fixed z10prop attribute.
30903         (*negabsdi2_sign): Fixed z10prop attribute.
30904         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
30905         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
30906         (doloop_si64): Fixed z10prop attribute.
30907         (doloop_si31): Fixed z10prop attribute.
30908         (doloop_long): Fixed z10prop attribute.
30909         (indirect_jump): Fixed z10prop attribute.
30910         (nop): Fixed z10prop attribute.
30911         (main_base_64): Fixed z10prop attribute.
30912         (reload_base_64): Fixed z10prop attribute.
30913
30914 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
30915
30916         PR rtl-optimization/38740
30917         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
30918         if !optimize.
30919         * config/mips/mips.c (mips_reorg): Likewise.
30920
30921 2009-01-28  Richard Guenther  <rguenther@suse.de>
30922
30923         PR tree-optimization/38926
30924         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
30925         with the correct value id to a value.
30926         (do_regular_insertion): Use the value number of edoubleprime
30927         for the value number of the expr.
30928
30929         Revert
30930         2008-08-21  Richard Guenther  <rguenther@suse.de>
30931
30932         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
30933         a PHI ask VN if it is already available.
30934         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
30935         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
30936
30937 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
30938
30939         PR middle-end/38934
30940         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
30941         set to varying whenever max has TREE_OVERFLOW set, similarly
30942         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
30943
30944 2009-01-28  Richard Guenther  <rguenther@suse.de>
30945
30946         PR middle-end/38908
30947         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
30948         uninitialized aggregate uses in call arguments.
30949
30950 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
30951
30952         PR tree-optimization/38984
30953         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
30954         the nothing_id variable if -fno-delete-null-pointer-checks.
30955
30956 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
30957
30958         PR target/38988
30959         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
30960         (set_got_offset_rex64): Ditto.
30961
30962 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
30963
30964         PR target/38941
30965         * doc/extend.texi: Improve local variable with asm reg.
30966
30967 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
30968
30969         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
30970         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
30971         was not supplied then set warn_packed_bitfield_compat to the
30972         default value of 1.
30973         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
30974         against 1.
30975
30976 2009-01-27  Richard Guenther  <rguenther@suse.de>
30977
30978         PR tree-optimization/38503
30979         * cfgexpand.c (expand_gimple_basic_block): Ignore
30980         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
30981         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
30982         variables that cannot have TBAA applied.
30983         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
30984         statements.
30985
30986 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
30987
30988         PR middle-end/38969
30989         * calls.c (initialize_argument_information): Do not wrap complex
30990         arguments in SAVE_EXPR.
30991
30992 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
30993
30994         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
30995         (INSTALL_LIBGCC): Revert typo commit.
30996
30997 2009-01-26  Richard Guenther  <rguenther@suse.de>
30998
30999         PR tree-optimization/38745
31000         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
31001         from special handling.
31002
31003 2009-01-26  Richard Guenther  <rguenther@suse.de>
31004
31005         PR tree-optimization/38745
31006         * tree-ssa.c (execute_update_addresses_taken): Do not include
31007         variables that cannot possibly be a register in not_reg_needs.
31008         Do not clear TREE_ADDRESSABLE on vars that may not become
31009         registers.
31010         * tree-ssa.c (update_alias_info_1): Include those in the set
31011         of addressable vars.
31012
31013 2009-01-26  Richard Guenther  <rguenther@suse.de>
31014
31015         PR middle-end/38851
31016         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
31017         * tree-ssa-dse.c: Include langhooks.h
31018         (execute_simple_dse): Remove stores with zero size.
31019
31020 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
31021
31022         PR c/38957
31023         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
31024         as PLUS_EXPR.
31025
31026 2009-01-24  Julian Brown  <julian@codesourcery.com>
31027
31028         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
31029         config/arm/linux-atomic.c.
31030         * config/arm/linux-atomic.c: New.
31031
31032 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
31033
31034         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
31035         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
31036         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
31037
31038 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
31039
31040         PR c/38938
31041         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
31042         properly.
31043
31044 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
31045
31046         PR tree-optimization/38953
31047         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
31048         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
31049         (gloog): Split the exit of the scop when the scop exit is a loop exit.
31050         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
31051         changed the CFG.
31052
31053 2009-01-24  Paul Brook  <paul@codesourcery.com>
31054
31055         * config/arm/neon.md (neon_type): Move to arm.md.
31056         (neon_mov<VSTRUCT>): Add neon_type attribute.
31057         * config/arm/arm.md (neon_type): Move to here.
31058         (conds): Add "unconditioal" and use as default for NEON insns.
31059
31060 2009-01-24  Ben Elliston  <bje@au.ibm.com>
31061
31062         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
31063         void *' warning from -Wc++-compat.
31064         * Makefile.in (dominance.o-warn): Remove.
31065
31066 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
31067
31068         PR tree-optimization/38932
31069         * fold-const.c (fold_unary_ignore_overflow): New.
31070         * tree.h (fold_unary_ignore_overflow): Declare.
31071         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
31072         * tree-ssa-sccvn.c (visit_reference_op_load,
31073         simplify_unary_expression): Likewise.
31074
31075 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
31076
31077         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
31078         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
31079         regardless of their type.
31080         * c-common.c (handle_packed_attribute): Don't ignore packed on
31081         bitfields.
31082         * c.opt (Wpacked-bitfield-compat): New warning option.
31083         * stor-layout.c (place_field): Warn if offset of a field changed.
31084         * doc/extend.texi (packed): Mention the ABI change.
31085         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
31086         (Warning Options): Add it to the list.
31087
31088 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
31089
31090         * c-opts.c (c_common_post_options): Fix a typo in comments.
31091
31092 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
31093
31094         PR middle-end/38615
31095         * gimplify.c (gimplify_init_constructor): Fix promotion of const
31096         variables to static.
31097         * doc/invoke.texi (-fmerge-all-constants): Update description.
31098
31099 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
31100
31101         PR target/38931
31102         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
31103         (*movdi_1_rex64): Use type "mmx" for alternative 5.
31104
31105 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
31106
31107         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
31108         a word boundary.
31109         (LOCAL_ALIGNMENT): Similarly.
31110
31111 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
31112             Joseph Myers  <joseph@codesourcery.com>
31113
31114         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
31115         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
31116         * config/arm/arm-tune.md: Regenerate.
31117         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
31118         -march=iwmmxt2.
31119
31120 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
31121
31122         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
31123         version number to five.
31124
31125 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
31126
31127         PR c++/38930
31128         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
31129         * c-common.c (set_underlying_type): Likewise.
31130         (is_typedef_decl ): Likewise
31131         * tree.h: Likewise
31132         (set_underlying_type): Likewise.
31133         (is_typedef_type): Likewise.
31134
31135 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
31136
31137         PR middle-end/38587
31138         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
31139         crossing setjmps.
31140
31141 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
31142
31143         PR bootstrap/37660
31144         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
31145         (LIBGCC_SPEC):  Don't define.
31146         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
31147
31148 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
31149
31150         PR rtl-optimization/38879
31151         * alias.c (base_alias_check): Unaligned access via AND address can
31152         alias all surrounding object types except those with sizes equal
31153         or wider than the size of unaligned access.
31154
31155 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
31156
31157         PR c++/26693
31158         * c-decl.c (clone_underlying_type): Move this ...
31159         * c-common.c (set_underlying_type): ... here.
31160         Also, make sure the function properly sets TYPE_STUB_DECL() on
31161         the newly created typedef variant type.
31162         (is_typedef_decl ): New entry point.
31163         * tree.h: Added a new member member_types_needing_access_check to
31164         struct tree_decl_non_common.
31165         (set_underlying_type): New entry point.
31166         (is_typedef_type): Likewise.
31167
31168 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
31169
31170         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
31171         Check whether two instructions have memory references that
31172         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
31173         are helper functions for traversing.
31174         * alias.h (insn_alias_sets_confilict_p): New prototypes.
31175         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
31176         not to draw dependency edge for instructions with non-conflicting
31177         alias sets.
31178
31179 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
31180
31181         PR other/38758
31182         * longlong.h: Update copyright years.  Use soft-fp license notice.
31183         Sync __clz_tab declaration with glibc.
31184
31185 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
31186
31187         PR target/30687
31188         * doc/extend.texi (syscall_linkage): New.
31189         (version_id): Modify.
31190
31191 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
31192             Richard Guenther  <rguenther@suse.de>
31193
31194         PR tree-optimization/38747
31195         PR tree-optimization/38748
31196         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
31197         conversion if the base address is an indirect reference and the
31198         aliasing sets could cause issues.
31199
31200 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
31201
31202         * common.opt (fgraphite, fgraphite-identity): Add comment for
31203         explaining why these options are not documented.
31204
31205 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
31206
31207         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
31208         gimple_call_lhs is NULL.
31209
31210 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
31211
31212         PR target/38868
31213         * emit-rtl.c (adjust_address_1): Make sure memref is never
31214         overwritten.
31215
31216 2009-01-20  Ben Elliston  <bje@au.ibm.com>
31217
31218         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
31219         const qualifier from arg parameter. Remove unnecessary cast to char *.
31220         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
31221         const qualifier from arg 2.
31222
31223 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
31224
31225         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
31226
31227 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
31228
31229         PR c/38869
31230         * rtl.h (reinit_regs): New prototype.
31231         * regclass.c: Include ira.h.
31232         (reinit_regs): New.
31233         * Makefile.in (regclass.o): Add ira.h.
31234         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
31235
31236 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
31237
31238         PR target/38736
31239         * c-common.c (handle_aligned_attribute): Use
31240         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
31241         default alignment value.
31242
31243         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
31244
31245         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
31246         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
31247
31248         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
31249         __BIGGEST_ALIGNMENT__.
31250
31251         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
31252
31253 2009-01-18  Richard Guenther  <rguenther@suse.de>
31254
31255         PR tree-optimization/38819
31256         * tree-flow.h (operation_could_trap_helper_p): Declare.
31257         * tree-eh.c (operation_could_trap_helper_p): Export.
31258         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
31259         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
31260         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
31261         are about to insert a possibly trapping instruction and fail
31262         in this case.
31263
31264 2009-01-18  Andreas Schwab  <schwab@suse.de>
31265
31266         * doc/install.texi (Configuration): Remove obsolete paragraph
31267         about use of --with-gnu-ld with --with-gnu-as.
31268
31269 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
31270
31271         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
31272         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
31273         Follow spelling conventions.
31274
31275 2009-01-18  Ben Elliston  <bje@au.ibm.com>
31276
31277         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
31278         C++ warning about implicit conversion from void * to struct
31279         bitmap_head_def *.
31280         (bitmap_obstack_free): Likewise for bitmap_element *.
31281         * Makefile.in (bitmap.o-warn): Remove.
31282
31283 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
31284
31285         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
31286
31287 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
31288             Tobias Grosser  <tobi.grosser@amd.com>
31289
31290         * graphite.c (graphite_trans_scop_block): Do not block single
31291         nested loops.
31292
31293 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
31294
31295         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
31296         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
31297         test with assertion.
31298
31299 2009-01-16  Richard Guenther  <rguenther@suse.de>
31300
31301         PR tree-optimization/38835
31302         PR middle-end/36227
31303         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
31304         and INT + PTR -> (INT)(PTR p+ INT) folding.
31305         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
31306
31307 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
31308
31309         PR target/38554
31310         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
31311         the subreg from a lowpart subreg if it is also casting the value.
31312
31313 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
31314             Tobias Grosser  <tobi.grosser@amd.com>
31315
31316         * graphite.c (compare_prefix_loops): New.
31317         (build_scop_canonical_schedules): Rewritten.
31318         (graphite_transform_loops): Move build_scop_canonical_schedules
31319         after build_scop_iteration_domain.
31320
31321 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
31322             Tobias Grosser  <tobi.grosser@amd.com>
31323
31324         * graphite.c (add_conditions_to_domain): Add the loops to
31325         the dimension of the iteration domain.  Do copy the domain
31326         only when it exists.
31327         (build_scop_conditions_1): Do not call add_conditions_to_domain.
31328         (add_conditions_to_constraints): New.
31329         (can_generate_code_stmt, can_generate_code): Removed.
31330         (gloog): Do not call can_generate_code.
31331         (graphite_transform_loops): Call add_conditions_to_constraints
31332         after building the iteration domain.
31333
31334 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
31335
31336         PR tree-optimization/38789
31337         * tree-ssa-threadedge.c
31338         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
31339         __builtin_constant_p.
31340
31341 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
31342
31343         * dce.c (delete_unmarked_insns): Reversed the order that insns are
31344         examined before deleting them.
31345
31346 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
31347
31348         * function.c (aggregate_value_p): Correctly extract the function
31349         type from CALL_EXPR_FN lookup.
31350
31351 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
31352
31353         * config/picochip/picochip.c (picochip_override_options): Revert
31354         CFI asm flag disable commited previously.
31355
31356 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
31357             Tobias Grosser  <tobi.grosser@amd.com>
31358             Jan Sjodin  <jan.sjodin@amd.com>
31359
31360         * graphite.c (scan_tree_for_params): On substractions negate
31361         all the coefficients of the term.
31362         (clast_to_gcc_expression_red): New.  Handle reduction expressions
31363         of more than two operands.
31364         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
31365         (get_vdef_before_scop): Handle also the case of default definitions.
31366
31367 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
31368
31369         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
31370         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
31371         Also use them when walking CALL_INSN_FUNCTION_USAGE.
31372
31373 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
31374             Joey Ye  <joey.ye@intel.com>
31375
31376         PR middle-end/37843
31377         * cfgexpand.c (expand_stack_alignment): Don't update stack
31378         boundary nor check incoming stack boundary here.
31379         (gimple_expand_cfg): Update stack boundary and check incoming
31380         stack boundary here.
31381
31382 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
31383
31384         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
31385
31386 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
31387
31388         PR rtl-optimization/38245
31389         * calls.c (expand_call): Add stack arguments to
31390         CALL_INSN_FUNCTION_USAGE even for pure calls (when
31391         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
31392         in regs and partially in memory or BLKmode arguments.
31393         (emit_library_call_value_1): Add stack arguments to
31394         CALL_INSN_FUNCTION_USAGE even for pure calls (when
31395         ACCUMULATE_OUTGOING_ARGS).
31396         * dce.c: Include tm_p.h.
31397         (find_call_stack_args): New function.
31398         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
31399         argument.
31400         (mark_insn): Call find_call_stack_args for CALL_Ps.
31401         (prescan_insns_for_dce): Walk insns backwards in bb rather than
31402         forwards.  Allocate and free arg_stores bitmap if needed, pass it
31403         down to deletable_insn_p, don't mark stores set in arg_stores
31404         bitmap, clear the bitmap at the beginning of each bb.
31405         * Makefile.in (dce.o): Depend on $(TM_P_H).
31406
31407 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
31408
31409         PR target/22599
31410         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
31411         to make sure the insn is a conditional test (bug 22599).  Reformat a
31412         few long lines.
31413
31414 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
31415
31416         PR middle-end/38431
31417         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
31418         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
31419         (gloog): Do not call cleanup_tree_cfg.
31420         (graphite_transform_loops): Call cleanup_tree_cfg after all
31421         scops have been code generated.
31422
31423 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
31424         * doc/gty.texi (Invoking the garbage collector): Added new node
31425         and section documenting ggc_collect.
31426
31427 2009-01-14  Richard Guenther  <rguenther@suse.de>
31428
31429         PR tree-optimization/38826
31430         PR middle-end/38477
31431         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
31432         initialization notes only if we actually emitted a warning.
31433         (intra_create_variable_infos): Add constraints for a result decl
31434         that is passed by hidden reference.
31435         (build_pred_graph): Mark all related variables non-direct on
31436         address-taking.
31437
31438 2009-01-14  Nick Clifton  <nickc@redhat.com>
31439
31440         * ira-conflicts.c: Include addresses.h for the definition of
31441         base_reg_class.
31442         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
31443         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
31444
31445 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
31446
31447         PR target/38811
31448         * Makefile.in (ira-lives.o): Add except.h.
31449
31450         * ira-lives.c: Include except.h.
31451         (process_bb_node_lives): Process can_throw_internal.
31452
31453 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
31454
31455         PR rtl-optimization/38774
31456         * combine.c (simplify_set): When undoing cc_use change, don't do
31457         PUT_CODE on the newly created comparison, but instead put back the
31458         old comparison.
31459
31460 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
31461
31462         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
31463         values.  Remove duplicate arm8 entry.
31464
31465 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
31466
31467         PR tree-optimization/38786
31468         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
31469         the SSA_NAME case of expand_scalar_variables_expr.
31470         Set the type of an expression to the type of its assign statement.
31471         (expand_scalar_variables_expr): Also gather the scalar computation
31472         used to index the memory access.  Do not pass loop_p.
31473         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
31474         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
31475         the gimple_stmt_iterator where it inserts new code.
31476         Do not pass loop_p.
31477         (copy_bb_and_scalar_dependences): Do not pass loop_p.
31478         (translate_clast): Update call to copy_bb_and_scalar_dependences.
31479
31480 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
31481
31482         * graphite.h (debug_value): Removed.
31483         * graphite.c (debug_value): Removed.
31484
31485 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
31486
31487         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
31488         ldrd/strd with two 32-bit instructions.
31489
31490 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
31491
31492         * config/arm/arm.c (struct processors): Pass for speed down into
31493         cost helper functions.
31494         (const_ok_for_op): Handle COMPARE and inequality nodes.
31495         (arm_rtx_costs_1): Rewrite.
31496         (arm_size_rtx_costs): Update prototype.
31497         (arm_rtx_costs): Pass speed down to helper functions.
31498         (arm_slowmul_rtx_costs): Rework cost calculations.
31499         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
31500         (arm_9e_rtx_costs): Likewise.
31501
31502 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
31503
31504         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
31505         relocations of local symbols wider than UNITS_PER_WORD are not valid.
31506         (alpha_legitimize_address): Do not split local symbols wider than
31507         UNITS_PER_WORD into HIGH/LO_SUM parts.
31508
31509 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
31510
31511         PR bootstrap/38580
31512         * gcc.c (process_command): Replace call to execvp with calls
31513         to pex_one and exit.
31514
31515 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
31516
31517         PR target/29141
31518         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
31519         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
31520         variant for devices with 3-byte PC.
31521         (__tablejump_elpm__): New.
31522
31523 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
31524
31525         PR c/32041
31526         * c-parser.c (c_parser_postfix_expression): Allow `->' in
31527         offsetof member-designator, handle it as `[0].'.
31528
31529 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31530
31531         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
31532         function when not using named sections on targets with named sections
31533         if branch distance is less than 262132.
31534
31535 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
31536
31537         * combine.c (combine_instructions):  Recompute
31538         optimize_this_for_speed_p  for each BB in the main combine loop.
31539
31540 2009-01-12  Tomas Bily  <tbily@suse.cz>
31541
31542         PR middlend/38385
31543         * tree-loop-distribution.c (prop_phis): New function.
31544         (generate_builtin): Call prop_phis.
31545
31546 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
31547
31548         PR tree-optimization/38807
31549         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
31550         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
31551
31552 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
31553
31554         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
31555         subreg of op0 to the original op0.
31556
31557 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
31558
31559         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
31560
31561 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
31562
31563         PR debug/7055
31564         * mips-tfile.c (parse_def): Fix parsing of def strings
31565         starting with digits.
31566
31567 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
31568
31569         PR target/38695
31570         * config/arm/arm.c (arm_is_long_call_p): Don't call
31571         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
31572
31573 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
31574
31575         * regrename.c (regrename_optimize): Fix dumping.
31576         (find_oldest_value_reg): Preserve REG_POINTER.
31577         (copy_hardreg_forward_1): Likewise.
31578
31579 2009-01-09  Diego Novillo  <dnovillo@google.com>
31580
31581         * gimple.h (struct gimple_statement_base) <uid>: Document
31582         the restrictions on its use.
31583         (gimple_uid): Tidy.
31584         (gimple_set_uid): Tidy.
31585
31586 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
31587
31588         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
31589         zero guard even if align_bytes != 0 and count is smaller than
31590         size_needed.
31591
31592 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
31593
31594         PR rtl-optimization/38495
31595         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
31596         (add_range_and_copies_from_move_list): Print all added ranges.
31597         Add ranges to memory optimized destination.
31598
31599 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
31600
31601         PR target/38686
31602         PR target/38708
31603         * config/i386/i386.c (override_options): Reject
31604         -mstringop-strategy=rep_8byte with -m32.
31605         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
31606         to 1.  Do count comparison against epilogue_size_needed at compile
31607         time even when count_exp was constant forced into register.  For
31608         size_needed don't jump to epilogue, instead just avoid aligning
31609         and invoke the body algorithm.  If need_zero_guard, add zero guard
31610         even if count is non-zero, but smaller than size_needed + number of
31611         bytes that could be stored for alignment.
31612         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
31613         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
31614         but smaller than size_needed + number of bytes that could be stored
31615         for alignment.  Compare size_needed with epilogue_size_needed instead
31616         of desired_align - align, don't adjust size_needed, pass
31617         epilogue_size_needed to the epilogue expanders.
31618
31619         PR c/35742
31620         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
31621
31622 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31623
31624         * pa.c (last_address): Change to unsigned.
31625         (update_total_code_bytes): Change argument to unsigned.  Don't
31626         check if insn addresses are set.
31627         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
31628         addresses are not set.
31629         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
31630
31631 2009-01-09  Nick Clifton  <nickc@redhat.com>
31632
31633         * config/sh/symbian.c: Replace uses of DECL_INLINE with
31634         DECL_DECLARED_INLINE_P.
31635
31636 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
31637
31638         PR middle-end/38347
31639         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
31640         GET_MODE (op0) in operand_subword_force calls.
31641
31642         PR middle-end/38771
31643         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
31644         fold_convert arg0 operands to TREE_TYPE (op0) first.
31645
31646 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
31647
31648         * params.def (ira-max-conflict-table-size): Decrease default value
31649         to 1000.
31650
31651 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
31652
31653         PR tree-optimization/37031
31654         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
31655         on parameter_set.
31656         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
31657         allocate it using gc instead of heap, use VEC_quick_push instead of
31658         VEC_safe_push.
31659         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
31660         instead of heap, use VEC_quick_push instead of VEC_safe_push.
31661         * tree-data-ref.h (struct access_matrix): Change matrix to gc
31662         allocated vector from heap allocated.
31663         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
31664         * tree-loop-linear.c (linear_transform_loops): Allocate nest
31665         vector only after perfect_loop_nest_depth call.
31666
31667 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
31668             Jan Sjodin  <jan.sjodin@amd.com>
31669
31670         PR tree-optimization/38559
31671         * graphite.c (debug_value, copy_constraint,
31672         swap_constraint_variables, scale_constraint_variable, ): New.
31673         (get_lower_bound, get_upper_bound): Removed.
31674         (graphite_trans_bb_strip_mine): Clean up this code that works
31675         only for constant number of iterations.  Fully copy upper and
31676         lower bound constraints, not only the constant part of them.
31677         * graphite.h (debug_value): Declared.
31678
31679 2009-01-08  Ira Rosen  <irar@il.ibm.com>
31680
31681         PR tree-optimization/37194
31682         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
31683         Don't add the cost of cost model guard in prologue to scalar
31684         outside cost in case of known number of iterations.
31685
31686 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
31687             Alan Modra  <amodra@bigpond.net.au>
31688
31689         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
31690         non-word-aligned REG+CONST addressing.
31691
31692 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
31693
31694         PR target/38706
31695         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
31696         free_after_compilation when outputting a thunk.
31697         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
31698         Do not call free_after_compilation here.
31699
31700 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
31701
31702         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
31703         (ix86_valid_target_attribute_inner_p): Ditto.
31704
31705 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
31706
31707         PR tree-optimization/38492
31708         PR tree-optimization/38498
31709         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
31710         * tree-chrec.h (scev_is_linear_expression): Declared.
31711         * graphite.c (graphite_cannot_represent_loop_niter): New.
31712         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
31713         (graphite_loop_normal_form): Use gcc_assert.
31714         (scan_tree_for_params): Use CASE_CONVERT.
31715         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
31716         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
31717         Use gcc_assert.  Discard scops that contain unhandled cases.
31718         (build_scop_conditions): Return a boolean status for unhandled cases.
31719         (strip_mine_profitable_p): Print the loop number, not its depth.
31720         (is_interchange_valid): Pass the depth of the loop nest, don't
31721         recompute it wrongly.
31722         (graphite_trans_bb_block): Same.
31723         (graphite_trans_bb_block): Print tentative of loop blocking.
31724         (graphite_trans_scop_block): Do not print that the loop has been
31725         blocked.
31726         (graphite_transform_loops): Do not handle scops that contain condition
31727         scalar phi nodes.
31728
31729 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
31730
31731         AVX Programming Reference (December, 2008)
31732         * config/i386/avxintrin.h (_mm256_stream_si256): New.
31733         (_mm256_stream_pd): Likewise.
31734         (_mm256_stream_ps): Likewise.
31735
31736         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
31737         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
31738         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
31739         (bdesc_special_args): Add __builtin_ia32_movntdq256,
31740         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
31741         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
31742         (ix86_expand_special_args_builtin): Likewise.
31743
31744         * config/i386/sse.md (AVXMODEDI): New.
31745         (avx_movnt<mode>): Likewise.
31746         (avx_movnt<mode>): Likewise.
31747         (<sse>_movnt<mode>): Remove AVX support.
31748         (sse2_movntv2di): Likewise.
31749
31750 2009-01-07  Richard Guenther  <rguenther@suse.de>
31751
31752         PR middle-end/38751
31753         * fold-const.c (extract_muldiv): Remove obsolete comment.
31754         (fold_plusminus_mult_expr): Undo MINUS_EXPR
31755         to PLUS_EXPR canonicalization for the canonicalization.
31756
31757 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
31758
31759         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
31760         hosted cross-compilers generating less efficient code.
31761
31762 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
31763
31764         * function.h (rtl_data): Add a dbr_scheduled_p field.
31765         * reorg.c (dbr_schedule): Set it.
31766         (gate_handle_delay_slots): Check it.
31767         * config/mips/mips.c (mips_base_delayed_branch): Delete.
31768         (mips_reorg): Check flag_delayed_branch instead of
31769         mips_base_delayed_branch.
31770         (mips_override_options): Don't set mips_base_delayed_branch
31771         or flag_delayed_branch.
31772
31773 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
31774
31775         PR rtl-optimization/38426.
31776         * ira.c (ira): Set current_function_is_leaf earlier.
31777
31778 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
31779
31780         PR rtl-optimization/38722
31781         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
31782         too early, only set a flag and modify after last possible
31783         undo_all point.
31784
31785 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
31786
31787         PR c/34252
31788         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
31789         * real.c (decimal_single_format): Correct values of emin and emax.
31790         (decimal_double_format): Ditto.
31791         (decimal_quad_format): Ditto.
31792         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
31793         computation of DECnn_MIN and DECnn_MAX for corrected values of
31794         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
31795         __DECnn_MIN__, and adjust its computation for the corrected value
31796         of emin.
31797
31798 2009-01-06  Jan Hubicka  <jh@suse.cz>
31799
31800         PR target/38744
31801         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
31802
31803 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
31804
31805         * doc/contrib.texi (Contributors): Slightly adjust the end note.
31806         Add Robert Clark to the list of testers.
31807
31808 2009-01-06  Jan Hubicka  <jh@suse.cz>
31809             Kai Tietz  <kai.tietz@onevision.com>
31810
31811         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
31812         * config/i386/i386.c (ix86_expand_call): Add clobbers.
31813
31814 2009-01-06  Jan Hubicka  <jh@suse.cz>
31815             Kai Tietz  <kai.tietz@onevision.com>
31816
31817         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
31818         for w64 ABI.
31819         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
31820         (ix86_nsaved_regs): Count only general purpose regs.
31821         (ix86_nsaved_sseregs): New.
31822         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
31823         to 16 for w64; compute padding and size of sse reg save area.
31824         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
31825         general purpose regs.
31826         (ix86_emit_save_sse_regs_using_mov): New.
31827         (ix86_expand_prologue): Save SSE regs if needed.
31828         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
31829         (ix86_emit_restore_sse_regs_using_mov): New.
31830         (ix86_expand_epilogue): Save SSE regs if needed.
31831
31832 2009-01-06  Jan Hubicka  <jh@suse.cz>
31833             Kai Tietz  <kai.tietz@onevision.com>
31834
31835         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
31836         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
31837         functions when accumulate outgoing args is off.
31838
31839 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
31840
31841         PR bootstrap/38742
31842         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
31843         before using pseudos_have_intersected_live_ranges_p.
31844
31845         * ira-int.h (ira_assert): Always define.
31846
31847 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
31848
31849         AVX Programming Reference (December, 2008)
31850         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
31851         (_mm256_permute2_pd): Likewise.
31852         (_mm_permute2_ps): Likewise.
31853         (_mm256_permute2_ps): Likewise.
31854         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
31855         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
31856
31857         * config/i386/i386.c (ix86_builtins): Remove
31858         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
31859         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
31860         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
31861         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
31862         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
31863         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
31864         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
31865         __builtin_ia32_vpermil2ps256.
31866         (ix86_init_mmx_sse_builtins): Updated.
31867         (ix86_expand_args_builtin): Likewise.
31868
31869 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31870
31871         * pa.c (output_call): Relocate non-jump insns in the delay slot of
31872         long absolute calls when generating PA 2.0 code.
31873
31874 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
31875
31876         PR rtl-optimization/38583
31877         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
31878
31879         * params.def (ira-max-conflict-table-size): New.
31880
31881         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
31882
31883         * ira.h (ira_conflicts_p): New external definition.
31884
31885         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
31886         table.  Report this.  Return result of building.
31887         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
31888         building conflict table.
31889
31890         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
31891         (ira_color): Use ira_conflicts_p.
31892
31893         * global.c: Include ira.h.
31894         (pseudo_for_reload_consideration_p, build_insn_chain): Use
31895         ira_conflicts_p.
31896
31897         * Makefile.in (global.o): Add ira.h.
31898
31899         * ira-build.c (mark_all_loops_for_removal,
31900         propagate_some_info_from_allocno): New.
31901         (remove_unnecessary_allocnos): Call
31902         propagate_some_info_from_allocno.
31903         (remove_low_level_allocnos): New.
31904         (remove_unnecessary_regions): Add parameter.  Call
31905         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
31906         parameter to remove_unnecessary_regions.
31907         (ira_build): Remove all regions but root if the conflict table was
31908         not built.  Update conflict hard regs for allocnos crossing calls.
31909
31910         * ira.c (ira_conflicts_p): New global.
31911         (ira): Define and use ira_conflicts_p.
31912
31913         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
31914         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
31915         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
31916
31917 2009-01-06  Ben Elliston  <bje@au.ibm.com>
31918
31919         * gengtype-lex.l (YY_NO_INPUT): Define.
31920
31921 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
31922
31923         PR c/34911
31924         * c-common.c (handle_vector_size_attribute): Also reject
31925         BOOLEAN_TYPE types.
31926
31927 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
31928
31929         PR tree-optimization/38492
31930         * graphite.c (rename_map_elt, debug_rename_elt,
31931         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
31932         rename_map_elt_info, eq_rename_map_elts,
31933         get_new_name_from_old_name, bb_in_sese_p): Moved around.
31934         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
31935         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
31936         (sese_build_livein_liveouts): New.
31937         (new_sese, free_sese): New.
31938         (new_scop): Call new_sese.
31939         (free_scop): Call free_sese.
31940         (rename_variables_from_edge, rename_phis_end_scop): Removed.
31941         (register_old_new_names): Renamed register_old_and_new_names.
31942         (register_scop_liveout_renames, add_loop_exit_phis,
31943         insert_loop_close_phis, struct igp,
31944         default_liveout_before_guard, add_guard_exit_phis,
31945         insert_guard_phis, copy_renames): New.
31946         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
31947         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
31948         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
31949         (scop_adjust_phis_for_liveouts): New.
31950         (gloog): Call scop_adjust_phis_for_liveouts.
31951
31952         * graphite.h (struct sese): Documented.  Added fields liveout,
31953         num_ver and livein.
31954         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
31955         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
31956         (struct scop): Added field liveout_renames.
31957         (SCOP_LIVEOUT_RENAMES): New.
31958
31959 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
31960
31961         PR tree-optimization/38510
31962         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
31963         (translate_clast): Call recompute_all_dominators before
31964         graphite_verify.
31965         (gloog): Call recompute_all_dominators before graphite_verify.
31966
31967 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
31968             Jan Sjodin  <jan.sjodin@amd.com>
31969
31970         PR tree-optimization/38500
31971         * graphite.c (create_sese_edges): Call fix_loop_structure after
31972         splitting blocks.
31973
31974 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
31975
31976         * config.gcc: Add m32r*-*-rtems*.
31977         * config/m32r/rtems.h: New file.
31978
31979 2009-01-05  Ben Elliston  <bje@au.ibm.com>
31980
31981         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
31982         (.po.pox): Likewise.
31983         (po/gcc.pot): Likewise.
31984
31985 2009-01-04  David S. Miller  <davem@davemloft.net>
31986
31987         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
31988         (STARTING_FRAME_OFFSET): Always set to zero.
31989
31990 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
31991
31992         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
31993         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
31994         fixed-point types, and vectors of the same.
31995
31996 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
31997
31998         * config/mips/sync.md (*mb_barrier): Rename to...
31999         (*memory_barrier): ...this.
32000
32001 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
32002
32003         * doc/extend.texi (Function Attributes): Move @cindex after @item
32004         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
32005         and put in alphabetical order. Fix 'target' name and put in order.
32006         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
32007         typos.
32008
32009 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
32010
32011         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
32012         (memory_barrier): Expand as unspec instead of unspec_volatile.
32013         Remove mem:BLK from insn operands.  Use Pmode scratch register.
32014         (*memory_barrier): Define as unspec instead of unspec_volatile.
32015         Use (match_dup 0) as input operand.
32016
32017         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
32018         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
32019         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
32020         scratch register.  Remove operand 1.
32021         (*stbar): Define as unspec instead of unspec_volatile.
32022         Use (match_dup 0) as input operand, remove (const_int 8).
32023         (*membar): Define as unspec instead of unspec_volatile.
32024         Use (match_dup 0) as input operand, remove input operand 2.
32025
32026         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
32027         (memory_barrier): Expand as unspec instead of unspec_volatile.
32028         Remove mem:BLK from insn operands.  Use Pmode scratch register.
32029         (*memory_barrier): Define as unspec instead of unspec_volatile.
32030         Use (match_dup 0) as input operand.
32031
32032         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
32033         Remove mem:BLK from insn operands.  Use Pmode scratch register.
32034         Set volatile flag on operand 0.
32035         (*memory_barrier): New insn pattern.
32036
32037         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
32038         insn operands.
32039         (*memory_barrier): Use (match_dup 0) as input operand.
32040
32041         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
32042         Remove mem:BLK from insn operands.  Use Pmode scratch register.
32043         Set volatile flag on operand 0.
32044         (*mb_internal): New insn pattern.
32045
32046         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
32047
32048 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
32049
32050         PR middle-end/38586
32051         * function.c (struct temp_slot): Move to the section of the file
32052         that deals with temp slots.  Remove field 'address'.
32053         (temp_slot_address_table): New hash table of address -> temp slot.
32054         (struct temp_slot_address_entry): New struct, items for the table.
32055         (temp_slot_address_compute_hash, temp_slot_address_hash,
32056         temp_slot_address_eq, insert_temp_slot_address): Support functions
32057         for the new table.
32058         (find_temp_slot_from_address): Rewrite to use the new hash table.
32059         (remove_unused_temp_slot_addresses): Remove addresses of temp
32060         slots that have been made available.
32061         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
32062         worker function for remove_unused_temp_slot_addresses.
32063         (assign_stack_temp_for_type): Don't clear the temp slot address list.
32064         Add the temp slot address to the address -> temp slot map.
32065         (update_temp_slot_address): Update via insert_temp_slot_address.
32066         (free_temp_slots): Call remove_unused_temp_slot_addresses.
32067         (pop_temp_slots): Likewise.
32068         (init_temp_slots): Allocate the address -> temp slot map, or empty
32069         the map if it is already allocated.
32070         (prepare_function_start): Initialize temp slot processing.
32071
32072 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
32073
32074         PR middle-end/38584
32075         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
32076         Calculate the size of all stack vars assuming no packing of stack
32077         vars will happen, replacing a quadratic algorithm with a linear one.
32078
32079 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
32080
32081         PR target/38707
32082         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
32083         can't be used.
32084
32085 2009-01-03  Diego Novillo  <dnovillo@google.com>
32086
32087         * doc/contrib.texi: Update contributions.
32088
32089 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
32090
32091         PR c++/38705
32092         * builtins.c (fold_builtin_memory_op): Give up if either operand
32093         is volatile.  Set srctype or desttype to non-qualified version
32094         of the other type.
32095
32096         PR c/38700
32097         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
32098         and FUNCTION_DECLs.
32099
32100 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
32101
32102         PR rtl-optimization/35805
32103         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
32104         problem if fast dce is able to remove any instructions.
32105         * dce.c (dce_process_block): Fix dump message.
32106
32107 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
32108
32109         PR 33649
32110         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
32111
32112 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
32113
32114         PR middle-end/38690
32115         * tree-flow.h (op_code_prio, op_prio): New prototypes.
32116         * tree-pretty-print.c (op_code_prio): New function.
32117         (op_prio): No longer static.  Use op_code_prio.
32118         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
32119         Use op_prio and op_code_prio to determine if () should be
32120         printed around operand(s) or not.
32121
32122         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
32123         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
32124         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
32125         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
32126         pp_character instead of pp_string for single letter printing.
32127
32128 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
32129
32130         * doc/extend.texi: Fix '#pragma GCC option' typo.
32131
32132 2009-01-02  Richard Guenther  <rguenther@suse.de>
32133
32134         * doc/install.texi (--enable-checking): Mention different
32135         default for stage1.
32136         (--enable-stage1-checking): Document.
32137
32138 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
32139
32140         PR middle-end/30142
32141         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
32142         case to be an error.
32143
32144 2009-01-02  Ben Elliston  <bje@au.ibm.com>
32145
32146         * config/fp-bit.h (pack_d): Constify argument.
32147         * config/fp-bit.c (makenan): Constify return type. Remove casts.
32148         (isnan): Constify argument.
32149         (isinf): Likewise.
32150         (iszero): Likewise.
32151         (pack_d): Likewise.
32152         (_fpadd_parts): Constify return type.
32153         (_fpmul_parts): Likewise.
32154         (_fpdiv_parts): Likewise.
32155
32156 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
32157
32158         PR c/36489
32159         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
32160         warn about overwriting initializer with side-effects or
32161         -Woverride-init if !IMPLICIT.
32162         (output_init_element): Likewise.  Pass IMPLICIT down to
32163         add_pending_init.
32164         (process_init_element): Add IMPLICIT argument.  Pass it down
32165         to output_init_element.
32166         (push_init_element, pop_init_level, set_designator): Adjust
32167         process_init_element callers.
32168         (set_nonincremental_init, set_nonincremental_init_from_string):
32169         Adjust add_pending_init callers.
32170         (output_pending_init_elements): Adjust output_init_element callers.
32171         * c-tree.h (process_init_element): Adjust prototype.
32172         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
32173         process_init_element callers.
32174
32175 \f
32176 Copyright (C) 2009 Free Software Foundation, Inc.
32177
32178 Copying and distribution of this file, with or without modification,
32179 are permitted in any medium without royalty provided the copyright
32180 notice and this notice are preserved.