OSDN Git Service

gcc/
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-10-20  Richard Sandiford  <rdsandiford@googlemail.com>
2
3         * rtl.h (simplify_replace_fn_rtx): Declare.
4         (wrap_constant, unwrap_constant): Delete.
5         * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
6         (expand_debug_expr): Don't call wrap_constant.
7         * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
8         (auto_adjust_pair): Fold into...
9         (propagate_for_debug_subst): ...here.  Only define for AUTO_INC_DEC.
10         Just return a new value.
11         (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
12         otherwise use simplify_replace_rtx.
13         * cselib.c (wrap_constant): Reinstate old definition.
14         (cselib_expand_value_rtx_1): Don't wrap constants.
15         * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
16         simplify_replace_rtx.
17         (bypass_block): Fix formatting in calls to simplify_replace_rtx.
18         * reload1.c (reload): Skip all uses for an insn before adjusting it.
19         Use simplify_replace_rtx.
20         * simplify-rtx.c (simplify_replace_fn_rtx): New function,
21         adapted from...
22         (simplify_replace_rtx): ...here.  Turn into a wrapper for
23         simplify_replace_fn_rtx.
24         (simplify_unary_operation): Don't unwrap CONSTs.
25         * var-tracking.c (check_wrap_constant): Delete.
26         (vt_expand_loc_callback): Don't call it.
27         (vt_expand_loc): Likewise.
28
29 2009-10-20  Pascal Obry  <obry@adacore.com>
30             Eric Botcazou  <ebotcazou@adacore.com>
31
32         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
33
34 2009-10-20  Michael Matz  <matz@suse.de>
35
36         * loop-invariant.c (create_new_invariant): Use different magic number.
37
38 2009-10-20  Richard Earnshaw  <rearnsha@arm.com>
39
40         PR target/39247
41         * arm.c (arm_override_options): Forcibly disable hot/cold block
42         partitioning.
43
44 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
45
46         PR debug/41739
47         * haifa-sched.c (try_ready): Skip debug deps updating speculation
48         status.
49
50 2009-10-20  Richard Guenther  <rguenther@suse.de>
51
52         * ggc-page.c: Include cfgloop.h.
53         (struct max_alignment): Drop long double, add void *.
54         (extra_order_size_table): Add low non-power-of-two multiples
55         of MAX_ALIGNMENT.  Drop small type-based entries, add
56         tree_type, cgraph_node and loop.
57         * alloc-pool.c (struct allocation_object_def): Drop long double
58         aligning element.
59
60 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
61
62         PR debug/41340
63         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
64         referenced just in DEBUG_INSNs.
65
66 2009-10-20  Richard Guenther  <rguenther@suse.de>
67
68         PR lto/41761
69         * gimple.c (gimple_register_type): Make sure we register
70         the types main variant first.
71
72 2009-10-20  Richard Guenther  <rguenther@suse.de>
73
74         * gimple.c (gimple_types_compatible_p): Simplify.  Move
75         cheap checks before hashtable queries.  Add checks for
76         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
77
78 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
79
80         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
81         without size or with size that can't be represented as a host integer.
82
83 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
84
85         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
86         the removal of a debug stmt as a significant change.
87
88 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
89
90         * config/s390/s390.md: Added agen condition to operand
91         forwarding bypasses. 
92         Added bypass for early address generation use of int results.
93         Updated comments.
94
95 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
96
97         * config/i386/i386.c: Remove signal.h #include.
98
99 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
100
101         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
102         * doc/rtl.texi: Document ss_abs.
103
104 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
105
106         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
107         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
108         instead of C_LEX_RAW_STRINGS.
109         (lex_string): Handle CPP_UTF8STRING.
110         * c-parser.c (c_parser_postfix_expression): Likewise.
111         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
112         (C_LEX_STRING_NO_JOIN): ... this.
113
114 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
115
116         * config/cris/cris.c (cris_function_value, cris_libcall_value,
117         cris_function_value_regno_p): New functions.
118         (cris_promote_function_mode): Update comment.
119         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
120         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
121         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
122         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
123
124 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
125
126         * unwind-dw2.c (execute_stack_op): Fix operand order for
127         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
128
129 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
130
131         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
132         (lower_stmt) <GIMPLE_BIND>: Add comment.
133         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
134         and return.
135         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
136         Otherwise lower it and set cannot_fallthru to true.
137         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
138         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
139         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
140         to true for a noreturn call.  Do not remove statements.
141         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
142         Set cannot_fallthru to false on function exit.
143         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
144         <GIMPLE_ASSIGN>: Remove.
145
146 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
147
148         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
149
150 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
151
152         * config/s390/s390.c (s390_z10_optimize_cmp): Use
153         next/prev_active_insn to skip DEBUG_INSNs as well.
154
155 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
156
157         * config/arm/arm.c (output_move_neon): Use DImode in call to
158         adjust_address.
159
160 2009-10-19  Matthias Klose  <doko@ubuntu.com>
161
162         PR target/40134
163         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
164
165 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
166
167         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
168
169 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
170
171         PR middle-end/41738
172         * optabs.c (expand_binop): Make mode of shift count expression mode
173         of shift count not target.
174         Remove indent nit.
175
176 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
177
178         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
179         case.  Force using values to replace references within the statement.
180         (convert_local_reference_stmt): Likewise.
181
182 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
183
184         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
185         remove a subsequent GOTO or RETURN statement.
186
187 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
188
189         * config/avr.md (*movqi): Add zero as equally preferable constraint
190         as general register.
191         (*movhi): Ditto.
192
193 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
194
195         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
196
197 2009-10-17  Richard Guenther  <rguenther@suse.de>
198
199         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
200
201 2009-10-17  Richard Guenther  <rguenther@suse.de>
202
203         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
204         operands in COMPONENT_REFs.
205
206 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
207
208         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
209         if not defined. Change type of second argument to const_rtx.
210         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
211         macro not defined.
212         * targhooks.h (default_libcall_value): Update prototype.
213         * target.h (struct gcc_target): Change type of second argument of
214         libcall_value to const_rtx.
215         * config/arm/arm.c (arm_libcall_value): Change type of second argument
216         to const_rtx.
217         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
218         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
219
220 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
221
222         PR debug/40521
223         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
224         * cgraphunit.c (cgraph_optimize): Call it.
225         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
226         (dwarf2out_assembly_start): ... here.  New hook.
227         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
228         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
229         hook.
230         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
231         * sdbout.c (sdb_debug_hooks): Likewise.
232         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
233         (vmsdbgout_assembly_start): New hook.
234
235 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
236
237         * rtl.h (RTL_LOCATION): Fix typo.
238
239 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
240
241         * print-rtl.c (print_rtx): Print locators in asm_operands
242         and asm_input.
243
244 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
245
246         PR debug/41535
247         * sched-deps.c (depl_on_debug_p): New.
248         (attach_dep_link): Reject debug deps before nondebug deps.
249         (add_to_deps_list): Insert debug deps after nondebug deps.
250         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
251         deps.
252         (sd_add_dep): Do not reject debug deps.
253         (add_insn_mem_dependence): Don't count debug deps.
254         (remove_from_deps): Likewise.
255         (sched_analyze_2): Set up mem deps on debug insns.
256         (sched_analyze_insn): Record reg uses for deps on debug insns.
257         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
258         try_ready nondebug insn after debug insn.
259         * ddg.c (create_ddg_dep_from_intra_loop_link,
260         create_ddg_dep_no_link): Don't reject debug deps.
261
262 2009-10-16  Richard Guenther  <rguenther@suse.de>
263
264         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
265         (maybe_merge_incomplete_and_complete_type): Likewise.
266         (lto_symtab_merge): Do not call them.  Do not warn for
267         complete vs. incomplete compatible types.
268         (lto_symtab_merge_decls_2): Simplify.
269         * gimple.c (gimple_force_type_merge): Remove.
270         (gimple_types_compatible_p): Make it static.
271         * gimple.h (gimple_force_type_merge): Remove.
272         (gimple_types_compatible_p): Likewise.
273
274 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
275
276         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
277         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
278
279 2009-10-16  Richard Guenther  <rguenther@suse.de>
280
281         PR tree-optimization/41728
282         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
283         if fold_stmt did anything.
284
285 2009-10-16  Richard Guenther  <rguenther@suse.de>
286
287         PR lto/41715
288         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
289         (maybe_fixup_handled_component): New function.
290         (input_gimple_stmt): Fixup mismatched decl replacements.
291
292 2009-10-16  Richard Guenther  <rguenther@suse.de>
293
294         PR lto/41713
295         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
296         the same as VAR_DECL.
297
298 2009-10-16  Richard Guenther  <rguenther@suse.de>
299
300         * gimple.c (iterative_hash_gimple_type): For integer types
301         also hash their minimum and maximum values and the string flag.
302         For array types hash their domain and the string flag.
303
304 2009-10-16  Richard Guenther  <rguenther@suse.de>
305
306         * gimple.c (gimple_types_compatible_p): Restrict completing
307         types to record or unions.  Simplify completion.
308         Do not merge records or unions with different
309         TYPE_STRUCTURAL_EQUALITY_P tag.
310         (iterative_hash_gimple_type): Restrict non-recursing into
311         pointer targets for records and unions.
312
313 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
314
315         PR debug/41717
316         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
317         * dwarf2out.c (mem_loc_descriptor): Don't handle
318         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
319         punt if it is not lowpart subreg or if inner mode isn't
320         MODE_INT.
321
322 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
323
324         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
325         investigating previous or next insns.
326
327 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
328
329         * tree-sra.c (build_ref_for_offset_1): Update comment.
330
331 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
332
333         * config/s390/s390.md (atype): Added missing values.
334
335 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
336
337         PR target/41702
338         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
339         (casesi64p): Update pattern to reflect above.
340
341 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
342
343         PR rtl-optimization/41697
344         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
345
346 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
347
348         PR target/23983
349         * config/rs6000/predicates.md: Update copyright year.
350         * config/rs6000/altivec.md: Ditto.
351         
352         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
353         (MD_INCLUDES): Add a2.md.
354         
355         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
356         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
357         (builtin_classify): New static vector to classify various builtins
358         to get the tree attributes correct.
359         (def_builtin): Set the attributes of builtins based on what the
360         builtin does (i.e. memory operation, floating point, saturation
361         need special attributes, others are pure functions).
362
363         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
364         the builtins.
365         (enum rs6000_builtins): Include rs6000-builtin.def to define the
366         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
367         RS6000_BUILTIN_COUNT.
368         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
369         MAX_RS6000_BUILTINS.
370
371         * config/rs6000/rs6000-builtin.def: New file that combines the
372         builtin enumeration name and attributes.
373
374 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
375
376         * config/i386/linux.h (ASM_SPEC): Add --32.
377
378 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
379
380         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
381         and DW_TAG_template_alias.
382         (dwarf_attr_name): Handle DW_AT_main_subprogram,
383         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
384         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
385         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
386         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
387         and DW_AT_GNU_odr_signature.
388         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
389         DW_FORM_flag_present and DW_FORM_ref_sig8.
390         (output_signature): Only print name on the first byte.
391         (output_die): Likewise for dw_val_class_data8.
392
393 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
394
395         * doc/invoke.texi: Clarify that most optimizations are not enabled
396         without -O.
397
398 2009-10-15  Richard Guenther  <rguenther@suse.de>
399
400         PR lto/41668
401         * gimple.c (compare_type_names_p): Handle anonymous names
402         differently based on new mode argument.
403         (gimple_types_compatible_p): For structs also compare the tags.
404         (iterative_hash_type_name): Rename to ...
405         (iterative_hash_name): ... this.  Hash all names.
406         (iterative_hash_gimple_type): Fix hashing the struct tag of
407         pointer targets.  Hash field decl names.
408
409 2009-10-15  Richard Guenther  <rguenther@suse.de>
410
411         PR lto/41669
412         * gimple.c (gimple_get_alias_set): Avoid recursing on
413         invalid type topology.
414
415 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
416
417         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
418
419 2009-10-15  Richard Guenther  <rguenther@suse.de>
420
421         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
422
423 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
424
425         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
426         add --with-tune{,-32,-64} configured default for -mtune if explicit
427         -mcpu is used.
428
429 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
430
431         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
432
433 2009-10-14  DJ Delorie  <dj@redhat.com>
434         
435         * config/h8300/h8300.c (F): New.
436         (Fpa): New.
437         (h8300_emit_stack_adjustment): Call them.
438         (push): Likewise.
439         (h8300_push_pop): Likewise.
440         (h8300_expand_prologue): Likewise.
441         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
442         (MUST_USE_SJLJ_EXCEPTIONS): Define.
443         (INCOMING_RETURN_ADDR_RTX): Define.
444         (INCOMING_FRAME_SP_OFFSET): Define.
445         (DWARF_CIE_DATA_ALIGNMENT): Define.
446
447 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
448
449         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
450         fields in builtin structs.
451         (finalize_record_size): Likewise.
452
453 2009-10-14  Richard Guenther  <rguenther@suse.de>
454
455         * gimple.c (gtc_ob): New global.
456         (struct type_pair_d): Replace pointers with type UIDs.
457         (type_pair_hash): Adjust.
458         (type_pair_eq): Likewise.
459         (lookup_type_pair): Likewise.  Allocate from an obstack.
460         (gimple_force_type_merge): Adjust.
461         (gimple_types_compatible_p): Likewise.
462         (free_gimple_type_tables): Free the obstack.
463
464 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
465
466         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
467         stmts setting DEBUG_EXPR_DECLs.
468
469         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
470         Don't crash if mode1 is VOIDmode.
471
472 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
473
474         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
475         * params.h (IRA_LOOP_RESERVED_REGS): New.
476         * tree-pass.h (pass_subregs_of_mode_init,
477         pass_subregs_of_mode_finish): Remove.
478         * passes.c (pass_subregs_of_mode_init,
479         pass_subregs_of_mode_finish): Remove.
480         (pass_reginfo_init): Move before loop optimizations.
481         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
482         * common.opt (fira-loop-pressure): New.
483         * toplev.h (flag_ira_loop_pressure): New.
484         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
485         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
486         Make external and void type functions.
487         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
488         pass_subregs_of_mode_finish): Remove.
489         * ira-costs.c (init_costs): Call init_subregs_of_mode.
490         * regmove.c: Include ira.h.
491         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
492         register pressure calculation in loops.
493         * loop-invariant.c: Include REGS_H and ira.h.
494         (struct loop_data): New members max_reg_pressure, regs_ref, and
495         regs_live.
496         (struct invariant): New member orig_regno.
497         (curr_loop): New variable.
498         (find_exits): Initialize regs_ref and regs_live.
499         (create_new_invariant): Initialize orig_regno.
500         (get_cover_class_and_nregs): New.
501         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
502         array.  Add code for flag_ira_loop_pressure.
503         (gain_for_invariant): Make new_regs an array.  Add code for
504         flag_ira_loop_pressure.
505         (best_gain_for_invariant): Ditto.
506         (set_move_mark): New parameter gain.  Use it for debugging output.
507         (find_invariants_to_move): Make regs_needed and new_regs an array.
508         Add code for flag_ira_loop_pressure.
509         (move_invariant_reg): Set up orig_regno.
510         (move_invariants): Set up reg classes for pseudos for
511         flag_ira_loop_pressure.
512         (free_loop_data): Clear regs_ref and regs_live.
513         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
514         get_regno_cover_class, change_pressure, mark_regno_live,
515         mark_regno_death, mark_reg_store, mark_reg_clobber,
516         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
517         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
518         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
519         register pressure calculation in loops if new regs were added.
520         Call finish_subregs_of_mode.
521         * opts.c (decode_options): Set up flag_ira_loop_pressure.
522         * Makefile.in (loop-invariant.o): Add ira.h.
523         (regmove.o): Ditto.
524         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
525         Describe.
526         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
527         
528 2009-10-14  Richard Guenther  <rguenther@suse.de>
529
530         * lto-symtab.c (lto_symtab_compatible): Fold in ...
531         (lto_symtab_merge): ... here.  Rewrite both to take the
532         prevailing and a to-be-merged entry and to queue diagnostics properly.
533         (lto_symtab_resolve_replaceable_p): New predicate for
534         symbol resolution.
535         (lto_symtab_resolve_can_prevail_p): Likewise.
536         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
537         handles merging commons by choosing the largest decl.  Fold
538         in code that gives ODR errors.
539         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
540         diagnostics here.
541         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
542         case of no prevailing decl here.  Diagnose mismatches
543         in object types here.  Drop all but the prevailing decls.
544         (lto_symtab_prevailing_decl): Return the single prevailing decl.
545         * lto-streamer-in.c (lto_input_tree_ref): Deal with
546         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
547
548 2009-10-14  Richard Guenther  <rguenther@suse.de>
549
550         PR lto/41521
551         * lto-streamer-in.c (input_bb): Replace debug stmts with
552         nops instead of dropping them.
553
554 2009-10-14  Nick Clifton  <nickc@redhat.com>
555
556         * gcc/doc/extended.texi: Replace the dash character with @minus{}
557         in situations where it is being used as a minus symbol.
558         * gcc/doc/tm.texi: Likewise.
559         * gcc/doc/md.texi: Likewise.
560
561 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
562
563         PR preprocessor/41543
564         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
565         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
566         * tree.c: Include intl.h.
567         (expand_location): Handle BUILTINS_LOCATION.
568         * Makefile.in (tree.o): Depend on intl.h.
569
570         PR debug/41695
571         * dwarf2out.c (dwarf2out_var_location): Always clear
572         last_postcall_label when changing last_label.
573
574 2009-10-14  Pascal Obry  <obry@adacore.com>
575
576         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
577         (process_command): Handle -E as done with -c and -S.  Do not add
578         the target executable suffix to the output file when -E is used.
579         (main): Adjust error message accordingly.
580
581 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
582
583         PR debug/41343
584         PR debug/41447
585         PR debug/41264
586         PR debug/41338
587         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
588         decl with rtl.
589         (tree_code_size): Likewise.
590
591 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
592
593         * builtins.c (fold_builtin_1): Support complex "arc" functions.
594         * real.h (HAVE_mpc_arc): Define.
595
596 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
597
598         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
599         (struct builtin_description): Add fndecl field.
600         (bdesc): Remove const qualifier.  Update initializer.
601         (sh_media_init_builtins): Remove const qualifier for d.  Record
602         the result of add_builtin_function to the fndecl field.
603         (sh_builtin_decl): New.
604         (sh_media_builtin_decl): New.
605
606 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
607
608         PR target/38948
609         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
610         requests between special registers.
611
612 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
613
614         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
615
616 2009-10-13  Richard Henderson  <rth@redhat.com>
617
618         PR tree-optimization/41377
619         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
620         (cleanup_empty_eh_merge_phis): New change_region parameter;
621         pass it on to redirect_eh_edge_1.  Update callers.
622         (cleanup_empty_eh_unsplit): Don't require an existing EH label
623         at the destination block.
624
625 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
626
627         * passes.c (register_pass): Replaced gcc_unreachable by
628         fatal_error on failure. Mentions plugins in comments & messages.
629
630 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
631
632         PR target/41693
633         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
634         * sched-vis.c (print_value): Use it.
635         * cselib.c (cselib_hash_rtx): Likewise.
636         * print-rtl.c (print_rtx): Likewise.
637         * cfgexpand.c (expand_debug_rtx): Likewise.
638         * var-tracking.c (vt_expand_loc_callback): Likewise.
639
640 2009-10-13  Richard Guenther  <rguenther@suse.de>
641
642         PR lto/41565
643         * opts.c (handle_option): Split out code to handle setting
644         the options flag var ...
645         (set_option): ... here.
646         * opts.h (set_option): Declare.
647         * lto-opts.c (register_user_option_p): Include -fexceptions
648         and all position independent code variants.
649         (handle_common_option): Remove.
650         (lto_reissue_options): Use set_option.
651
652 2009-10-13  Martin Jambor  <mjambor@suse.cz>
653
654         PR tree-optimization/41661
655         * ipa-prop.c (compute_complex_pass_through): Allow only operations
656         that are tcc_comparisons or do not change the type in any
657         un-usleless way.
658         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
659         folding tcc_comparison operations.
660
661 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
662
663         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
664         properly.
665
666 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
667
668         PR debug/41343
669         PR debug/41447
670         PR debug/41264
671         PR debug/41338
672         * tree.def (DEBUG_EXPR_DECL): New.
673         * rtl.def (DEBUG_EXPR): New.
674         * gengtype.c (adjust_field_rtx_def): Handle it.
675         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
676         (insert_debug_temp_for_var_def): ... this.  Drop support for
677         moving.  Take iterator for def stmt; insert debug stmt before it.
678         Scan early for use count and kind in debug stmts.
679         (propagate_defs_into_debug_stmts): Rename to...
680         (insert_debug_temps_for_defs): ... this.  Likewise.
681         * tree.h (DEBUG_TEMP_UID): New.
682         * tree.c (next_debug_decl_uid): New.
683         (make_node_stat): Count debug decls separately.
684         (copy_node_stat): Likewise.
685         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
686         * var-tracking.c (dv_is_decl_p): Recognize it.
687         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
688         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
689         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
690         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
691         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
692         (cselib_hash_rtx): Likewise.
693         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
694         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
695         debug bind stmts.
696         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
697         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
698         * rtl.c (copy_rtx): Likewise.
699         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
700         * print-rtl.c (print_rtx): Likewise.
701         * sched-vis.c (print_value): Likewise.
702         (print_insn): Handle DEBUG_EXPR_DECL.
703         * tree-dump.c (dequeue_and_dump): Likewise.
704         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
705         * gimple-iterator (gsi_replace): Check for same lhs.
706         (gsi_remove): Insert debug temps.
707         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
708         (move_computations_stmt): Drop explicit propagation into debug stmts.
709         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
710         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
711         * tree-ssa-sink.c (statement_sink_location): Likewise.
712         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
713         * tree-ssanames.c (release_ssa_name): Adjust for rename.
714         * tree-flow.h: Likewise.
715         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
716         debug temps without values.
717         (eliminate_unnecessary_stmts): Don't discard just-inserted
718         debug stmts.
719
720 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
721
722         PR target/26515
723         * config/cris/cris.md (andu): Check that operand 1 is one of the
724         general registers.  Fix typo in head comment.
725
726 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
727
728         * config/i386/i386.md (vswapmov): New.
729         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
730         (ix86_function_ms_hook_prologue): New.
731         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
732         * configure.ac: Test for swap suffix support in as.
733         * configure: Rebuild.
734
735 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
736
737         PR target/41680
738         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
739         paradoxical subregs to prevent partial register stalls if the inner
740         mode is integer mode.
741
742 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
743
744         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
745
746 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
747
748         PR c++/41570
749         * gcc/dwarf2out.c (template_parameter_pack_die,
750         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
751
752 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
753
754         PR debug/41616
755         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
756         on updates too.
757         (maybe_register_def): Likewise.  Take stmt iterator.
758         (rewrite_update_stmt): Take stmt iterator and pass it on.
759         (rewrite_update_enter_block): Pass stmt iterator.
760
761 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
762
763         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
764         (spu_builtin_decl): New function.
765
766 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
767
768         * config/i386/i386.md (SWIM): New mode iterator.
769         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
770         using SWIM mode iterator.
771         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
772         patterns using SWI48 mode iterator.
773         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
774         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
775         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
776         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
777         patterns using SWI248 mode iterator.
778         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
779         gen_x86_movdicc_0_m1_rex64 for renamed function
780
781 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
782             Eric Botcazou  <ebotcazou@adacore.com>
783
784         PR target/33743
785         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
786         * config/sparc/sol2-unwind.h: New file.
787
788 2009-10-11  Olivier Hainque  <hainque@adacore.com>
789             Eric Botcazou  <ebotcazou@adacore.com>
790
791         PR target/33743
792         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
793         * config/i386/sol2-unwind.h: New file.
794
795 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
796
797         PR target/41665
798         * config/i386/i386.md (addsi_1_zext): Get the proper second
799         operand for lea.
800
801 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
802
803         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
804         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
805         replacement value.
806
807 2009-10-11  Richard Guenther  <rguenther@suse.de>
808
809         * gimple.c (iterative_hash_type_name): Do not handle special
810         anonymous names.
811
812 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
813
814         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
815         (*setcc_si_1_and): Ditto.
816         (*setcc_si_1_movzbl): Ditto.
817         (*setcc_<mode>_2): Ditto.
818         (*setcc_qi): Rename from *setcc_1.
819         (*setcc_qi_slp): Rename from *setcc_2.
820
821         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
822         (*zero_extendqisi2_movzbw_and splitter): Ditto.
823
824         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
825         "if" condition, there is already assert with reload_completed present.
826
827 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
828
829         * plugin.c (try_init_one_plugin): Improve constness of variable err.
830
831 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
832
833         * doc/install.texi (Final install): Refer to
834         http://gcc.gnu.org/bugs/ for bug reporting.
835
836 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
837
838         * configure.ac: Add test for dci instruction.
839         * configure: Regenerate.
840         * config.in: Likewise.
841         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
842         * doc/invoke.texi: Add cpu_type 476 and 476fp.
843         (-mmulhw): Add 476 to description.
844         (-mdlmzb): Likewise.
845         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
846         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
847         (processor_target_table): Add 476 and 476fp entries.
848         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
849         (rs6000_issue_rate): Add CPU_PPC476.
850         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
851         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
852         (processor_type): Add PROCESSOR_PPC476.
853         (EXTRA_SPECS): Add asm_cpu_476 string.
854         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
855         (define_attr "cpu"): Add ppc476.
856         Include 476.md.
857         Update comments for 476.
858         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
859         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
860         Update copyright year.
861         * config/rs6000/476.md: New file.
862         * config/rs6000/40x.md: Add description for "isel" attribute.
863         Update copyright year.
864         * config/rs6000/440.md: Likewise.
865         * config/rs6000/603.md: Likewise.
866         * config/rs6000/6xx.md: Likewise.
867         * config/rs6000/7450.md: Likewise.
868         * config/rs6000/7xx.md: Likewise.
869         * config/rs6000/8540.md: Likewise.
870         * config/rs6000/cell.md: Likewise.
871         * config/rs6000/e300c2c3.md: Likewise.
872         * config/rs6000/e500mc.md: Likewise.
873         * config/rs6000/mpc.md: Likewise.
874         * config/rs6000/power4.md: Likewise.
875         * config/rs6000/power5.md: Likewise.
876         * config/rs6000/power6.md: Likewise.
877         * config/rs6000/power7.md: Likewise.
878         * config/rs6000/rios1.md: Likewise.
879         * config/rs6000/rios2.md: Likewise.
880         * config/rs6000/rs64.md: Likewise.
881
882 2009-10-10  Richard Guenther  <rguenther@suse.de>
883
884         PR tree-optimization/41654
885         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
886         a cond expr before calling gimple_cond_set_condition_from_tree.
887         (ifcombine_iforif): Likewise.
888
889 2009-10-09  Ian Lance Taylor  <iant@google.com>
890
891         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
892         * configure: Rebuild.
893
894 2009-10-09  Neil Vachharajani <nvachhar@google.com>
895
896         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
897         deprecated.
898
899 2009-10-09  Richard Guenther  <rguenther@suse.de>
900
901         PR lto/41638
902         * target-def.h (TARGET_BUILTIN_DECL): Define.
903         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
904         * target.h (struct gcc_target): Add builtin_decl target hook.
905         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
906         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
907         target builtins.
908         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
909         not gcc_unreachable.
910         (lto_output_builtin_tree): Sorry if the target does not support
911         streaming target builtins.
912         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
913         (rs6000_builtin_decl): New function.
914         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
915         (ix86_builtin_decl): New function.
916
917 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
918
919         PR preprocessor/41445
920         * c-ppoutput.c (do_line_change): New function.
921         (cb_line_change): Use it.
922         (scan_translation_unit): Call do_line_change if
923         avoid_paste or PREV_WHITE and token location is on a different line
924         than print.src_line.
925
926         PR debug/40521
927         * dwarf2out.c (dwarf2out_init): Test whether
928         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
929         it is defined.
930
931         PR rtl-optimization/41646
932         * calls.c (expand_call): For BLKmode types returned in registers
933         avoid likely spilled hard regs in copy_blkmode_from_reg generated
934         insns.
935
936 2009-10-09  Richard Guenther  <rguenther@suse.de>
937
938         PR tree-optimization/41634
939         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
940         we remove the correct elements.
941         (optimize_stmt): Make sure to update stmt operands before
942         optimizing redundancies.
943
944 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
945
946         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
947
948 2009-10-09  Richard Guenther  <rguenther@suse.de>
949
950         PR driver/41637
951         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
952         globals.
953         (lto_wrapper_exit): New function.
954         (fatal): Use it.
955         (fatal_perror): Likewise.
956         (fork_execute): Use global args_name, do not free it.
957         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
958         * lto-streamer.h: Remove duplicate prototypes.
959
960 2009-10-09  Richard Guenther  <rguenther@suse.de>
961
962         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
963         before calling stmt_can_throw_external.
964
965 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
966
967         PR tree-optimization/40071
968         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
969         pointer if the original data reference doesn't conflict with the
970         created vector data reference.  Fix long line.
971
972 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
973
974         * config/i386/i386.md (any_div): New code iterator.
975         (u): Handle div and udiv.
976         (sgnprefix): Ditto.
977         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
978         code iterator.
979         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
980         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
981         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
982         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
983
984 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
985
986         * gcc.c (main): Remove trailing "." from diagnostics.
987
988 2009-10-08  Cary Coutant  <ccoutant@google.com>
989
990         Add support for debugging with ICF (Identical Code Folding).
991         * calls.c (debug.h): New #include.
992         (emit_call_1): Call virtual_call_token debug hook.
993         * common.opt (-fenable-icf-debug): New option.
994         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
995         locations in the source).
996         (poc_label_num): New variable.
997         (dcall_entry, vcall_entry): New typedefs.
998         (dcall_table, vcall_table): New variables.
999         (struct vcall_insn): New type.
1000         (vcall_insn_table): New variable.
1001         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
1002         (size_of_dcall_table): New function.
1003         (output_dcall_table): New function.
1004         (size_of_vcall_table): New function.
1005         (output_vcall_table): New function.
1006         (dwarf2out_direct_call): New function.
1007         (vcall_insn_table_hash): New function.
1008         (vcall_insn_table_eq): New function.
1009         (dwarf2out_virtual_call_token): New function.
1010         (dwarf2out_virtual_call): New function.
1011         (dwarf2out_init): Allocate new tables and sections.
1012         (prune_unused_types): Mark DIEs referenced from direct call table.
1013         (dwarf2out_finish): Output direct and virtual call tables.
1014         * final.c (final_scan_insn): Call direct_call and virtual_call
1015         debug hooks.
1016         * debug.h (struct gcc_debug_hooks): Add direct_call,
1017         virtual_call_token, virtual_call hooks.
1018         (debug_nothing_uid): New function.
1019         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
1020         (debug_nothing_uid): New function.
1021         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
1022         (xcoff_debug_hooks): Likewise.
1023         * sdbout.c (sdb_debug_hooks): Likewise.
1024         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
1025         * doc/invoke.texi (-fenable-icf-debug): New option.
1026
1027 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
1028
1029         PR debug/41353
1030         * regmove.c (regmove_backward_pass): Replace src with dst in the
1031         debug insn, and check for dst before rather than after.
1032
1033 2009-10-08  Janis Johnson <janis187@us.ibm.com>
1034
1035         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
1036         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
1037
1038 2009-10-08  Jan Hubicka  <jh@suse.cz>
1039
1040         PR middle-end/41626
1041         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
1042         do not mark cgraph nodes as needed.
1043         (record_references_in_initializer): Add new only_vars parameter.
1044         * cgraph.h (record_references_in_initializer): New parameter.
1045         * varasm.c (assemble_variable): Update call.
1046         * varpool.c (varpool_analyze_pending_decls): Always look for
1047         referenced vars.
1048
1049 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
1050
1051         * config/avr/avr.c (last_insn_address) Remove variable.
1052         (expand_prologue): Don't initialise last_insn_address variable.
1053         (final_prescan_insn): Don't output insn size.
1054         * config/avr/avr.opt (msize): Remove switch.
1055         * doc/invoke.texi (AVR Options): Remove documentation of -msize
1056         switch.
1057
1058 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
1059
1060         * combine.c (label_tick_ebb_start): Fix comment.
1061         (combine_instructions): Set label_tick and label_tick_ebb_start before
1062         calling setup_incoming_promotions.  Start them from 1.  Increment
1063         label_tick instead of deriving it from the BB index.  Rather than
1064         comparing ticks use the block from the previous iteration to decide
1065         whether to start a new EBB.  Remove empty lines before function.
1066
1067 2009-10-08  Michael Matz  <matz@suse.de>
1068
1069         PR middle-end/41573
1070         * builtins.c (fold_builtin_isascii): Use fold_build2.
1071         (fold_builtin_isdigit): Ditto.
1072         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
1073         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
1074         remove_useless_stmts_cond, remove_useless_stmts_tf,
1075         remove_useless_stmts_tc, remove_useless_stmts_bind,
1076         remove_useless_stmts_goto, remove_useless_stmts_label,
1077         remove_useless_stmts_1, remove_useless_stmts,
1078         pass_remove_useless_stmts): Remove.
1079         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
1080         * passes.c (init_optimization_passes): Don't add
1081         pass_remove_useless_stmts.
1082         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
1083         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
1084         static constants.
1085         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
1086         for static constants.
1087         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
1088         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
1089
1090 2009-10-08  Richard Guenther  <rguenther@suse.de>
1091
1092         * gimple.c (free_gimple_type_tables): New function.
1093         * gimple.h (free_gimple_type_tables): Declare.
1094
1095 2009-10-07  Mark Heffernan  <meheff@google.com>
1096
1097         * ipa-prop.c (ipa_print_node_params) Only print
1098         names of named arguments.
1099
1100 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
1101
1102         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
1103         being statically linked.
1104
1105 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1106
1107         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
1108
1109 2009-10-08  Jan Hubicka  <jh@suse.cz>
1110
1111         PR bootstrap/41620
1112         * ipa.c (cgraph_externally_visible_p,
1113         function_and_variable_visibility,
1114         whole_program_function_and_variable_visibility): Skip non-finalized
1115         nodes.
1116
1117 2009-10-08  Nick Clifton  <nickc@redhat.com>
1118
1119         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
1120         CONST_DOUBLEs.
1121
1122 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
1123
1124         PR bootstrap/37739
1125         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
1126
1127 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
1128
1129         PR c/41182
1130         * c-common.c (c_fully_fold_internal): Strip nops from the result
1131         of recursive calls to c_fully_fold_internal.
1132         (c_wrap_maybe_const): New.
1133         (c_save_expr): Use c_wrap_maybe_const.
1134         * c-common.h (c_wrap_maybe_const): Declare.
1135         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
1136         build_binary_op): Use c_wrap_maybe_const.
1137
1138 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1139
1140         * real.c: Fix comment to reflect actual exponent size.
1141
1142 2009-10-08  Ben Elliston  <bje@au.ibm.com>
1143
1144         * config/rs6000/a2.md: Add FSF comment header.
1145
1146 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
1147
1148         * config/i386/i386.md (any_extend): New code iterator.
1149         (u, s): New code attributes.
1150         (sgnprefix): Ditto.
1151         (DWIH): Rewrite as code iterator for SI and DI modes.
1152         (DWI): Rewrite as mode attribute.
1153         (dwi): New mode attribute.
1154         (di): Depend on SI mode and DI mode.
1155         (doubleint_general_operand): Remove mode attribute.
1156
1157         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
1158         DWIH mode iterator.
1159
1160         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
1161         (*sub<mode>3_doubleword): Ditto.
1162
1163         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
1164         using SWIM248 mode iterator.
1165         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
1166         using SWI48 mode iterator.
1167         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
1168         patterns using DWIH mode iterator and any_extend code iterator.
1169         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
1170         using any_extend code iterator.
1171         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
1172         patterns using DWIH mode iterator and any_extend code iterator.
1173         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
1174         using any_extend code iterator.
1175         (<s>mul<mode>3_highpart): Macroize expander from
1176         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
1177         and any_extend code iterator.
1178         (*<s>muldi3_highpart_1): Macroize insn from
1179         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
1180         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
1181         patterns using any_extend code iterator.
1182         (*<s>mulsi3_highpart_zext): Macroize insn from
1183         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
1184
1185 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
1186
1187         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
1188         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
1189         refering to a DIE with DW_AT_const_value.
1190
1191 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
1192
1193         PR middle-end/22072
1194         * ira-lives.c (check_and_make_def_conflict): Process all operands.
1195
1196 2009-10-06  Jan Hubicka  <jh@suse.cz>
1197
1198         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
1199         correctly.
1200
1201 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
1202
1203         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
1204         *lea_2_rex64): Move before *add<mode>_1 pattern.
1205
1206 2009-10-07  Jan Hubicka  <jh@suse.cz>
1207
1208         * collect2.c (main): Add -fno-whole-program.
1209         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
1210
1211 2009-10-07  Jan Hubicka  <jh@suse.cz>
1212
1213         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
1214         has no address taken.
1215         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
1216         never needed.
1217         (cgraph_clone_node): Clear externally_visible flag for clones.
1218         * cgraph.h (cgraph_only_called_directly_p,
1219         cgraph_can_remove_if_no_direct_calls_p): New predicates.
1220         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
1221         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
1222         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
1223         ipcp_insert_stage): Likwise.
1224         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
1225         externally_visible flag.
1226         (verify_cgraph_node): Verify that inline clones look right.
1227         (process_function_and_variable_attributes): Do not set
1228         externally_visible flags.
1229         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
1230         been already run.
1231         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
1232         boundaries.
1233         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
1234         clear externally_visible when turning into inline clones
1235         (cgraph_mark_inline_edge): Use new predicates.
1236         (cgraph_estimate_growth): Likewise.
1237         (cgraph_decide_inlining): Likewise.
1238         * ipa.c (cgraph_postorder): Likewise.
1239         (cgraph_remove_unreachable_nodes): Likewise; sanity check
1240         that inline clones are not needed.
1241         (cgraph_externally_visible_p): New predicate.
1242         (function_and_variable_visibility): Add whole_program parameter;
1243         always set externally_visible flag; handle COMDAT function
1244         privatization.
1245         (local_function_and_variable_visibility): New function.
1246         (gate_whole_program_function_and_variable_visibility): New function.
1247         (whole_program_function_and_variable_visibility): New function.
1248         (pass_ipa_whole_program_visibility): New function.
1249         * passes.c  (init_optimization_passes): Add whole program visibility
1250         pass.
1251         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
1252         not care about needed/reachable flags.
1253         * varpool.c: Include flags.h
1254         (decide_is_variable_needed): When doing LTO assume whole-program mode.
1255         (varpool_finalize_decl): When we are in LTO read-back, all variables
1256         are analyzed.
1257         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
1258
1259 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1260
1261         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
1262         add MASK_HARD_DFP.
1263
1264 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1265
1266         * config.gcc: Don't include the makefile fragments intended for
1267         libgcc.
1268         * config/s390/fixdfdi.h: File removed.
1269         * config/s390/libgcc-glibc.ver: File removed.
1270         * config/s390/s390.h: Remove the fixdfdi.h hack.
1271         * config/s390/t-crtstuff: File moved to libgcc dir.
1272         * config/s390/t-linux: Likewise.
1273         * config/s390/t-tpf: libgcc specific parts removed.
1274         * config/s390/t-linux64: Likewise.
1275
1276 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
1277
1278         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
1279         (lto-compress.o): Likewise.
1280
1281 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
1282
1283         PR target/41512
1284         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
1285         dllexport to class members here.
1286         (i386_pe_determine_dllimport_p): Only check static class data for
1287         definition.
1288         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
1289         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
1290         functions for vague linkage.
1291         (i386_pe_type_dllexport_p): Fix formatting.
1292         (maybe_add_dllexport) New function.
1293         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
1294         to class members.
1295
1296 2009-10-07  Ben Elliston  <bje@au.ibm.com>
1297
1298         * config/rs6000/a2.md: Remove duplicated lines.
1299
1300 2009-10-07  Ben Elliston  <bje@au.ibm.com>
1301
1302         * config.gcc (powerpc*-*-*): Handle a2.
1303         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
1304         * config/rs6000/a2.md: New file.
1305         * config/rs6000/rs6000.opt (mno-update): New.
1306         (mupdate): Return to using a mask, not a var.
1307         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
1308         (enum processor_type): Add PROCESSOR_PPCA2.
1309         * config/rs6000/rs6000.c (ppca2_cost): New costs.
1310         (rs6000_override_options): Add "a2" to processor_target_table.
1311         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
1312         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
1313
1314 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
1315
1316         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
1317         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
1318         reference to nonexistent gen_truncxfxf2 function.
1319
1320 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
1321
1322         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
1323         (DWIH, g, di, doubleint_general_operand): New mode attributes.
1324         (general_operand): Handle TI mode.
1325         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
1326         using SDWIM mode iterator.
1327         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
1328         pattern from *add{di,ti}3_1 patterns and corresponding splitters
1329         using DWI mode iterator.
1330         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
1331         patterns using SWI mode iterator.
1332         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
1333         using SWI48 mode iterator.
1334         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
1335         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
1336         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
1337         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
1338         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
1339         using SDWIM mode iterator.
1340         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
1341         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
1342         using DWI mode iterator.
1343         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
1344         patterns using SWI mode iterator.
1345         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
1346         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
1347         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
1348         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
1349         patterns using plusminus code iterator.
1350         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
1351         sub<mode>3 patterns using plusminus code iterator.
1352         * config/i386/i386.c (override_options): Update the call to
1353         gen_subdi_carry_rex64 for renamed function.
1354         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
1355         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
1356         calls to instruction expanders.
1357
1358 2009-10-06  Martin Jambor  <mjambor@suse.cz>
1359
1360         PR bootstrap/41395
1361         * opts.c (decode_options): Run IPA-SRA at -O2.
1362
1363 2009-10-06  Richard Guenther  <rguenther@suse.de>
1364
1365         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
1366
1367 2009-10-06  Tobias Burnus  <burnus@net-b.de>
1368
1369         PR lto/41591
1370         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
1371         -flto and -fwhole-program flags can be combined.
1372
1373 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
1374
1375         PR driver/41217
1376         * gcc.c (process_command): Check that -o argument was specified.
1377
1378 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
1379
1380         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
1381
1382 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1383
1384         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
1385         * doc/invoke.texi (Warning Options): Annotate allowed languages
1386         for -Wunsuffixed-float-constants.
1387
1388 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
1389
1390         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
1391         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
1392         same name and isn't the main variant.
1393
1394         PR debug/41558
1395         * dwarf2out.c (loc_by_reference): Removed.
1396         (dw_loc_list_1): New function.
1397         (dw_loc_list): Remove toplev argument, add want_address argument.
1398         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
1399         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
1400         want_address == 2 to dw_loc_list.  For successful dw_loc_list
1401         set have_address to 1 only if want_address is not 0.
1402
1403 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
1404
1405         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
1406         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
1407         a code block followed by two pointers.
1408         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
1409         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
1410         (MIPS_MOVE): Likewise.
1411         (MIPS_LUI): Likewise.
1412         (MIPS_JR): Likewise.
1413         (MIPS_BAL): Likewise.
1414         (MIPS_NOP): Likewise.
1415         (mips_asm_trampoline_template): Delete.
1416         (mips_trampoline_code_size): New function.
1417         (mips_trampoline_init): Add shorter sequences for all cases
1418         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
1419         Calculate the opcodes directly, rather than copying from a template.
1420         Only flush the code part of the trampoline.
1421         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
1422
1423 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
1424
1425         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
1426         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
1427         (INCOMING_RETURN_ADDR_RTX): Likewise.
1428         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
1429         with AT_REGNUM.
1430         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
1431         with RETURN_ADDR_REGNUM.
1432         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
1433         * config/mips/mips.c (mips16_build_call_stub): Replace
1434         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
1435         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
1436         (mips_print_operand_punctuation): Likewise.
1437         (mips_frame_set): Likewise.
1438         (mips16e_output_save_restore): Likewise.
1439         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
1440         (mips_save_reg_p): Likewise.
1441         (mips_return_addr): Likewise.
1442         (mips_set_return_address): Likewise.
1443         (mips_direct_save_slot_move_p): Likewise.
1444         (mips_output_function_prologue): Likewise.
1445         (mips_restore_reg): Likewise.
1446         (mips_expand_epilogue): Likewise.
1447         (mips_epilogue_uses): Likewise.
1448         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
1449         (*mov<mode>_ra): Use it instead of a hard-coded 31.
1450         (clear_hazard_<mode>): Likewise.
1451         (call_internal): Likewise.
1452         (call_internal_direct): Likewise.
1453         (call_direct_split): Likewise.
1454         (call_value_internal): Likewise.
1455         (call_value_split): Likewise.
1456         (call_value_internal_direct): Likewise.
1457         (call_value_direct_split): Likewise.
1458         (call_value_multiple_internal): Likewise.
1459         (call_value_multiple_split): Likewise.
1460
1461 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
1462             Jakub Jelinek  <jakub@redhat.com>
1463
1464         PR rtl-optimization/41511
1465         * combine.c (record_value_for_reg): Pass explicit values as argument
1466         to get_last_value_validate.
1467         (get_last_value_validate): Document INSN parameter.
1468         For non-readonly MEMs, assume they might have been modified if INSN
1469         was in another basic block.
1470         (get_last_value): Minor reformatting.
1471
1472 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1473
1474         PR tree-opt/40992
1475         * final.c (asm_str_count): Split out from asm_insn_count.
1476         * rtl.h (asm_str_count): New prototype.
1477         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
1478         asm_str_count.
1479
1480 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
1481
1482         * doc/plugins.texi: Change plugin_pass to register_pass_info.
1483
1484 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
1485             Rafael Espindola  <espindola@google.com>
1486
1487         * gengtype.c (write_types): Moved call to write_func_for_structure
1488         into seperate loops.
1489
1490 2009-10-05  Richard Guenther  <rguenther@suse.de>
1491
1492         PR lto/41281
1493         * lto-cgraph.c (output_cgraph): Output toplevel asms.
1494         (input_cgraph_1): Input toplevel asms.
1495
1496 2009-10-05  Richard Guenther  <rguenther@suse.de>
1497
1498         PR lto/40902
1499         * lto-symtab.c (lto_compatible_attributes_p): Remove.
1500         (external_aggregate_decl_p): Likewise.
1501         (lto_symtab_compatible): Re-structure.  Remove dead code.
1502         For variables ignore toplevel qualifiers when comparing types.
1503         Issue warnings, not errors for mismatched user-alignment.
1504
1505 2009-10-05  Richard Guenther  <rguenther@suse.de>
1506
1507         PR lto/41552
1508         PR lto/41487
1509         * lto-symtab.c (struct lto_symtab_base_def): Remove.
1510         (struct lto_symtab_identifier_def): Likewise.
1511         (struct lto_symtab_decl_def): Likewise.
1512         (struct lto_symtab_entry_def): New.
1513         (lto_symtab_identifier_t): Rename to ...
1514         (lto_symtab_entry_t): ... this.
1515         (lto_symtab_decls): Remove.
1516         (lto_symtab_base_hash): Rename to ...
1517         (lto_symtab_entry_hash): ... this.
1518         (lto_symtab_base_eq): Rename to ...
1519         (lto_symtab_entry_eq): ... this.
1520         (lto_symtab_base_marked_p): Rename to ...
1521         (lto_symtab_entry_marked_p): ... this.
1522         (lto_symtab_identifier_marked_p): Remove.
1523         (lto_symtab_decl_marked_p): Likewise.
1524         (lto_symtab_maybe_init_hash_tables): Rename to ...
1525         (lto_symtab_maybe_init_hash_table): ... this.
1526         (lto_symtab_set_resolution_and_file_data): Remove.
1527         (lto_symtab_register_decl): New function.
1528         (lto_symtab_get_identifier): Remove.
1529         (lto_symtab_get): New function.
1530         (lto_symtab_get_resolution): Adjust.
1531         (lto_symtab_get_identifier_decl): Remove.
1532         (lto_symtab_set_identifier_decl): Likewise.
1533         (lto_symtab_merge_decl): Rename to ...
1534         (lto_symtab_merge): ... this.  Rewrite.
1535         (lto_symtab_merge_var): Remove.
1536         (lto_symtab_merge_fn): Likewise.
1537         (lto_symtab_prevailing_decl): Adjust.
1538         (lto_cgraph_replace_node): New function.
1539         (lto_symtab_merge_decls_2): Likewise.
1540         (lto_symtab_merge_decls_1): Likewise.
1541         (lto_symtab_fixup_var_decls): Likewise.
1542         (lto_symtab_resolve_symbols): Likewise.
1543         (lto_symtab_merge_decls): Likewise.
1544         (lto_symtab_prevailing_decl): Adjust.
1545         (lto_symtab_get_symtab_def): Remove.
1546         (lto_symtab_get_file_data): Likewise.
1547         (lto_symtab_clear_resolution): Adjust.
1548         (lto_symtab_clear_resolution): Likewise.
1549         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
1550         (input_cgraph_1): Likewise.
1551         * lto-streamer-in.c (get_resolution): Do not provide fake
1552         symbol resolutions here.
1553         (deferred_global_decls): Remove.
1554         (lto_register_deferred_decls_in_symtab): Likewise.
1555         (lto_register_var_decl_in_symtab): Change signature, register
1556         variable via lto_symtab_register_decl.
1557         (lto_register_function_decl_in_symtab): Likewise.
1558         (lto_read_tree): Adjust.
1559         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
1560         (lto_symtab_merge_var): Likewise.
1561         (lto_symtab_merge_fn): Likewise.
1562         (lto_symtab_register_decl): Declare.
1563         (lto_symtab_merge_decls): Likewise.
1564
1565 2009-10-05  Richard Guenther  <rguenther@suse.de>
1566
1567         PR tree-optimization/23821
1568         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
1569         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
1570         simple IV increments.
1571
1572 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1573
1574         * config/arm/arm.c (arm_override_options): Really initialize
1575         flag_dwarf2_cfi_asm to 0.
1576
1577 2009-10-05  Doug Kwan  <dougkwan@google.com>
1578
1579         PR rtl-optimization/41574
1580         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
1581         floating point and we are not doing unsafe math optimizations.
1582
1583 2009-10-03  Simon Baldwin  <simonb@google.com>
1584             Cary Coutant  <ccoutant@google.com>
1585             Rafael Espindola  <espindola@google.com>
1586             Richard Guenther  <rguenther@suse.de>
1587             Jan Hubicka  <jh@suse.cz>
1588             Doug Kwan <dougkwan@google.com>
1589             H.J. Lu  <hongjiu.lu@intel.com>
1590             Bill Maddox  <maddox@google.com>
1591             Ryan Mansfield  <rmansfield@qnx.com>
1592             Diego Novillo  <dnovillo@google.com>
1593             Ollie Wild  <aaw@google.com>
1594             Kenneth Zadeck <zadeck@naturalbridge.com>
1595
1596         * lto-cgraph.c: New file.
1597         * lto-compress.c: New file.
1598         * lto-compress.h: New file.
1599         * lto-opts.c: New file.
1600         * lto-section-in.c: New file.
1601         * lto-section-out.c: New file.
1602         * lto-streamer-in.c: New file.
1603         * lto-streamer-out.c: New file.
1604         * lto-streamer.c: New file.
1605         * lto-streamer.h: New file.
1606         * lto-symtab.c: New file.
1607         * lto-wpa-fixup.c: New file.
1608         * lto-wrapper.c: New file.
1609
1610 2009-10-03  Simon Baldwin  <baldwin@google.com>
1611             Ben Elliston  <bje@au.ibm.com>
1612             Rafael Espindola  <espindola@google.com>
1613             Nathan Froyd  <froydnj@codesourcery.com>
1614             Jan Hubicka  <jh@suse.cz>
1615             Doug Kwan  <dougkwan@google.com>
1616             Diego Novillo  <dnovillo@google.com>
1617             Kenneth Zadeck  <zadeck@naturalbridge.com>
1618
1619         * Makefile.in (enable_lto): New.
1620         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
1621         (LINKER_PLUGIN_API_H): Define.
1622         (LTO_SYMTAB_H): Define.
1623         (LTO_STREAMER_H): Define.
1624         (TREE_VECTORIZER_H): Define.
1625         (INCLUDES): Add LIBELFINC.
1626         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
1627         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
1628         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
1629         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
1630         (native): Add lto-wrapper$(exeext)
1631         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
1632         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
1633         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
1634         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
1635         (varasm.o): Add dependency on tree-iterator.h.
1636         (cgraph.o): Add dependency on cif-code.def.
1637         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
1638         (ipa-pure-const.o): Likewise.
1639         (GTFILES): Add lto-symtab.c.
1640         (install-lto-wrapper): New.
1641         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
1642         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
1643         * config.in: Regenerate.
1644
1645 2009-10-03  Rafael Espindola  <espindola@google.com>
1646             Diego Novillo  <dnovillo@google.com>
1647
1648         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
1649         ipa_write_summaries.
1650         Call execute_ipa_summary_passes for all_regular_ipa_passes and
1651         all_lto_gen_passes.
1652         (cgraph_optimize): Make extern.
1653
1654 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
1655             Kenneth Zadeck <zadeck@naturalbridge.com>
1656
1657         * toplev.c (in_lto_p): Declare.
1658         * collect2.c (scan_prog_file): Read all the output when reading
1659         information for LTO.
1660         (enum lto_mode_d): Declare.
1661
1662 2009-10-03  Richard Guenther  <rguenther@suse.de>
1663             Diego Novillo  <dnovillo@google.com>
1664
1665         * gimple.c: Include target.h and alias.h.
1666         (gimple_types): Declare.
1667         (type_hash_cache): Declare.
1668         (gimple_alloc_stat): Make extern.
1669         (gimple_build_eh_must_not_throw): Call
1670         gimple_eh_must_not_throw_set_fndecl.
1671         (struct type_pair_d): Declare.
1672         (type_pair_t): Declare.
1673         (type_pair_hash): New.
1674         (type_pair_eq): New.
1675         (lookup_type_pair): New.
1676         (gimple_force_type_merge): New.
1677         (compare_type_names_p): New.
1678         (compare_field_offset): New.
1679         (gimple_types_compatible_p): New.
1680         (struct sccs): Declare.
1681         (next_dfs_num): Declare.
1682         (iterative_hash_gimple_type): New.
1683         (visit): New.
1684         (iterative_hash_type_name): New.
1685         (iterative_hash_gimple_type): New.
1686         (gimple_type_hash): New.
1687         (gimple_type_eq): New.
1688         (gimple_register_type): New.
1689         (print_gimple_types_stats): New.
1690         (gimple_signed_or_unsigned_type): New.
1691         (gimple_unsigned_type): New.
1692         (gimple_signed_type): New.
1693         (gimple_get_alias_set): New.
1694         (gimple_decl_printable_name): Do not use DMGL_TYPES.
1695         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
1696         (gimple_force_type_merge): Declare.
1697         (gimple_types_compatible_p): Declare.
1698         (gimple_register_type): Declare.
1699         (print_gimple_types_stats): Declare.
1700         (gimple_unsigned_type): Declare.
1701         (gimple_signed_type): Declare.
1702         (gimple_get_alias_set): Declare.
1703         (gimple_eh_must_not_throw_set_fndecl): New.
1704
1705 2009-10-03  Jan Hubicka  <jh@suse.cz>
1706             Kenneth Zadeck <zadeck@naturalbridge.com>
1707
1708         * ipa-pure-const.c: Include lto-streamer.h.
1709         (register_hooks): Factor out of ...
1710         (generate_summary): ... here.
1711         (pure_const_write_summary): New.
1712         (pure_const_read_summary): New.
1713         (pass_ipa_pure_const): Add pure_const_write_summary and
1714         pure_const_read_summary.
1715         * ipa-reference.c: Include lto-streamer.h.
1716         (add_new_function): New.
1717         (remove_node_data): New.
1718         (duplicate_node_data): New.
1719         (ipa_init): Guard against multiple calls.
1720         Move hook setup from analyze_function.
1721         (write_node_summary_p): New.
1722         (ipa_reference_write_summary): New.
1723         (ipa_reference_read_summary): New.
1724         (pass_ipa_reference): Add ipa_reference_write_summary and
1725         ipa_reference_read_summary.
1726         * cgraph.h (cgraph_local_info): Add field lto_file_data.
1727         (struct cgraph_edge): Add fields lto_stmt_uid and
1728         call_stmt_cannot_inline_p.
1729         (cgraph_optimize): Declare.
1730         (cgraph_decide_is_function_needed): Declare.
1731         (reset_inline_failed): Declare.
1732         (enum LTO_cgraph_tags): Declare.
1733         (LTO_cgraph_tag_names): Declare.
1734         (LCC_NOT_FOUND): Define.
1735
1736 2009-10-03  Doug Kwan  <dougkwan@google.com>
1737             Rafael Espindola  <espindola@google.com>
1738             Jan Hubicka  <jh@suse.cz>
1739             Diego Novillo  <dnovillo@google.com>
1740             Kenneth Zadeck  <zadeck@naturalbridge.com>
1741
1742         * passes.c (all_regular_ipa_passes): New.
1743         (all_ipa_passes): Rename to all_small_ipa_passes.
1744         (init_optimization_passes): Init all_regular_ipa_passes.
1745         * tree-pass.h (all_regular_ipa_passes): New.
1746         (all_ipa_passes): Rename to all_small_ipa_passes.
1747         * passes.c (all_lto_gen_passes): New.
1748         (init_optimization_passes): Initialize all_lto_gen_passes.
1749         (execute_ipa_summary_passes): Make non-static.
1750         (ipa_write_summaries_1): New.
1751         (ipa_write_summaries_2): New.
1752         (ipa_write_summaries): New.
1753         (ipa_write_summaries_of_cgraph_node_set): New.
1754         (ipa_read_summaries_1): New.
1755         (ipa_read_summaries): New.
1756         (execute_ipa_pass_list): Call cgraph_process_new_functions.
1757         (execute_regular_ipa_pass_list): Remove.
1758         (init_optimization_passes): Schedule
1759         pass_rebuild_cgraph_edges and pass_early_inline outside
1760         of pass_all_early_optimizations.  Document reason.
1761         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
1762         pass_ipa_lto_finish_out): New pass.
1763         (pass_ipa_summary_passes): Start and stop timers if the pass has them.
1764         (execute_all_ipa_transforms): New.
1765         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
1766         (dump_properties, debug_properties): New.
1767         * tree-optimize.c (gate_all_early_local_passes): Return
1768         false if we are in lto1.
1769         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
1770         * tree-pass.h (execute_all_ipa_transforms): Declare.
1771         (pass_ipa_function_and_variable_visibility): Declare.
1772         (pass_ipa_early_inline): Declare.
1773         (pass_ipa_lto_gimple_out): Declare.
1774         (pass_ipa_lto_wpa_fixup): Declare.
1775         (pass_ipa_lto_finish_out): Declare.
1776         (all_small_ipa_passes, all_regular_ipa_passes,
1777         all_lto_gen_passes): Declare.
1778         (execute_ipa_summary_passes): Declare.
1779         (execute_all_ipa_transforms): Declare.
1780         (ipa_write_summaries): Declare
1781         (ipa_write_summaries_of_cgraph_node_set): Declare.
1782         (ipa_read_summaries): Declare.
1783
1784 2009-10-03  Doug Kwan  <dougkwan@google.com>
1785             Ollie Wild  <aaw@google.com>
1786
1787         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
1788
1789         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
1790         (lto_mode): New variable.
1791         (maybe_run_lto_and_relink): Handle the -fwpa option.
1792         (main): Handle the -fwpa option.
1793         (maybe_unlink_list): New function.
1794         * gcc.c (link_lto_options): Replace -flto with -fwpa.
1795         * common.opt (flto): New flag.
1796         * toplev.c (flag_generate_lto): Declare.
1797
1798 2009-10-03  Simon Baldwin  <simonb@google.com>
1799
1800         * common.opt (flto-compression-level): New flag.
1801
1802         * opts.c: Include lto-opts.h.
1803         (handle_option): Call lto_register_user_option for each
1804         valid option handled.
1805         (decode_options): Clear registered options before the options
1806         handling loop.
1807
1808 2009-10-03  Cary Coutant  <ccoutant@google.com>
1809
1810         * collect2.c (is_elf): New function.
1811         (scan_prog_file): Require LTO object to be in ELF format.
1812
1813 2009-10-03  Rafael Espindola  <espindola@google.com>
1814
1815         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
1816         libgcc to the linker.
1817
1818         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
1819
1820         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
1821         (collect_execute): Add flags argument. Pass flags to pex_run. Update
1822         all callers.
1823         * collect2.h (collect_execute): Add flags argument.
1824         * tlink.c (tlink_execute): Update call to collect_execute.
1825         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
1826         (use_linker_plugin): New.
1827         (use_linker_plugin_spec_function): New.
1828         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
1829         (linker_plugin_file_spec): New.
1830         (lto_wrapper_spec): New.
1831         (lto_gcc_spec): New.
1832         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
1833         (static_spec_functions): Add use-linker-plugin.
1834         (process_command): Handle -use-linker-plugin.
1835         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
1836         linker_plugin_file_spec and lto_gcc_spec.
1837         (use_linker_plugin_spec_function): New.
1838
1839 2009-10-03  Richard Guenther  <rguenther@suse.de>
1840
1841         PR lto/41547
1842         PR lto/41548
1843         * tree.h (is_lang_specific): Include LANG_TYPE.
1844         * tree.c (find_decls_types_r): Manually add interesting parts
1845         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
1846
1847         * gimple.c (type_pair_hash): Make symmetric.
1848         (type_pair_eq): Likewise.
1849         (lookup_type_pair): Increase initial hashtable size.
1850         (gimple_force_type_merge): Rely on type-pair symmetry.
1851         (visit): Remove excessive checking code.
1852         (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
1853         (gimple_register_type): Remove getenv calls, shrink initial
1854         hashtable size.
1855
1856         PR middle-end/41502
1857         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
1858         inline functions if not generating lto output.
1859
1860         PR lto/41379
1861         * toplev.c (finalize): In WPA mode remove the asm file.
1862
1863 2009-10-03  Doug Kwan  <dougkwan@google.com>
1864
1865         * ipa-inline.c (cgraph_mark_inline): Check
1866         edge->call_stmt_cannot_inline_p instead of calling
1867         gimple_call_cannot_inline_p.
1868         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
1869         (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
1870         (inline_generate_summary): Do nothing in LTRANS.
1871         * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
1872         exists before calling gimple_call_cannot_inline_p.
1873         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
1874         (cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
1875         Update new_edge->lto_stmt_uid.
1876         * cgraphbuild.c (reset_inline_failed): New.
1877
1878         * common.opt (fwpa): New flag.
1879         (fltrans): New option.
1880         * gcc.c (gcc_lto_option_t): New type.
1881         (current_lto_option): New variable.
1882         (lto_single_spec_function): Remove and is replaced by ..
1883         (lto_option_spec_function): New function.
1884         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
1885         passing the -flto flag.
1886         (cc1_options): Separate non-LTO related parts into ..
1887         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
1888         (lto1_options): New spec for lto FE.
1889         (link_lto_options): New spec for handling LTO flags in linker.
1890         (invoke_lto_single): Re-format to fit in 80 column.  Replace
1891         lto-single with lto-option.
1892         (static_specs): Add cc1_non_lto_options, lto1_options and
1893         link_lto_options.
1894         (static_spec_function): Replace lto-single with lto-option.
1895         (process_command): Handle -flto, -fwpa and -fltran by setting
1896         current_lto_option and not passing it to subprocess unconditionally.
1897
1898 2009-10-03  Bill Maddox  <maddox@google.com>
1899
1900         Add `gcc' driver support for link-time code generation (LTO).
1901
1902         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
1903         (lto_flag, lto_objects, lto_o_file): New variables.
1904         (struct lto_object, struct lto_object_list): New structures.
1905         (collect_exit, handler): Remove LTO temporary output file on exit.
1906         (add_lto_object): New function.
1907         (maybe_run_lto_and_relink): New function. Perform link time code
1908         generation and relinking for object files containing LTO information.
1909         (main): Invoke maybe_run_lto_and_relink().
1910         (dump_argv): New function.  For debugging, currently disabled.
1911         (scan_prog_file): Add LTO information pass.
1912         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
1913         collect2.
1914         * toplev.c (compile_file): Emit assembler directive to create
1915         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
1916
1917 2009-10-03  Diego Novillo  <dnovillo@google.com>
1918
1919         * c.opt: Add LTO to warn_abi and warn_psabi.
1920
1921         * tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
1922         inline function.  Ignore language-specific nodes.  Update all users.
1923         (find_decls_types_r): Do not traverse the subtrees of
1924         language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
1925         * tree.h (is_lang_specific): New.
1926         * langhooks.h (struct lang_hooks_for_decls): Remove
1927         may_need_assembler_name_p.  Update all users.
1928
1929         * c-common.c (set_builtin_user_assembler_name): Move ...
1930         * builtins.c (set_builtin_user_assembler_name): ... here.
1931         (is_builtin_name): Add comment
1932         (is_builtin_fn): New.
1933         * except.c (output_ttype): Only call
1934         lookup_type_for_runtime if TYPE is not a runtime type.
1935
1936         * passes.c (register_pass): Call position_pass on
1937         all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
1938         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
1939         (TV_IPA_LTO_DECL_IO): Define.
1940         (TV_IPA_LTO_CGRAPH_IO): Define.
1941         (TV_LTO): Define.
1942         (TV_WHOPR_WPA): Define.
1943         (TV_WHOPR_WPA_IO): Define.
1944         (TV_WHOPR_LTRANS): Define.
1945         (TV_WHOPR_WPA_FIXUP): Define.
1946         (TV_WHOPR_WPA_LTRANS_EXEC): Define.
1947         * tree-cfg.c (tree_node_can_be_shared): Make extern.
1948         * tree-flow.h (tree_node_can_be_shared): Declare.
1949         * tree-inline.c (tree_can_inline_p): Check that E has a
1950         statement associated with it.
1951         * tree.c (free_lang_data_in_binf): Factor out of ...
1952         (free_lang_data_in_type): ... here.
1953         Call RECORD_OR_UNION_TYPE_P.
1954         (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
1955         set.  Call lang_hooks.decls.may_need_assembler_name_p if set.
1956         (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
1957         (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE.  Set
1958         write_symbols to NO_DEBUG.  Set debug_hooks to do_nothing_debug_hooks.
1959         (gate_free_lang_data): Return true if flag_generate_lto is set.
1960         (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
1961         * c-common.h (set_builtin_user_assembler_name): Move ...
1962         * tree.h (set_builtin_user_assembler_name): ... here.
1963
1964         * common.opt (flto-report): New flag.
1965         * opts.c (complain_wrong_lang): Do not complain if running lto1.
1966         * collect2.c (scan_prog_file): Send the error output of
1967         'nm' to HOST_BIT_BUCKET.
1968
1969 2009-10-03  Ollie Wild  <aaw@google.com>
1970
1971         * langhooks-def.h (lhd_begin_section): New function declaration.
1972         (lhd_write_section): New function declaration.
1973         (lhd_end_section): New function declaration.
1974         (LANG_HOOKS_BEGIN_SECTION): New macro.
1975         (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
1976         (LANG_HOOKS_END_SECTION): New macro.
1977         (LANG_HOOKS_LTO): New macro.
1978         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
1979         * langhooks.c (output.h): Add include.
1980         (saved_section): New static variable.
1981         (lhd_begin_section): New function.
1982         (lhd_write_section_data): New function.
1983         (lhd_end_section): New function.
1984         * langhooks.h (struct lang_hooks_for_lto): New structure.
1985         (struct lang_hooks): Add member lto.
1986         * Makefile.in (langhooks.o): Add dependency on output.h.
1987
1988         * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
1989
1990 2009-10-03  Richard Guenther  <rguenther@suse.de>
1991
1992         * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
1993         Handle LTO.
1994
1995 2009-10-03  Simon Baldwin  <simonb@google.com>
1996             Richard Guenther  <rguenther@suse.de>
1997             Janis Johnson  <janis187@us.ibm.com>
1998             Doug Kwan  <dougkwan@google.com>
1999             Diego Novillo  <dnovillo@google.com>
2000             Ramana Radhakrishnan  <ramana.r@gmail.com>
2001             Ollie Wild  <aaw@google.com>
2002
2003         * doc/install.texi: Add documentation for libelf and --enable-lto.
2004         * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
2005         -flto-report, -flto-compression-level and -use-linker-plugin.
2006         * doc/sourcebuild.texi: Document use of zlib.  Document lto-plugin.
2007         Add section for LTO Testing.
2008
2009 2009-10-02  Cary Coutant  <ccoutant@google.com>
2010
2011         Add support for comdat type sections for DWARF v4.
2012         Merge from dwarf4 branch.
2013
2014         * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
2015         (dw_die_ref): Define vector type.
2016         (enum dw_val_class): Add dw_val_class_data8.
2017         (struct dw_val_struct): Add v.val_data8.
2018         (comdat_type_node_ref): New type.
2019         (struct die_struct): Move die_symbol into a union; add new field
2020         die_type_node.  Change all uses.
2021         (comdat_type_node): New type.
2022         (skeleton_chain_node): New type.
2023         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
2024         (comdat_type_list): New variable.
2025         (dwarf_tag_name): Add DW_TAG_type_unit.
2026         (dwarf_attr_name): Add DW_AT_signature.
2027         (add_AT_data8): New function.
2028         (replace_child): New function.
2029         (move_all_children): New function.
2030         (print_signature): New function.
2031         (print_die): Print signature information; add dw_val_class_data8.
2032         (attr_checksum): Support dw_val_class_data8.
2033         (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
2034         (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
2035         (checksum_sleb128, checksum_uleb128): New functions.
2036         (checksum_die_context): New function.
2037         (loc_checksum_ordered): New function.
2038         (attr_checksum_ordered): New function.
2039         (struct checksum_attributes): New structure.
2040         (collect_checksum_attributes): New function.
2041         (die_checksum_ordered): New function.
2042         (generate_type_signature): New function.
2043         (same_dw_val_p): Add dw_val_class_data8.
2044         (is_symbol_die): Use new is_declaration_die function.
2045         (is_declaration_die): New function.
2046         (should_move_die_to_comdat): New function.
2047         (clone_die): New function.
2048         (clone_tree): New function.
2049         (clone_as_declaration): New function.
2050         (copy_declaration_context): New function.
2051         (generate_skeleton_ancestor_tree): New function.
2052         (generate_skeleton_bottom_up): New function.
2053         (generate_skeleton): New function.
2054         (remove_child_or_replace_with_skeleton): New function.
2055         (break_out_comdat_types): New function.
2056         (struct decl_table_entry): New type.
2057         (htab_decl_hash): New function.
2058         (htab_decl_eq): New function.
2059         (htab_decl_del): New function.
2060         (copy_ancestor_tree): New function.
2061         (copy_decls_walk): New function.
2062         (copy_decls_for_unworthy_types): New function.
2063         (build_abbrev_table): Don't assert on missing die_symbol when doing
2064         comdat type sections.
2065         (size_of_die): Use DW_FORM_sig8 for external references.  Add
2066         dw_val_class_data8.
2067         (unmark_dies): Don't assert for unmarked dies when doing comdat
2068         type sections.
2069         (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
2070         (output_signature): New function.
2071         (output_die): Likewise.
2072         (output_compilation_unit_header): Mark output as DWARF version 3
2073         even if generating DWARF 4.
2074         (output_comdat_type_unit): New function.
2075         (output_line_info): Mark output as DWARF version 3 even if generating
2076         DWARF 4.
2077         (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
2078         DWARF-4.
2079         (dwarf2out_end_source_file): Likewise.
2080         (prune_unused_types_walk_attribs): Don't follow references into
2081         comdat type sections.
2082         (prune_unused_types_mark): When generating type units, do not mark
2083         children of non-defining declarations of types; do mark children of
2084         type entries.
2085         (prune_unused_types): Process comdat type sections.
2086         (htab_ct_hash): New function.
2087         (htab_ct_eq): New function.
2088         (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
2089         Add a pointer to the line table from type unit entries so
2090         DW_AT_decl_file has meaning.
2091         * varasm.c (default_elf_asm_named_section): Use identifier name as
2092         comdat key instead of lang hook.
2093
2094 2009-10-02  Neil Vachharajani  <nvachhar@google.com>
2095
2096         * gcov-io.c (gcov_open): Open files read-only when MODE < 0.
2097
2098 2009-10-02  Uros Bizjak  <ubizjak@gmail.com>
2099
2100         * config/i386/i386.md (SWIM248): New mode iterator.
2101         (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
2102         divmodhi4 patterns using SWIM248 macro.
2103         (*divmod<mode>4): Macroize insn_and_split pattern from
2104         *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
2105         and their corresponding splitters usign SWIM248 macro.  Split SImode
2106         insn to generate cltd and DImode insn to generate cqto instead of
2107         move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
2108         (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
2109         (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
2110         *divmodsi_noext patterns using SWIM248 macro.
2111         (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
2112         udivmodhi4 patterns using SWIM248 macro.
2113         (*udivmod<mode>4): Macroize insn_and_split pattern from
2114         *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
2115         corresponding splitters using SWIM248 macro.
2116         (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
2117         *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.
2118
2119 2009-10-02  Eric Botcazou  <ebotcazou@adacore.com>
2120
2121         * stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
2122         of zero-sized element is zero-sized regardless of its extent.
2123
2124 2009-10-02  Jakub Jelinek  <jakub@redhat.com>
2125
2126         PR debug/40521
2127         * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
2128         * configure: Regenerated.
2129         * config.in: Regenerated.
2130         * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
2131         !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
2132         (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
2133         not emitting .eh_frame, emit .cfi_sections .debug_frame
2134         directive.
2135
2136         PR debug/41404
2137         PR debug/41353
2138         * cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
2139         CONST_STRING if STRING_CST contains embedded '\0's or doesn't end
2140         with '\0'.
2141         (expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
2142         vars use DECL_RTL with resetting it back to NULL afterwards.
2143         * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
2144         rtx_equal_p instead of asserting it is a SYMBOL_REF.
2145         (value_format): For dw_val_class_addr only use DW_FORM_addr if
2146         the attribute type allows it, otherwise use DW_FORM_dataN.
2147         (mem_loc_descriptor): Handle CONST_STRING.
2148         (add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
2149         Handle MEM with CONST_STRING address using add_AT_string.
2150         (rtl_for_decl_init): Return MEM with CONST_STRING address instead of
2151         CONST_STRING for const arrays initialized with a string literal.
2152         (resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
2153         (dwarf2out_finish): Call resolve_addr.
2154
2155 2009-10-02  Andreas Schwab  <schwab@linux-m68k.org>
2156             Maxim Kuvyrkov  <maxim@codesourcery.com>
2157
2158         * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.
2159
2160 2009-10-02  Nick Clifton  <nickc@redhat.com>
2161
2162         * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
2163         (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
2164
2165 2009-10-01  Jan Hubicka  <jh@suse.cz>
2166
2167         * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
2168         (cgraph_create_virtual_clone): Just pass redirect_callers
2169         around.
2170         * cgraph.h (cgraph_clone_node): Update prototype.
2171         * ipa-pure-const.c (self_recursive_p): New function.
2172         (propagate): Use it.
2173         * ipa-inline.c (cgraph_clone_inlined_nodes,
2174         cgraph_decide_recursive_inlining): Update.
2175
2176 2009-10-01  David Daney  <ddaney@caviumnetworks.com>
2177
2178         * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
2179         instructions for TARGET_OCTEON.
2180
2181 2009-10-01  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2182
2183         * config/arm/arm.c (arm_override_options): Turn off
2184         flag_dwarf2_cfi_asm for AAPCS variants.
2185
2186 2009-10-01  Martin Jambor  <mjambor@suse.cz>
2187
2188         PR middle-end/12392
2189         * tree-sra.c (convert_callers): Do not call
2190         compute_inline_parameters on one caller more than once.
2191
2192 2009-10-01  Nick Clifton  <nickc@redhat.com>
2193
2194         * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
2195         an empty string if not already defined.
2196
2197 2009-10-01  Martin Jambor  <mjambor@suse.cz>
2198
2199         PR bootstrap/41395
2200         * tree-sra.c (is_va_list_type): New function.
2201         (find_var_candidates): Call is_va_list_type.
2202         (find_param_candidates): Check that the type or the type pointed
2203         to are not va_list types.
2204
2205 2009-10-01  Martin Jambor  <mjambor@suse.cz>
2206
2207         PR c++/41503
2208         * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
2209         DECL_ARTIFICIAL (param_decl) is true.
2210
2211 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
2212
2213         * tree.h (tree_decl_common::lang_flag_8): New.
2214         * c-common.c (c_common_reswords): Include "constexpr" as C++0x
2215         keyword.
2216         * c-common.h (RID_CONSTEXPR): New.
2217
2218 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
2219
2220         * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
2221         Use ref-all pointers.
2222         (alpha_gimplify_va_arg): Ditto.
2223
2224 2009-09-30  Jakub Jelinek  <jakub@redhat.com>
2225
2226         PR target/41279
2227         * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
2228         before insn counting loop now that BB_END (bb) is counted.  Ensure
2229         the return value isn't zero.
2230
2231 2009-09-30  Nick Clifton  <nickc@redhat.com>
2232
2233         * config.gcc (sh-symbianelf): Replace definition of extra_objs
2234         with separate definitions of c_target_objs and cxx_target_objs.
2235         * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
2236         and symbian-base.o.
2237         * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
2238         sh_symbian_import_export_class.
2239         * config/sh/sh-protos.h: Fix names of exported symbian functions.
2240         * config/sh/symbian.c: Delete, moving code into...
2241         * config/sh/symbian-base.c: ... here
2242         * config/sh/symbian-c.c: ... and here
2243         * config/sh/symbian-cxx.c: ... and here.
2244
2245 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
2246
2247         PR target/22093
2248         * config/alpha/alpha.md (unaligned_storehi_be): Force operand
2249         of plus RTX into register.
2250
2251 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2252
2253         * doc/install.texi: Linguistic and markup fixes.
2254         (Configuration) <--disable-cpp>: Remove description.
2255         <--enable-maintainer-mode>: Autotools files are affected, too.
2256         <--with-sysroot>: Improve description.
2257         (Building): Bump required GNU make version.
2258
2259 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
2260
2261         * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
2262         (x86_64-*-*): Ditto.
2263
2264         * config/i386/fma4intrin.h: New file, provide common x86 compiler
2265         intrinisics for FMA4.
2266         * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
2267         * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
2268         Add FMA4 check and fma4intrin.h.
2269         * config/i386/i386-c.c(ix86_target_macros_internal): Check
2270         ISA_FLAG for FMA4.
2271         * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
2272         * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
2273         constant for FMA4 support.
2274         (UNSPEC_FMA4_FMADDSUB): Ditto.
2275         (UNSPEC_FMA4_FMSUBADD): Ditto.
2276         * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
2277         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
2278         (ix86_expand_fma4_multiple_memory): Ditto.
2279         * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
2280         (OPTION_MASK_ISA_FMA4_UNSET): New.
2281         (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
2282         (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
2283         (ix86_handle_option): Handle -mfma4.
2284         (isa_opts): Handle -mfma4.
2285         (enum pta_flags): Add PTA_FMA4.
2286         (override_options): Add FMA4 support.
2287         (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
2288         (IX86_BUILTIN_VFMADDSD): Ditto.
2289         (IX86_BUILTIN_VFMADDPS): Ditto.
2290         (IX86_BUILTIN_VFMADDPD): Ditto.
2291         (IX86_BUILTIN_VFMSUBSS): Ditto.
2292         (IX86_BUILTIN_VFMSUBSD): Ditto.
2293         (IX86_BUILTIN_VFMSUBPS): Ditto.
2294         (IX86_BUILTIN_VFMSUBPD): Ditto.
2295         (IX86_BUILTIN_VFMADDSUBPS): Ditto.
2296         (IX86_BUILTIN_VFMADDSUBPD): Ditto.
2297         (IX86_BUILTIN_VFMSUBADDPS): Ditto.
2298         (IX86_BUILTIN_VFMSUBADDPD): Ditto.
2299         (IX86_BUILTIN_VFNMADDSS): Ditto.
2300         (IX86_BUILTIN_VFNMADDSD): Ditto.
2301         (IX86_BUILTIN_VFNMADDPS): Ditto.
2302         (IX86_BUILTIN_VFNMADDPD): Ditto.
2303         (IX86_BUILTIN_VFNMSUBSS): Ditto.
2304         (IX86_BUILTIN_VFNMSUBSD): Ditto.
2305         (IX86_BUILTIN_VFNMSUBPS): Ditto.
2306         (IX86_BUILTIN_VFNMSUBPD): Ditto.
2307         (IX86_BUILTIN_VFMADDPS256): Ditto.
2308         (IX86_BUILTIN_VFMADDPD256): Ditto.
2309         (IX86_BUILTIN_VFMSUBPS256): Ditto.
2310         (IX86_BUILTIN_VFMSUBPD256): Ditto.
2311         (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
2312         (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
2313         (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
2314         (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
2315         (IX86_BUILTIN_VFNMADDPS256): Ditto.
2316         (IX86_BUILTIN_VFNMADDPD256): Ditto.
2317         (IX86_BUILTIN_VFNMSUBPS256): Ditto.
2318         (IX86_BUILTIN_VFNMSUBPD256): Ditto.
2319         (enum multi_arg_type): New enum for describing the various FMA4
2320         intrinsic argument types.
2321         (bdesc_multi_arg): New table for FMA4 intrinsics.
2322         (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
2323         (ix86_expand_multi_arg_builtin): New function for creating FMA4
2324         intrinsics.
2325         (ix86_expand_builtin): Add FMA4 intrinsic support.
2326         (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
2327         operand instructions.
2328         (ix86_expand_fma4_multiple_memory): New function to split the
2329         second memory reference from FMA4 instructions.
2330         * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
2331         (ssemodesuffixf2s): Ditto.
2332         (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
2333         instructions.
2334         (fma4_fmsub<mode>4): Ditto.
2335         (fma4_fnmadd<mode>4): Ditto.
2336         (fma4_fnmsub<mode>4): Ditto.
2337         (fma4_vmfmadd<mode>4): Ditto.
2338         (fma4_vmfmsub<mode>4): Ditto.
2339         (fma4_vmfnmadd<mode>4): Ditto.
2340         (fma4_vmfnmsub<mode>4): Ditto.
2341         (fma4_fmadd<mode>4256): Ditto.
2342         (fma4_fmsub<mode>4256): Ditto.
2343         (fma4_fnmadd<mode>4256): Ditto.
2344         (fma4_fnmsub<mode>4256): Ditto.
2345         (fma4_fmaddsubv8sf4): Ditto.
2346         (fma4_fmaddsubv4sf4): Ditto.
2347         (fma4_fmaddsubv4df4): Ditto.
2348         (fma4_fmaddsubv2df4): Ditto.
2349         (fma4_fmsubaddv8sf4): Ditto.
2350         (fma4_fmsubaddv4sf4): Ditto.
2351         (fma4_fmsubaddv4df4): Ditto.
2352         (fma4_fmsubaddv2df4): Ditto.
2353         (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
2354         instructions for intrinsics.
2355         (fma4i_fmsub<mode>4): Ditto.
2356         (fma4i_fnmadd<mode>4): Ditto.
2357         (fma4i_fnmsub<mode>4): Ditto.
2358         (fma4i_vmfmadd<mode>4): Ditto.
2359         (fma4i_vmfmsub<mode>4): Ditto.
2360         (fma4i_vmfnmadd<mode>4): Ditto.
2361         (fma4i_vmfnmsub<mode>4): Ditto.
2362         (fma4i_fmadd<mode>4256): Ditto.
2363         (fma4i_fmsub<mode>4256): Ditto.
2364         (fma4i_fnmadd<mode>4256): Ditto.
2365         (fma4i_fnmsub<mode>4256): Ditto.
2366         (fma4i_fmaddsubv8sf4): Ditto.
2367         (fma4i_fmaddsubv4sf4): Ditto.
2368         (fma4i_fmaddsubv4df4): Ditto.
2369         (fma4i_fmaddsubv2df4): Ditto.
2370         (fma4i_fmsubaddv8sf4): Ditto.
2371         (fma4i_fmsubaddv4sf4): Ditto.
2372         (fma4i_fmsubaddv4df4): Ditto.
2373         (fma4i_fmsubaddv2df4): Ditto.
2374
2375         * doc/invoke.texi (-mfma4): Add documentation.
2376         * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
2377
2378 2009-09-29  Richard Henderson  <rth@redhat.com>
2379
2380         * tree-eh.c (unsplit_eh): Do not unsplit if there's already
2381         an edge to the new destination block.
2382
2383 2009-09-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2384
2385         PR target/41393
2386         * pa.c (hppa_profile_hook): Use
2387         make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
2388
2389 2009-09-29  Steve Ellcey  <sje@cup.hp.com>
2390             Alexander Monakov  <amonakov@ispras.ru>
2391
2392         PR target/41365
2393         * config/ia64/predicates.md (not_postinc_destination_operand): New.
2394         (not_postinc_memory_operand): New.
2395         (not_postinc_move_operand): New.
2396         * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
2397         (*cmovsi_internal): Ditto.
2398
2399 2009-09-29  Pat Haugen  <pthaugen@us.ibm.com>
2400
2401         * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
2402         restrict issue_rate in first pass when scheduling for register
2403         pressure.
2404
2405 2009-09-29  Basile Starynkevitch  <basile@starynkevitch.net>
2406             Rafael Avila de Espindola  <espindola@google.com>
2407
2408         * gengtype.c (plugin_output): New.
2409         (get_output_file_with_visibility): Return plugin_output for plugins.
2410         (main): Parse and use the -P option.
2411         * gty.texi: Update the command line format.
2412
2413 2009-09-29  Jakub Jelinek  <jakub@redhat.com>
2414
2415         PR debug/41438
2416         * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
2417         functions.
2418         (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
2419         out if !const_ok_for_output.
2420
2421         PR debug/41474
2422         * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
2423         case VAR_LOCATION>: Remove gcc_unreachable ().
2424
2425 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
2426
2427         * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
2428         (x86_64-*-*): Ditto.
2429         * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
2430         back to smmintrin.h.
2431         * config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
2432         * config/i386/x86intrin.h: Remove SSE5.
2433         * config/i386/mmintrin-common.h: Delete file.
2434         * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
2435
2436 2009-09-29  Richard Guenther  <rguenther@suse.de>
2437
2438         * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
2439         resulting from stack temporaries on STRICT_ALIGNMENT targets.
2440
2441 2009-09-29  Nick Clifton  <nickc@redhat.com>
2442
2443         * function.c (current_function_name): If there is no current
2444         function just return "<none>".
2445
2446 2009-09-28  Sriraman Tallam  <tmsriram@google.com>
2447
2448         * tree-pass.h (register_pass_info): New structure.
2449         (pass_positioning_ops): Move enum from gcc-plugin.h.
2450         (register_pass): New function.
2451         * gcc-plugin.h (plugin_pass): Delete structure.
2452         (pass_positioning_ops): Delete enum.
2453         * plugin.c (regsiter_pass): Delete function.
2454         (position_pass): Delete function.
2455         (added_pass_nodes): Delete variable.
2456         (prev_added_pass_nodes): Delete variable.
2457         (pass_list_node): Delete structure.
2458         * passes.c (make_pass_instance): New function.
2459         (next_pass_1): Change to call make_pass_instance.
2460         (pass_list_node): Move structure from gcc-plugin.h.
2461         (added_pass_nodes): Move variable from plugin.c.
2462         (prev_added_pass_nodes): Move variable from plugin.c.
2463         (position_pass): New function.
2464         (register_pass): New function.
2465
2466 2009-09-28  Easwaran Raman  <eraman@google.com>
2467
2468         * ifcvt.c (noce_try_abs): Recognize pattern and call
2469         expand_one_cmpl_abs_nojump.
2470         * optabs.c (expand_one_cmpl_abs_nojump): New function.
2471         * optabs.h (expand_one_cmpl_abs_nojump): Declare.
2472
2473 2009-09-28  Ian Lance Taylor  <iant@google.com>
2474
2475         PR middle-end/40500
2476         * c-opts.c (c_common_handle_option): Don't set
2477         warn_jump_misses_init for -Wall.
2478         * doc/invoke.texi (Warning Options): Update documentation.
2479
2480 2009-09-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2481
2482         * Makefile.in ($(out_object_file)): Depend on
2483         gt-$(basename $(notdir $(out_file))).h.
2484
2485 2009-09-28  Richard Henderson  <rth@redhat.com>
2486
2487         * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
2488         * except.c (gen_eh_region): Set it.
2489         (duplicate_eh_regions_1): Copy it.
2490         * tree-eh.c (lower_resx): Use it to determine which function
2491         to call to resume.
2492
2493         * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
2494         * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
2495         * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
2496         * tree.c (build_common_builtin_nodes): Remove parameter.  Build
2497         BUILT_IN_CXA_END_CLEANUP if necessary.
2498
2499         * c-common.c (c_define_builtins): Update call to
2500         build_common_builtin_nodes.
2501
2502 2009-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2503
2504         * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
2505
2506 2009-09-28  Michael Matz  <matz@suse.de>
2507
2508         * builtins.c (interclass_mathfn_icode): New helper.
2509         (expand_builtin_interclass_mathfn): Use it here, and split folding
2510         into ...
2511         (fold_builtin_interclass_mathfn): ... this new folder.
2512         (build_call_nofold_loc): New static helper.
2513         (build_call_nofold): New wrapper macro for above.
2514         (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
2515         (expand_builtin_pow): Ditto.
2516         (expand_builtin_memset_args): Ditto.
2517         (expand_builtin_printf): Ditto.
2518         (expand_builtin_fprintf): Ditto.
2519         (expand_builtin_sprintf): Ditto.
2520         (expand_builtin_memory_chk): Ditto.
2521         (expand_builtin_mempcpy_args): Ditto and don't call folders.
2522         (expand_builtin_stpcpy): Ditto.
2523         (expand_builtin_strcmp): Ditto.
2524         (expand_builtin_strncmp): Ditto.
2525         (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
2526         (expand_builtin_strcpy_args): Don't call folders.
2527         (expand_builtin_memcmp): Ditto.
2528         (expand_builtin_strncpy): Ditto, and use target.
2529         (expand_builtin_memcpy): Ditto.
2530         (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
2531         expand_builtin_strpbrk, expand_builtin_memmove,
2532         expand_builtin_memmove_args, expand_builtin_bcopy,
2533         expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
2534         expand_builtin_strspn, expand_builtin_strcspn,
2535         expand_builtin_fputs): Remove these.
2536         (expand_builtin): Don't call the above, change calls to other
2537         expanders that changed prototype.
2538         (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
2539         (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
2540         fold_builtin_interclass_mathfn.
2541         (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
2542         (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
2543
2544         * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
2545         * passes.c (init_optimization_passes): Move pass_fold_builtins
2546         after last phiopt pass.
2547         * tree-inline.c (fold_marked_statements): When folding builtins
2548         iterate over all instruction potentially generated.
2549         * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
2550         earlier.
2551         (fold_gimple_call): Use it to always fold calls (into potentially
2552         multiple instructions).
2553         * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
2554         calls into zero at this time.
2555         * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
2556         statements generated by builtin folding.
2557
2558 2009-09-28  Nick Clifton  <nickc@redhat.com>
2559
2560         * config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns.
2561
2562 2009-09-28  Duncan Sands  <baldrick@free.fr>
2563
2564         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
2565         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
2566         (register_callback): Dispatch it.
2567         (invoke_plugin_callbacks): Incorporate in sanity check.
2568         * ggc.h (ggc_register_cache_tab): Add declaration.
2569         * ggc-common.c (ggc_register_root_tab): Simplify.
2570         (const_ggc_cache_tab_t): New typedef.
2571         (extra_cache_vec): New vector of dynamically added cache tables.
2572         (ggc_register_cache_tab): New function.
2573         (ggc_scan_cache_tab): New function.
2574         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
2575         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
2576
2577 2009-09-27  Richard Henderson  <rth@redhat.com>
2578
2579         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
2580         which we remove __builtin_stack_restore.
2581
2582 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
2583
2584         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
2585         to test for GRD_INVARIANT.
2586         (simple_rhs_p): Anything that's function_invariant_p is fine.
2587
2588 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
2589
2590         * gengtype.c (main): Use plunge_files instead of plugin_output.
2591
2592 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
2593             Rafael Avila de Espindola  <espindola@google.com>
2594
2595         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
2596         Don't print pch related info if it is false.
2597         (main): Don't print pch info in plugin mode.
2598
2599 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
2600
2601         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
2602         with dw_val_class_const_double.
2603         (struct dw_val_struct): Replace val_long_long with val_double and
2604         adjust for above change.
2605         (output_loc_operands): Likewise.
2606         (add_AT_long_long): Rename into...
2607         (add_AT_double): ...this.
2608         (print_die): Replace dw_val_class_long_long with
2609         dw_val_class_const_double and adjust.
2610         (attr_checksum): Likewise.
2611         (same_dw_val_p): Likewise.
2612         (size_of_die): Likewise.
2613         (value_format): Likewise.
2614         (output_die): Likewise.
2615         (loc_descriptor) <CONST_DOUBLE>: Likewise.
2616         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
2617         instead of add_AT_long_long.
2618         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
2619         value with the precision of its type.
2620
2621 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
2622
2623         PR c/41476
2624         * c-typeck.c (build_conditional_expr): Use the readonly and
2625         volatile flags of the operand types, not of the operands itself.
2626
2627 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
2628
2629         * collect2.c (main): Look for -brtl before adding libraries.
2630
2631 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
2632
2633         * config.gcc: Update OpenBSD targets.
2634         * config/openbsd-stdint.h: New file.
2635         * config/openbsd-libpthread.h: New file.
2636         * config/openbsd.h: Update and break out LIB_SPEC definition.
2637         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
2638         * config/i386/openbsdelf.h: Correct types.
2639         * config/m68k/openbsd.h: Likewise.
2640         * config/mips/openbsd.h: Likewise.
2641         * config/vax/openbsd.h: Likewise.
2642
2643 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
2644
2645         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
2646         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
2647         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
2648         of the length and zero.
2649
2650 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2651
2652         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
2653         (FLAGS_H): Add options.h $(REAL_H).
2654         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
2655         (TREE_VECTORIZER_H): New.
2656         (EBITMAP_H): Renamed from EBIMAP_H.
2657         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
2658         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
2659         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
2660         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
2661         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
2662         (graphite-clast-to-gimple.o, graphite-dependences.o)
2663         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
2664         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
2665         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
2666         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
2667         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
2668         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
2669         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
2670         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
2671         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
2672         updated and fixed as per above changes and per
2673         check_makefile_deps.sh output.
2674
2675         PR bootstrap/40928
2676         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
2677         * configure: Regenerate.
2678
2679 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2680
2681         * doc/install.texi: Update minimum MPC version to 0.7.
2682
2683 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
2684
2685         * doc/install.texi (Binaries): Remove reference to the binary
2686         distribution CD-ROM from the FSF.
2687
2688 2009-09-26  Michael Matz  <matz@suse.de>
2689
2690         PR lto/40758
2691         PR middle-end/41470
2692         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
2693         that are mentioned in the body.
2694
2695 2009-09-26  Michael Matz  <matz@suse.de>
2696
2697         PR tree-optimization/41454
2698         * tree-ssa-dom (stmts_to_rescan): Remove variable.
2699         (tree_ssa_dominator_optimize): Don't allocate and free it.
2700         (dom_opt_leave_block): Don't iterate over it.
2701         (eliminate_redundant_computations): Don't return a value.
2702         (cprop_operand, cprop_into_stmt): Ditto.
2703         (optimize_stmt): Don't defer updating stmts.
2704
2705 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
2706
2707         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
2708         generic_parameter_die, template_parameter_pack_die,
2709         gen_formal_parameter_die, gen_subprogram_die): Adjust after
2710         renaming DW_TAG_formal_parameter_pack and
2711         DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack
2712         and DW_TAG_GNU_template_parameter_pack.
2713
2714 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
2715
2716         * config/v850/v850.h (FUNCTION_VALUE): Remove.
2717         * config/v850/v850.c (v850_function_value): New function.
2718         (TARGET_FUNCTION_VALUE): Define.
2719
2720 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
2721
2722         * tree-vect-stmts.c (vectorizable_call): Call
2723         mark_symbols_for_renaming after vect_finish_stmt_generation.
2724
2725         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
2726         to loc_descriptor_from_tree.
2727         (add_location_or_const_value_attribute): Pass 0 instead of 2
2728         for decl_by_reference_p decls.
2729
2730 2009-09-25  Richard Guenther  <rguenther@suse.de>
2731
2732         PR middle-end/41463
2733         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
2734         arrays again.
2735
2736 2009-09-25  Ben Elliston  <bje@au.ibm.com>
2737
2738         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
2739         after `power7'.
2740
2741 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
2742
2743         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
2744         form of instruction.
2745
2746 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2747
2748         PR middle-end/41435
2749         * fold-const.c (const_binop): Handle complex int division.
2750         * tree-complex.c (expand_complex_div_straight,
2751         expand_complex_div_wide): Update comments.
2752
2753 2009-09-24  DJ Delorie  <dj@redhat.com>
2754
2755         PR target/41456
2756         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
2757         (reg_class): Likewise.
2758         (REG_CLASS_NAMES): Likewise.
2759         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
2760         (m32c_override_options): Disable -fivopts for M32C.
2761
2762 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
2763
2764         * config/rs6000/predicates.md (indexed_or_indirect_operand):
2765         Delete VSX load/store with update support.
2766         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
2767         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
2768         (vsx_movti): Ditto.
2769         (VSX_U): Delete.
2770         (VSbit): Ditto.
2771         (VStype_load_update): Ditto.
2772         (VStype_store_update): Ditto.
2773         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
2774         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
2775
2776         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
2777         load/store with update builtins.
2778
2779 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
2780
2781         * libgcc2.c (L_trampoline): Prototype for getpagesize
2782         and mprotect in WINNT case.
2783
2784 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
2785
2786         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
2787         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
2788         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
2789         'outgoing' argument.
2790         (TARGET_FUNCTION_VALUE): Define.
2791
2792 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
2793
2794         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
2795
2796 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
2797
2798         PR bootstrap/41405
2799         * common.opt: Initialize dwarf_strict to -1.
2800         * toplev.c (process_options): Catch unset dwarf_strict
2801         and set to 0 for all targets not overriding.
2802         * config/darwin.c (darwin_override_options): Catch unset
2803         dwarf_strict and override to 1.
2804
2805 2009-09-24  Jeff Law  <law@redhat.com>
2806
2807         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
2808
2809 2009-09-24  Richard Guenther  <rguenther@suse.de>
2810
2811         PR tree-optimization/36143
2812         PR tree-optimization/38747
2813         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
2814         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
2815
2816 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
2817
2818         PR bootstrap/41457
2819         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
2820         return false instead of gcc_unreachable ().  For CONST return the
2821         value returned by recursive call instead of always returning true.
2822         (tree_add_const_value_attribute): Return the value returned by
2823         add_const_value_attribute instead of always returning true if rtl
2824         is non-NULL.
2825
2826 2009-09-23  Justin Seyster  <jrseys@gmail.com>
2827
2828         * Makefile.in (PLUGIN_HEADERS): Include real.h.
2829
2830 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
2831
2832         * cgraphunit.c (cgraph_lower_function): Revert last change.
2833         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
2834         instead of DECL_NO_STATIC_CHAIN.
2835         * tree-cfg.c (verify_gimple_call): Likewise.
2836         * tree-nested.c (get_chain_decl, get_chain_field,
2837         convert_tramp_reference_op, convert_gimple_call): Likewise.
2838         (convert_all_function_calls): Likewise.  Always set or clear
2839         DECL_STATIC_CHAIN initially, for !n->outer clear it.
2840         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
2841         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
2842         if nested.
2843         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
2844         DECL_NO_STATIC_CHAIN.
2845         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
2846         instead of DECL_NO_STATIC_CHAIN.
2847         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
2848         decl_function_context.
2849         * varasm.c (initializer_constant_valid_p): Likewise.
2850         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
2851         (DECL_STATIC_CHAIN): ... this.
2852         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
2853         instead of DECL_NO_STATIC_CHAIN.
2854
2855 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
2856             Rafael Avila de Espindola  <espindola@google.com>
2857
2858         * gengtype.c (nb_plugin_files): Make it unsigned to match
2859         num_gt_files. Adjust other variables to avoid warnings.
2860         (main): Allocate an all zero lang_bitmap before each plugin file name
2861         to match regular file names.
2862
2863 2009-09-23  Richard Henderson  <rth@redhat.com>
2864
2865         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
2866         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
2867         static chain passed in memory.
2868         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
2869         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
2870         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
2871         STATIC_CHAIN_REGNUM defined.
2872
2873         * config/picochip/picochip-protos.h: s/class/klass/.
2874         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
2875         (picochip_static_chain): New.
2876         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
2877         (STATIC_CHAIN_INCOMING): Remove.
2878
2879         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
2880         (xtensa_static_chain): New.
2881         * config/xtensa/xtensa.h (STATIC_CHAIN): Remove.
2882         (STATIC_CHAIN_INCOMING): Remove.
2883
2884 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
2885
2886         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
2887         * config/pa/pa-protos.h (function_value): Remove.
2888         * config/pa/pa.c (pa_function_value): Rename from function_value.
2889         Make static, add 'outgoing' argument.
2890         (TARGET_FUNCTION_VALUE): Define.
2891
2892 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
2893
2894         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
2895         instead of cfun->machine->is_leaf.
2896         * config/avr/avr.h (machine_function): Remove is_leaf field.
2897
2898 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
2899
2900         PR debug/41439
2901         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
2902         DW_OP_piece after DW_OP_stack_value, adjust size calculations
2903         for it, when DW_OP_stack_value and DW_OP_implicit_value has
2904         the same size, prefer DW_OP_stack_value.
2905         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
2906         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
2907
2908 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
2909
2910         PR debug/41353
2911         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
2912
2913 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
2914
2915         PR debug/41248
2916         * cfgexpand.c (convert_debug_memory_address): New.
2917         (expand_debug_expr): Convert base address and offset to the same
2918         mode.  Use it to convert addresses to other modes.  Accept
2919         ptr_mode addresses.
2920
2921 2009-09-23  Richard Guenther  <rguenther@suse.de>
2922
2923         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
2924         produced for bigendian targets with promoted subregs.
2925
2926 2009-09-23  Richard Guenther  <rguenther@suse.de>
2927
2928         * value-prof.c (gimple_ic): Purge old EH edges only after building
2929         the new ones.
2930
2931 2009-09-23  Nick Clifton  <nickc@redhat.com>
2932
2933         * config/arc/arc.c (arc_trampoline_init): Fix typo.
2934
2935 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
2936
2937         PR bootstrap/41405
2938         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
2939
2940         PR bootstrap/41436
2941         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
2942         on non-nested functions.
2943
2944 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
2945             Jan Hubicka  <jh@suse.cz>
2946
2947         * dwarf2out.c (loc_list_plus_const): Only define if
2948         DWARF2_DEBUGGING_INFO.
2949         (address_of_int_loc_descriptor): Likewise.
2950
2951         PR debug/41411
2952         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
2953
2954 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
2955
2956         PR c/39779
2957         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
2958         constant is more than zero.
2959
2960 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
2961
2962         PR target/40473
2963         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
2964         call final to emit non-scheduled prologue, instead insert at entry.
2965
2966 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
2967             Joseph S. Myers  <joseph@codesourcery.com>
2968
2969         * doc/install.texi (*-*-freebsd*): Add proper format codes.
2970
2971 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
2972             Rafael Avila de Espindola  <espindola@google.com>
2973
2974         * gengtype.c (is_file_equal): New function.
2975         (close_output_files): Use is_file_equal. Free of->buf.
2976
2977 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
2978             Rafael Avila de Espindola  <espindola@google.com>
2979
2980         * gengtype.c (write_types, write_local): Add the output_header
2981         argument. Update all callers.
2982
2983 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
2984
2985         * dwarf2out.c (template_parameter_pack_die,
2986         gen_formal_parameter_pack_die ): New functions.
2987         (make_ith_pack_parameter_name): Remove this function.
2988         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
2989         DW_TAG_formal_parameter_pack.
2990         (gen_generic_params_dies): Represent each template parameter pack
2991         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
2992         represented by usual DW_TAG_template_*_parameter DIEs that are
2993         children of the DW_TAG_template_parameter_pack element DIE.
2994         (generic_parameter_die): This doesn't deal with parameter pack
2995         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
2996         of parameter pack DIEs.
2997         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
2998         in certain cases, e.g. for pack elements.
2999         (gen_formal_types_die, gen_decl_die): Adjust usage of
3000         gen_formal_parameter_die.
3001         (gen_subprogram_die): Represent each function parameter pack by a
3002         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
3003         represented by usual DW_TAG_formal_parameter DIEs that are children
3004         of the DW_TAG_formal_parameter_pack DIE. Remove references to
3005         ____builtin_va_alist decls as no part of the compiler uses those
3006         anymore.
3007         * langhooks.h (struct lang_hooks_for_decls): Add
3008         function_parm_expanded_from_pack_p, get_generic_function_decl
3009         and function_parameter_pack_p hooks.  Fix comment for
3010         get_innermost_generic_parms hook.
3011         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
3012         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
3013         macros and use them to initialize lang_hook.
3014
3015 2009-09-22  Richard Henderson  <rth@redhat.com>
3016
3017         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
3018         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
3019         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
3020         on TRAMPOLINE_TEMPLATE.
3021         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
3022         TRAMPOLINE_ADJUST_ADDRESS.
3023         * targhooks.c (default_asm_trampoline_template): Remove.
3024         (default_trampoline_adjust_address): Remove.
3025         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
3026         * targhooks.h: Update decls.
3027
3028 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
3029
3030         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
3031         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
3032         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
3033
3034 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
3035
3036         PR debug/41295
3037         * reload1.c (reload): Reset debug insns with pseudos without
3038         equivalences.
3039
3040 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
3041
3042         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
3043         unconditional true for decimal float modes.
3044         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
3045         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
3046
3047 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
3048
3049         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
3050         Enable a new case for __FreeBSD__ >= 7.
3051         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
3052         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
3053         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
3054         and USE_LD_AS_NEEDED.
3055
3056         * doc/install.texi (*-*-freebsd*): Update target information.
3057
3058 2009-09-22  Richard Guenther  <rguenther@suse.de>
3059
3060         PR middle-end/41395
3061         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
3062         arrays really properly.
3063
3064 2009-09-22  Richard Henderson  <rth@redhat.com>
3065
3066         PR target/41246
3067         * target.h (struct gcc_target): Add asm_out.trampoline_template,
3068         calls.static_chain, calls.trampoline_init,
3069         calls.trampoline_adjust_address.
3070         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3071         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
3072         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
3073         * builtins.c (expand_builtin_setjmp_receiver): Use
3074         targetm.calls.static_chain; only clobber registers.
3075         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
3076         set up memory attributes properly for the trampoline block.
3077         (expand_builtin_adjust_trampoline): Use
3078         targetm.calls.trampoline_adjust_address.
3079         * calls.c (prepare_call_address): Add fndecl argument.  Use
3080         targetm.calls.static_chain.
3081         * df-scan.c (df_need_static_chain_reg): Remove.
3082         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
3083         consolodate static chain handling.
3084         * doc/tm.texi: Document new hooks.
3085         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
3086         (init_emit_regs): Don't initialize them.
3087         * expr.h (prepare_call_address): Update decl.
3088         * final.c (profile_function): Use targetm.calls.static_chain.
3089         * function.c (expand_function_start): Likewise.
3090         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
3091         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
3092         only clobber registers.
3093         * targhooks.c (default_static_chain): New.
3094         (default_asm_trampoline_template, default_trampoline_init): New.
3095         (default_trampoline_adjust_address): New.
3096         * targhooks.h: Declare them.
3097         * varasm.c (assemble_trampoline_template): Use
3098         targetm.asm_out.trampoline_template.  Make the memory block const
3099         and set its size.
3100
3101         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
3102         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
3103         differences into the TARGET_ABI_OPEN_VMS code block.
3104         (TARGET_TRAMPOLINE_INIT): New.
3105         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
3106         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
3107         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
3108         (INITIALIZE_TRAMPOLINE): Remove.
3109
3110         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
3111         (TRAMPOLINE_TEMPLATE): Merge with ...
3112         (INITIALIZE_TRAMPOLINE): ... this and move ...
3113         * config/arc/arc.c (arc_trampoline_init): ... here.
3114         (TARGET_TRAMPOLINE_INIT): New.
3115
3116         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3117         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
3118         (arm_asm_trampoline_template): New.
3119         (arm_trampoline_init, arm_trampoline_adjust_address): New.
3120         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
3121         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
3122         code to arm_asm_trampoline_template.
3123         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
3124         arm_trampoline_adjust_address.
3125         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
3126         adjust for target hook parameters.
3127
3128         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
3129         Remove.
3130
3131         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
3132         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
3133         (bfin_trampoline_init): Rename from initialize_trampoline;
3134         make static; update for target hook parameters.
3135         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
3136         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
3137         bfin_asm_trampoline_template.
3138         (INITIALIZE_TRAMPOLINE): Remove.
3139
3140         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
3141         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
3142         cris_trampoline_init): New.
3143         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
3144         cris_asm_trampoline_template.
3145         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
3146         adjust for target hook parameters.
3147
3148         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
3149
3150         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
3151         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
3152         fr30_trampoline_init): New.
3153         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
3154         fr30_asm_trampoline_template.
3155         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
3156         adjust for target hook parameters.
3157
3158         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
3159         (frv_trampoline_init): Rename from frv_initialize_trampoline;
3160         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
3161         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
3162         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
3163
3164         * config/h8300/h8300.c (h8300_trampoline_init): New.
3165         (TARGET_TRAMPOLINE_INIT): New.
3166         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
3167         to h8300_trampoline_init and adjust for hook parameters.
3168
3169         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
3170         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
3171         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
3172         make static; adjust for hook parameters.
3173         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
3174
3175         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3176         (TARGET_TRAMPOLINE_INIT): New.
3177         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
3178         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
3179         iq2000_asm_trampoline_template.
3180         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
3181         (TRAMPOLINE_CODE_SIZE): New.
3182         (TRAMPOLINE_SIZE): Use it.
3183         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
3184
3185         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
3186         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
3187         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
3188         adjust for hook parameters.
3189         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
3190
3191         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
3192         (m32r_trampoline_init): New.
3193         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
3194         m32r_trampoline_init.
3195
3196         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
3197         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
3198         make static; update for hook parameters.
3199         * config/m68hc11/m68hc11-protos.h: Update.
3200         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
3201
3202         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3203         (TARGET_TRAMPOLINE_INIT): New.
3204         (mcore_function_value): Fix typo.
3205         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
3206         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
3207         to mcore_asm_trampoline_template.
3208         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
3209
3210         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
3211         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
3212         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
3213         update for hook parameters.
3214         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
3215
3216         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
3217         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
3218         mips_trampoline_init): New.
3219         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
3220         mips_asm_trampoline_template.
3221         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
3222         update for hook parameters.
3223
3224         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3225         (TARGET_TRAMPOLINE_INIT): New.
3226         (mmix_trampoline_size): Remove.
3227         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
3228         make static.  Remove out-of-date tetra vs octa comment.
3229         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
3230         make static; update for hook parameters.
3231         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
3232         (INITIALIZE_TRAMPOLINE): Remove.
3233         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
3234         (TRAMPOLINE_ALIGNMENT): New.
3235         * gcc/config/mmix/mmix-protos.h: Update.
3236
3237         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
3238         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
3239         mn10300_trampoline_init): New.
3240         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
3241         mn10300_asm_trampoline_template.
3242         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
3243
3244         * config/moxie/moxie.c (moxie_static_chain,
3245         moxie_asm_trampoline_template, moxie_trampoline_init,
3246         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
3247         TARGET_TRAMPOLINE_INIT): New.
3248         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
3249         moxie_trampoline_init.
3250         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
3251         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
3252
3253         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
3254         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
3255         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
3256         pa_trampoline_adjust_address): New.
3257         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
3258         pa_asm_trampoline_template.
3259         (TRAMPOLINE_ALIGNMENT): New.
3260         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
3261         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
3262         adjust for hook parameters.
3263         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
3264
3265         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
3266         (TARGET_TRAMPOLINE_INIT): New.
3267         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
3268         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
3269
3270         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
3271
3272         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
3273         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
3274         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
3275         make static; adjust parameters for the hook.
3276         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
3277
3278         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
3279         s390_trampoline_template; make static.
3280         (s390_trampoline_init): Rename from s390_initialize_trampoline;
3281         make static; adjust for target hook.
3282         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
3283         * config/s390/s390-protos.h: Remove trampoline decls.
3284         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
3285         (TRAMPOLINE_TEMPLATE): Remove.
3286         (TRAMPOLINE_ALIGNMENT): New.
3287
3288         * config/score/score-protos.h (score_initialize_trampoline): Remove.
3289         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3290         (TARGET_TRAMPOLINE_INIT): New.
3291         (score_asm_trampoline_template): New.
3292         (score_trampoline_init): Rename from score_initialize_trampoline;
3293         make static; adjust for hook parameters.
3294         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
3295         score[37]_asm_trampoline_template.
3296         (INITIALIZE_TRAMPOLINE): Remove.
3297         * config/score/score3.c (score3_asm_trampoline_template): New.
3298         (score3_trampoline_init): Rename from score3_initialize_trampoline;
3299         adjust for target hook.
3300         * config/score/score7.c (score7_asm_trampoline_template): New.
3301         (score7_trampoline_init): Rename from score7_initialize_trampoline;
3302         adjust for target hook.
3303         * config/score/score3.h, config/score/score7.h: Update.
3304
3305         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
3306         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
3307         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
3308         (sh_trampoline_init): Rename from sh_initialize_trampoline;
3309         make static; adjust for target hook parameters.
3310         (sh_trampoline_adjust_address): New.
3311         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
3312         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
3313
3314         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
3315         (sparc32_initialize_trampoline): Rename from
3316         sparc_initialize_trampoline; make static; replace tramp parameter
3317         with m_tramp and update memory accesses.
3318         (sparc64_initialize_trampoline): Similarly.
3319         (sparc_trampoline_init): New.
3320         * config/sparc/sparc-protos.h: Remove trampoline decls.
3321         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
3322         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
3323
3324         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
3325         (array_to_constant): Make ARR parameter const.
3326         (spu_trampoline_init): Rename from spu_initialize_trampoline;
3327         make static; update for hook parameters.
3328         * config/spu/spu-protos.h: Update decls.
3329         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
3330
3331         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
3332         from xstormy16_initialize_trampoline; make static; update for
3333         hook parameters.
3334         (TARGET_TRAMPOLINE_INIT): New.
3335         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
3336
3337         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3338         (TARGET_TRAMPOLINE_INIT): New.
3339         (v850_can_eliminate): Make static.
3340         (v850_asm_trampoline_template, v850_trampoline_init): New.
3341         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
3342         v850_asm_trampoline_template.
3343         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
3344         and adjust for target hook parameters.
3345
3346         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3347         (TARGET_TRAMPOLINE_INIT): New.
3348         (vax_asm_trampoline_template, vax_trampoline_init): New.
3349         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
3350         vax_asm_trampoline_template.
3351         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
3352
3353         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3354         (TARGET_TRAMPOLINE_INIT): New.
3355         (xtensa_asm_trampoline_template): Rename from
3356         xtensa_trampoline_template; make static.
3357         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
3358         make static; update for hook parameters.
3359         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
3360         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
3361         (INITIALIZE_TRAMPOLINE): Remove.
3362
3363         * config/i386/i386.c (ix86_function_regparm): Do not issue an
3364         error for nested functions with regparm=3.
3365         (ix86_compute_frame_layout): Adjust frame pointer offset for
3366         ix86_static_chain_on_stack.
3367         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
3368         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
3369         don't reset to UNITS_PER_WORD.
3370         (ix86_emit_leave): Adjust ix86_cfa_state.
3371         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
3372         (ix86_static_chain): New.
3373         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
3374         make static; update for target hook parameters; use ix86_static_chain.
3375         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
3376         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
3377         (INITIALIZE_TRAMPOLINE): Remove.
3378         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
3379         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
3380         to the end.  Add static_chain_on_stack.
3381         (ix86_static_chain_on_stack): New.
3382
3383         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
3384         (m68k_output_mi_thunk): Don't use static_chain_rtx.
3385         (m68k_trampoline_init): New.
3386         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
3387         m68k_trampoline_init and adjust for hook parameters.
3388         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
3389         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
3390
3391 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
3392
3393         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
3394         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
3395
3396         * reload1.c (reload): Call wrap_constant when substituting
3397         reg for equiv inside of DEBUG_INSNs.
3398
3399         PR bootstrap/41405
3400         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
3401         add_call_src_coords_attributes, add_high_low_attributes,
3402         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
3403         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
3404         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
3405         when -gdwarf-2 -gstrict-dwarf.
3406         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
3407         -gdwarf-[23] -gstrict-dwarf.
3408         (address_of_int_loc_descriptor, loc_descriptor,
3409         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
3410         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
3411         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
3412
3413 2009-09-22  Richard Guenther  <rguenther@suse.de>
3414
3415         PR tree-optimization/41428
3416         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
3417         (ccp_finalize): Pass it to substitute_and_fold.
3418
3419 2009-09-22  Richard Guenther  <rguenther@suse.de>
3420
3421         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
3422         (substitute_and_fold): Adjust prototype.
3423         * tree-vrp.c (vrp_evaluate_conditional): Make static.
3424         (simplify_stmt_using_ranges): Likewise.
3425         (fold_predicate_in): Move here from tree-ssa-propagate.c.
3426         (vrp_fold_stmt): New function.
3427         (vrp_finalize): Pass it to substitute_and_fold.
3428         * tree-flow.h (vrp_evaluate_conditional): Remove.
3429         (simplify_stmt_using_ranges): Likewise.
3430         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
3431         * tree-ssa-copy.c (fini_copy_prop): Likewise.
3432         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
3433         member.
3434         (fold_predicate_in): Move to tree-vrp.c.
3435         (substitute_and_fold): Use the callback instead of calling into
3436         tree-vrp.c functions directly.
3437
3438 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
3439
3440         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
3441         comparison warning on rs6000.
3442
3443         PR middle-end/41429
3444         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
3445         GIMPLE_EH_MUST_NOT_THROW cleanup.
3446         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
3447
3448 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
3449
3450         PR middle-end/41260
3451         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
3452         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
3453         LIB_SPEC for darwin10 and later since it always uses the unwinder in
3454         libSystem which is derived from the gcc 4.2.1 unwinder.
3455
3456 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
3457
3458         PR middle-end/41357
3459         * varasm.c (default_encode_section_info): Copy TLS model into
3460         sym_ref flags regardless of backend support for TLS, for all
3461         model types except TLS_MODEL_EMULATED.
3462
3463 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
3464
3465         PR bootstrap/41404
3466         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
3467         we can handle it correctly.
3468
3469 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
3470
3471         * doc/install.texi (os2): Remove section.
3472
3473 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
3474
3475         * doc/standards.texi (Objective-C): Adjust two URLs.
3476
3477 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
3478
3479         * tree-tailcall.c (process_assignment): Don't check if a
3480         multiplication or an addition are already present.
3481         (find_tail_calls): Combine multiple additions and multiplications.
3482         (adjust_accumulator_values): Emit accumulators.
3483
3484 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
3485
3486         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
3487         xmm register restore.
3488
3489 2009-09-21  Jan Hubicka  <jh@suse.cz>
3490
3491         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
3492         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
3493         restore at the end.
3494
3495 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
3496
3497         * stor-layout.c (layout_type): Remove obsolete code.
3498
3499 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
3500
3501         PR middle-end/41395
3502         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
3503
3504 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3505
3506         PR middle-end/30789
3507         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
3508         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
3509         (fold_builtin_2, do_mpc_arg1): Update accordingly.
3510         * fold-const.c (const_binop): Likewise.
3511         * real.h (do_mpc_arg2): Update prototype.
3512
3513 2009-09-20  Jan Hubicka  <jh@suse.cz>
3514
3515         * dwarf2out.c (add_const_value_attribute): Return true if successful.
3516         (add_location_or_const_value_attribute): Rewrite using
3517         loc_list_from_tree.
3518         (tree_add_const_value_attribute): Return true if successful.
3519         (tree_add_const_value_attribute_for_decl): Likewise.
3520
3521         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
3522         (loc_descriptor): ... here;
3523         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
3524         (cst_pool_loc_descr): Break out from ...; do not reffer constant
3525         pool items that was not marked for output.
3526         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
3527         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
3528         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
3529         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
3530         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
3531         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
3532         DW_OP_stack_value to get address of items that are not available
3533         as addresses.
3534         (dw_loc_list): Handle single element lists correctly.
3535
3536 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
3537             Pascal Obry  <obry@adacore.com>
3538
3539         * unwind-dw2-fde.c (classify_object_over_fdes):
3540         Cast the constant 1 to _Unwind_Ptr.
3541         (add_fdes): Likewise.
3542         (linear_search_fdes): Likewise.
3543
3544 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
3545
3546         * stor-layout.c (set_sizetype): Avoid useless type copy.
3547
3548 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
3549
3550         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
3551         feature check.
3552         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
3553         * configure, config.in: Regenerate.
3554         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
3555         DW_EH_PE_absptr.
3556         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
3557         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
3558         for global data if the output could be used in a shared library.
3559         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
3560         to 0 if TARGET_WRITABLE_EH_FRAME.
3561
3562 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
3563
3564         PR rtl-optimization/39886
3565         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
3566         just when insn is equal to BB_END (bb).
3567
3568 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
3569
3570         * config/mips/mips.opt (mrelax-pic-calls): New option.
3571         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
3572         the file.
3573         (mips_unspec_call): Change "unspec_call" expander into this.
3574         (mips_strip_unspec_call): New function.
3575         (mips_got_load): Call mips_unspec_call instead of
3576         gen_unspec_call<mode>.
3577         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
3578         MIPS_CALL.
3579         (mips_cfg_in_reorg): New function.
3580         (mips16_lay_out_constants): Use it to decide whether to call
3581         CFG-aware insn splitting.
3582         (r10k_insert_cache_barriers): Move CFG set-up code from here to
3583         mips_reorg.  Move DF set-up code from here ...
3584         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
3585         from here.
3586         (mips_reorg): Call mips_df_reorg instead of
3587         r10k_insert_cache_barriers.  Move CFG set-up code here from
3588         r10k_insert_cache_barriers.
3589         (mips_call_expr_from_insn): New function.
3590         (mips_pic_call_symbol_from_set): Likewise.
3591         (mips_find_pic_call_symbol): Likewise.
3592         (mips_annotate_pic_call_expr): Likewise.
3593         (mips_get_pic_call_symbol): Likewise.
3594         (mips_annotate_pic_calls): Likewise.
3595         (mips_override_options): Disable -mrelax-pic-calls unless PIC
3596         calls are used.
3597         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
3598         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
3599         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
3600         directive.
3601         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
3602         (unspec_call<mode>): Remove it.
3603         (sibcall_internal, sibcall_value_internal,
3604         sibcall_value_multiple_internal, call_internal, call_split,
3605         call_value_internal, call_value_split,
3606         call_value_multiple_internal, call_value_multiple_split): Pass
3607         SIZE_OPNO to MIPS_CALL.
3608         (call_internal_direct, call_direct_split,
3609         call_value_internal_direct, call_value_direct_split): Pass -1 as
3610         SIZE_OPNO to MIPS_CALL.
3611         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
3612         * configure: Regenerate.
3613         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
3614         and -mno-relax-pic-calls.
3615         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
3616
3617 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3618
3619         PR bootstrap/35619
3620         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
3621         in the directory this rule is called from, rather than the
3622         toplevel 'gcc' directory, to fix in-tree build.
3623
3624 2009-09-19  Chris Demetriou  <cgd@google.com>
3625
3626         PR preprocessor/28435:
3627         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
3628         to cpplib that the preprocessor output is needed.
3629
3630 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
3631
3632         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
3633         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
3634         *return_and_restore_fpregs_<mode>,
3635         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
3636
3637         PR bootstrap/41397
3638         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
3639         instead of assuming it has always a REG inside of it.
3640
3641 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
3642
3643         * config/freebsd.h: Update comment on types.
3644         (WINT_TYPE): Define.
3645
3646 2009-09-18  Jason Merrill  <jason@redhat.com>
3647
3648         * c.opt: Add -fno-deduce-init-list.
3649
3650 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
3651
3652         * value-prof.c (interesting_stringop_to_profile_p): Added output
3653         argument to indicate which parameter is the size parameter.
3654         * value-prof.c (gimple_stringop_fixed_value): Use
3655         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
3656         * value-prof.c (gimple_stringops_transform): Update call sites to
3657         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
3658
3659 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
3660
3661         PR target/38288
3662         From David Binderman <dcb314@hotmail.com>:
3663         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
3664         local variable f.  Remove stale comments.
3665         (ix86_compute_frame_layout): Remove useless local variable total_size.
3666         Remove #if 0'd code.
3667         (legitimate_address_p): Remove useless local variables
3668         reason_rtx and reason.
3669         (ix86_split_copysign_const): Remove useless local variable op1.
3670         (scale_counter): Remove useless local variable piece_size_mask.
3671
3672 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
3673
3674         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
3675         output decl.
3676
3677 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
3678
3679         PR target/40913
3680         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
3681
3682 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
3683
3684         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
3685         TYPE_STUB_DECL.
3686
3687 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
3688
3689         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
3690         DW_OP_implicit_value even without dwarf_version 4.
3691
3692 2009-09-17  Jan Hubicka  <jh@suse.cz>
3693
3694         * dwarf2out.c: Include tree-pass.h and gimple.h.
3695         (loc_list_plus_const): New function.
3696         (loc_descriptor_from_tree_1): Rename to ...
3697         (loc_descriptor_from_tree): ... remove original.
3698         (loc_list_from_tree): New function.
3699         (add_AT_location_description): Accept location list.
3700         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
3701         (concatn_mem_loc_descriptor): Remove.
3702         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
3703         returning NULL.
3704         (secname_for_decl): Move up.
3705         (hidden_reference_p): New function; break out from ...
3706         (loc_by_refernece): ... here; move up.
3707         (dw_loc_list): New function.
3708         (single_element_loc_list): New function.
3709         (single_element_loc_list_p): New function.
3710         (add_loc_descr_to_each): New function.
3711         (add_loc_list): New function.
3712         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
3713         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
3714         add diagnostics why expansion failed.
3715         (add_location_or_const_value_attribute): Support location lists.
3716         (add_bound_info): Likewise.
3717         (descr_info_loc): Update call of loc_descriptor_from_tree.
3718         (gen_variable_die): Work on location lists.
3719         * final.c (pass_final): Add dump file.
3720         * Makefile.in (dwarf2out.o): Add new dependencies.
3721
3722 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
3723
3724         PR c/41049
3725         * real.c decimal_from_integer, decimal_integer_string): New.
3726         (real_from_integer): Use them as special case for decimal float.
3727         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
3728         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
3729         Do not append zero after the decimal point in string to convert.
3730
3731 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
3732
3733         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
3734         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
3735
3736 2009-09-17  Martin Jambor  <mjambor@suse.cz>
3737
3738         * common.opt (fipa-sra): New switch.
3739         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
3740         * timevar.def (TV_IPA_SRA): New timevar.
3741         * params.def (ipa-sra-ptr-growth-factor): New parameter.
3742         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
3743         * tree-sra.c: Include cgraph.c.
3744         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
3745         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
3746         and grp_not_necessarilly_dereferenced.
3747         (func_param_count): New variable.
3748         (encountered_apply_args): New variable.
3749         (bb_dereferences): New variable.
3750         (final_bbs): New variable.
3751         (no_accesses_representant): New variable.
3752         (no_accesses_p): New function.
3753         (dump_access): Dump the new fields.
3754         (sra_initialize): Set encountered_apply_args to false.
3755         (get_ssa_base_param): New function.
3756         (mark_parm_dereference): New function.
3757         (create_access): Caring for INIDRECT_REFs and different handling of
3758         varialble length accesses in early IPA SRA.  Store the stmt - a new
3759         parameter - to the new access.
3760         (build_access_from_expr_1): New parameter stmt, passed to
3761         create_access.  Handle INDIRECT_REFs.
3762         (build_access_from_expr): Pass the current statement to
3763         build_access_from_expr_1.
3764         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
3765         passes.
3766         (build_accesses_from_assign): Pass the current statement to
3767         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
3768         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
3769         final_bbs when necessary.  Check for calls to __builtin_apply_args.
3770         Fixup EH info if anythng was changed.
3771         (is_unused_scalar_param): New function.
3772         (ptr_parm_has_direct_uses): New function.
3773         (find_param_candidates): New function.
3774         (mark_maybe_modified): New function.
3775         (analyze_modified_params): New function.
3776         (propagate_dereference_distances): New function.
3777         (dump_dereferences_table): New function.
3778         (analyze_caller_dereference_legality): New function.
3779         (unmodified_by_ref_scalar_representative): New function.
3780         (splice_param_accesses): New function.
3781         (decide_one_param_reduction): New function.
3782         (enum ipa_splicing_result): New type.
3783         (splice_all_param_accesses): New function.
3784         (get_param_index): New function.
3785         (turn_representatives_into_adjustments): New function.
3786         (analyze_all_param_acesses): New function.
3787         (get_replaced_param_substitute): New function.
3788         (get_adjustment_for_base): New function.
3789         (replace_removed_params_ssa_names): New function.
3790         (sra_ipa_reset_debug_stmts): New function.
3791         (sra_ipa_modify_expr): New function.
3792         (sra_ipa_modify_assign): New function.
3793         (convert_callers): New function.
3794         (modify_function): New function.
3795         (ipa_sra_preliminary_function_checks): New function.
3796         (ipa_early_sra): New function.
3797         (ipa_early_sra_gate): New function.
3798         (pass_early_ipa_sra): New variable.
3799         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
3800
3801 2009-09-17  Michael Matz  <matz@suse.de>
3802
3803         PR middle-end/41347
3804         * tree.c (build_type_attribute_qual_variant): Export.
3805         * tree.h (build_type_attribute_qual_variant): Declare.
3806         * tree-inline.c (remap_type_1): Use it to build variants with
3807         the original qualifiers and attributes.
3808
3809 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3810
3811         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
3812         without a fallthrough edge.
3813
3814 2009-09-16  DJ Delorie  <dj@redhat.com>
3815
3816         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
3817         chip and ignore the "fast_interrupt" attribute if so.
3818
3819 2009-09-16  Richard Henderson  <rth@redhat.com>
3820
3821         PR middle-end/41360
3822         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
3823         barrier fix.
3824
3825 2009-09-16  Richard Henderson  <rth@redhat.com>
3826
3827         PR target/41246
3828         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
3829         is set only if DECL_NO_STATIC_CHAIN is unset.
3830         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
3831         (FOR_EACH_NEST_INFO): New.
3832         (walk_all_functions): Use it.
3833         (finalize_nesting_tree): Likewise.
3834         (unnest_nesting_tree): Likewise.
3835         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
3836         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
3837         (convert_gimple_call): Early out if gimple_call_chain already set.
3838         (convert_all_function_calls): Iterate until no new functions
3839         require a static chain.
3840         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
3841         when building a trampoline.  Use dump_function_to_file instead
3842         of dump_function.
3843         (lower_nested_functions): Open dump_file.  Validate that decls
3844         that have DECL_NO_STATIC_CHAIN from the front end don't have that
3845         bit reset by this pass.
3846
3847 2009-09-16  Michael Matz  <matz@suse.de>
3848
3849         PR fortran/41212
3850         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
3851         shorten decl_common_unused.
3852         (DECL_RESTRICTED_P): New accessor.
3853         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
3854         to disambiguate marked decls and restrict pointers.
3855
3856 2009-09-16  Richard Henderson  <rth@redhat.com>
3857
3858         PR middle-end/41360
3859         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
3860
3861 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
3862
3863         * integrate.c (set_block_abstract_flags): Call
3864         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
3865
3866 2009-09-16  Richard Guenther  <rguenther@suse.de>
3867
3868         PR middle-end/34011
3869         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
3870         as non-aliased.
3871
3872 2009-09-16  DJ Delorie  <dj@redhat.com>
3873             Kaz Kojima  <kkojima@gcc.gnu.org>
3874
3875         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
3876         (sh_expand_prologue): Update calls to output_stack_adjust.
3877         (sh_expand_epilogue): Likewise.
3878
3879 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
3880
3881         PR bootstrap/41349
3882         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
3883         trying to limit the extent of searches in the insn stream.
3884
3885 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
3886             Jakub Jelinek  <jakub@redhat.com>
3887
3888         PR target/41175
3889         PR target/40677
3890         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
3891         problem.
3892         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
3893         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
3894         (rs6000_savres_strategy): Always save FP registers inline if the
3895         target doesn't support hardware double-precision.  Set the above
3896         bits in return value when needed.
3897         (rs6000_savres_routine_sym): Fix computation for cache selector.
3898         Mark the generated symbol as a function.  Rename exitp argument to
3899         lr.  Move code for determining the name of the symbol...
3900         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
3901         getting the names right on AIX and 64-bit Linux.
3902         (savres_routine_name): New variable.
3903         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
3904         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
3905         on what the target routine uses as a base register.  If savep && lr
3906         describe saving of r0 into memory slot.
3907         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
3908         line calls for AIX ABI.
3909         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
3910         determine FP save/restore functions.
3911         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
3912         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
3913         gen_addsi3.
3914         (rs6000_emit_epilogue): Adjust computation of restore_lr.
3915         Duplicate restoration of LR and execute the appropriate one
3916         depending on whether GPRs are being restored inline.  Set r11 from
3917         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
3918         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
3919         Fix out of line calls for AIX ABI.
3920         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
3921         New insn.
3922         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
3923         register 11.
3924         (*restore_gpregs_spe): Likewise.
3925         (*return_and_restore_gpregs_spe): Likewise.
3926         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
3927         Define to empty string unconditionally.
3928         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
3929         Define to empty string unconditionally.
3930         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
3931         !TARGET_64BIT.
3932
3933 2009-09-15  Jan Hubicka  <jh@suse.cz>
3934
3935         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
3936         * params.def (inline-insns-auto): Likewise.
3937
3938 2009-09-15  Martin Jambor  <mjambor@suse.cz>
3939
3940         * ipa-inline.c (estimate_function_body_sizes): Dump info about
3941         individual statements only at TDF_DETAILS dump level.  Format
3942         source for 80 characters per line.
3943
3944 2009-09-15  Christian Bruel  <christian.bruel@st.com>
3945
3946         * regrename.c (do_replace): Update REG_DEAD notes.
3947
3948 2009-09-15  Revital Eres  <eres@il.ibm.com>
3949
3950         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
3951         * targhooks.c (default_builtin_support_vector_misalignment):
3952         New builtin function.
3953         * targhooks.h (default_builtin_support_vector_misalignment):
3954         Declare.
3955         * target.h (builtin_support_vector_misalignment):
3956         New field in struct gcc_target.
3957         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
3958         new builtin function.
3959         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
3960         Define.
3961         * config/rs6000/rs6000.c
3962         (rs6000_builtin_support_vector_misalignment): New function.
3963         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
3964
3965 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
3966
3967         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
3968         instead of INSN_P.
3969         (bfin_optimize_loop): Likewise.
3970         (bfin_gen_bundles): Likewise.
3971         (workaround_speculation): Likewise.
3972         (find_load): Return NULL_RTX for debug_insn.
3973
3974 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
3975
3976         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
3977         (sminsf3): Ditto.
3978
3979 2009-09-14  DJ Delorie  <dj@redhat.com>
3980
3981         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
3982         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
3983         VLIW mode.
3984
3985 2009-09-14  Richard Henderson  <rth@redhat.com>
3986             Jakub Jelinek  <jakub@redhat.com>
3987
3988         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
3989         * cfgbuild.c (make_edges): Handle asm goto.
3990         * cfglayout.c (fixup_reorder_chain): Likewise.
3991         * cfgrtl.c (patch_jump_insn): Likewise.
3992         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
3993         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
3994         (gimple_build_asm_vec): Add and use labels parameter.
3995         (gimple_build_asm): Remove.
3996         (walk_gimple_asm): Walk labels too.
3997         * gimple.def (GIMPLE_ASM): Update docs.
3998         * gimple.h: Update decls.
3999         (struct gimple_statement_asm): Change nc to use unsigned char;
4000         add nl member.
4001         (gimple_asm_nlabels): New.
4002         (gimple_asm_label_op, gimple_asm_set_label_op): New.
4003         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
4004         into gimple_build_asm_vec.
4005         * jump.c (mark_jump_label_asm): New.
4006         (mark_jump_label): Use it.
4007         (redirect_jump_1): Handle asm goto.
4008         (invert_jump_1): Soft fail if X is null.
4009         * recog.c (extract_asm_operands): New.
4010         (asm_noperands): Use it; handle asm labels.
4011         (decode_asm_operands): Use extract_asm_operands.
4012         (asm_operand_ok): Properly handle empty string.
4013         * reg-stack.c (get_asm_operands_in_out): Rename from
4014         get_asm_operand_n_inputs; use extract_asm_operands; return both
4015         inputs and outputs by reference; update all callers.
4016         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
4017         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
4018         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
4019         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
4020         (extract_asm_operands): Declare.
4021         * stmt.c (expand_asm_operands): Add and use labels parameter.
4022         (check_unique_operand_names): Likewise.
4023         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
4024         (expand_asm_stmt): Handle asm labels.
4025         * tree-cfg.c (make_gimple_asm_edges): New.
4026         (make_edges): Use it.
4027         (cleanup_dead_labels): Handle asm labels.
4028         (is_ctrl_altering_stmt): Likewise.
4029         (gimple_redirect_edge_and_branch): Likewise.
4030         * tree.def (ASM_EXPR): Add 5th operand.
4031         * tree.h (ASM_LABELS): New.
4032         (resolve_asm_operand_names): Update decl.
4033
4034         * c-parser.c (c_parser_asm_statement): Parse asm goto.
4035         (c_parser_asm_goto_operands): New.
4036         * c-tree.h (build_asm_expr): Update decl.
4037         * c-typeck.c (build_asm_expr): Add and use labels parameter.
4038         * doc/extend.texi: Document asm goto.
4039
4040 2009-09-14  Richard Henderson  <rth@redhat.com>
4041
4042         * except.h: Update declarations.
4043         (struct pointer_map_t): Forward declare.
4044         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
4045         (struct eh_landing_pad_d, eh_landing_pad): New.
4046         (struct eh_catch_d, eh_catch): New.
4047         (struct eh_region_d): Remove next_region_sharing_label, aka,
4048         label, tree_label, landing_pad, post_landing_pad, resume,
4049         may_contain_throw.  Rename region_number to index.  Remove
4050         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
4051         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
4052         (VEC(eh_landing_pad,gc)): New.
4053         (struct eh_status): Remove last_region_number.  Add lp_array,
4054         throw_stmt_table, ttype_data, ehspec_data.
4055         (ehr_next, FOR_ALL_EH_REGION_AT): New.
4056         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
4057         * except.c (lang_protect_cleanup_actions): Return tree.
4058         (struct ehl_map_entry): Remove.
4059         (init_eh_for_function): Push zero entries for region and lp_array.
4060         (gen_eh_region): Add to region_array immediately.
4061         (gen_eh_region_catch): Operate on eh_catch objects.
4062         (gen_eh_landing_pad): New.
4063         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
4064         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
4065         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
4066         (get_eh_landing_pad_from_number_fn): New.
4067         (get_eh_landing_pad_from_number): New.
4068         (get_eh_region_from_lp_number_fn): New.
4069         (get_eh_region_from_lp_number): New.
4070         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
4071         (get_exception_pointer, get_exception_filter): Remove.
4072         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
4073         (current_function_has_exception_handlers): Simplify.
4074         (bring_to_root, eh_region_replaceable_by_p): Remove.
4075         (replace_region, hash_type_list, hash_eh_region): Remove.
4076         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
4077         (label_to_region_map, num_eh_regions): Remove.
4078         (get_next_region_sharing_label, must_not_throw_labels): Remove.
4079         (find_exception_handler_labels): Remove.
4080         (duplicate_eh_regions_0, find_prev_try): Remove.
4081         (struct duplicate_eh_regions_data): New.
4082         (duplicate_eh_regions_1): Rewrite.
4083         (duplicate_eh_regions): Return a pointer map instead of an
4084         integer offset.
4085         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
4086         (redirect_eh_edge_to_label): Remove.
4087         (eh_region_outermost): Rewrite using eh_region pointers
4088         instead of integers.
4089         (add_ttypes_entry): Update for ttype_data move to eh_status.
4090         (add_ehspec_entry): Rewrite with VEC instead of varray.
4091         (assign_filter_values): Likewise.  Export.
4092         (build_post_landing_pads, connect_post_landing_pads): Remove.
4093         (dw2_build_landing_pads): Rewrite to use lp_array.
4094         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
4095         (sjlj_assign_call_site_values): Rewrite to use lp_array.
4096         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
4097         (sjlj_mark_call_sites): Update for landing pad numbers.
4098         (finish_eh_generation): Rewrite.
4099         (gate_handle_eh): Do nothing for no eh tree.
4100         (pass_rtl_eh): Move up near finish_eh_generation.
4101         (remove_eh_landing_pad): New.
4102         (remove_eh_handler): Export.
4103         (remove_eh_region, remove_eh_handler_and_replace): Remove.
4104         (for_each_eh_label): Rewrite to use lp_array.
4105         (make_reg_eh_region_note): New.
4106         (make_reg_eh_region_note_nothrow_nononlocal): New.
4107         (insn_could_throw_p): New.
4108         (copy_reg_eh_region_note_forward): New.
4109         (copy_reg_eh_region_note_backward): New.
4110         (check_handled, add_reachable_handler): Remove.
4111         (reachable_next_level, foreach_reachable_handler): Remove.
4112         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
4113         (get_eh_region_and_lp_from_rtx): New.
4114         (get_eh_region_from_rtx): New.
4115         (can_throw_internal_1, can_throw_external_1): Remove.
4116         (can_throw_internal): Use get_eh_region_from_rtx.
4117         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
4118         (insn_nothrow_p, can_nonlocal_goto): New.
4119         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
4120         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
4121         (add_action_record): Use VEC not varray.
4122         (collect_one_action_chain): Update for eh_region changes.
4123         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
4124         Use get_eh_region_and_lp_from_rtx.
4125         (gate_convert_to_eh_region_ranges): New.
4126         (pass_convert_to_eh_region_ranges): Use it.
4127         (push_uleb128, push_sleb128): Use VEC not varray.
4128         (output_one_function_exception_table): Likewise.
4129         (dump_eh_tree): Update for eh_region changes.
4130         (verify_eh_tree): Likewise.
4131         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
4132         * tree-eh.c: Include target.h.
4133         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
4134         Don't disallow GIMPLE_RESX; adjust argument check.
4135         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
4136         (record_stmt_eh_region): Update for landing pad numbers;
4137         generate a landing pad if necessary.
4138         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
4139         (remove_stmt_from_eh_lp_fn): Similarly.
4140         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
4141         Update for lp numbers; don't special case missing throw_stmt_table.
4142         (lookup_expr_eh_lp): Similarly.
4143         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
4144         (eh_seq, eh_region_may_contain_throw): New.
4145         (struct leh_state): Add ehp_region.
4146         (struct leh_tf_state): Remove eh_label.
4147         (emit_post_landing_pad): New.
4148         (emit_resx, emit_eh_dispatch): New.
4149         (note_eh_region_may_contain_throw): New.
4150         (frob_into_branch_around): Take eh_region not eh label;
4151         emit eh code into eh_seq.
4152         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
4153         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
4154         lower_eh_must_not_throw.  Emit code to eh_seq.
4155         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
4156         (lower_try_finally_onedest): Likewise.
4157         (lower_try_finally_copy): Likewise.
4158         (lower_try_finally_switch): Likewise.
4159         (lower_try_finally): Initialize ehp_region.
4160         (lower_catch): Update for eh_catch objects.
4161         (lower_eh_filter): Don't handle must_not_throw.
4162         (lower_eh_must_not_throw): New.
4163         (lower_cleanup): Don't set eh_label.
4164         (lower_eh_constructs_2): Resolve eh builtins.
4165         Handle GIMPLE_EH_MUST_NOT_THROW.
4166         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
4167         Add eh_seq to the end of the function body.
4168         (make_eh_dispatch_edges): New.
4169         (make_eh_edge): Remove.
4170         (make_eh_edges): Simplify for landing pads.
4171         (redirect_eh_edge_1): New.
4172         (redirect_eh_edge): Use it.
4173         (redirect_eh_dispatch_edge): New.
4174         (stmt_could_throw_p): Use a switch.  Allow RESX.
4175         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
4176         (stmt_can_throw_internal): Likewise.
4177         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
4178         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
4179         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
4180         (gate_refactor_eh): New.
4181         (pass_refactor_eh): Use it.
4182         (lower_resx, execute_lower_resx, pass_lower_resx): New.
4183         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
4184         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
4185         (remove_unreachable_handlers): Rename from
4186         tree_remove_unreachable_handlers; rewrite for landing pads;
4187         call remove_eh_handler directly.
4188         (remove_unreachable_handlers_no_lp): New.
4189         (unsplit_eh, unsplit_all_eh): New.
4190         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
4191         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
4192         (cleanup_empty_eh_unsplit): New.
4193         (cleanup_empty_eh): Rewrite.
4194         (cleanup_all_empty_eh): New.
4195         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
4196         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
4197         (gate_cleanup_eh): New.
4198         (pass_cleanup_eh): Use it.
4199         (verify_eh_edges): Move later in file.  Expect one EH edge.
4200         (verify_eh_dispatch_edge): New.
4201
4202         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
4203         (gtype-desc.o): Add TARGET_H.
4204         (tree.o): Use EXCEPT_H, not except.h.
4205         (cfgbuild.o): Add EXPR_H.
4206         (GTFILES): Add vecprim.h.
4207         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
4208         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
4209         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
4210         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
4211         * calls.c (emit_call_1): Use make_reg_eh_region_note.
4212         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
4213         calls to can_throw_internal.
4214         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
4215         (make_edges): Don't handle RESX; use can_nonlocal_goto.
4216         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
4217         (expand_gimple_stmt): Use make_reg_eh_region_note.
4218         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
4219         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
4220         or find_exception_handler_labels.
4221         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
4222         there is exacly one EH edge.  Use can_nonlocal_goto and
4223         can_throw_internal.
4224         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
4225         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
4226         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
4227         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
4228         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
4229         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
4230         * dse.c (scan_insn): Use insn_could_throw_p.
4231         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
4232         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
4233         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
4234         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
4235         EXC_PTR_EXPR or FILTER_EXPR.
4236         (tree_expr_nonzero_warnv_p): Likewise.
4237         * function.h: Include vecprim.h, not varray.h
4238         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
4239         move ttype_data and ehspec_data members to struct eh_status; change
4240         action_record_data member to a VEC.
4241         * gcse.c (hash_scan_set): Use can_throw_internal.
4242         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
4243         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
4244         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
4245         (block_may_fallthru): Don't handle RESX_EXPR.
4246         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
4247         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
4248         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
4249         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
4250         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
4251         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
4252         (gimple_size): Likewise.
4253         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
4254         (gimple_build_resx): Use gimple_build_with_ops.
4255         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
4256         (is_gimple_val): Likewise.
4257         (is_gimple_stmt): Remove RESX_EXPR.
4258         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
4259         (GIMPLE_RESX): Reorder with other EH constructs.
4260         * gimple.h (struct gimple_statement_eh_mnt): New.
4261         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
4262         (gimple_eh_filter_must_not_throw): Remove.
4263         (gimple_eh_filter_set_must_not_throw): Remove.
4264         (gimple_eh_must_not_throw_fndecl): New.
4265         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
4266         (is_gimple_resx): New.
4267         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
4268         Don't copy EH_FILTER_MUST_NOT_THROW.
4269         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
4270         * ipa-inline.c (estimate_function_body_sizes): Don't try to
4271         handle must_not_throw_labels specially.
4272         * ipa-pure-const.c (check_call): Update debug statement for LP.
4273         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
4274         * ipa-utils.c (get_base_var): Likewise.
4275         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
4276         * lower-subreg.c (move_eh_region_note): Remove.
4277         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
4278         * omp-low.c (new_omp_context): Update for eh_lp_nr.
4279         (create_task_copyfn): Likewise.
4280         (maybe_catch_exception): Use gimple_build_eh_filter.
4281         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
4282         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
4283         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
4284         and pass_lower_resx.
4285         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
4286         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
4287         can_throw_internal, can_nonlocal_goto.
4288         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
4289         copy_reg_eh_region_note_forward.
4290         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
4291         (emit_output_reload_insns): Likewise.
4292         (copy_eh_notes): Remove.
4293         * rtl.def (RESX): Remove.
4294         * rtl.h: Update declarations.
4295         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
4296         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
4297         (update_eh_label): Remove.
4298         (cleanup_dead_labels_eh): New.
4299         (cleanup_deal_labels): Use it instead of update_eh_label.
4300         (gimple_merge_blocks): Update landing pad data structure when
4301         removing a landing pad label.
4302         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
4303         test; handle GIMPLE_EH_MUST_NOT_THROW.
4304         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
4305         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
4306         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
4307         (verify_stmt): Likewise.  Verify landing pads.
4308         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
4309         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
4310         (struct move_stmt_d): Add eh_map.
4311         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
4312         (move_stmt_r): Remap eh region numbers in builtin calls,
4313         resx and eh_dispatch.
4314         (move_block_to_fn): Remove eh_offset parameter.  Use
4315         maybe_duplicate_eh_stmt_fn.
4316         (find_outermost_region_in_block): Operate on eh_region pointers
4317         instead of region numbers.
4318         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
4319         duplicate_eh_regions.
4320         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
4321         test earlier.  Disallow EH landing pads.
4322         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
4323         * tree-flow.h: Update declarations.
4324         (struct tree_ann_common_d): Replace rn with lp_nr.
4325         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
4326         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
4327         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
4328         resx and eh_dispatch.
4329         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
4330         (copy_edges_for_bb): Use make_eh_dispatch_edges.
4331         (copy_cfg_body): Expect eh_map instead of eh_region_offset
4332         from duplicate_eh_regions.
4333         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
4334         update RESX; handle EH_DISPATCH.
4335         (expand_call_inline): Set eh_lp_nr, not eh_region.
4336         (maybe_inline_call_in_expr): Likewise.
4337         * tree-inline.h (struct copy_body_data): Replace eh_region with
4338         eh_lp_nr, eh_region_offset with eh_map.
4339         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
4340         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
4341         * tree-pretty-print.c (dump_generic_node): Don't handle
4342         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
4343         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
4344         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
4345         EXC_PTR_EXPR, FILTER_EXPR.
4346         * tree-ssa-operands.c (get_expr_operands): Likewise.
4347         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
4348         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
4349         (ao_ref_init_from_vn_reference): Likewise.
4350         * tree-ssa-sink.c (statement_sink_location): Likewise.
4351         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
4352         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
4353         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
4354         EXC_PTR_EXPR, FILTER_EXPR.
4355         (is_exception_related): Remove.
4356         (compute_avail): Don't call it.
4357         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
4358         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
4359         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
4360         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
4361         Build EH builtins.
4362         (build_resx): Remove.
4363         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
4364         * tree.h: Update declarations.
4365         (EH_FILTER_MUST_NOT_THROW): Remove.
4366         (struct tree_label_decl): Add eh_landing_pad_nr.
4367         (EH_LANDING_PAD_NR): New.
4368         * value-prof.c (gimple_ic): Tidy variable names.  Update for
4369         landing pad numbers.
4370         (gimple_stringop_fixed_value): Tidy variable names.  Assert
4371         that neither call stmt can throw.
4372         * vecprim.h (uchar): New.
4373         (VEC(uchar,heap), VEC(uchar,gc)): New.
4374
4375         * c-common.c (c_define_builtins): Update call to
4376         build_common_builtin_nodes.
4377         * c-parser.c (c_parse_file): Don't call
4378         default_init_unwind_resume_libfunc.
4379
4380 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
4381
4382         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
4383         (mips_cprestore_address_p): Likewise.
4384         (mips_save_gp_to_cprestore_slot): Likewise.
4385         (mips_restore_gp): Rename to...
4386         (mips_restore_gp_from_cprestore_slot): ...this.
4387         (mips_must_initialize_gp_p): Declare.
4388         (mips_emit_save_slot_move): Likewise.
4389         (mips_output_load_label): Return nothing.
4390         (mips_eh_uses): Declare.
4391         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
4392         (TARGET_CPRESTORE_DIRECTIVE): New macro.
4393         (TARGET_ABSOLUTE_JUMPS): Likewise.
4394         (EH_USES): Likewise.
4395         (FIRST_PSEUDO_REGISTER): Update comment.
4396         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
4397         (MIPS_CALL): ...here.
4398         (REGISTER_NAMES): Add $cprestore.
4399         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
4400         Add load_label_length, has_inflexible_gp_insn_p,
4401         has_flexible_gp_insn_p, must_initialize_gp_p and
4402         must_restore_gp_when_clobbered_p.
4403         (mips_expand_call): Don't generate split instructions here.
4404         (mips_split_call): Update the call to mips_restore_gp after
4405         the above name change.
4406         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
4407         (mips_find_gp_ref): New function.
4408         (mips_insn_has_inflexible_gp_ref_p): Likewise.
4409         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
4410         (mips_insn_has_flexible_gp_ref_p): Likewise.
4411         (mips_cfun_has_flexible_gp_ref_p): Likewise.
4412         (mips_function_has_gp_insn): Delete.
4413         (mips_global_pointer): Drop the df_regs_ever_live_p check.
4414         Use the new functions above.  Only return INVALID_REGNUM
4415         for TARGET_ABSOLUTE_JUMPS.
4416         (mips_must_initialize_gp_p): New function.
4417         (mips_get_cprestore_base_and_offset): New function, extracted from...
4418         (mips_cprestore_slot): ...here.  Take a bool parameter.
4419         (mips_cfun_has_cprestore_slot_p): New function.
4420         (mips_cprestore_address_p): Likewise.
4421         (mips_save_gp_to_cprestore_slot): Likewise.
4422         (mips_restore_gp): Rename to...
4423         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
4424         epilogue_completed.  Update the call to mips_cprestore_slot.
4425         Test cfun->machine->must_restore_gp_when_clobbered_p.
4426         (mips_direct_save_slot_move_p): New function.
4427         (mips_emit_save_slot_move): Likewise.
4428         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
4429         of cfun->machine->global_pointer.
4430         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
4431         (mips_save_reg): Use mips_emit_save_slot_move.
4432         (mips_expand_prologue): Set must_initialize_gp_p.
4433         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
4434         for all cprestore saves.  Emit a use_cprestore instruction after
4435         setting up the cprestore slot.
4436         (mips_restore_reg): Use mips_emit_save_slot_move.
4437         (mips_process_load_label): New function.
4438         (mips_load_label_length): Likewise.
4439         (mips_output_load_label): Don't return asm: output it here instead.
4440         Use mips_process_load_label.
4441         (mips_adjust_insn_length): Adjust the length of branch instructions
4442         that have length MAX_PIC_BRANCH_LENGTH.
4443         (mips_output_conditional_branch): Update the call to
4444         mips_output_load_label.  Assume the branch target is OPERANDS[0]
4445         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
4446         (mips_output_order_conditional_branch): Swap the meaning of
4447         OPERANDS[0] and OPERANDS[1].
4448         (mips_variable_issue): Don't count ghost instructions.
4449         (mips_expand_ghost_gp_insns): New function.
4450         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
4451         (mips_output_mi_thunk): Set must_initialize_gp_p.
4452         (mips_eh_uses): New function.
4453         * config/mips/predicates.md (cprestore_save_slot_operand)
4454         (cprestore_load_slot_operand): New predicates.
4455         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
4456         (UNSPEC_MOVE_GP): Likewise.
4457         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
4458         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
4459         (CPRESTORE_SLOT_REGNUM): New register.
4460         (MAX_PIC_BRANCH_LENGTH): New constant.
4461         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
4462         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
4463         branches.  Fix commentary.
4464         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
4465         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
4466         Change type to "ghost".
4467         (loadgp_absolute_<mode>): Likewise.
4468         (loadgp_rtp_<mode>): Likewise.
4469         (copygp_mips16): Likewise.
4470         (loadgp_blockage): Remove redundant mode attribute.
4471         (potential_cprestore): New instruction.
4472         (cprestore): Turn into an unspec set.
4473         (use_cprestore): New instruction.
4474         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
4475         (*branch_fp_inverted): Likewise.
4476         (*branch_order<mode>): Likewise.
4477         (*branch_order<mode>_inverted): Likewise.
4478         (*branch_equality<mode>): Likewise.
4479         (*branch_equality<mode>_inverted): Likewise.
4480         (*branch_bit<bbv><mode>): Likewise.
4481         (*branch_bit<bbv><mode>_inverted): Likewise.
4482         (*branch_equality<mode>_mips16): Remove redundant mode.
4483         (jump): Turn into a define_expand.
4484         (*jump_absolute): New instruction.
4485         (*jump_pic): Likewise.
4486         (*jump_mips16): Rename previously-unnamed pattern.  Remove
4487         redundant mode attribute.
4488         (restore_gp): Split on epilogue_completed rather than
4489         reload_completed.  Change type to "ghost".
4490         (move_gp<mode>): New instruction.
4491         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
4492         Remove redundant mode attribute.
4493         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
4494         (bc1any4f, bc1any2t, bc1any2f): Likewise.
4495         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
4496
4497 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
4498
4499         PR target/41210
4500         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
4501         are returned in the same register (vs34 or v2) that Altivec vector
4502         types are returned in.
4503         (rs6000_libcall_value): Ditto.
4504
4505         PR target/41331
4506         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
4507         instead of explicit addsi3/adddi3 calls.
4508         (rs6000_split_multireg_move): Ditto.
4509         (rs6000_emit_allocate_stack): Ditto.
4510         (rs6000_emit_prologue): Ditto.
4511         (rs6000_output_mi_thunk): Ditto.
4512
4513         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
4514         size is 64 bits if we can use 64-bit registers.
4515
4516 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
4517
4518         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
4519         symbols.
4520
4521         From Jie Zhang <jie.zhang@analog.com>:
4522         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
4523         save FP and RETS with saveall attribute.
4524         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
4525         with saveall attribute.
4526
4527         * config/bfin/bfin.c (bfin_expand_builtin,
4528         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
4529         operands.
4530
4531         From Jie Zhang <jie.zhang@analog.com>:
4532         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
4533         before use in two places.
4534         * config/bfin/bfin.md (AREG): Define mode iterator.
4535         (reload_in, reload_out): Use mode iterator AREG.
4536
4537 2009-09-14  Richard Guenther  <rguenther@suse.de>
4538
4539         PR middle-end/41350
4540         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
4541         EH personality path.
4542
4543 2009-09-13  Richard Guenther  <rguenther@suse.de>
4544             Rafael Avila de Espindola  <espindola@google.com>
4545
4546         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
4547         (LANG_HOOKS_EH_PERSONALITY): Likewise.
4548         (LANG_HOOKS_INITIALIZER): Adjust.
4549         (lhd_pass_through_t): Declare.
4550         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
4551         eh_personality.
4552         * langhooks.c (lhd_pass_through_t): New function.
4553         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
4554         dwarf2out_begin_prologue): Use personality from current_function_decl.
4555         * expr.h (get_personality_function): Declare.
4556         * expr.c (get_personality_function): New function.
4557         (build_personality_function): Likewise.
4558         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
4559         (eh_personality_libfunc): Remove.
4560         * optabs.c (build_libfunc_function): New function split out from ...
4561         (init_one_libfunc): ... here.
4562         * tree.h (DECL_FUNCTION_PERSONALITY): New.
4563         (tree_function_decl): Add personality.
4564         (lhd_gcc_personality): Declare.
4565         (build_personality_function): Likewise.
4566         * tree.c (gcc_eh_personality_decl): New.
4567         (lhd_gcc_personality): New function.
4568         * except.h (lang_eh_runtime_type): Remove.
4569         (enum eh_personality_kind): New.
4570         (build_personality_function): Declare.
4571         (function_needs_eh_personality): Declare.
4572         * except.c (lang_eh_runtime_type): Remove.
4573         (function_needs_eh_personality): New function.
4574         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
4575         (sjlj_emit_function_enter, output_function_exception_table):
4576         Use personality from current_function_decl.
4577         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
4578         * tree-inline.c (tree_can_inline_p): Do not inline across different
4579         EH personalities.
4580         (expand_call_inline): Likewise.  Adjust the callers EH personality.
4581         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
4582         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
4583         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
4584         (c-parser.o): Likewise
4585         * c-tree.h (c_eh_initialized_p): Remove.
4586         (c_maybe_initialize_eh): Likewise.
4587         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
4588         (finish_decl): Don't call c_maybe_initialize_eh.
4589         (c_eh_initialized_p): Remove.
4590         (c_maybe_initialize_eh): Likewise.
4591         * c-parser.c (c_parser_omp_construct): Likewise.
4592         (c_parse_file): Initialize exception handling.
4593
4594 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
4595
4596         * config.gcc (tm_file): Remove i386/biarch32.h
4597         for i?86-w64-mingw* case.
4598         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
4599         support.
4600         * config.host: Set for x64 mingw the option
4601         use_long_long_for_widest_fast_int to yes.
4602
4603 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
4604
4605         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
4606         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
4607         (dbxout_begin_function): Likewise.
4608         * final.c (dwarf2_debug_info_emitted_p): New predicate.
4609         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
4610         set on the function.
4611         (final_end_function): Likewise.
4612         (final_scan_insn): Likewise.
4613         (rest_of_handle_final): Likewise.
4614         * varasm.c (assemble_start_function): Likewise.
4615         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
4616
4617 2009-09-12  Jason Merrill  <jason@redhat.com>
4618
4619         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
4620         * opts.c (common_handle_option): constify.
4621
4622 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
4623
4624         * doc/install.texi (avr): Remove obsolete reference site.
4625
4626 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
4627
4628         * doc/install.texi (Binaries): Adjust AIX link.
4629
4630 2009-09-12  Akim Demaille  <demaille@gostai.com>
4631
4632         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
4633         Use an imperative sentence.
4634
4635 2009-09-11  Richard Henderson  <rth@redhat.com>
4636
4637         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
4638         structure-name and has-tree-operands arguments; update all entries.
4639         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
4640         update all entries.
4641         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
4642         (gsstruct_code_size): New.
4643         (gss_for_code_): New.
4644         (gss_for_code): Remove.
4645         (gimple_size): Rewrite using gsstruct_code_size.
4646         (gimple_statement_structure): Move to gimple.h.
4647         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
4648         (gss_for_code, gimple_statement_structure): New.
4649         (gimple_ops): Use new arrays; tidy.
4650
4651 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4652
4653         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
4654         operand to be a PLUS expression.
4655         * config/pa/pa.c (pa_secondary_reload): Likewise.
4656
4657 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
4658
4659         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
4660
4661         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
4662         XEXP (in_rtx, 8).
4663
4664 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
4665
4666         From Jie Zhang <jie.zhang@analog.com>:
4667         * doc/extend.texi (node Function Attributes): Document l2
4668         function attribute.
4669         (node Blackfin Variable Attributes): Document l2 variable attributes.
4670
4671 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
4672
4673         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
4674         to match the system compiler's configuration at inflection point.
4675         Add comment to remark a remaining difference with system compiler.
4676
4677         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
4678         * configure: Regenerate.
4679
4680 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
4681
4682         From Jie Zhang <jie.zhang@analog.com>:
4683         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
4684         (bfin_handle_l2_attribute): New.
4685         (bfin_attribute_table): Add l2 attribute.
4686
4687 2009-09-11  Michael Matz  <matz@suse.de>
4688
4689         PR middle-end/41275
4690         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
4691         on the local_decls list.
4692
4693 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
4694
4695         PR debug/41276
4696         PR debug/41307
4697         * cselib.c (cselib_expand_value_rtx_cb): Document callback
4698         interface.
4699         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
4700         for VALUEs, to implement the documented interface.
4701         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
4702         Adjust for VALUEs and anything else, to implement the
4703         documented interface.
4704
4705 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
4706
4707         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
4708         with actual SPE/paired vector modes before using 64-bit alignment.
4709         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
4710
4711 2009-09-10  DJ Delorie  <dj@redhat.com>
4712
4713         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
4714         emitted.
4715
4716         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
4717         * config/mep/mep.c (mep_legitimate_constant_p): New.
4718         * config/mep/mep-protos.h: Prototype it.
4719
4720 2009-09-10  Richard Henderson  <rth@redhat.com>
4721
4722         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
4723
4724 2009-09-10  Jason Merrill  <jason@redhat.com>
4725
4726         * tree.c (chain_index): New fn.
4727         * tree.h: Declare it.
4728
4729 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4730
4731         * config/sol2-c.c (cmn_err_length_specs): Initialize
4732         scalar_identity_flag.
4733
4734 2009-09-10  Richard Henderson  <rth@redhat.com>
4735
4736         * tree.h (struct tree_decl_common): Move align member earlier;
4737         move label_decl_uid member ...
4738         (struct tree_label_decl): ... here.
4739         (LABEL_DECL_UID): Update to match.
4740
4741         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
4742         not TDF_DETAILS.
4743
4744         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
4745         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
4746
4747         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
4748         dest_prev if the edge is complex.
4749
4750         * tree-cfg.c (is_ctrl_stmt): Use a switch.
4751
4752         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
4753         loop latch tests earlier.
4754
4755         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
4756         before GIMPLE_RETURN, not after its predecessor; insert
4757         before GIMPLE_RESX.
4758
4759         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
4760         gimple_seq_empty_p to test for no PHI nodes.
4761         * tree-cfg.c (split_critical_edges): Likewise.
4762
4763         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
4764
4765 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
4766
4767         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
4768         introduced by the VTA branch merge.
4769
4770 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
4771
4772         * ira-conflicts.c: Use fputs or putc instead of fprintf
4773         where appropriate.
4774         * cfg.c: Ditto.
4775         * toplev.c: Ditto.
4776         * tree-switch-conversion.c: Ditto.
4777
4778 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
4779
4780         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
4781         introduced by the VTA branch merge.
4782
4783 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
4784
4785         Revert:
4786         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
4787
4788         PR rtl-optimization/39779
4789         * expr.c (convert_modes): Return when mode == oldmode after
4790         CONST_INTs are processed.
4791
4792 2009-09-10  Nick Clifton  <nickc@redhat.com>
4793
4794         * config/mep/mep.c (mep_encode_section_info): Copy weakness
4795         attribute and referring decl when creating renamed symbol.
4796
4797 2009-09-10  Richard Guenther  <rguenther@suse.de>
4798
4799         PR middle-end/41257
4800         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
4801         reachable nodes.
4802         (cgraph_finalize_compilation_unit): Compute reachability
4803         before emitting thunks.  Properly process aliases before
4804         possibly removing unreachable nodes.
4805
4806 2009-09-10  Richard Guenther  <rguenther@suse.de>
4807
4808         PR middle-end/41254
4809         * tree.c (struct free_lang_data_d): Add worklist member.
4810         (find_decls_types_r): Push onto the worklist instead of recursing.
4811         Handle TREE_BINFOs properly.
4812         (find_decls_types): New function wrapped around find_decls_types_r
4813         to process the worklist.
4814         (find_decls_types_in_eh_region): Use it.
4815         (find_decls_types_in_node): Likewise.
4816         (find_decls_types_in_var): Likewise.
4817         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
4818         * tree.h (RECORD_OR_UNION_TYPE_P): New.
4819         (AGGREGATE_TYPE_P): Adjust.
4820
4821 2009-09-09  Jason Merrill  <jason@redhat.com>
4822
4823         * configure.ac: Check glibc version even if we have an in-tree
4824         assembler.
4825
4826 2009-09-09  Anthony Green  <green@moxielogic.com>
4827
4828         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
4829         the constant 0 when appropriate.
4830         * config/moxie/constraints.md: Add constraint O.
4831
4832         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
4833         to pass up to 6 32-bit argument values in registers.
4834         (moxie_function_arg): Ditto.
4835         (moxie_arg_partial_bytes): Ditto.
4836         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
4837         (REG_PARM_STACK_SPACE): Ditto.
4838         (FUNCTION_ARG_REGNO_P): Ditto.
4839
4840         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
4841         instruction to allocate stack space.
4842
4843 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
4844
4845         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
4846         unnecessarily stringent constraints.  Fix address
4847         calculation in the splitters.
4848
4849 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
4850
4851         PR rtl-optimization/39779
4852         * expr.c (convert_modes): Return when mode == oldmode after
4853         CONST_INTs are processed.
4854
4855 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
4856
4857         PR/41315
4858         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
4859         (ix86_expand_prologue): Take frame.padding0 into logic of
4860         to_allocate checks.
4861         (ix86_expand_epilogue): Likewise.
4862
4863 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
4864
4865         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
4866         New variables.
4867         (SHLIB_LINK, SHLIB_INSTALL): Use them.
4868         * config/t-slibgcc-libgcc: New file.
4869         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
4870
4871 2009-09-09  Martin Jambor  <mjambor@suse.cz>
4872
4873         PR tree-optimization/41089
4874         * tree-sra.c (find_var_candidates): Do not consider va_lists in
4875         early SRA.
4876
4877 2009-09-09  Richard Henderson  <rth@redhat.com>
4878
4879         * gimple.h (CASE_GIMPLE_OMP): New.
4880         (is_gimple_omp): Use it.
4881         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
4882         (verify_gimple_debug): Likewise.
4883
4884 2009-09-09  Richard Guenther  <rguenther@suse.de>
4885
4886         PR tree-optimization/41101
4887         * tree-ssa-pre.c (maximal_set): Remove.
4888         (compute_antic_aux): Treat the maximal set as implicitly all ones.
4889         Defer all blocks we didn't visit at least one successor.
4890         (add_to_exp_gen): Do not add to the maximal set.
4891         (make_values_for_phi): Likewise.
4892         (compute_avail): Likewise.
4893         (init_pre): Do not allocate the maximal set.
4894         (execute_pre): Do not dump it.
4895
4896 2009-09-09  Martin Jambor  <mjambor@suse.cz>
4897
4898         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
4899         an SSA_NAME rather than a is_gimple_variable.
4900
4901 2009-09-09  Richard Guenther  <rguenther@suse.de>
4902
4903         PR middle-end/41317
4904         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
4905         code dealing with plain pointer bases.
4906         (maybe_fold_offset_to_reference): Likewise.
4907         (maybe_fold_stmt_addition): Adjust.
4908
4909 2009-09-09  Richard Guenther  <rguenther@suse.de>
4910
4911         * tree.c (free_lang_data_in_type): Do not free the type variant
4912         chains.
4913         (free_lang_data): Merge char_type_node with its properly signed
4914         variant.
4915         (pass_ipa_free): Collect after freeing language specific data.
4916
4917 2009-09-09  Michael Matz  <matz@suse.de>
4918
4919         PR middle-end/41268
4920         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
4921         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
4922         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
4923         to reflect reality.
4924
4925 2009-09-08  DJ Delorie  <dj@redhat.com>
4926
4927         * config/mep/mep.c (conversions[]): Add "ml" pattern.
4928
4929 2009-09-04  Jason Merrill  <jason@redhat.com>
4930
4931         * tree.c (tree_find_value): Remove.
4932         * tree.h: Remove prototype.
4933         * varasm.c (assemble_external): Use value_member instead.
4934
4935 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
4936
4937         * toplev.c (process_options): Choose default debugging type when
4938         gtoggle enables debug info and type is unset.
4939
4940 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
4941
4942         PR debug/41276
4943         PR debug/41307
4944         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
4945         invalid subreg.
4946
4947 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
4948
4949         * configure: Rebuilt with modified libtool.m4.
4950
4951 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
4952
4953         PR debug/41229
4954         PR debug/41291
4955         PR debug/41300
4956         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
4957
4958 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
4959
4960         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
4961         (remove_statement): Likewise.
4962         (rewrite_use_nonlinear_expr): Adjust.
4963         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
4964         * tree-ssa.c (release_defs_bitset): ... this.  New.
4965         * tree-flow.h (release_defs_bitset): Declare.
4966
4967 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
4968
4969         PR debug/41232
4970         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
4971         in the middle block.
4972
4973 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
4974
4975         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
4976         via intptr_t to long type.
4977         (insert_operand_rank): Cast long type via intptr_t to
4978         pointer type.
4979         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
4980         pointer to scalar.
4981         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
4982         from pointer to unsigned via uintptr_t.
4983
4984         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
4985         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
4986         and HAVE_INTPTR_T.
4987         * configure: Regenerated.
4988         * config.in: Regenerated
4989         * system.h (stdint.h): Add include.
4990         (inttypes.h): Likewise.
4991         * Makefile.in (aclocal): Add config/stdint.m4.
4992         * aclocal.m4: Regenerated.
4993
4994 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
4995
4996         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
4997         variables.
4998         (note_np_check_stores): New function.
4999         (harmless_null_pointer_p): New function.
5000         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
5001         changed.  Take into account whether we're in the shadow of a condjump
5002         that tested NP_REG for NULL.
5003         Lose all code that tested for SEQUENCEs.
5004         (workaround_speculation): Avoid inserting NOPs for loads that are
5005         either always executed or a NULL pointer.
5006
5007 2009-09-08  Jan Hubicka  <jh@suse.cz>
5008
5009         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
5010         * params.def (early-inlining-insns): Likewise.
5011
5012 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
5013
5014         PR rtl-optimization/41239
5015         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
5016         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
5017         lists.
5018         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
5019         across calls, as the calls might not always return normally.
5020         (call_may_noreturn_p): New function.
5021         (deps_analyze_insn): Update last_function_call_may_noreturn list.
5022         (init_deps): Initialize it.
5023         (remove_from_deps): Also remove calls from
5024         last_function_call_may_noreturn list.
5025
5026 2009-09-07  Richard Henderson  <rth@redhat.com>
5027
5028         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
5029         more VR->OPERANDS than LHS operands.  Free LHS before returning.
5030
5031 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
5032
5033         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
5034         (attr "addrtype"): New member "spreg".
5035         Use it if mem_spfp_address_operand is true for the address.
5036         (attr "type"): New entry "stall".
5037         (cpu_unit "load"): New.
5038         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
5039         "load".
5040         (insn_reservation "loadsp"): New.
5041         (insn_reservation "load_stall1"): New.
5042         (insn_reservation "load_stall3"): New.
5043         (stall): New insn.
5044         * config/bfin/predicates.md (const1_operand, const3_operand): New.
5045         (mem_p_address_operand): Exclude stack and frame pointer based
5046         addresses.
5047         (mem_spfp_address_operand): New; match them here.
5048         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
5049         (bfin_reorg): Call it if scheduling insns.
5050         (bfin_gen_bundles): Remove dummy insns created by
5051         add_sched_insns_for_speculation.
5052
5053         From Jie Zhang <jie.zhang@analog.com>:
5054         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
5055         bfin_si_revision, bfin_workarounds): Move these ...
5056         * config/bfin/bfin.h: ... here.
5057
5058         From Mike Frysinger  <michael.frysinger@analog.com>
5059         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
5060         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
5061         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
5062         bf547m, bf548m, and bf549m.
5063         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
5064         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
5065         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
5066         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
5067         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
5068         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
5069         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
5070         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
5071         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
5072         bf542m, bf544m, bf547m, bf548m, and bf549m.
5073
5074         From Jie Zhang <jie.zhang@analog.com>:
5075         * config/bfin/predicates.md (p_register_operand): New predicate.
5076         (dp_register_operand): New predicate.
5077         * config/bfin/bfin-protos.h (WA_05000074): Define.
5078         (ENABLE_WA_05000074): Define.
5079         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
5080         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
5081         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
5082         (define_attr addrtype): Allow load/store register to be P register.
5083         (define_attr storereg): New.
5084         (define_cpu_unit anomaly_05000074): New.
5085         (define_insn_reservation dsp32shiftimm): New.
5086         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
5087         (define_insn_reservation loadp): Cannot use slot2.
5088         (define_insn_reservation loadsp): Cannot use slot2.
5089         (define_insn_reservation storep): Cannot use slot2. Does not
5090         apply when working around 05000074.
5091         (define_insn_reservation storep_anomaly_05000074): New.
5092         (define_insn_reservation storei): Does not apply when working
5093         around 05000074.
5094         (define_insn_reservation storei_anomaly_05000074): New.
5095         (define_attr length): Add dsp32shiftimm case.
5096         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
5097         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
5098         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
5099         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
5100         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
5101
5102 2009-09-07  Martin Jambor  <mjambor@suse.cz>
5103
5104         PR middle-end/41282
5105         * tree-sra.c (create_artificial_child_access): Return NULL if
5106         build_ref_for_offset fails.
5107         (propagate_subacesses_accross_link): Allow build_ref_for_offset
5108         and create_artificial_child_access to fail.
5109
5110 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
5111
5112         PR c++/41214
5113         * unwind-dw2.c (uw_init_context_1): Mark noinline.
5114         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
5115         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
5116
5117 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
5118
5119         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
5120         block, ensure it has an exit edge.  Emit a barrier after a jump.
5121
5122 2009-09-07  Nick Clifton  <nickc@redhat.com>
5123
5124         * gcc.c (this_is_linker_script): New variable.  Like
5125         this_is_library_file but for the %T constructor.
5126         (end_going_arg): If this_is_linker_script is set then locate the
5127         script and insert a --script switch before it
5128         (do_spec_2): Initialise this_is_linker_script.
5129         (do_spec_1): Likewise.  Handle %T construct.
5130         (eval_spec_function): Preserve this_is_linker_script.
5131         * doc/invoke.texi: Document %T construct in spec files.
5132         * config/m32c/m32c.h (LIB_SPEC): Use it.
5133
5134 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5135
5136         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
5137         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
5138         when volatile flag is set.
5139         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
5140
5141 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
5142
5143         PR bootstrap/41241
5144         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
5145         (combine_stack_adjustments_for_block): Allow insns between stack
5146         adjustments and stores with corresponding pre-(dec|inc)rement or
5147         pre-modify operation.
5148
5149 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
5150
5151         PR bootstrap/41241
5152         * combine-stack-adj.c (struct csa_memlist): Rename to...
5153         (struct csa_reflist): ... this.  Rename mem field to ref.
5154         (free_csa_memlist): Rename to...
5155         (free_csa_reflist): ... this.
5156         (record_one_stack_memref): Rename to...
5157         (record_one_stack_ref): ... this.  Handle also REG_P.
5158         (try_apply_stack_adjustment): Handle also REG_P.
5159         (struct record_stack_memrefs_data): Rename to...
5160         (struct record_stack_refs_data): ... this.  Rename memlist field to
5161         reflist.
5162         (record_stack_memrefs): Rename to...
5163         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
5164         subexpressions instead of failing when a MEM contains SP references.
5165         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
5166         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
5167
5168 2009-09-06  Richard Guenther  <rguenther@suse.de>
5169
5170         PR middle-end/41144
5171         * tree.c (build_array_type): Do not record types marked
5172         with structural equality in the canonical type hashtable.
5173
5174 2009-09-06  Richard Guenther  <rguenther@suse.de>
5175
5176         PR middle-end/41261
5177         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
5178
5179 2009-09-05  Richard Guenther  <rguenther@suse.de>
5180
5181         PR middle-end/41181
5182         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
5183
5184 2009-09-05  Richard Guenther  <rguenther@suse.de>
5185
5186         PR debug/41273
5187         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
5188
5189 2009-09-05  Richard Guenther  <rguenther@suse.de>
5190
5191         PR middle-end/41271
5192         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
5193         before comparing function argument types.
5194
5195 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
5196
5197         PR target/41024
5198         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
5199         the assembler.
5200
5201 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
5202
5203         Revert:
5204         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
5205
5206         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
5207         locators before emit_insn is called.
5208
5209 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
5210
5211         PR bootstrap/41241
5212         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
5213         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
5214         (reginfo_init): Don't call allocate_reg_info.
5215
5216 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
5217
5218         PR target/41262
5219         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
5220         NONDEBUG_INSN_P instead of INSN_P.
5221
5222 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
5223
5224         PR debug/41225
5225         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
5226
5227 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
5228
5229         PR target/41252
5230         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
5231         pattern of the split.
5232
5233 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
5234
5235         * toplev.c (process_options): Move setter of flag_var_tracking
5236         before other tests that depend on it.  Move down setter of
5237         flag_rename_registers.  Don't enable var-tracking-assignments
5238         by default if selective scheduling is enabled.  Warn if both
5239         are enabled.
5240
5241 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
5242
5243         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
5244         comment.  Use switch statement to catch overlaps between rtx
5245         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
5246         (IS_DECL_CODE): ... here. Remove.
5247         (check_value_is_not_decl): Remove.
5248         (dv_from_decl, dv_from_value): Check after conversion.
5249
5250 2009-09-04  Richard Guenther  <rguenther@suse.de>
5251
5252         PR middle-end/41257
5253         * (cgraph_finalize_compilation_unit): Move finalizing aliases
5254         after emitting tunks.  Move emitting thunks and ctors from ...
5255         (cgraph_optimize): ... here.  Remove redundant
5256         cgraph_analyze_functions.
5257         * varasm.c (find_decl_and_mark_needed): Remove no longer
5258         necessary check.
5259         (finish_aliases_1): Adjust check for thunk aliases.
5260
5261 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
5262
5263         * config/arm/arm.md (ctzsi2): Added braces
5264         to avoid warning that broke booststrap.
5265
5266 2009-09-04  Martin Jambor  <mjambor@suse.cz>
5267
5268         PR tree-optimization/41112
5269         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
5270         handle variable-bounded arrays.
5271         (expr_with_var_bounded_array_refs_p): New function.
5272         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
5273
5274 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
5275
5276         * config/s390/2097.md: Removed two incorrect bypasses.
5277         (z10_fsimpdf): Fixed latency.
5278         (z10_fhex): New insn_reservation.
5279         (z10_floaddf): Fixed latency.
5280         (z10_floadsf): Fixed latency.
5281         (z10_ftrunctf): Fixed latency.
5282         (z10_ftruncdf): Fixed latency.
5283         * config/s390/s390.c (z10_cost): Fixed values.
5284         (s390_adjust_priority): Added z10 path.
5285         * config/s390/s390.md (type): Added fhex.
5286         (*mov<mode>_64dfp): Updated type attribute.
5287         (*mov<mode>_64): Updated type attribute.
5288         (*mov<mode>_31): Updated type attribute.
5289         (*mov<mode>"): Likewise.
5290         * config/s390/2084.md (x_fsimpdf): Updated condition.
5291
5292 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
5293
5294         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
5295         RTXs in the predicate for operand 1.
5296
5297 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
5298
5299         * config/arm/arm.md (UNSPEC_RBIT): New constant.
5300         (rbitsi2): New insn.
5301         (ctzsi2): New expand.
5302         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
5303
5304 2009-09-03  Martin Jambor  <mjambor@suse.cz>
5305
5306         * tree-sra.c (duplicate_expr_for_different_base): Removed.
5307         (create_artificial_child_access): Use build_ref_for_offset instead
5308         of duplicate_expr_for_different_base.
5309         (propagate_subacesses_accross_link): Likewise.
5310
5311 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
5312
5313         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
5314         of INSN_P.
5315         (mips16e_collect_argument_saves): Skip debug instructions.
5316         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
5317         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
5318         (r10k_insert_cache_barriers): Likewise.
5319         (mips_reorg_process_insns): Likewise.
5320
5321 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
5322
5323         PR bootstrap/41241
5324         * ira.c (update_equiv_reg): Remove check on class likely spill.
5325
5326 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
5327
5328         PR debug/41236
5329         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
5330         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
5331         it or SUBREG.
5332
5333         PR debug/41238
5334         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
5335         the stack slot if it is passed by invisible reference.
5336         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
5337         by invisible reference.
5338
5339 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
5340
5341         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
5342         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
5343         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
5344         0.
5345         * config/bfin/sync.md: New file.
5346         * config/bfin/bfin.md: Include it.
5347         (UNSPEC_ATOMIC): New.
5348         (UNSPEC_ONES): Provide a unique number.
5349
5350         From Jie Zhang <jie.zhang@analog.com>:
5351         * config/bfin/bfin.c (ret_regs): New.
5352         (must_save_fp_p): Don't return true because of frame_pointer_needed.
5353         (must_save_rets_p): New.
5354         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
5355         current_function_is_leaf.
5356         (do_link): Likewise.
5357         (do_unlink): Likewise.
5358         (expand_interrupt_handler_prologue): Use ret_regs array.
5359         (expand_interrupt_handler_epilogue): Use ret_regs array and
5360         pass return register to gen_return_internal.
5361         (bfin_expand_epilogue): Pass return register to
5362         gen_return_internal.
5363         (bfin_expand_call): Explicitly clobber RETS.
5364         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
5365         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
5366         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
5367         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
5368         RETS.
5369         (return_internal): Take a reg rtx rather than the register number.
5370
5371 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
5372
5373         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
5374         when comparing against estimated_loop_iterations_int return.
5375
5376 2009-09-03  Richard Guenther  <rguenther@suse.de>
5377
5378         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
5379         eh_personality_libfunc.
5380
5381 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
5382
5383         * tree-parloops.c (separate_decls_in_region): Add space.
5384
5385 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
5386
5387         * tree-parloops.c (separate_decls_in_region): Change the condition
5388         checking if there are reductions in the loop.
5389
5390 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
5391
5392         PR tree-optimization/38275
5393         * tree-parloops.c (parallelize_loops): Replace profitability condition
5394         for expected number of iterations.
5395
5396 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
5397
5398         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
5399         (bootstrap-debug): Explain conditions in which it becomes default.
5400         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
5401         make it add to it.
5402
5403 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
5404
5405         * doc/invoke.texi (Optimize Options): Move
5406         -finline-small-functions to the -O2 list.
5407
5408 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
5409
5410         * toplev.c (process_options): Enable var-tracking-assignments
5411         by default if var-tracking is enabled.
5412
5413 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
5414
5415         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
5416         barrier.
5417         * emit-rtl.c (prev_nonnote_insn_bb): New function.
5418         * rtl.h (prev_nonnote_insn_bb): Declare it.
5419
5420 2009-09-03  Diego Novillo  <dnovillo@google.com>
5421
5422         * cgraph.c (cgraph_node_for_decl): New.
5423         * cgraph.h (cgraph_node_for_decl): Declare.
5424         * tree.c (host_integerp): Return 0 if T is NULL.
5425
5426 2009-09-03  Diego Novillo  <dnovillo@google.com>
5427
5428         * tree.h (struct alias_pair): Move from varasm.c.
5429         (alias_pairs): Likewise.
5430         (TYPE_MAXVAL): Define.
5431         (TYPE_MINVAL): Define.
5432         (iterative_hash_host_wide_int): Declare.
5433         (remove_unreachable_alias_pairs): Declare.
5434         * tree-pass.h (pass_ipa_free_lang_data): Declare.
5435         * diagnostic.c (default_diagnostic_starter): Make extern.
5436         (default_diagnostic_finalizer): Make extern.
5437         * diagnostic.h (default_diagnostic_starter): Declare.
5438         (default_diagnostic_finalizer): Declare.
5439         (default_tree_printer): Declare.
5440         * toplev.c (default_tree_printer): Make extern.
5441
5442 2009-09-03  Richard Guenther  <rguenther@suse.de>
5443             Diego Novillo  <dnovillo@google.com>
5444
5445         * cgraph.c (cgraph_add_new_function): Remove gimplification.
5446         * cgraphunit.c (cgraph_expand_function): Do not emit
5447         associated thunks from here.
5448         (cgraph_emit_thunks): New.
5449         (cgraph_optimize): Call it.
5450         Return if any IPA pass finds an error.
5451         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
5452         by thunks.
5453
5454 2009-09-03  Simon Baldwin  <simonb@google.com>
5455             Rafael Espindola  <espindola@google.com>
5456             Richard Guenther  <rguenther@suse.de>
5457             Doug Kwan  <dougkwan@google.com>
5458             Diego Novillo  <dnovillo@google.com>
5459
5460         * tree.c: Include tree-pass.h, langhooks-def.h,
5461         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
5462         (free_lang_data_in_type): New.
5463         (need_assembler_name_p): New.
5464         (free_lang_data_in_block): New.
5465         (free_lang_data_in_decl): New.
5466         (struct free_lang_data_d): New.
5467         (add_tree_to_fld_list): New.
5468         (find_decls_types_r): New.
5469         (get_eh_types_for_runtime): New.
5470         (find_decls_types_in_eh_region): New.
5471         (find_decls_types_in_node): New.
5472         (find_decls_types_in_var): New.
5473         (free_lang_data_in_cgraph): New.
5474         (free_lang_data): New.
5475         (gate_free_lang_data): New.
5476         (pass_ipa_free_lang_data): New.
5477
5478 2009-09-03  Diego Novillo  <dnovillo@google.com>
5479
5480         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
5481         * langhooks.h (struct lang_hooks): Add field free_lang_data.
5482         (lang_hooks): Remove const qualifier.
5483         * ipa.c (cgraph_remove_unreachable_nodes): Call
5484         remove_unreachable_alias_pairs.
5485         * except.c (add_type_for_runtime): Check if TYPE has
5486         already been converted.
5487         (lookup_type_for_runtime): Likewise.
5488         (check_handled): Handle converted types.
5489         * varasm.c (remove_unreachable_alias_pairs): New.
5490         * gimple.c: Include demangle.h.
5491         (gimple_decl_printable_name): New.
5492         (gimple_fold_obj_type_ref): New.
5493         * gimple.h (gimple_decl_printable_name): Declare.
5494         (gimple_fold_obj_type_ref): Declare.
5495         * passes.c (init_optimization_passes): Add pass
5496         pass_ipa_free_lang_data.
5497         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
5498         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
5499
5500 2009-09-03  Diego Novillo  <dnovillo@google.com>
5501
5502         * c-lang.c (lang_hooks): Remove const qualifier.
5503
5504 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
5505
5506         * doc/install.texi (*-*-freebsd*): Update target information.
5507
5508 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
5509
5510         * hard-reg-set.h (call_fixed_regs): Remove.
5511         * reginfo.c (call_fixed_regs): Remove.
5512         (init_reg_sets_1): Remove initialization of call_fixed_regs.
5513         (globalize_reg): Don't use call_fixed_regs.
5514         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
5515         call_fixed_regs.
5516
5517 2009-09-01  Michael Matz  <matz@suse.de>
5518
5519         * expr.h (emit_storent_insn, expand_expr_real_1,
5520         expand_expr_real_2): Declare.
5521         * expr.c (emit_storent_insn, expand_expr_real_1,
5522         expand_expr_real_2): Export.
5523         (store_expr): Setting and evaluating dont_return_target is useless.
5524         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
5525         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
5526         * except.c (expand_resx_expr): Rename to ...
5527         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
5528         * except.h (expand_resx_stmt): Declare.
5529         * stmt.c: Add include gimple.h
5530         (expand_asm_expr): Rename to ...
5531         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
5532         (expand_case): Rewrite to take gimple statement.
5533         * tree.h (expand_asm_stmt): Declare.
5534         (expand_case): Change prototype.
5535         * Makefile.in (stmt.o): Depend on gimple.h.
5536         * builtins.c (expand_builtin_synchronize): Build gimple asm
5537         statement, not an ASM_EXPR.
5538         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
5539         gimple_to_tree, release_stmt_tree): Remove.
5540         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
5541         ggc_free, but hold comparison code and operands separately.
5542         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
5543         (expand_call_stmt, expand_gimple_stmt_1,
5544         expand_gimple_stmt): New helpers.
5545         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
5546         release_stmt_tree.  Call expand_gimple_stmt instead.
5547         (expand_gimple_basic_block): Ditto.
5548
5549         * calls.c (emit_call_1): Don't look at EH regions here, make
5550         fntree parameter useless.
5551         (expand_call): New local rettype for TREE_TYPE(exp), use it
5552         throughout.  Remove local p, use addr instead.
5553         Don't look at EH regions here.
5554
5555 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
5556
5557         * doc/invoke.texi (-fsched-pressure): Document it.
5558         (-fsched-reg-pressure-heuristic): Remove it.
5559
5560         * reload.c (ira.h): Include.
5561         (find_reloads): Add choosing reload on number of small spilled
5562         classes.
5563
5564         * haifa-sched.c (ira.h): Include.
5565         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
5566         saved_reg_pressure, curr_reg_live, saved_reg_live,
5567         region_ref_regs): New variables.
5568         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
5569         initiate_reg_pressure_info, setup_ref_regs,
5570         initiate_bb_reg_pressure_info, save_reg_pressure,
5571         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
5572         functions.
5573         (setup_insn_reg_pressure_info): New function.
5574         (rank_for_schedule): Add pressure checking and insn issue time.
5575         Remove comparison of insn reg weights.
5576         (ready_sort): Set insn reg pressure info.
5577         (update_register_pressure, setup_insn_max_reg_pressure,
5578         update_reg_and_insn_max_reg_pressure,
5579         sched_setup_bb_reg_pressure_info): New functions.
5580         (schedule_insn): Add code for printing and updating reg pressure info.
5581         (find_set_reg_weight, find_insn_reg_weight): Remove.
5582         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
5583         (debug_ready_list): Print reg pressure info.
5584         (schedule_block): Ditto.  Check insn issue time.
5585         (sched_init): Set up sched_pressure_p.  Allocate and set up some
5586         reg pressure related info.
5587         (sched_finish): Free some reg pressure related info.
5588         (fix_tick_ready): Make insn always ready if pressure_p.
5589         (init_h_i_d): Don't call find_insn_reg_weight.
5590         (haifa_finish_h_i_d): Free insn reg pressure info.
5591
5592         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
5593         ira_memory_move_cost, ira_class_hard_regs,
5594         ira_class_hard_regs_num, ira_no_alloc_regs,
5595         ira_available_class_regs, ira_reg_class_cover_size,
5596         ira_reg_class_cover, ira_class_translate): Move to ira.h.
5597
5598         * ira-lives.c (single_reg_class): Check mode to find how many
5599         registers are necessary for operand.
5600         (ira_implicitly_set_insn_hard_regs): New.
5601
5602         * common.opt (fsched-pressure): New options.
5603         (fsched-reg-pressure-heuristic): Remove.
5604
5605         * ira.c (setup_eliminable_regset): Rename to
5606         ira_setup_eliminable_regset.  Make it external.
5607         (expand_reg_info): Pass cover class to setup_reg_classes.
5608         (ira): Call resize_reg_info instead of allocate_reg_info.
5609
5610         * sched-deps.c: Include ira.h.
5611         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
5612         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
5613         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
5614         mark_insn_hard_regno_birth, mark_insn_reg_birth,
5615         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
5616         mark_insn_reg_store, mark_insn_reg_clobber,
5617         setup_insn_reg_pressure_info): New.
5618         (sched_analyze_1): Update implicit_reg_pending_uses.
5619         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
5620         Use them to create dependencies.  Set insn reg uses and pressure
5621         info.  Process reg_pending_uses in one place.
5622         (free_deps): Free implicit sets.
5623         (remove_from_deps): Remove implicit sets if necessary.  Check
5624         implicit sets when clearing reg_last_in_use.
5625         (init_deps_global): Clear implicit_reg_pending_clobbers and
5626         implicit_reg_pending_uses.
5627
5628         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
5629         ira_memory_move_cost, ira_class_hard_regs,
5630         ira_class_hard_regs_num, ira_no_alloc_regs,
5631         ira_available_class_regs, ira_reg_class_cover_size,
5632         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
5633         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
5634         ira_implicitly_set_insn_hard_regs): New prototypes.
5635
5636         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
5637         cost_elements_num): New variables.
5638         (allocno_costs, total_costs): Rename to costs and
5639         total_allocno_costs.
5640         (COSTS_OF_ALLOCNO): Rename to COSTS.
5641         (allocno_pref): Rename to pref.
5642         (allocno_pref_buffer): Rename to pref_buffer.
5643         (common_classes): Rename to regno_cover_class.
5644         (COST_INDEX): New.
5645         (record_reg_classes): Set allocno attributes only if allocno_p.
5646         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
5647         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
5648         and COSTS_OF_ALLOCNO.
5649         (print_costs): Rename to print_allocno_costs.
5650         (print_pseudo_costs): New.
5651         (process_bb_node_for_costs): Split into 2 functions with new
5652         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
5653         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
5654         new parameter dump_file.  Use cost_elements_num instead of
5655         ira_allocnos_num.  Make one iteration if preferred classes were
5656         already calculated for scheduler.  Make 2 versions of code
5657         depending on allocno_p.
5658         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
5659         regno_cover_class and COSTS instead of common_classes and
5660         COSTS_OF_ALLOCNO.
5661         (init_costs, finish_costs): New.
5662         (ira_costs): Set up allocno_p and cost_elements_num.  Call
5663         init_costs and finish_costs.
5664         (ira_set_pseudo_classes): New.
5665
5666         * rtl.h (allocate_reg_info): Remove.
5667         (resize_reg_info): Change return type.
5668         (reg_cover_class): New.
5669         (setup_reg_classes): Add new parameter.
5670
5671         * sched-int.h (struct deps_reg): New member implicit_sets.
5672         (sched_pressure_p, sched_regno_cover_class): New external definitions.
5673         (INCREASE_BITS): New macro.
5674         (struct reg_pressure_data, struct reg_use_data): New.
5675         (struct _haifa_insn_data): Remove reg_weight.  Add members
5676         reg_pressure, reg_use_list, reg_set_list, and
5677         reg_pressure_excess_cost_change.
5678         (struct deps): New member implicit_sets.
5679         (pressure_p): New variable.
5680         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
5681         (struct reg_pressure_data, struct reg_use_data): New.
5682         (INSN_REG_WEIGHT): Remove.
5683         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
5684         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
5685         (sched_init_region_reg_pressure_info,
5686         sched_setup_bb_reg_pressure_info): New prototypes.
5687
5688         * reginfo.c (struct reg_pref): New member coverclass.
5689         (reg_cover_class): New function.
5690         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
5691         (reg_info_size): New variable.
5692         (allocate_reg_info): Make static.  Setup reg_info_size.
5693         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
5694         (setup_reg_classes): Add a new parameter.  Setup cover class too.
5695
5696         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
5697         the dependencies.
5698
5699         * sched-rgn.c (deps_join): Set up implicit_sets.
5700         (schedule_region): Set up region and basic blocks pressure
5701         relative info.
5702
5703         * passes.c (init_optimization_passes): Move
5704         pass_subregs_of_mode_init before pass_sched.
5705
5706 2009-09-02  Martin Jambor  <mjambor@suse.cz>
5707
5708         * tree-sra.c (struct access): New field grp_hint.
5709         (dump_access): Dump grp_hint.
5710         (sort_and_splice_var_accesses): Set grp_hint if a group is read
5711         multiple times.
5712         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
5713         those which have been specifically read and somehow written to.
5714         (propagate_subacesses_accross_link): Set grp_hint of right child and
5715         also possibly of the left child.
5716
5717 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
5718
5719         * tree-object-size.c (addr_object_size): Always use object_size_type
5720         0 or 2 when determining the pointer pointed object size.
5721
5722 2009-09-02  Richard Guenther  <rguenther@suse.de>
5723
5724         Revert
5725         2009-08-31  Richard Guenther  <rguenther@suse.de>
5726
5727         * builtins.c (fold_builtin_memory_op): Use the alias oracle
5728         to query if the memory regions for memmove overlap.
5729         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
5730         asserts on pointers, instead deal with odd trees.
5731         (ptr_derefs_may_alias_p): Likewise.
5732         (refs_may_alias_p_1): Constructor bases also never alias.
5733
5734 2009-08-01  Christian Bruel  <christian.bruel@st.com>
5735
5736         Revert:
5737         2009-07-31  Christian Bruel  <christian.bruel@st.com>
5738         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
5739
5740 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
5741
5742         * doc/invoke.texi (-fvar-tracking-assignments): New.
5743         (-fvar-tracking-assignments-toggle): New.
5744         (-fdump-final-insns=file): Mark filename as optional.
5745         (--param min-nondebug-insn-uid): New.
5746         (-gdwarf-@{version}): Mention version 4.
5747         * opts.c (common_handle_option): Accept it.
5748         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
5749         * regrename.c (regrename_optimize): Drop last.  Don't count debug
5750         insns as uses.  Don't reject change because of debug insn.
5751         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
5752         from the chain starter, and check for inexact matches in DEBUG_INSNS.
5753         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
5754         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
5755         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
5756         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
5757         * doc/gimple.texi (is_gimple_debug): New.
5758         (gimple_debug_bind_p): New.
5759         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
5760         * doc/install.texi (bootstrap-debug): More details.
5761         (bootstrap-debug-big, bootstrap-debug-lean): Document.
5762         (bootstrap-debug-lib): More details.
5763         (bootstrap-debug-ckovw): Update.
5764         (bootstrap-time): New.
5765         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
5766         (insert_phi_nodes_for): Insert debug stmts.
5767         (rewrite_stmt): Take iterator.  Insert debug stmts.
5768         (rewrite_enter_block): Adjust.
5769         (maybe_replace_use_in_debug_stmt): New.
5770         (rewrite_update_stmt): Use it.
5771         (mark_use_interesting): Return early for debug stmts.
5772         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
5773         stmts before replacing stmt.
5774         (move_computations_stmt): Likewise.
5775         * ira-conflicts.c (add_copies): Skip debug insns.
5776         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
5777         (regstat_bb_compute_ri): Skip debug insns.
5778         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
5779         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
5780         check_loop_closed_ssa_stmt): Skip debug stmts.
5781         * tree-tailcall.c (find_tail_calls): Likewise.
5782         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
5783         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
5784         (build_var_debug_value_stat): Declare.
5785         (build_var_debug_value): Define.
5786         (target_for_debug_bind): Declare.
5787         * reload.c (find_equiv_reg): Skip debug insns.
5788         * rtlanal.c (reg_used_between_p): Skip debug insns.
5789         (side_effects_p): Likewise.
5790         (canonicalize_condition): Likewise.
5791         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
5792         insns never depend on debug insns.
5793         (create_ddg_dep_no_link): Likewise.
5794         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
5795         Don't add inter-loop dependencies for debug insns.
5796         (build_intra_loop_deps): Likewise.
5797         (create_ddg): Count debug insns.
5798         * ddg.h (struct ddg::num_debug): New.
5799         (num_backargs): Pair up with previous int field.
5800         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
5801         -fcompare-debug-second.
5802         * final.c (get_attr_length_1): Skip debug insns.
5803         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
5804         * gcc.c (invoke_as): Call compare-debug-dump-opt.
5805         (driver_self_specs): Map -fdump-final-insns to
5806         -fdump-final-insns=..
5807         (get_local_tick): New.
5808         (compare_debug_dump_opt_spec_function): Test for . argument and
5809         compute output name.  Compute temp output spec without flag name.
5810         Compute -frandom-seed.
5811         (OPT): Undef after use.
5812         * cfgloopanal.c (num_loop_insns): Skip debug insns.
5813         (average_num_loop_insns): Likewise.
5814         * params.h (MIN_NONDEBUG_INSN_UID): New.
5815         * gimple.def (GIMPLE_DEBUG): New.
5816         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
5817         * auto-inc-dec.c (merge_in_block): Skip debug insns.
5818         (merge_in_block): Fix whitespace.
5819         * toplev.c (flag_var_tracking): Update comment.
5820         (flag_var_tracking_assignments): New.
5821         (flag_var_tracking_assignments_toggle): New.
5822         (process_options): Don't open final insns dump file if we're not
5823         going to write to it.  Compute defaults for var_tracking.
5824         * df-scan.c (df_insn_rescan_debug_internal): New.
5825         (df_uses_record): Handle debug insns.
5826         * haifa-sched.c (ready): Initialize n_debug.
5827         (contributes_to_priority): Skip debug insns.
5828         (dep_list_size): New.
5829         (priority): Use it.
5830         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
5831         they're ready.  Disregard previous debug insns to make decisions.
5832         (queue_insn): Never queue debug insns.
5833         (ready_add, ready_remove_first, ready_remove): Count debug insns.
5834         (schedule_insn): Don't reject debug insns because of issue rate.
5835         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
5836         (queue_to_ready): Skip and discount debug insns.
5837         (choose_ready): Let debug insns through.
5838         (schedule_block): Check boundary debug insns.  Discount debug
5839         insns, schedule them early.  Adjust whitespace.
5840         (set_priorities): Check for boundary debug insns.
5841         (add_jump_dependencies): Use dep_list_size.
5842         (prev_non_location_insn): New.
5843         (check_cfg): Use it.
5844         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
5845         stmts.
5846         (remove_unused_ivs): Reset debug stmts.
5847         * modulo-sched.c (const_iteration_count): Skip debug insns.
5848         (res_MII): Discount debug insns.
5849         (loop_single_full_bb_p): Skip debug insns.
5850         (sms_schedule): Likewise.
5851         (sms_schedule_by_order): Likewise.
5852         (ps_has_conflicts): Likewise.
5853         * caller-save.c (refmarker_fn): New.
5854         (save_call_clobbered_regs): Replace regs with saved mem in
5855         debug insns.
5856         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
5857         Call refmarker_fn mark for hardregnos.
5858         (mark_reg_as_referenced): New.
5859         (replace_reg_with_saved_mem): New.
5860         * ipa-pure-const.c (check_stmt): Skip debug stmts.
5861         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
5862         searching back.
5863         (cse_extended_basic_block): Skip debug insns.
5864         (count_reg_usage): Likewise.
5865         (is_dead_reg): New, split out of...
5866         (set_live_p): ... here.
5867         (insn_live_p): Use it for debug insns.
5868         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
5869         (execute_optimize_stdarg): Likewise.
5870         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
5871         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
5872         changes in debug stmts as changes.
5873         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
5874         (moveup_expr): Don't move across debug insns.  Don't move
5875         debug insn if it would create a bookkeeping block.
5876         (moveup_expr_cached): Don't use cache for debug insns that
5877         are heads of blocks.
5878         (compute_av_set_inside_bb): Skip debug insns.
5879         (sel_rank_for_schedule): Schedule debug insns first.  Remove
5880         dead code.
5881         (block_valid_for_bookkeeping_p); Support lax searches.
5882         (create_block_for_bookkeeping): Adjust block numbers when
5883         encountering debug-only blocks.
5884         (find_place_for_bookkeeping): Deal with debug-only blocks.
5885         (generate_bookkeeping_insn): Accept no place to insert.
5886         (remove_temp_moveop_nops): New argument full_tidying.
5887         (prepare_place_to_insert): Deal with debug insns.
5888         (advance_state_on_fence): Debug insns don't start cycles.
5889         (update_boundaries): Take fence as argument.  Deal with
5890         debug insns.
5891         (schedule_expr_on_boundary): No full_tidying on debug insns.
5892         (fill_insns): Deal with debug insns.
5893         (track_scheduled_insns_and_blocks): Don't count debug insns.
5894         (need_nop_to_preserve_insn_bb): New, split out of...
5895         (remove_insn_from_stream): ... this.
5896         (fur_orig_expr_not_found): Skip debug insns.
5897         * rtl.def (VALUE): Move up.
5898         (DEBUG_INSN): New.
5899         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
5900         (nearest_common_dominator_of_uses): Take debug_stmts argument.
5901         Set it if debug stmts are found.
5902         (statement_sink_location): Skip debug stmts.  Propagate
5903         moving defs into debug stmts.
5904         * ifcvt.c (first_active_insn): Skip debug insns.
5905         (last_active_insns): Likewise.
5906         (cond_exec_process_insns): Likewise.
5907         (noce_process_if_block): Likewise.
5908         (check_cond_move_block): Likewise.
5909         (cond_move_convert_if_block): Likewise.
5910         (block_jumps_and_fallthru_p): Likewise.
5911         (dead_or_predicable): Likewise.
5912         * dwarf2out.c (debug_str_hash_forced): New.
5913         (find_AT_string): Add comment.
5914         (gen_label_for_indirect_string): New.
5915         (get_debug_string_label): New.
5916         (AT_string_form): Use it.
5917         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
5918         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
5919         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
5920         several operations that cannot be represented with DWARF opcodes.
5921         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
5922         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
5923         (dwarf2out_var_location): Take during-call mark into account.
5924         (output_indirect_string): Update comment.  Output if there are
5925         label and references.
5926         (prune_indirect_string): New.
5927         (prune_unused_types): Call it if debug_str_hash_forced.
5928         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
5929         (dw_long_long_const): Remove.
5930         (struct dw_val_struct): Change val_long_long type to rtx.
5931         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
5932         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
5933         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
5934         component instead of HOST_BITS_PER_LONG.
5935         (output_loc_operands): Likewise.  For const8* assert
5936         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
5937         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
5938         rather than HOST_BITS_PER_LONG is >= 64.
5939         (add_AT_long_long): Remove val_hi and val_lo arguments, add
5940         val_const_double.
5941         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
5942         HOST_BITS_PER_LONG for dw_val_class_long_long.
5943         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
5944         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
5945         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
5946         DW_OP_stack_value.
5947         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
5948         Handle DW_OP_implicit_value.
5949         (extract_int): Move prototype earlier.
5950         (mem_loc_descriptor): For SUBREG punt if inner
5951         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
5952         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
5953         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
5954         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
5955         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
5956         instead of Pmode size.
5957         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
5958         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
5959         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
5960         (concat_loc_descriptor, concatn_loc_descriptor,
5961         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
5962         (add_location_or_const_value_attribute): Likewise.  For single
5963         location loc_lists attempt to use add_const_value_attribute
5964         for constant decls.  Add DW_AT_const_value even if
5965         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
5966         in its expression.
5967         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
5968         (control_flow_insn_p): Likewise.
5969         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
5970         (separate_decls_in_region_debug_bind): New.
5971         (separate_decls_in_region): Process debug bind stmts afterwards.
5972         * recog.c (verify_changes): Handle debug insns.
5973         (extract_insn): Likewise.
5974         (peephole2_optimize): Skip debug insns.
5975         * dse.c (scan_insn): Skip debug insns.
5976         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
5977         Pass it on.
5978         (setup_id_for_insn): Handle debug insns.
5979         (maybe_tidy_empty_bb): Adjust whitespace.
5980         (tidy_control_flow): Skip debug insns.
5981         (sel_remove_insn): Adjust for debug insns.
5982         (sel_estimate_number_of_insns): Skip debug insns.
5983         (create_insn_rtx_from_pattern): Handle debug insns.
5984         (create_copy_of_insn_rtx): Likewise.
5985         * sel-sched-.h (sel_bb_end): Declare.
5986         (sel_bb_empty_or_nop_p): New.
5987         (get_all_loop_exits): Use it.
5988         (_eligible_successor_edge_p): Likewise.
5989         (return_nop_to_pool): Adjust.
5990         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
5991         * ira-lives.c (process_bb_node_lives): Skip debug insns.
5992         * gimple-pretty-print.c (dump_gimple_debug): New.
5993         (dump_gimple_stmt): Use it.
5994         (dump_bb_header): Skip gimple debug stmts.
5995         * regmove.c (optimize_reg_copy_1): Discount debug insns.
5996         (fixup_match_2): Likewise.
5997         (regmove_backward_pass): Likewise.  Simplify combined
5998         replacement.  Handle debug insns.
5999         * function.c (instantiate_virtual_regs): Handle debug insns.
6000         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
6001         * print-rtl.h: Include cselib.h.
6002         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
6003         * df.h (df_inns_rescan_debug_internal): Declare.
6004         * gcse.c (alloc_hash_table): Estimate n_insns.
6005         (cprop_insn): Don't regard debug insns as changes.
6006         (bypass_conditional_jumps): Skip debug insns.
6007         (one_pre_gcse_pass): Adjust.
6008         (one_code_hoisting_pass): Likewise.
6009         (compute_ld_motion_mems): Skip debug insns.
6010         (one_cprop_pass): Adjust.
6011         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
6012         (if_convertible_stmt_p): Handle debug stmts.
6013         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
6014         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
6015         * ira-build.c (create_bb_allocnos): Skip debug insns.
6016         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
6017         (has_single_use): Likewise.
6018         (single_imm_use): Likewise.
6019         (num_imm_uses): Likewise.
6020         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
6021         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
6022         (create_outofssa_var_map): Likewise.
6023         * lower-subreg.c (adjust_decomposed_uses): New.
6024         (resolve_debug): New.
6025         (decompose_multiword_subregs): Use it.
6026         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
6027         * emit-rtl.c: Include params.h.
6028         (cur_debug_insn_uid): Define.
6029         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
6030         (copy_rtx_if_shared_1): Handle debug insns.
6031         (reset_used_flags): Likewise.
6032         (set_used_flags): LIkewise.
6033         (get_max_insn_count): New.
6034         (next_nondebug_insn): New.
6035         (prev_nondebug_insn): New.
6036         (make_debug_insn_raw): New.
6037         (emit_insn_before_noloc): Handle debug insns.
6038         (emit_jump_insn_before_noloc): Likewise.
6039         (emit_call_insn_before_noloc): Likewise.
6040         (emit_debug_insn_before_noloc): New.
6041         (emit_insn_after_noloc): Handle debug insns.
6042         (emit_jump_insn_after_noloc): Likewise.
6043         (emit_call_insn_after_noloc): Likewise.
6044         (emit_debug_insn_after_noloc): Likewise.
6045         (emit_insn_after): Take loc from earlier non-debug insn.
6046         (emit_jump_insn_after): Likewise.
6047         (emit_call_insn_after): Likewise.
6048         (emit_debug_insn_after_setloc): New.
6049         (emit_debug_insn_after): New.
6050         (emit_insn_before): Take loc from later non-debug insn.
6051         (emit_jump_insn_before): Likewise.
6052         (emit_call_insn_before): Likewise.
6053         (emit_debug_insn_before_setloc): New.
6054         (emit_debug_insn_before): New.
6055         (emit_insn): Handle debug insns.
6056         (emit_debug_insn): New.
6057         (emit_jump_insn): Handle debug insns.
6058         (emit_call_insn): Likewise.
6059         (emit): Likewise.
6060         (init_emit): Take min-nondebug-insn-uid into account.
6061         Initialize cur_debug_insn_uid.
6062         (emit_copy_of_insn_after): Handle debug insns.
6063         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
6064         location of single rhs in place.
6065         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
6066         (floor_sdiv_adjust): New.
6067         (cell_sdiv_adjust): New.
6068         (cell_udiv_adjust): New.
6069         (round_sdiv_adjust): New.
6070         (round_udiv_adjust): New.
6071         (wrap_constant): Moved from cselib.
6072         (unwrap_constant): New.
6073         (expand_debug_expr): New.
6074         (expand_debug_locations): New.
6075         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
6076         debug bind stmts.
6077         (gimple_expand_cfg): Expand debug locations.
6078         * cselib.c: Include tree-pass.h.
6079         (struct expand_value_data): New.
6080         (cselib_record_sets_hook): New.
6081         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
6082         (cselib_clear_table): Move, and implemnet in terms of...
6083         (cselib_reset_table_with_next_value): ... this.
6084         (cselib_get_next_unknown_value): New.
6085         (discard_useless_locs): Don't discard preserved values.
6086         (cselib_preserve_value): New.
6087         (cselib_preserved_value_p): New.
6088         (cselib_preserve_definitely): New.
6089         (cselib_clear_preserve): New.
6090         (cselib_preserve_only_values): New.
6091         (new_cselib_val): Take rtx argument.  Dump it in details.
6092         (cselib_lookup_mem): Adjust.
6093         (expand_loc): Take regs_active in struct.  Adjust.  Silence
6094         dumps unless details are requested.
6095         (cselib_expand_value_rtx_cb): New.
6096         (cselib_expand_value_rtx): Rename and reimplment in terms of...
6097         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
6098         without details.  Copy more subregs.  Try to resolve values
6099         using a callback.  Wrap constants.
6100         (cselib_subst_to_values): Adjust.
6101         (cselib_log_lookup): New.
6102         (cselib_lookup): Call it.
6103         (cselib_invalidate_regno): Don't count preserved values as useless.
6104         (cselib_invalidate_mem): Likewise.
6105         (cselib_record_set): Likewise.
6106         (struct set): Renamed to cselib_set, moved to cselib.h.
6107         (cselib_record_sets): Adjust.  Call hook.
6108         (cselib_process_insn): Reset table when it would be cleared.
6109         (dump_cselib_val): New.
6110         (dump_cselib_table): New.
6111         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
6112         (remove_forwarder_block): Support moving debug stmts.
6113         * cselib.h (cselib_record_sets_hook): Declare.
6114         (cselib_expand_callback): New type.
6115         (cselib_expand_value_rtx_cb): Declare.
6116         (cselib_reset_table_with_next_value): Declare.
6117         (cselib_get_next_unknown_value): Declare.
6118         (cselib_preserve_value): Declare.
6119         (cselib_preserved_value_p): Declare.
6120         (cselib_preserve_only_values): Declare.
6121         (dump_cselib_table): Declare.
6122         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
6123         (try_crossjump_to_edge): Likewise.
6124         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
6125         dominated blocks when debug stmts are present.
6126         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
6127         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
6128         (set_var_live_on_entry): Likewise.
6129         * loop-invariant.c (find_invariants_bb): Skip debug insns.
6130         * cfglayout.c (curr_location, last_location): Make static.
6131         (set_curr_insn_source_location): Don't avoid bouncing.
6132         (get_curr_insn_source_location): New.
6133         (get_curr_insn_block): New.
6134         (duplicate_insn_chain): Handle debug insns.
6135         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
6136         into debug stmts.
6137         * common.opt (fcompare-debug): Move to sort order.
6138         (fdump-unnumbered-links): Likewise.
6139         (fvar-tracking-assignments): New.
6140         (fvar-tracking-assignments-toggle): New.
6141         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
6142         because of debug stmts.
6143         (mark_stmt_if_obviously_necessary): Mark debug stmts.
6144         (eliminate_unnecessary_stmts): Walk dominated blocks before
6145         dominators.
6146         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
6147         * ira.c (memref_used_between_p): Skip debug insns.
6148         (update_equiv_regs): Likewise.
6149         * sched-deps.c (sd_lists_size): Accept empty list.
6150         (sd_init_insn): Mark debug insns.
6151         (sd_finish_insn): Unmark them.
6152         (sd_add_dep): Reject non-debug deps on debug insns.
6153         (fixup_sched_groups): Give debug insns group treatment.
6154         Skip debug insns.
6155         (sched_analyze_reg): Don't mark debug insns for sched before call.
6156         (sched_analyze_2): Handle debug insns.
6157         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
6158         insns.
6159         (deps_analyze_insn): Handle debug insns.
6160         (deps_start_bb): Skip debug insns.
6161         (init_deps): Initialize last_debug_insn.
6162         * tree-ssa.c (target_for_debug_bind): New.
6163         (find_released_ssa_name): New.
6164         (propagate_var_def_into_debug_stmts): New.
6165         (propagate_defs_into_debug_stmts): New.
6166         (verify_ssa): Skip debug bind stmts without values.
6167         (warn_uninialized_vars): Skip debug stmts.
6168         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
6169         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
6170         (rtx_equal_p): Likewise.
6171         * ira-costs.c (scan_one_insn): Skip debug insns.
6172         (process_bb_node_for_hard_reg_moves): Likewise.
6173         * rtl.h (DEBUG_INSN_P): New.
6174         (NONDEBUG_INSN_P): New.
6175         (MAY_HAVE_DEBUG_INSNS): New.
6176         (INSN_P): Accept debug insns.
6177         (RTX_FRAME_RELATED_P): Likewise.
6178         (INSN_DELETED_P): Likewise
6179         (PAT_VAR_LOCATION_DECL): New.
6180         (PAT_VAR_LOCATION_LOC): New.
6181         (PAT_VAR_OCATION_STATUS): New.
6182         (NOTE_VAR_LOCATION_DECL): Reimplement.
6183         (NOTE_VAR_LOCATION_LOC): Likewise.
6184         (NOTE_VAR_LOCATION_STATUS): Likewise.
6185         (INSN_VAR_LOCATION): New.
6186         (INSN_VAR_LOCATION_DECL): New.
6187         (INSN_VAR_LOCATION_LOC): New.
6188         (INSN_VAR_LOCATION_STATUS): New.
6189         (gen_rtx_UNKNOWN_VAR_LOC): New.
6190         (VAR_LOC_UNKNOWN_P): New.
6191         (NOTE_DURING_CALL_P): New.
6192         (SCHED_GROUP_P): Accept debug insns.
6193         (emit_debug_insn_before): Declare.
6194         (emit_debug_insn_before_noloc): Declare.
6195         (emit_debug_insn_beore_setloc): Declare.
6196         (emit_debug_insn_after): Declare.
6197         (emit_debug_insn_after_noloc): Declare.
6198         (emit_debug_insn_after_setloc): Declare.
6199         (emit_debug_insn): Declare.
6200         (make_debug_insn_raw): Declare.
6201         (prev_nondebug_insn): Declare.
6202         (next_nondebug_insn): Declare.
6203         (delegitimize_mem_from_attrs): Declare.
6204         (get_max_insn_count): Declare.
6205         (wrap_constant): Declare.
6206         (unwrap_constant): Declare.
6207         (get_curr_insn_source_location): Declare.
6208         (get_curr_insn_block): Declare.
6209         * tree-inline.c (insert_debug_decl_map): New.
6210         (processing_debug_stmt): New.
6211         (remap_decl): Don't create new mappings in debug stmts.
6212         (remap_gimple_op_r): Don't add references in debug stmts.
6213         (copy_tree_body_r): Likewise.
6214         (remap_gimple_stmt): Handle debug bind stmts.
6215         (copy_bb): Skip debug stmts.
6216         (copy_edges_for_bb): Likewise.
6217         (copy_debug_stmt): New.
6218         (copy_debug_stmts): New.
6219         (copy_body): Copy debug stmts at the end.
6220         (insert_init_debug_bind): New.
6221         (insert_init_stmt): Take id.  Skip and emit debug stmts.
6222         (setup_one_parameter): Remap variable earlier, register debug mapping.
6223         (estimate_num_insns): Skip debug stmts.
6224         (expand_call_inline): Preserve debug_map.
6225         (optimize_inline_calls): Check for no debug_stmts left-overs.
6226         (unsave_expr_now): Preserve debug_map.
6227         (copy_gimple_seq_and_replace_locals): Likewise.
6228         (tree_function_versioning): Check for no debug_stmts left-overs.
6229         Init and destroy debug_map as needed.  Split edges unconditionally.
6230         (build_duplicate_type): Init and destroy debug_map as needed.
6231         * tree-inline.h: Include gimple.h instead of pointer-set.h.
6232         (struct copy_body_data): Add debug_stmts and debug_map.
6233         * sched-int.h (struct ready_list): Add n_debug.
6234         (struct deps): Add last_debug_insn.
6235         (DEBUG_INSN_SCHED_P): New.
6236         (BOUNDARY_DEBUG_INSN_P): New.
6237         (SCHEDULE_DEBUG_INSN_P): New.
6238         (sd_iterator_cond): Accept empty list.
6239         * combine.c (create_log_links): Skip debug insns.
6240         (combine_instructions): Likewise.
6241         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
6242         return value is always unshared.
6243         (struct rtx_subst_pair): New.
6244         (auto_adjust_pair): New.
6245         (propagate_for_debug_subst): New.
6246         (propagate_for_debug): New.
6247         (try_combine): Skip debug insns.  Propagate removed defs into
6248         debug insns.
6249         (next_nonnote_nondebug_insn): New.
6250         (distribute_notes): Use it.  Skip debug insns.
6251         (distribute_links): Skip debug insns.
6252         * tree-outof-ssa.c (set_location_for_edge): Likewise.
6253         * resource.c (mark_target_live_regs): Likewise.
6254         * var-tracking.c: Include cselib.h and target.h.
6255         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
6256         MO_VAL_SET.
6257         (micro_operation_type_name): New.
6258         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
6259         (struct micro_operation_def): Update comments.
6260         (decl_or_value): New type.  Use instead of decls.
6261         (struct emit_note_data_def): Add vars.
6262         (struct attrs_def): Use decl_or_value.
6263         (struct variable_tracking_info_def): Add permp, flooded.
6264         (struct location_chain_def): Update comment.
6265         (struct variable_part_def): Use decl_or_value.
6266         (struct variable_def): Make var_part a variable length array.
6267         (valvar_pool): New.
6268         (scratch_regs): New.
6269         (cselib_hook_called): New.
6270         (dv_is_decl_p): New.
6271         (dv_is_value_p): New.
6272         (dv_as_decl): New.
6273         (dv_as_value): New.
6274         (dv_as_opaque): New.
6275         (dv_onepart_p): New.
6276         (dv_pool): New.
6277         (IS_DECL_CODE): New.
6278         (check_value_is_not_decl): New.
6279         (dv_from_decl): New.
6280         (dv_from_value): New.
6281         (dv_htab_hash): New.
6282         (variable_htab_hash): Use it.
6283         (variable_htab_eq): Support values.
6284         (variable_htab_free): Free from the right pool.
6285         (attrs_list_member, attrs_list_insert): Use decl_or_value.
6286         (attrs_list_union): Adjust.
6287         (attrs_list_mpdv_union): New.
6288         (tie_break_pointers): New.
6289         (canon_value_cmp): New.
6290         (unshare_variable): Return possibly-modified slot.
6291         (vars_copy_1): Adjust.
6292         (var_reg_decl_set): Adjust.  Split out of...
6293         (var_reg_set): ... this.
6294         (get_init_value): Adjust.
6295         (var_reg_delete_and_set): Adjust.
6296         (var_reg_delete): Adjust.
6297         (var_regno_delete): Adjust.
6298         (var_mem_decl_set): Split out of...
6299         (var_mem_set): ... this.
6300         (var_mem_delete_and_set): Adjust.
6301         (var_mem_delete): Adjust.
6302         (val_store): New.
6303         (val_reset): New.
6304         (val_resolve): New.
6305         (variable_union): Adjust.  Speed up merge of 1-part vars.
6306         (variable_canonicalize): Use unshared slot.
6307         (VALUED_RECURSED_INTO): New.
6308         (find_loc_in_1pdv): New.
6309         (struct dfset_merge): New.
6310         (insert_into_intersection): New.
6311         (intersect_loc_chains): New.
6312         (loc_cmp): New.
6313         (canonicalize_loc_order_check): New.
6314         (canonicalize_values_mark): New.
6315         (canonicalize_values_star): New.
6316         (variable_merge_over_cur): New.
6317         (variable_merge_over_src): New.
6318         (dataflow_set_merge): New.
6319         (dataflow_set_equiv_regs): New.
6320         (remove_duplicate_values): New.
6321         (struct dfset_post_merge): New.
6322         (variable_post_merge_new_vals): New.
6323         (variable_post_merge_perm_vals): New.
6324         (dataflow_post_merge_adjust): New.
6325         (find_mem_expr_in_1pdv): New.
6326         (dataflow_set_preserve_mem_locs): New.
6327         (dataflow_set_remove_mem_locs): New.
6328         (dataflow_set_clear_at_call): New.
6329         (onepart_variable_different_p): New.
6330         (variable_different_p): Use it.
6331         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
6332         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
6333         if not needed.
6334         (track_loc_p): Pass it true.
6335         (struct count_use_info): New.
6336         (find_use_val): New.
6337         (replace_expr_with_values): New.
6338         (log_op_type): New.
6339         (use_type): New, partially split out of...
6340         (count_uses): ... this.  Count new micro-ops.
6341         (count_uses_1): Adjust.
6342         (count_stores): Adjust.
6343         (count_with_sets): New.
6344         (VAL_NEEDS_RESOLUTION): New.
6345         (VAL_HOLDS_TRACK_EXPR): New.
6346         (VAL_EXPR_IS_COPIED): New.
6347         (VAL_EXPR_IS_CLOBBERED): New.
6348         (add_uses): Adjust.  Generate new micro-ops.
6349         (add_uses_1): Adjust.
6350         (add_stores): Generate new micro-ops.
6351         (add_with_sets): New.
6352         (find_src_status): Adjust.
6353         (find_src_set_src): Adjust.
6354         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
6355         Handle new micro-ops.  Canonicalize value equivalances.
6356         (vt_find_locations): Compute total size of hash tables for
6357         dumping.  Perform merge for var-tracking-assignments.  Don't
6358         disregard single-block loops.
6359         (dump_attrs_list): Handle decl_or_value.
6360         (dump_variable): Take variable.  Deal with decl_or_value.
6361         (dump_variable_slot): New.
6362         (dump_vars): Use it.
6363         (dump_dataflow_sets): Adjust.
6364         (set_slot_part): New, extended to support one-part variables
6365         after splitting out of...
6366         (set_variable_part): ... this.
6367         (clobber_slot_part): New, split out of...
6368         (clobber_variable_part): ... this.
6369         (delete_slot_part): New, split out of...
6370         (delete_variable_part): .... this.
6371         (check_wrap_constant): New.
6372         (vt_expand_loc_callback): New.
6373         (vt_expand_loc): New.
6374         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
6375         EMIT_NOTE_AFTER_CALL_INSN.
6376         (emit_notes_for_differences_1): Adjust.  Handle values.
6377         (emit_notes_for_differences_2): Likewise.
6378         (emit_notes_for_differences): Adjust.
6379         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
6380         Adjust.  Handle new micro-ops.
6381         (vt_add_function_parameters): Adjust.  Create and bind values.
6382         (vt_initialize): Adjust.  Initialize scratch_regs and
6383         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
6384         operations.  Move some code to count_with_sets and add_with_sets.
6385         (delete_debug_insns): New.
6386         (vt_debug_insns_local): New.
6387         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
6388         cselib.
6389         (var_tracking_main): If var-tracking-assignments is enabled
6390         but var-tracking isn't, delete debug insns and leave.  Likewise
6391         if we exceed limits or fail the stack adjustments tests, and
6392         after all var-tracking processing.
6393         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
6394         (dataflow_set): Add traversed_vars.
6395         (value_chain, const_value_chain): New typedefs.
6396         (value_chain_pool, value_chains): New variables.
6397         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
6398         add_value_chains, add_cselib_value_chains, remove_value_chain,
6399         remove_value_chains, remove_cselib_value_chains): New functions.
6400         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
6401         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
6402         static inlines.
6403         (shared_hash_find_slot_unshare, shared_hash_find_slot,
6404         shared_hash_find_slot_noinsert, shared_hash_find): Update.
6405         (dst_can_be_shared): New variable.
6406         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
6407         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
6408         different from set->vars, look up slot again instead of using the
6409         passed in slot.
6410         (dataflow_set_init): Initialize traversed_vars.
6411         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
6412         lookup if set->vars is shared.  Don't keep slot cleared before
6413         calling unshare_variable.  Unshare set->vars if needed.  Adjust
6414         unshare_variable callers.  Clear dst_can_be_shared if needed.
6415         Even ->refcount == 1 vars must be unshared if set->vars is shared
6416         and var needs to be modified.
6417         (dataflow_set_union): Set traversed_vars during canonicalization.
6418         (VALUE_CHANGED, DECL_CHANGED): Define.
6419         (set_dv_changed, dv_changed_p): New static inlines.
6420         (track_expr_p): Clear DECL_CHANGED.
6421         (dump_dataflow_sets): Set it.
6422         (variable_was_changed): Call set_dv_changed.
6423         (emit_note_insn_var_location): Likewise.
6424         (changed_variables_stack): New variable.
6425         (check_changed_vars_1, check_changed_vars_2): New functions.
6426         (emit_notes_for_changes): Do nothing if changed_variables is
6427         empty.  Traverse changed_variables with check_changed_vars_1,
6428         call check_changed_vars_2 on each changed_variables_stack entry.
6429         (emit_notes_in_bb): Add SET argument.  Just clear it at the
6430         beginning, use it instead of local &set, don't destroy it at the end.
6431         (vt_emit_notes): Call dataflow_set_clear early on all
6432         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
6433         computed set, dataflow_set_clear also VTI(bb)->in when we are
6434         done with the basic block.  Initialize changed_variables_stack,
6435         free it afterwards.  If ENABLE_CHECKING verify that after noting
6436         differences to an empty set value_chains hash table is empty.
6437         (vt_initialize): Initialize value_chains and value_chain_pool.
6438         (vt_finalize): Delete value_chains htab, free value_chain_pool.
6439         (variable_tracking_main): Call dump_dataflow_sets before calling
6440         vt_emit_notes, not after it.
6441         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
6442         (propagate_var_def_into_debug_stmts): Declare.
6443         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
6444         (df_set_note): Reject debug insns.
6445         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
6446         add notes to debug insns.
6447         (df_note_bb_compute): Adjust.  Likewise.
6448         (df_simulate_uses): Skip debug insns.
6449         (df_simulate_initialize_backwards): Likewise.
6450         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
6451         (subst_stack_regs_pat): Reject debug insns.
6452         (convert_regs_1): Handle debug insns.
6453         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
6454         (print-rtl.o): Depend on cselib.h.
6455         (cselib.o): Depend on TREE_PASS_H.
6456         (var-tracking.o): Depend on cselib.h and TARGET_H.
6457         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
6458         (init_ready_list): Skip boundary debug insns.
6459         (add_branch_dependences): Skip debug insns.
6460         (free_block_dependencies): Check for blocks with only debug insns.
6461         (compute_priorities): Likewise.
6462         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
6463         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
6464         all callers.
6465         (gimple_build_debug_bind_stat): New.
6466         (empty_body_p): Skip debug stmts.
6467         (gimple_has_side_effects): Likewise.
6468         (gimple_rhs_has_side_effects): Likewise.
6469         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
6470         (gimple_build_debug_bind_stat): Declare.
6471         (gimple_build_debug_bind): Define.
6472         (is_gimple_debug): New.
6473         (gimple_debug_bind_p): New.
6474         (gimple_debug_bind_get_var): New.
6475         (gimple_debug_bind_get_value): New.
6476         (gimple_debug_bind_get_value_ptr): New.
6477         (gimple_debug_bind_set_var): New.
6478         (gimple_debug_bind_set_value): New.
6479         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
6480         (gimple_debug_bind_reset_value): New.
6481         (gimple_debug_bind_has_value_p): New.
6482         (gsi_next_nondebug): New.
6483         (gsi_prev_nondebug): New.
6484         (gsi_start_nondebug_bb): New.
6485         (gsi_last_nondebug_bb): New.
6486         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
6487         (print_insn): Handle DEBUG_INSN.
6488         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
6489         of first insn prevail.
6490         (first_stmt): Skip debug stmts.
6491         (first_non_label_stmt): Likewise.
6492         (last_stmt): Likewise.
6493         (has_zero_uses_1): New.
6494         (single_imm_use_1): New.
6495         (verify_gimple_debug): New.
6496         (verify_types_in_gimple_stmt): Handle debug stmts.
6497         (verify_stmt): Likewise.
6498         (debug_loop_num): Skip debug stmts.
6499         (remove_edge_and_dominated_blocks): Remove dominators last.
6500         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
6501         (linearize_expr): Likewise.
6502         * config/i386/i386.c (ix86_delegitimize_address): Call
6503         default implementation.
6504         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
6505         (group_barrier_needed): Skip debug insns.
6506         (emit_insn_group_barriers): Likewise.
6507         (emit_all_insn_group_barriers): Likewise.
6508         (ia64_variable_issue): Handle debug insns.
6509         (ia64_dfa_new_cycle): Likewise.
6510         (final_emit_insn_group_barriers): Skip debug insns.
6511         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
6512         def cfa without frame.
6513         (process_set): Likewise.
6514         (process_for_unwind_directive): Pass frame on.
6515         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
6516         (rs6000_delegitimize_address): New.
6517         (rs6000_debug_adjust_cost): Handle debug insns.
6518         (is_microcoded_insn): Likewise.
6519         (is_cracked_insn): Likewise.
6520         (is_nonpipeline_insn): Likewise.
6521         (insn_must_be_first_in_group): Likewise.
6522         (insn_must_be_last_in_group): Likewise.
6523         (force_new_group): Likewise.
6524         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
6525         contains only debug insns.
6526         (rtl_merge_blocks): Skip debug insns.
6527         (purge_dead_edges): Likewise.
6528         (rtl_block_ends_with_call_p): Skip debug insns.
6529         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
6530         (mark_reg_dependencies): Skip debug insns.
6531         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
6532         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
6533         * tree-ssa-threadedge.c
6534         (record_temporary_equivalences_from_stmts): Skip debug stmts.
6535         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
6536         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
6537         (copyprop_hardreg_forward_1): Handle debug insns.
6538         * reload1.c (reload): Skip debug insns.  Replace unassigned
6539         pseudos in debug insns with their equivalences.
6540         (eliminate_regs_in_insn): Skip debug insns.
6541         (emit_input_reload_insns): Skip debug insns at first, adjust
6542         them later.
6543         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
6544         (get_indirect_ref_operands): Pass opf_no_vops on.
6545         (get_expr_operands): Likewise.  Skip debug stmts.
6546         (parse_ssa_operands): Scan debug insns with opf_no_vops.
6547
6548 2009-09-01  Richard Henderson  <rth@redhat.com>
6549
6550         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
6551         stmt_ends_pp_p statements at least once.
6552         * tree-vrp.c (vrp_initialize): Likewise.
6553         (vrp_visit_stmt): Be prepared for non-interesting stmts.
6554
6555 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
6556
6557         PR bootstrap/41205
6558         Fix AIX bootstrap after PR debug/30161
6559         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
6560         that is a GNU extension.
6561         (tmpl_value_parm_die_table): Move the definition of this global
6562         outside #ifdef DWARF2_DEBUGGING_INFO region.
6563
6564 2009-09-01  Richard Guenther  <rguenther@suse.de>
6565
6566         * tree.c (tree_expr_size): New function.
6567         * tree.h (tree_expr_size): Declare.
6568         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
6569         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
6570         * langhooks.c (lhd_expr_size): Remove.
6571         * langhooks.h (struct lang_hooks): Remove expr_size.
6572         * explow.c (expr_size): Use tree_expr_size.
6573         (int_expr_size): Likewise.
6574         * langhooks-def.h (lhd_expr_size): Remove.
6575         (LANG_HOOKS_EXPR_SIZE): Likewise.
6576         (LANG_HOOKS_INITIALIZER): Adjust.
6577
6578 2009-09-01  Richard Guenther  <rguenther@suse.de>
6579
6580         * tree-flow.h (mark_addressable): Move declaration ...
6581         * tree.h (mark_addressable): ... here.
6582         * stmt.c (expand_asm_operands): Use mark_addressable, not
6583         lang_hooks.mark_addressable.
6584         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
6585         LANG_HOOKS_MARK_ADDRESSABLE.
6586         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
6587         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
6588
6589 2009-08-31  Chris Demetriou  <cgd@google.com>
6590
6591         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
6592         vectorize if not TARGET_SSE2.
6593
6594 2009-08-31  DJ Delorie  <dj@redhat.com>
6595
6596         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
6597         registers if no coprocessor is enabled.
6598
6599 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
6600
6601         PR debug/30161
6602         * cgraph.h (cgraph_get_node): Declare ...
6603         * cgraph.c (cgraph_get_node): ... new function.
6604         * dwarf2out.c (gen_generic_params_dies,
6605         generic_parameter_die, tree_add_const_value_attribute_for_decl,
6606         make_ith_pack_parameter_name,
6607         append_entry_to_tmpl_value_parm_die_table,
6608         gen_remaining_tmpl_value_param_die_attribute): New functions.
6609         (gen_subprogram_die): Generate debug info for template parameters
6610         if debug info level is higher than DINFO_LEVEL_TERSE.
6611         Use tree_add_const_value_attribute_for_decl instead of
6612         tree_add_const_value_attribute.
6613         (gen_const_die): Use tree_add_const_value_attribute_for_decl
6614         instead of tree_add_const_value_attribute.
6615         (gen_struct_or_union_type_die): Generate debug
6616         info for template parameters if debug info level is higher than
6617         DINFO_LEVEL_TERSE.
6618         (tree_add_const_value_attribute): Handle integral and pointer
6619         constants. Update comment.
6620         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
6621         (dwarf_attr_name): Support DW_AT_GNU_template_name.
6622         (reference_to_unused): Fix thinko. Remove redundant predicates from
6623         tests.
6624         (tree_add_const_value_attribute): Make this work for constant
6625         expressions only.
6626         tree_add_const_value_attribute_for_decl is to be used for variable
6627         DECLs now.
6628         (add_location_or_const_value_attribute): Use
6629         tree_add_const_value_attribute_for_decl now.
6630         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
6631         DW_TAG_template_value_param DIEs after function DIEs have been
6632         emitted.
6633         * langhooks.h (lang_hooks_for_types): Add
6634         get_argument_pack_elems.
6635         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
6636         (lang_hooks): Added get_innermost_generic_parms,
6637         get_innermost_generic_args.
6638         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
6639         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
6640         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
6641         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
6642
6643 2009-08-31  DJ Delorie  <dj@redhat.com>
6644
6645         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
6646         it once we start generating the prologue or epilogue.
6647         (mep_call_saves_register): If the frame is locked, re-use
6648         cached values.
6649         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
6650         (mep_expand_prologue): Call it.
6651         (mep_expand_epilogue): Likewise.
6652         (mep_start_function): Use the same logic as mep_expand_prologue.
6653         (mep_pass_by_reference): Make logic more readable.
6654         (mep_return_in_memory): Zero-sized objects are passed in memory.
6655         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
6656
6657 2009-08-31  Richard Guenther  <rguenther@suse.de>
6658
6659         * builtins.c (fold_builtin_memory_op): Use the alias oracle
6660         to query if the memory regions for memmove overlap.
6661         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
6662         asserts on pointers, instead deal with odd trees.
6663         (ptr_derefs_may_alias_p): Likewise.
6664         (refs_may_alias_p_1): Constructor bases also never alias.
6665
6666 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
6667
6668         * doc/install.texi (Final install): Adjust reference on where to
6669         order printed manuals.
6670
6671 2009-08-30  Olivier Hainque  <hainque@adacore.com>
6672
6673         * dwarf2out.c (switch_to_frame_table_section): Move
6674         definition prior to first use.
6675
6676 2009-08-30  Richard Guenther  <rguenther@suse.de>
6677
6678         PR tree-optimization/41186
6679         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
6680         (ao_ref_init_from_ptr_and_size): New function.
6681         (ref_maybe_used_by_call_p_1): Be more precise tracking
6682         used ranges for builtin functions.
6683         (ref_maybe_used_by_call_p): Adjust.
6684         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
6685         ranges for builtin functions.
6686         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
6687
6688 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
6689
6690         PR target/41081
6691         * fwprop.c (get_reg_use_in): Delete.
6692         (free_load_extend): New function.
6693         (forward_propagate_subreg): Use it.
6694
6695 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
6696
6697         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
6698
6699 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
6700
6701         PR/41184
6702         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
6703         padding.
6704
6705 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
6706
6707         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
6708         fini or fini_array section.
6709
6710 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6711
6712         * graphite-dependences.c (graphite_legal_transform_bb): Call
6713         pbb_remove_duplicate_pdrs.
6714         * graphite-poly.c (can_collapse_pdr): Removed.
6715         (pdr_find_duplicate): Removed.
6716         (can_collapse_pdrs): New.
6717         (pbb_remove_duplicate_pdrs): New.
6718         (new_poly_dr): Do not look for duplicates.
6719         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
6720         (PBB_PDR_DUPLICATES_REMOVED): New.
6721         (pbb_remove_duplicate_pdrs): Declared.
6722
6723 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6724
6725         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
6726         the strides by multiplying by PDR_NB_REFS.
6727         * graphite-poly.c (can_collapse_pdr): New.
6728         (pdr_find_duplicate): New.
6729         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
6730         Initialize PDR_NB_REFS.
6731         * graphite-poly.h (struct poly_dr): Add field nb_refs.
6732         (PDR_NB_REFS): New.
6733         (new_poly_dr): Number of subscripts is a graphite_dim_t.
6734
6735 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6736
6737         PR middle-end/40965
6738         * graphite-poly.c (apply_poly_transforms): Remove legality test before
6739         any transform.
6740
6741 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6742
6743         * graphite-dependences.c (pddr_original_scattering): Return NULL
6744         for read-read dependence relations.
6745         * graphite-poly.h (enum poly_dr_type): Fix comment.
6746         (pdr_read_p): New.
6747         (pdr_write_p): New.
6748         (pdr_may_write_p): New.
6749
6750 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6751
6752         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
6753         (struct poly_dr): Same.
6754         (new_poly_dr): Same.
6755         * graphite-poly.c (new_poly_dr): Same.
6756         * graphite-dependences.c (dot_deps): Disable call to system.
6757
6758 2009-08-28  Cary Coutant  <ccoutant@google.com>
6759
6760         PR debug/41063
6761         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
6762         struct/union/enum types local to a function.
6763
6764 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
6765             Sebastian Pop  <sebastian.pop@amd.com>
6766
6767         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
6768         pbb_strip_mine_time_depth.  Changed the implementation so that
6769         transformation is expressed as a transformation on
6770         time (scatttering) dimensions.  Also, ensures that the 2d+1
6771         scheduling format is preserved.
6772         (pbb_strip_mine_profitable_p): Profitability is based on the
6773         iteration number of a given time (scattering) dimension,
6774         and not on a original loop depth dimension.
6775         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
6776         (pbb_do_strip_mine): Call psct_dynamic_dim.
6777         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
6778         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
6779         (pbb_nb_dynamic_scattering_transform): New.
6780         (psct_dynamic_dim): New.
6781
6782 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
6783
6784         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
6785         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
6786         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
6787         * graphite-interchange.c (build_linearized_memory_access): Same.
6788         (memory_stride_in_loop): Same.
6789
6790 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6791
6792         * graphite-dependences.c (pddr_original_scattering): New.
6793         (graphite_legal_transform_dr): Call pddr_original_scattering.
6794         (dot_deps_1): New.
6795         (dot_deps): New.
6796         * graphite-dependences.h (dot_deps): Declared.
6797         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
6798         (print_pdr): Print PDR_ID.
6799         * graphite-poly.h (struct poly_dr): Add field id.
6800         (PDR_ID): New.
6801         (pbb_index): New.
6802         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
6803
6804 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6805
6806         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
6807         not delete the original dependence relation.
6808
6809 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6810
6811         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
6812         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
6813         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
6814         (free_poly_ddr): New.
6815         (pddr_is_empty): New.
6816         (dependence_polyhedron_1): Now returns a poly_ddr_p.
6817         (dependence_polyhedron): Same.  Remove useless gcc_assert.
6818         Remove fprintfs.
6819         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
6820         (graphite_carried_dependence_level_k): Call pddr_is_empty.
6821         * graphite-dependences.h (enum poly_dependence_kind): New.
6822         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
6823         (PDRP_SOURCE): Renamed PDDR_SOURCE.
6824         (PDRP_SINK): Renamed PDDR_SINK.
6825         (PDRP_DDP): Renamed PDDR_DDP.
6826         (PDDR_KIND): New.
6827         (free_poly_ddr): Declared.
6828         * graphite-poly.c (new_scop): Use the new hash function names.
6829         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
6830         into original_pddrs.
6831         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
6832
6833 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6834
6835         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
6836         bounds with LT_EXPR to make niter analysis more precise on code
6837         generated by Graphite.
6838
6839 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6840
6841         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
6842         (graphite_legal_transform_bb): Same.
6843         (poly_drs_may_alias_p): Same.
6844
6845 2009-08-28  Richard Guenther  <rguenther@suse.de>
6846
6847         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
6848
6849 2009-08-28  Jan Beulich  <jbeulich@novell.com>
6850
6851         * config/i386/netware.c: Include langhooks.h.
6852         (i386_nlm_encode_section_info): Simplify.
6853         (netware_override_options): Delete.
6854         * config/i386/netware.h (netware_override_options): Delete
6855         declaration.
6856         (OVERRIDE_OPTIONS): Delete definition.
6857         (SUBTARGET_OVERRIDE_OPTIONS): Define.
6858         (ASM_COMMENT_START): Define.
6859         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
6860
6861 2009-08-28  Jan Beulich  <jbeulich@novell.com>
6862
6863         * configure.ac: For in-tree ld, do a plain version check to
6864         determine whether comdat groups are supported.
6865         * configure: Regenerate.
6866
6867 2009-08-28  Olivier Hainque  <hainque@adacore.com>
6868
6869         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
6870         always defined.  Reflect definition or absence of such for
6871         COLLECT_EXPORT_LIST.  Readability helper.
6872         (scanfilter): New enum, to help control what symbols
6873         are to be considered or ignored by scan_prog_file.
6874         (enum pass): Rename as "scanpass", moved together with scanfilter
6875         prior to scan_prog_file's prototype.
6876         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
6877         Group prototype with the scanpass/scanfilter definitions, factorize
6878         head comments for the several implementations at the prototype.
6879         (main): Reorganize the first pass link control to let AIX
6880         drag only the needed frame tables in executables.  Prevent
6881         frame tables collection during the scan aimed at static ctors.
6882         Pre-link and scan for frame tables later to compensate.
6883         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
6884         A C statement to issue assembly directives that create a reference
6885         to the given DWARF table identifier label from the current function
6886         section.
6887         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
6888         to differentiate first time section entry.  Only emit a .data
6889         tables start identifier label the first time around.
6890         (switch_to_frame_table_section): New function.  Helper for
6891         output_call_frame_info to switch possibly BACK into the eh_frame
6892         or the debug_frame section depending on FOR_EH.
6893         (output_call_frame_info): Use helper to first enter the proper
6894         frame section.
6895         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
6896         emit a link to the frame table start label from each function
6897         section.
6898         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
6899         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
6900         * config/rs6000/rs6000-protos.h: Declare it.
6901         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
6902
6903 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
6904
6905         * config/sh/sh.c (split_branches): Check the result of
6906         next_active_insn.
6907
6908 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
6909
6910         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
6911         using -pthread -fopenmp
6912
6913 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
6914
6915         * doc/service.texi (service directory): Update URL.
6916
6917 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
6918
6919         PR rtl-optimization/40861
6920         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
6921         extract word from a multi-word subreg for negative byte positions.
6922
6923 2009-08-27  Tristan Gingold  <gingold@adacore.com>
6924             Douglas B Rupp  <rupp@gnat.com>
6925
6926         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
6927         (SECTION_VMS_OVERLAY): Define.
6928         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
6929         attribute.
6930         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
6931         for common_object.
6932         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
6933         common_object declarations.
6934         (ia64_section_type_flags): Set section flag for common_object.
6935         * config/ia64/ia64-protos.h
6936         (ia64_vms_output_aligned_decl_common): Declare.
6937         (ia64_vms_elf_asm_named_section): Declare.
6938
6939 2009-08-27  Michael Matz  <matz@suse.de>
6940
6941         * expr.c (expand_expr_real_2): New function taking exploded
6942         unary or binary expression, split out from ...
6943         (expand_expr_real_1): ... here.  Move over all unary/binary
6944         switch parts to above function, in particular these codes:
6945         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
6946         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
6947         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
6948         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
6949         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
6950         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
6951         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
6952         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
6953         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
6954         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
6955         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
6956         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
6957         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
6958         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
6959         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
6960         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
6961         VEC_PACK_FIX_TRUNC_EXPR.
6962         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
6963         full expression.
6964
6965 2009-08-27  Richard Guenther  <rguenther@suse.de>
6966
6967         * gengtype.c (main): Handle uint64_t.
6968         * ipa-utils.c (get_base_var): Indent properly.
6969         * tree-ssa-live.c (debug_scope_block): New function.
6970         * tree-flow.h (debug_scope_block): Declare.
6971         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
6972         * basic-block.h (enum profile_status): Rename to
6973         enum profile_status_d.
6974         (x_profile_status): Adjust type.
6975
6976 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
6977
6978         PR debug/41170
6979         * dwarf2out.c (get_context_die): Declare this static function.
6980         (gen_type_die_with_usage): Make sure a DIE is a generated for
6981         the context of a typedef.
6982
6983 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
6984
6985         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
6986         switch.
6987
6988 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
6989
6990         * config/mips/mips-protos.h (mips_output_sync): Declare.
6991         (mips_sync_loop_insns): Likewise.
6992         (mips_output_sync_loop): Replace first two parameters with an rtx.
6993         * config/mips/mips.c (mips_multi_member): New structure.
6994         (mips_multi_members): New variable.
6995         (mips_multi_start): New function.
6996         (mips_multi_add): Likewise.
6997         (mips_multi_add_insn): Likewise.
6998         (mips_multi_add_label): Likewise.
6999         (mips_multi_last_index): Likewise.
7000         (mips_multi_copy_insn): Likewise.
7001         (mips_multi_set_operand): Likewise.
7002         (mips_multi_write): Likewise.
7003         (mips_print_operand_punctuation): Remove '%|' and '%-'.
7004         (mips_init_print_operand_punct): Update accordingly.
7005         (mips_start_ll_sc_sync_block): New function.
7006         (mips_end_ll_sc_sync_block): Likewise.
7007         (mips_output_sync): Likewise.
7008         (mips_sync_insn1_template): Likewise.
7009         (mips_sync_insn2_template): Likewise.
7010         (mips_get_sync_operand): Likewise.
7011         (mips_process_sync_loop): Likewise.
7012         (mips_output_sync_loop): Use mips_process_sync_loop.
7013         (mips_sync_loop_insns): New function.
7014         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
7015         (MIPS_COMPARE_AND_SWAP_12): Likewise.
7016         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
7017         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
7018         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
7019         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
7020         (MIPS_SYNC_OLD_OP_12): Likewise.
7021         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
7022         (MIPS_SYNC_NEW_OP_12): Likewise.
7023         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
7024         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
7025         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
7026         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
7027         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
7028         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
7029         * config/mips/mips.md (sync_mem): New attribute.
7030         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
7031         (sync_exclusive_mask, sync_required_oldval): Likewise.
7032         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
7033         (sync_release_barrier): Likewise.
7034         (length): Handle sync loops.
7035         (sync): Use mips_output_sync.
7036         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
7037         (sync_compare_and_swap<mode>): Set the new sync_* attributes
7038         and use mips_output_sync_loop.
7039         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
7040         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
7041         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
7042         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
7043         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
7044         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
7045         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
7046         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
7047         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
7048
7049 2009-08-26  Richard Guenther  <rguenther@suse.de>
7050
7051         PR middle-end/41163
7052         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
7053         the types to not match.
7054         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
7055         verification.
7056         * tree-ssa.c (useless_type_conversion_p): Conversions to
7057         pointers to unprototyped functions are useless.
7058
7059 2009-08-26  Richard Guenther  <rguenther@suse.de>
7060
7061         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
7062         whole-program condition, prepare to be called for non-globals.
7063         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
7064         params build a representative with known type and track its fields.
7065
7066 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
7067
7068         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
7069         clearing by a taken branch.
7070         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
7071         effectively after bbro pass.
7072         (sync_nand<mode>): Ditto.
7073         (sync_old_<fetchop_name><mode>): Ditto.
7074         (sync_old_nand<mode>): Ditto.
7075         (sync_new_<fetchop_name><mode>): Dito.
7076         (sync_new_nand<mode>): Ditto.
7077         (sync_compare_and_swap<mode>_1): Ditto.
7078         (*sync_compare_and_swap<mode>): Ditto.
7079         (sync_lock_test_and_set<mode>_1): Ditto.
7080         ("sync_lock_test_and_set<mode>): Ditto.
7081
7082 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
7083
7084         * hwint.h (HOST_LONG_FORMAT): New macro
7085         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
7086         Use HOST_PTR_PRINTF.
7087         * system.h (HOST_PTR_PRINTF): Resurrect old macro
7088         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
7089         (HOST_PTR_PRINTF): Document.
7090
7091 2009-08-25 Jan Hubicka  <jh@suse.cz>
7092
7093         * config/i386/bmmintrin.h: Replace by #error.
7094
7095         Revert:
7096         Michael Meissner  <michael.meissner@amd.com>
7097         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
7098         Tony Linthicum  <tony.linthicum@amd.com>
7099
7100         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
7101         (TARGET_ROUND): New macro for the round/ptest instructions which
7102         are shared between SSE4.1 and SSE5.
7103         (OPTION_MASK_ISA_ROUND): Ditto.
7104         (OPTION_ISA_ROUND): Ditto.
7105         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
7106         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
7107
7108         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
7109         (-mfused-madd): New switch to give users control over whether the
7110         compiler optimizes to use the multiply/add SSE5 instructions.
7111
7112         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
7113         (ix86_handle_option): Turn off 3dnow if -msse5.
7114         (override_options): Add SSE5 support.
7115         (print_operand): %Y prints comparison codes for SSE5 com/pcom
7116         instructions.
7117         (ix86_expand_sse_movcc): Add SSE5 support.
7118         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
7119         vector type to the next largest size.
7120         (ix86_expand_sse5_pack): New function to use pperm to pack a
7121         vector type to the next smallest size.
7122         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
7123         (IX86_BUILTIN_FMADDSD): Ditto.
7124         (IX86_BUILTIN_FMADDPS): Ditto.
7125         (IX86_BUILTIN_FMADDPD): Ditto.
7126         (IX86_BUILTIN_FMSUBSS): Ditto.
7127         (IX86_BUILTIN_FMSUBSD): Ditto.
7128         (IX86_BUILTIN_FMSUBPS): Ditto.
7129         (IX86_BUILTIN_FMSUBPD): Ditto.
7130         (IX86_BUILTIN_FNMADDSS): Ditto.
7131         (IX86_BUILTIN_FNMADDSD): Ditto.
7132         (IX86_BUILTIN_FNMADDPS): Ditto.
7133         (IX86_BUILTIN_FNMADDPD): Ditto.
7134         (IX86_BUILTIN_FNMSUBSS): Ditto.
7135         (IX86_BUILTIN_FNMSUBSD): Ditto.
7136         (IX86_BUILTIN_FNMSUBPS): Ditto.
7137         (IX86_BUILTIN_FNMSUBPD): Ditto.
7138         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
7139         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
7140         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
7141         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
7142         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
7143         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
7144         (IX86_BUILTIN_PPERM): Ditto.
7145         (IX86_BUILTIN_PERMPS): Ditto.
7146         (IX86_BUILTIN_PERMPD): Ditto.
7147         (IX86_BUILTIN_PMACSSWW): Ditto.
7148         (IX86_BUILTIN_PMACSWW): Ditto.
7149         (IX86_BUILTIN_PMACSSWD): Ditto.
7150         (IX86_BUILTIN_PMACSWD): Ditto.
7151         (IX86_BUILTIN_PMACSSDD): Ditto.
7152         (IX86_BUILTIN_PMACSDD): Ditto.
7153         (IX86_BUILTIN_PMACSSDQL): Ditto.
7154         (IX86_BUILTIN_PMACSSDQH): Ditto.
7155         (IX86_BUILTIN_PMACSDQL): Ditto.
7156         (IX86_BUILTIN_PMACSDQH): Ditto.
7157         (IX86_BUILTIN_PMADCSSWD): Ditto.
7158         (IX86_BUILTIN_PMADCSWD): Ditto.
7159         (IX86_BUILTIN_PHADDBW): Ditto.
7160         (IX86_BUILTIN_PHADDBD): Ditto.
7161         (IX86_BUILTIN_PHADDBQ): Ditto.
7162         (IX86_BUILTIN_PHADDWD): Ditto.
7163         (IX86_BUILTIN_PHADDWQ): Ditto.
7164         (IX86_BUILTIN_PHADDDQ): Ditto.
7165         (IX86_BUILTIN_PHADDUBW): Ditto.
7166         (IX86_BUILTIN_PHADDUBD): Ditto.
7167         (IX86_BUILTIN_PHADDUBQ): Ditto.
7168         (IX86_BUILTIN_PHADDUWD): Ditto.
7169         (IX86_BUILTIN_PHADDUWQ): Ditto.
7170         (IX86_BUILTIN_PHADDUDQ): Ditto.
7171         (IX86_BUILTIN_PHSUBBW): Ditto.
7172         (IX86_BUILTIN_PHSUBWD): Ditto.
7173         (IX86_BUILTIN_PHSUBDQ): Ditto.
7174         (IX86_BUILTIN_PROTB): Ditto.
7175         (IX86_BUILTIN_PROTW): Ditto.
7176         (IX86_BUILTIN_PROTD): Ditto.
7177         (IX86_BUILTIN_PROTQ): Ditto.
7178         (IX86_BUILTIN_PROTB_IMM): Ditto.
7179         (IX86_BUILTIN_PROTW_IMM): Ditto.
7180         (IX86_BUILTIN_PROTD_IMM): Ditto.
7181         (IX86_BUILTIN_PROTQ_IMM): Ditto.
7182         (IX86_BUILTIN_PSHLB): Ditto.
7183         (IX86_BUILTIN_PSHLW): Ditto.
7184         (IX86_BUILTIN_PSHLD): Ditto.
7185         (IX86_BUILTIN_PSHLQ): Ditto.
7186         (IX86_BUILTIN_PSHAB): Ditto.
7187         (IX86_BUILTIN_PSHAW): Ditto.
7188         (IX86_BUILTIN_PSHAD): Ditto.
7189         (IX86_BUILTIN_PSHAQ): Ditto.
7190         (IX86_BUILTIN_FRCZSS): Ditto.
7191         (IX86_BUILTIN_FRCZSD): Ditto.
7192         (IX86_BUILTIN_FRCZPS): Ditto.
7193         (IX86_BUILTIN_FRCZPD): Ditto.
7194         (IX86_BUILTIN_CVTPH2PS): Ditto.
7195         (IX86_BUILTIN_CVTPS2PH): Ditto.
7196         (IX86_BUILTIN_COMEQSS): Ditto.
7197         (IX86_BUILTIN_COMNESS): Ditto.
7198         (IX86_BUILTIN_COMLTSS): Ditto.
7199         (IX86_BUILTIN_COMLESS): Ditto.
7200         (IX86_BUILTIN_COMGTSS): Ditto.
7201         (IX86_BUILTIN_COMGESS): Ditto.
7202         (IX86_BUILTIN_COMUEQSS): Ditto.
7203         (IX86_BUILTIN_COMUNESS): Ditto.
7204         (IX86_BUILTIN_COMULTSS): Ditto.
7205         (IX86_BUILTIN_COMULESS): Ditto.
7206         (IX86_BUILTIN_COMUGTSS): Ditto.
7207         (IX86_BUILTIN_COMUGESS): Ditto.
7208         (IX86_BUILTIN_COMORDSS): Ditto.
7209         (IX86_BUILTIN_COMUNORDSS): Ditto.
7210         (IX86_BUILTIN_COMFALSESS): Ditto.
7211         (IX86_BUILTIN_COMTRUESS): Ditto.
7212         (IX86_BUILTIN_COMEQSD): Ditto.
7213         (IX86_BUILTIN_COMNESD): Ditto.
7214         (IX86_BUILTIN_COMLTSD): Ditto.
7215         (IX86_BUILTIN_COMLESD): Ditto.
7216         (IX86_BUILTIN_COMGTSD): Ditto.
7217         (IX86_BUILTIN_COMGESD): Ditto.
7218         (IX86_BUILTIN_COMUEQSD): Ditto.
7219         (IX86_BUILTIN_COMUNESD): Ditto.
7220         (IX86_BUILTIN_COMULTSD): Ditto.
7221         (IX86_BUILTIN_COMULESD): Ditto.
7222         (IX86_BUILTIN_COMUGTSD): Ditto.
7223         (IX86_BUILTIN_COMUGESD): Ditto.
7224         (IX86_BUILTIN_COMORDSD): Ditto.
7225         (IX86_BUILTIN_COMUNORDSD): Ditto.
7226         (IX86_BUILTIN_COMFALSESD): Ditto.
7227         (IX86_BUILTIN_COMTRUESD): Ditto.
7228         (IX86_BUILTIN_COMEQPS): Ditto.
7229         (IX86_BUILTIN_COMNEPS): Ditto.
7230         (IX86_BUILTIN_COMLTPS): Ditto.
7231         (IX86_BUILTIN_COMLEPS): Ditto.
7232         (IX86_BUILTIN_COMGTPS): Ditto.
7233         (IX86_BUILTIN_COMGEPS): Ditto.
7234         (IX86_BUILTIN_COMUEQPS): Ditto.
7235         (IX86_BUILTIN_COMUNEPS): Ditto.
7236         (IX86_BUILTIN_COMULTPS): Ditto.
7237         (IX86_BUILTIN_COMULEPS): Ditto.
7238         (IX86_BUILTIN_COMUGTPS): Ditto.
7239         (IX86_BUILTIN_COMUGEPS): Ditto.
7240         (IX86_BUILTIN_COMORDPS): Ditto.
7241         (IX86_BUILTIN_COMUNORDPS): Ditto.
7242         (IX86_BUILTIN_COMFALSEPS): Ditto.
7243         (IX86_BUILTIN_COMTRUEPS): Ditto.
7244         (IX86_BUILTIN_COMEQPD): Ditto.
7245         (IX86_BUILTIN_COMNEPD): Ditto.
7246         (IX86_BUILTIN_COMLTPD): Ditto.
7247         (IX86_BUILTIN_COMLEPD): Ditto.
7248         (IX86_BUILTIN_COMGTPD): Ditto.
7249         (IX86_BUILTIN_COMGEPD): Ditto.
7250         (IX86_BUILTIN_COMUEQPD): Ditto.
7251         (IX86_BUILTIN_COMUNEPD): Ditto.
7252         (IX86_BUILTIN_COMULTPD): Ditto.
7253         (IX86_BUILTIN_COMULEPD): Ditto.
7254         (IX86_BUILTIN_COMUGTPD): Ditto.
7255         (IX86_BUILTIN_COMUGEPD): Ditto.
7256         (IX86_BUILTIN_COMORDPD): Ditto.
7257         (IX86_BUILTIN_COMUNORDPD): Ditto.
7258         (IX86_BUILTIN_COMFALSEPD): Ditto.
7259         (IX86_BUILTIN_COMTRUEPD): Ditto.
7260         (IX86_BUILTIN_PCOMEQUB): Ditto.
7261         (IX86_BUILTIN_PCOMNEUB): Ditto.
7262         (IX86_BUILTIN_PCOMLTUB): Ditto.
7263         (IX86_BUILTIN_PCOMLEUB): Ditto.
7264         (IX86_BUILTIN_PCOMGTUB): Ditto.
7265         (IX86_BUILTIN_PCOMGEUB): Ditto.
7266         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
7267         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
7268         (IX86_BUILTIN_PCOMEQUW): Ditto.
7269         (IX86_BUILTIN_PCOMNEUW): Ditto.
7270         (IX86_BUILTIN_PCOMLTUW): Ditto.
7271         (IX86_BUILTIN_PCOMLEUW): Ditto.
7272         (IX86_BUILTIN_PCOMGTUW): Ditto.
7273         (IX86_BUILTIN_PCOMGEUW): Ditto.
7274         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
7275         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
7276         (IX86_BUILTIN_PCOMEQUD): Ditto.
7277         (IX86_BUILTIN_PCOMNEUD): Ditto.
7278         (IX86_BUILTIN_PCOMLTUD): Ditto.
7279         (IX86_BUILTIN_PCOMLEUD): Ditto.
7280         (IX86_BUILTIN_PCOMGTUD): Ditto.
7281         (IX86_BUILTIN_PCOMGEUD): Ditto.
7282         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
7283         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
7284         (IX86_BUILTIN_PCOMEQUQ): Ditto.
7285         (IX86_BUILTIN_PCOMNEUQ): Ditto.
7286         (IX86_BUILTIN_PCOMLTUQ): Ditto.
7287         (IX86_BUILTIN_PCOMLEUQ): Ditto.
7288         (IX86_BUILTIN_PCOMGTUQ): Ditto.
7289         (IX86_BUILTIN_PCOMGEUQ): Ditto.
7290         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
7291         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
7292         (IX86_BUILTIN_PCOMEQB): Ditto.
7293         (IX86_BUILTIN_PCOMNEB): Ditto.
7294         (IX86_BUILTIN_PCOMLTB): Ditto.
7295         (IX86_BUILTIN_PCOMLEB): Ditto.
7296         (IX86_BUILTIN_PCOMGTB): Ditto.
7297         (IX86_BUILTIN_PCOMGEB): Ditto.
7298         (IX86_BUILTIN_PCOMFALSEB): Ditto.
7299         (IX86_BUILTIN_PCOMTRUEB): Ditto.
7300         (IX86_BUILTIN_PCOMEQW): Ditto.
7301         (IX86_BUILTIN_PCOMNEW): Ditto.
7302         (IX86_BUILTIN_PCOMLTW): Ditto.
7303         (IX86_BUILTIN_PCOMLEW): Ditto.
7304         (IX86_BUILTIN_PCOMGTW): Ditto.
7305         (IX86_BUILTIN_PCOMGEW): Ditto.
7306         (IX86_BUILTIN_PCOMFALSEW): Ditto.
7307         (IX86_BUILTIN_PCOMTRUEW): Ditto.
7308         (IX86_BUILTIN_PCOMEQD): Ditto.
7309         (IX86_BUILTIN_PCOMNED): Ditto.
7310         (IX86_BUILTIN_PCOMLTD): Ditto.
7311         (IX86_BUILTIN_PCOMLED): Ditto.
7312         (IX86_BUILTIN_PCOMGTD): Ditto.
7313         (IX86_BUILTIN_PCOMGED): Ditto.
7314         (IX86_BUILTIN_PCOMFALSED): Ditto.
7315         (IX86_BUILTIN_PCOMTRUED): Ditto.
7316         (IX86_BUILTIN_PCOMEQQ): Ditto.
7317         (IX86_BUILTIN_PCOMNEQ): Ditto.
7318         (IX86_BUILTIN_PCOMLTQ): Ditto.
7319         (IX86_BUILTIN_PCOMLEQ): Ditto.
7320         (IX86_BUILTIN_PCOMGTQ): Ditto.
7321         (IX86_BUILTIN_PCOMGEQ): Ditto.
7322         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
7323         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
7324         (enum multi_arg_type): New enum for describing the various SSE5
7325         intrinsic argument types.
7326         (bdesc_multi_arg): New table for SSE5 intrinsics.
7327         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
7328         (ix86_expand_multi_arg_builtin): New function for creating SSE5
7329         intrinsics.
7330         (ix86_expand_builtin): Add SSE5 intrinsic support.
7331         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
7332         operand instructions.
7333         (ix86_expand_sse5_multiple_memory): New function to split the
7334         second memory reference from SSE5 instructions.
7335         (type_has_variadic_args_p): Delete in favor of stdarg_p.
7336         (ix86_return_pops_args): Use stdarg_p to determine if the function
7337         has variable arguments.
7338         (ix86_setup_incoming_varargs): Ditto.
7339         (x86_this_parameter): Ditto.
7340
7341         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
7342         declaration.
7343         (ix86_expand_sse5_pack): Ditto.
7344         (ix86_sse5_valid_op_p): Ditto.
7345         (ix86_expand_sse5_multiple_memory): Ditto.
7346
7347         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
7348         constant for SSE5 support.
7349         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
7350         (UNSPEC_SSE5_TRUEFALSE): Ditto.
7351         (UNSPEC_SSE5_PERMUTE): Ditto.
7352         (UNSPEC_SSE5_ASHIFT): Ditto.
7353         (UNSPEC_SSE5_LSHIFT): Ditto.
7354         (UNSPEC_FRCZ): Ditto.
7355         (UNSPEC_CVTPH2PS): Ditto.
7356         (UNSPEC_CVTPS2PH): Ditto.
7357         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
7358         (PCOM_TRUE): Ditto.
7359         (COM_FALSE_S): Ditto.
7360         (COM_FALSE_P): Ditto.
7361         (COM_TRUE_S): Ditto.
7362         (COM_TRUE_P): Ditto.
7363         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
7364         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
7365         types.
7366         (memory attribute): Ditto.
7367         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
7368         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
7369         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
7370         (floor<mode>2): Ditto.
7371         (ceil<mode>2): Ditto.
7372         (btrunc<mode>2): Ditto.
7373         (nearbyintdf2): Ditto.
7374         (nearbyintsf2): Ditto.
7375         (sse_setccsf): Disable if SSE5.
7376         (sse_setccdf): Ditto.
7377         (sse5_setcc<mode>): New support for SSE5 conditional move.
7378         (sse5_pcmov_<mode>): Ditto.
7379
7380         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
7381         (SSEMODEF4): Ditto.
7382         (SSEMODEF2P): Ditto.
7383         (ssemodesuffixf4): New mode attribute for SSE5.
7384         (ssemodesuffixf2s): Ditto.
7385         (ssemodesuffixf2c): Ditto.
7386         (sserotatemax): Ditto.
7387         (ssescalarmode): Ditto.
7388         (sse_maskcmpv4sf3): Disable if SSE5.
7389         (sse_maskcmpv2df3): Ditto.
7390         (sse_vmmaskcmpv4sf3): Ditto.
7391         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
7392         (sse5_vmfmadd<mode>4): Ditto.
7393         (sse5_fmsub<mode>4): Ditto.
7394         (sse5_vmfmsub<mode>4): Ditto.
7395         (sse5_fnmadd<mode>4): Ditto.
7396         (sse5_vmfnmadd<mode>4): Ditto.
7397         (sse5_fnmsub<mode>4): Ditto.
7398         (sse5_vmfnmsub<mode>4): Ditto.
7399         (sse5i_fmadd<mode>4): Ditto.
7400         (sse5i_fmsub<mode>4): Ditto.
7401         (sse5i_fnmadd<mode>4): Ditto.
7402         (sse5i_fnmsub<mode>4): Ditto.
7403         (sse5i_vmfmadd<mode>4): Ditto.
7404         (sse5i_vmfmsub<mode>4): Ditto.
7405         (sse5i_vmfnmadd<mode>4): Ditto.
7406         (sse5i_vmfnmsub<mode>4): Ditto.
7407         (mulv16qi3): Add SSE5 support.
7408         (mulv4si3): Ditto.
7409         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
7410         (sse2_mulv4si3): Disable if SSE5.
7411         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
7412         (sse4_1_roundps): Ditto.
7413         (sse4_1_roundsd): Ditto.
7414         (sse4_1_roundss): Ditto.
7415         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
7416         be generated.
7417         (sse_maskcmpsf3): Ditto.
7418         (sse_vmmaskcmpv4sf3): Ditto.
7419         (sse2_maskcmpv2df3): Ditto.
7420         (sse2_maskcmpdf3): Ditto.
7421         (sse2_vmmaskcmpv2df3): Ditto.
7422         (sse2_eq<mode>3): Ditto.
7423         (sse2_gt<mode>3): Ditto.
7424         (sse5_pcmov_<mode>): Add SSE5 support.
7425         (vec_unpacku_hi_v16qi): Ditto.
7426         (vec_unpacks_hi_v16qi): Ditto.
7427         (vec_unpacku_lo_v16qi): Ditto.
7428         (vec_unpacks_lo_v16qi): Ditto.
7429         (vec_unpacku_hi_v8hi): Ditto.
7430         (vec_unpacks_hi_v8hi): Ditto.
7431         (vec_unpacku_lo_v8hi): Ditto.
7432         (vec_unpacks_lo_v8hi): Ditto.
7433         (vec_unpacku_hi_v4si): Ditto.
7434         (vec_unpacks_hi_v4si): Ditto.
7435         (vec_unpacku_lo_v4si): Ditto.
7436         (vec_unpacks_lo_v4si): Ditto.
7437         (sse5_pmacsww): New SSE5 intrinsic insn.
7438         (sse5_pmacssww): Ditto.
7439         (sse5_pmacsdd): Ditto.
7440         (sse5_pmacssdd): Ditto.
7441         (sse5_pmacssdql): Ditto.
7442         (sse5_pmacssdqh): Ditto.
7443         (sse5_pmacsdqh): Ditto.
7444         (sse5_pmacsswd): Ditto.
7445         (sse5_pmacswd): Ditto.
7446         (sse5_pmadcsswd): Ditto.
7447         (sse5_pmadcswd): Ditto.
7448         (sse5_pcmov_<move>): Conditional move support on SSE5.
7449         (sse5_phaddbw): New SSE5 intrinsic insn.
7450         (sse5_phaddbd): Ditto.
7451         (sse5_phaddbq): Ditto.
7452         (sse5_phaddwd): Ditto.
7453         (sse5_phaddwq): Ditto.
7454         (sse5_phadddq): Ditto.
7455         (sse5_phaddubw): Ditto.
7456         (sse5_phaddubd): Ditto.
7457         (sse5_phaddubq): Ditto.
7458         (sse5_phadduwd): Ditto.
7459         (sse5_phadduwq): Ditto.
7460         (sse5_phaddudq): Ditto.
7461         (sse5_phsubbw): Ditto.
7462         (sse5_phsubwd): Ditto.
7463         (sse5_phsubdq): Ditto.
7464         (sse5_pperm): Ditto.
7465         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
7466         (sse5_pperm_zero_v16qi_v8hi): Ditto.
7467         (sse5_pperm_sign_v8hi_v4si): Ditto.
7468         (sse5_pperm_zero_v8hi_v4si): Ditto.
7469         (sse5_pperm_sign_v4si_v2di): Ditto.
7470         (sse5_pperm_sign_v4si_v2di): Ditto.
7471         (sse5_pperm_pack_v2di_v4si): Ditto.
7472         (sse5_pperm_pack_v4si_v8hi): Ditto.
7473         (sse5_pperm_pack_v8hi_v16qi): Ditto.
7474         (sse5_perm<mode>): New SSE5 intrinsic insn.
7475         (rotl<mode>3): Ditto.
7476         (sse5_rotl<mode>3): Ditto.
7477         (sse5_ashl<mode>3): Ditto.
7478         (sse5_lshl<mode>3): Ditto.
7479         (sse5_frcz<mode>2): Ditto.
7480         (sse5s_frcz<mode>2): Ditto.
7481         (sse5_cvtph2ps): Ditto.
7482         (sse5_cvtps2ph): Ditto.
7483         (sse5_vmmaskcmp<mode>3): Ditto.
7484         (sse5_com_tf<mode>3): Ditto.
7485         (sse5_maskcmp<mode>3): Ditto.
7486         (sse5_maskcmp_uns<mode>3): Ditto.
7487         (sse5_maskcmp_uns2<mode>3): Ditto.
7488         (sse5_pcom_tf<mode>3): Ditto.
7489
7490         * config/i386/predicates.md (sse5_comparison_float_operator):
7491         New predicate to match the comparison operators supported by
7492         the SSE5 com instruction.
7493         (ix86_comparison_int_operator): New predicate to match just the
7494         signed int comparisons.
7495         (ix86_comparison_uns_operator): New predicate to match just the
7496         unsigned int comparisons.
7497
7498         * doc/invoke.texi (-msse5): Add documentation.
7499         (-mfused-madd): Ditto.
7500
7501         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
7502
7503         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
7504         mmintrin-common.h.
7505         (x86_64-*-*): Ditto.
7506
7507         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
7508
7509         * config/i386/bmmintrin.h: New file, provide common x86 compiler
7510         intrinisics for SSE5.
7511
7512         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
7513         mmintrin-common.h.
7514
7515         * config/i386/mmintrin-common.h: New file, to contain common
7516         instructions between SSE4.1 and SSE5.
7517
7518         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
7519         FOREACH_FUNCTION_ARGS to iterate over the argument list.
7520         (gen_regparm_prefix): Ditto.
7521
7522         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
7523         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
7524         prototype_p to determine if a function is prototyped.
7525
7526 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
7527
7528         * c-common.c (c_common_reswords) add the alignof keyword,
7529         with same RID as __alignof and __alignof__
7530
7531 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
7532
7533         * hooks.h (hook_bool_const_int_const_int_true): Declare.
7534         * hooks.c (hook_bool_const_int_const_int_true): New function.
7535         * target.h (struct gcc_target): Add can_eliminate field.
7536         * target-def.h (TARGET_CAN_ELIMINATE): Define.
7537         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
7538         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
7539         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
7540         (elim_table): Revise comment.
7541         * system.h (CAN_ELIMINATE): Poison.
7542         * defaults.h (CAN_ELIMINATE): Remove.
7543         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
7544
7545         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
7546         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
7547         Define macro.
7548         (alpha_vms_can_eliminate): Declare as static, change return type to
7549         bool.
7550         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
7551
7552         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
7553         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
7554         (arm_can_eliminate): New function.
7555
7556         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
7557         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
7558         (avr_can_eliminate): Declare as static.
7559         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
7560
7561         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
7562         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
7563         (bfin_can_eliminate): New function.
7564
7565         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
7566         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
7567         (crx_can_eliminate): New function.
7568
7569         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
7570         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
7571         (fr30_can_eliminate): New function.
7572
7573         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
7574         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
7575         (frv_can_eliminate): New function.
7576
7577         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
7578         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
7579         (h8300_can_eliminate): New function.
7580
7581         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
7582         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
7583         (i386_can_eliminate): Declare as static, change return type to bool.
7584         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
7585
7586         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
7587         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
7588         (ia64_can_eliminate): New function.
7589
7590         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
7591         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
7592         (iq2000_can_eliminate): New function.
7593
7594         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
7595         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
7596         (m32r_can_eliminate): New function.
7597
7598         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
7599         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
7600         (m68hc11_can_eliminate): New function.
7601
7602         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
7603         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
7604         (m68k_can_eliminate): New function.
7605
7606         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
7607         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
7608         (mep_can_eliminate): New function.
7609
7610         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
7611         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
7612         (mips_can_eliminate): New function.
7613
7614         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
7615         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
7616         (rs6000_can_eliminate): New function.
7617
7618         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
7619         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
7620         (s390_can_eliminate): Declare as static.
7621         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
7622
7623         * config/score/score.h (CAN_ELIMINATE): Remove macro.
7624         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
7625         (score_can_eliminate): New function.
7626
7627         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
7628         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
7629         (sparc_can_eliminate): Declare as static.
7630         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
7631
7632         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
7633         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
7634         (xstormy16_can_eliminate): New function.
7635
7636         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
7637         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
7638         (v850_can_eliminate): New function.
7639
7640 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
7641
7642         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
7643         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
7644         (*movdfcc_ext[1234]): Disable for IEEE mode.
7645
7646 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
7647
7648         * gimplify.c (prepare_gimple_addressable): New static function.
7649         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
7650         it addressable.
7651         (gimplify_addr_expr): Invoke it similarly on the operand instead of
7652         manually fiddling with it.
7653
7654 2009-08-25  Michael Matz  <matz@suse.de>
7655
7656         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
7657         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
7658         full expression.
7659         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
7660         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
7661         (do_jump): Split out code for simple binary comparisons into ...
7662         (do_jump_1): ... this, taking the individual operands and code.
7663         Change callers to helper function above accordingly.
7664         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
7665         comparisons.
7666
7667 2009-08-25  Michael Matz  <matz@suse.de>
7668
7669         * expr.h (struct separate_ops, sepops): New type for passing
7670         around an exploded simple expression.
7671         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
7672         Use this structure instead of expression tree.
7673         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
7674         expression, only its type.
7675         (expand_vec_cond_expr): Take type and individual operands instead
7676         of full expression.
7677         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
7678         expand_vec_shift_expr): Change prototype accordingly.
7679         * tree-vect-stmts.c (vectorizable_condition): Change call of
7680         expand_vec_cond_expr_p to pass only type.
7681         * expr.c (do_store_flags): Change prototype and implementation
7682         to take an exploded expression.
7683         (expand_expr_real_1): New local ops initialized with details
7684         of the full expression.  Use it instead of full
7685         expression in calls to do_store_flags, expand_vec_cond_expr,
7686         expand_widen_pattern_expr and expand_vec_shift_expr.
7687
7688 2009-08-25  Michael Matz  <matz@suse.de>
7689
7690         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
7691         treeop2 initialized with first three operands of the full expression.
7692         Substitute all TREE_OPERAND (exp, [012]) calls with them.
7693
7694 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
7695
7696         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
7697         (__gthread_objc_condition_allocate): Mark arguments as unused.
7698         (__gthread_objc_condition_deallocate): Likewise.
7699         (__gthread_objc_condition_wait): Likewise.
7700         (__gthread_objc_condition_broadcast): Likewise.
7701         (__gthread_objc_condition_signal): Likewise.
7702         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
7703         (__gthread_objc_thread_id): Likewise.
7704
7705 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
7706
7707         PR middle-end/41149
7708         * tree-pretty-print.c (print_call_name): Print the correct call name
7709         for procedure pointer components.
7710
7711 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
7712
7713         * config/ia64/ia64.c (ia64_promote_function_mode): Call
7714         default_promote_function_mode when not VMS.
7715
7716 2009-08-24  Olivier Hainque  <hainque@adacore.com>
7717
7718         * convert.c (convert_to_integer): Don't assume an input pointer is
7719         POINTER_SIZE wide.  Fetch from the type instead.
7720
7721 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7722
7723         * configure.ac (AC_PREREQ): Bump to 2.64.
7724
7725 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
7726
7727         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
7728         (process_command): Don't search standard_exec_prefix_1 and
7729         standard_exec_prefix_2.
7730
7731 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7732
7733         * config/arm/arm.c (output_return_instruction): Handle for
7734         unified syntax.
7735
7736 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7737
7738         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
7739
7740 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7741
7742         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
7743         (*arm_movdf_vfp): Likewise.
7744
7745 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7746
7747         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
7748         (vashr<mode>3): Rename from ashr<mode>3.
7749         (vlshr<mode>3): Rename from lshr<mode>3.
7750
7751 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
7752
7753         PR/40786
7754         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
7755         (check_format_info_main): Use scalar_identify_flag.
7756         (check_format_types): Check for scalar size identity if
7757         scalar_identify_flag is set.
7758         (printf_length_specs): Extend by new field.
7759         (asm_fprintf_length_specs): Likewise.
7760         (gcc_diag_length_specs): Likewise.
7761         (scanf_length_specs): Likewise.
7762         (strfmon_length_specs): Likewise.
7763         (gcc_gfc_length_specs): Likewise.
7764         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
7765         (ms_printf_flag_specs): Likewise.
7766         * c-format.h (format_length_info): Add new member scalar_identity_flag.
7767
7768 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
7769
7770         PR target/40718
7771         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
7772         (*call_value_pop_1): Ditto.
7773         (*sibcall_pop_1): New insn pattern.
7774         (*sibcall_value_pop_1): Ditto.
7775
7776 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
7777
7778         PR target/41081
7779         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
7780         ashrsi3_64): New.
7781
7782 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
7783
7784         PR target/41081
7785         * fwprop.c (try_fwprop_subst): Allow multiple sets.
7786         (get_reg_use_in): New function.
7787         (forward_propagate_subreg): Propagate through subreg of zero_extend
7788         or sign_extend.
7789
7790 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
7791
7792         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
7793         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
7794
7795 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7796
7797         * configure.ac: Remove --with-datarootdir, --with-docdir,
7798         --with-htmldir switches.  No need to call AC_SUBST for
7799         datarootdir, docdir, htmldir any more.
7800         * configure: Regenerate.
7801         * doc/install.texi (Configuration): Document --datarootdir,
7802         --docdir, --htmldir, --pdfdir; update documentation for
7803         --infodir, --mandir.
7804         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
7805         M4 to 1.4.6.
7806
7807         * aclocal.m4: Regenerate.
7808         * config.in: Regenerate.
7809         * configure: Regenerate.
7810
7811 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
7812             Olivier Hainque  <hainque@adacore.com>
7813
7814         * config/ia64/ia64.c: Include libfuncs.h.
7815         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
7816         (ia64_expand_call): Use reg 25 on VMS.
7817         (ia64_initialize_trampoline): Fix for VMS ABI.
7818         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
7819         (ia64_function_arg): Initialize reg 25 on VMS.
7820         Fix OpenVMS ABI issues for varargs.
7821         For OpenVMS, emit the Argument Information register set in the
7822         incoming/sibcall case as well.
7823         (ia64_arg_type): New function.
7824         (ia64_function_arg_advance): Keep track of cum->words.
7825         Fix OpenVMS ABI issues for varargs.
7826         (ia64_function_value): On VMS, promote mode of non-aggregate types.
7827         (ia64_override_options): Set flag_no_common on VMS.
7828         (ia64_init_builtins): Disable FWRITE builtin.
7829         (ia64_asm_output_external): Call DO_CRTL_NAMES.
7830         (ia64_vms_init_libfuncs): Add decc$ routines.
7831         (ia64_vms_valid_pointer_mode): New function.
7832         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
7833         (ia64_promote_function_mode): New function
7834         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
7835         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
7836         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
7837         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
7838         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
7839         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
7840         Suppress trailing '#' if VALUE is numeric.
7841         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
7842         ia64_promote_function_mode.
7843         (TARGET_VALID_POINTER_MODE): Define.
7844
7845 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
7846
7847         PR target/40671
7848         * config/rs6000/rs6000.c (rs6000_override_options): Use
7849         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
7850
7851         PR target/41145
7852         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
7853         reporting of vector + decimal/boolean/complex error.
7854
7855 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
7856
7857         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
7858         __vector double TYPE_DECL.
7859
7860 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
7861
7862         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
7863         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
7864         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
7865         to pointer to enum machine_mode.  Update all callers as needed.
7866
7867 2009-08-21 Uros Bizjak <ubizjak@gmail.com>
7868
7869         * config/alpha/alpha.md (exception_receiver): Emit alternative
7870         GP load sequence if flag_reorder_blocks_and_partition is set.
7871         (*exception_receiver_2): Also enable when
7872         flag_reorder_blocks_and_partition is set.
7873
7874 2009-08-20  Matt Rice  <ratmice@gmail.com>
7875             Diego Novillo  <dnovillo@google.com>
7876
7877         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
7878         tree-ssa-sccvn.h.
7879
7880 2009-08-20  Richard Guenther  <rguenther@suse.de>
7881
7882         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
7883         * c-tree.h (c_dup_lang_specific_decl): Remove.
7884         (struct lang_decl, struct lang_type): Move definitions ...
7885         * c-lang.h: ... here.  New file.
7886         * c-decl.c: Include c-lang.h.
7887         (c_dup_lang_specific_decl): Remove.
7888         * c-typeck.c: Include c-lang.h.
7889         * Makefile.in (c-decl.o): Add c-lang.h dependency.
7890         (c-typeck.o): Likewise.
7891         * c-config-lang.in (gtfiles): Add c-lang.h.
7892         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
7893         like c-tree.h.
7894
7895 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
7896
7897         * config/alpha/alpha.c (alpha_end_function): Do not clear
7898         crtl->emit structure and free insn locators if cfun->is_thunk is true,
7899         this is now handled in generic code.
7900
7901 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
7902
7903         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
7904         (s390_z10_fix_long_loop_prediction): New function.
7905         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
7906         (s390_reorg): Walk over the INSNs and invoke
7907         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
7908
7909 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
7910
7911         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
7912         "*brx_64bit", "*brx_31bit"): New patterns.
7913         * config/s390/s390.c ('E'): New output modifier.
7914
7915 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7916             Richard Earnshaw  <richard.earnshaw@arm.com>
7917
7918         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
7919         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
7920
7921 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7922
7923         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
7924         patterns.
7925         * pa.c (emit_move_sequence): Check if address of operand1 is valid
7926         for mode mode of operand0 when doing secondary reload for SAR.
7927
7928 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
7929
7930         PR middle-end/41123
7931         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
7932         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
7933
7934 2009-08-19  Jason Merrill  <jason@redhat.com>
7935
7936         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
7937         supported template depth in C++0x.
7938
7939 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
7940
7941         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
7942         free_after_compilation.
7943         * config/score/score7.c (score7_output_mi_thunk): Likewise.
7944         * config/score/score3.c (score3_output_mi_thunk): Likewise.
7945         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
7946         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
7947         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
7948         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
7949         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
7950
7951 2009-08-19  Ian Lance Taylor  <iant@google.com>
7952
7953         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
7954         of (plus (mult (neg B) C) A).
7955
7956 2009-08-18  Michael Matz  <matz@suse.de>
7957
7958         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
7959         instead of comparing TYPE_MAIN_VARIANT for equality.
7960         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
7961         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
7962         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
7963         * gimplify.c (goa_lhs_expr_p): Ditto and use
7964         STRIP_USELESS_TYPE_CONVERSION.
7965
7966 2009-08-18  Michael Matz  <matz@suse.de>
7967
7968         * tree-ssa-structalias.c (create_variable_info_for): Also mark
7969         first field in a struct.
7970         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
7971
7972 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
7973
7974         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
7975         locators before emit_insn is called.  Remove assert that
7976         cfun->is_thunk.
7977         (alpha_end_function): Clear crtl->emit structure and free insn
7978         locators if cfun->is_thunk is true.
7979
7980 2009-08-18  Jason Merrill  <jason@redhat.com>
7981
7982         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
7983         type if available.
7984         * configure.ac: Test for it.
7985         * configure, config.in: Regenerate.
7986         * doc/install.texi: Document --enable-gnu-unique-object.
7987
7988 2009-08-18  Richard Guenther  <rguenther@suse.de>
7989
7990         PR middle-end/41094
7991         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
7992         pow(x,y*z) only if x is nonnegative.
7993
7994 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
7995
7996         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
7997         on jumps.
7998
7999         PR target/40971
8000         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
8001         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
8002
8003 2009-08-17  DJ Delorie  <dj@redhat.com>
8004
8005         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
8006         * config/m32c/prologue.md (epilogue_freit): New.
8007         (fset_b): New.
8008         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
8009         (bank_switch_p): Likewise.
8010         (fast_interrupt_p): Likewise.
8011         (interrupt_p): Likewise.
8012         (m32c_conditional_register_usage): Round memregs size up.
8013         (need_to_save): We only need to save $a0 when we use ENTER.
8014         (interrupt_p): Check for fast_interrupt too.
8015         (bank_switch_p): New.
8016         (fast_interrupt_p): New.
8017         (m32c_attribute_table): Add bank_switch and fast_interrupt.
8018         (m32c_emit_prolog): Support bank switching and fast interrupts.
8019         * doc/extend.texi (Function Attributes): Add bank_switch and
8020         fast_interrupt.
8021
8022 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
8023
8024         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
8025         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
8026
8027 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
8028
8029         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
8030         (menu): Add IA-64/VMS Options.
8031         (IA-64/VMS Options): Likewise.
8032
8033 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
8034
8035         PR target/38599
8036         * config/mips/mips.md (*lwxs): Use :P for pointer values.
8037
8038 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
8039
8040         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
8041         (mips_pop_asm_switch): Likewise.
8042         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
8043         with...
8044         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
8045         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
8046         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
8047         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
8048         instead of set_noreorder.
8049         (mips_output_function_prologue): Use the new functions.
8050         (mips_output_function_epilogue): Likewise.
8051         (mips_need_noat_wrapper_p): New function, split out from...
8052         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
8053         Use mips_push_asm_switch and mips_pop_asm_switch.
8054         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
8055         and mips_pop_asm_switch.
8056         (ASM_OUTPUT_REG_POP): Likewise.
8057         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
8058         Use mips_pop_asm_switch.
8059         (mips_asm_switch): New structure.
8060         (set_noreorder, set_nomacro): Replace with...
8061         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
8062         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
8063         instead of set_nomacro.
8064         (fix_truncsfsi2_macro): Likewise.
8065         (cprestore): Likewise.
8066         (hazard): Use mips_noreorder instead of set_noreorder.
8067         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
8068
8069 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
8070
8071         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
8072         from prev_active_insn.
8073
8074 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
8075
8076         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
8077         * config/avr/avr.c (avr_override_options): Initialize
8078         avr_current_arch variable.
8079         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
8080         __AVR_HAVE_16BIT_SP__ according to the device type.
8081         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
8082         TARGET_TINY_STACK.
8083         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
8084         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
8085
8086 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
8087
8088         PR debug/37801
8089         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
8090         generating inlined subroutine die only. We shouldn't be
8091         called for anything else.
8092         (gen_block_die): Don't generate inline subroutine debug info for
8093         abstract blocks.
8094
8095 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
8096
8097         * graphite-poly.c (print_pbb): Print PBB index.
8098
8099 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
8100
8101         PR middle-end/40981
8102         * graphite-interchange.c (ppl_max_for_le): Moved...
8103         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
8104         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
8105         ppl_Pointset_Powerset_C_Polyhedron_maximize.
8106         * graphite-ppl.h (ppl_max_for_le): Declared.
8107
8108 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
8109
8110         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
8111         supported on all platforms.
8112         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
8113         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
8114         * c-pragma.c: Likewise.
8115         * target-def.h (TARGET_INITIALIZER): Remove
8116         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
8117         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
8118
8119 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
8120
8121         * config/ia64/fde-vms.c: New file.
8122         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
8123         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
8124         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
8125         (uw_frame_state_for): Only register a personality routine if it is
8126         known to be compatible with our expectations.
8127         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
8128         Declare unw_table_entry stack variable and
8129         mod all calls to _Unwind_FindTableEntry to add arg.
8130         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
8131         (_Unwind_FindTableEntry): Add arg to prototype.
8132
8133 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
8134
8135         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
8136         field 'signal_pfs_loc'.
8137         (uw_frame_state_for): Remove duplicate code dealing with leaf
8138         procedures without unwind info.
8139         If in the frame after unwinding through a signal handler, restore
8140         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
8141         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
8142         'pfs_loc' to the AR.PFS location in the signal context; instead
8143         set 'signal_pfs_loc'.
8144         Manually generate the unwind info for the AR.PFS register.
8145         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
8146         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
8147         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
8148         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
8149         instead set 'signal_pfs_loc'.
8150         Remove code preventing the AR.PFS register from being restored
8151         from the signal context.
8152
8153 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
8154             Tristan Gingold  <gingold@adacore.com>
8155
8156         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
8157         * config/ia64/t-vms: New file.
8158         * config/ia64/vms64.h: New file.
8159         * config/ia64/vms.h: New file.
8160         * config/ia64/vms-crtinit.asm: New file.
8161         * config/ia64/vms_symvec_libgcc_s.opt: New file.
8162         * config/ia64/vms-unwind.h: New file.
8163
8164 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
8165
8166         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
8167         TFmode compares.
8168
8169 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8170
8171         PR middle-end/30789
8172         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
8173         Move declaration...
8174         * real.h (do_mpc_arg2): ... here.
8175         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
8176         and RDIV_EXPR.
8177
8178 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
8179
8180         * final.c (add_debug_prefix_map): Don't use GC memory for
8181         old_prefix and new_prefix.
8182
8183 2009-08-14  Richard Guenther  <rguenther@suse.de>
8184
8185         * ipa-prop.c (compute_complex_pass_through): If we cannot
8186         compute a non-varying offset for IPA_JF_ANCESTOR punt.
8187
8188 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8189
8190         * c-lex.c (c_lex_with_flags): Increase size of local variable
8191         to avoid memory clobber.
8192
8193 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
8194
8195         PR target/40934
8196         * config/i386/i386.c (ix86_fp_comparison_strategy):
8197         Only enable/disable sahf at function granularity.
8198
8199 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
8200
8201         PR rtl-optimization/41064
8202         * reload1.c (reload_as_needed): Don't call extract_insn
8203         for known invalid replacements after calling
8204         validate_replace_rtx_group and verify_changes.
8205
8206 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
8207
8208         PR target/41019
8209         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
8210         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
8211         ix86_expand_fp_vcond.
8212         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
8213         Assert that operation is supported by ix86_expand_int_vcond.
8214         (vcondu<SSEMODE124C8:mode>): Ditto.
8215
8216 2009-08-13  DJ Delorie  <dj@redhat.com>
8217
8218         * config/i386/djgpp-stdint.h: New.
8219         * config.gcc (djgpp): Use it.
8220
8221 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
8222
8223         * config/sh/sh.c (sh_override_options): When flag_exceptions or
8224         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
8225
8226 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
8227
8228         * tree-ssa-loop-prefetch.c
8229         (prune_ref_by_group_reuse): Enhance probabilistic analysis
8230         for long-stride pruning.
8231         (compute_miss_rate): New function to compute the probability
8232         that two memory references access different cache lines.
8233
8234 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
8235
8236         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
8237
8238 2009-08-13  Richard Guenther  <rguenther@suse.de>
8239
8240         PR middle-end/41047
8241         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
8242         use the constant pointer type.
8243         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
8244         of CV qualifiers on the target pointer type.
8245         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
8246         conversion check before restrict check.
8247
8248 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
8249
8250         PR target/41029
8251         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
8252
8253 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
8254
8255         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
8256
8257 2009-08-12  Richard Guenther  <rguenther@suse.de>
8258
8259         PR tree-optimization/41011
8260         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
8261         and reference constructing.
8262
8263 2009-08-12  Xinliang David Li  <davidxl@google.com>
8264
8265         PR tree-optimization/41012
8266         * tree-flow.h : New external interface.
8267         * gimple-low.c (check_call_arg): Change to public function.
8268         Remove argument mismatch check in lowering.
8269         * tree-inline.h (tree_can_inline_p): Interface change.
8270         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
8271         into this function.
8272         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
8273         Call change to tree_can_inline_p function.
8274         (cgraph_decide_inlining_incrementally): Ditto.
8275
8276 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
8277
8278         PR tree-optimization/41031
8279         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
8280         on the partition variable rather than promote_mode on the source
8281         type.  Assert that the partition variable's type has the same
8282         mode as the source value's.
8283
8284 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
8285
8286         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
8287         for for_return == 2.
8288         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
8289         comments.
8290         * calls.c (expand_call): Fix typo.
8291         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
8292         and PARM_DECL.
8293         * stmt.c (expand_value_return): Use promote_function_mode to copy out
8294         of pseudo.
8295         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
8296         * config/cris/cris.c (cris_promote_function_mode): Likewise.
8297         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
8298         * config/pa/pa.c (pa_promote_function_mode): Likewise.
8299
8300 2009-08-12  Andrew Haley  <aph@redhat.com>
8301
8302         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
8303
8304 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8305
8306         PR bootstrap/40103
8307         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
8308
8309 2009-08-12  Richard Guenther  <rguenther@suse.de>
8310
8311         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
8312         * gimplify.c (gimplify_modify_expr): Do not use
8313         lang_hooks.types_compatible_p.
8314         * tree-ssa.c (useless_type_conversion_p): For aggregates
8315         just return false if the canonical types differ.
8316
8317 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8318
8319         PR middle-end/40980
8320         * sese.c (convert_for_phi_arg): New.
8321         (add_guard_exit_phis): Use convert_for_phi_arg.
8322
8323 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8324
8325         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
8326         unknown subscript upper bounds.
8327
8328 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8329             Pranav Garg  <pranav.garg2107@gmail.com>
8330
8331         * graphite-interchange.c (gather_access_strides): Removed.
8332         (ppl_max_for_le): New.
8333         (build_linearized_memory_access): New.
8334         (memory_stride_in_loop): New.
8335         (pbb_interchange_profitable_p): Reimplemented.
8336         * graphite-ppl.h (ppl_new_id_map): New.
8337         (ppl_interchange): New.
8338
8339 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8340
8341         * graphite-interchange.c (compute_subscript): Removed.
8342         (compute_array_size_cstr): Removed.
8343         (compute_array_size_poly): Removed.
8344         (compute_array_size): Removed.
8345         (gather_access_strides_poly): Removed.
8346         (gather_access_strides): Empty.
8347
8348 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8349
8350         * graphite-dependences.c (dependence_polyhedron_1): Replace
8351         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
8352         (graphite_legal_transform_dr): Same.
8353         (graphite_carried_dependence_level_k): Same.
8354         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
8355         Initialize PDR_NB_SUBSCRIPTS.
8356         (print_pdr_access_layout): Replace pdr_nb_subscripts with
8357         PDR_NB_SUBSCRIPTS.
8358         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
8359         (PDR_NB_SUBSCRIPTS): New.
8360         (pdr_nb_subscripts): Removed.
8361         (pdr_dim): Simplified.
8362         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
8363         with PDR_NB_SUBSCRIPTS.
8364
8365 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8366
8367         * graphite-interchange.c (compute_array_size): Remove use of
8368         PDR_DATA_CONTAINER.
8369         * graphite-poly.c (new_poly_dr): Remove argument data_container.
8370         Do not initialize PDR_DATA_CONTAINER.
8371         (print_pdr): Do not print PDR_DATA_CONTAINER.
8372         * graphite-poly.h (struct poly_dr): Remove data_container field.
8373         (PDR_DATA_CONTAINER): Removed.
8374         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
8375         PDR_DATA_CONTAINER.
8376         (build_poly_dr): Same.
8377
8378 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
8379             Sebastian Pop  <sebastian.pop@amd.com>
8380
8381         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
8382         copy of the dependence polyhedron.  Free the temporary objects.
8383         (graphite_carried_dependence_level_k): Free unused objects before
8384         returning.
8385
8386 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8387
8388         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
8389         Early return without analyzing the data dependences if no
8390         transform has been done.  Call restore_scattering if the transform
8391         is not legal.
8392         (graphite-interchange.c): Same.
8393         * graphite-poly.c (print_scattering_function): Test for
8394         PBB_TRANSFORMED.
8395         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
8396         (apply_poly_transforms): Do not gcc_assert that
8397         the transform is legal.
8398         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
8399         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
8400         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
8401         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
8402         * graphite-poly.h (struct poly_scattering): New.
8403         (struct poly_bb): Add original, transformed, and saved fields.
8404         Remove transformed_scattering, original_scattering,
8405         nb_local_variables and nb_scattering_transform fields.
8406         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
8407         (poly_scattering_new): New.
8408         (poly_scattering_free): New.
8409         (poly_scattering_copy): New.
8410         (store_scattering_pbb): New.
8411         (store_scattering): New.
8412         (restore_scattering_pbb): New.
8413         (restore_scattering): New.
8414         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
8415         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
8416
8417 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8418
8419         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
8420         (print_scop): Same.
8421
8422 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8423
8424         * Makefile.in (graphite.o): Depends on PREDICT_H.
8425         * graphite.c: Include predict.h.
8426         (graphite_finalize): Call tree_estimate_probability.
8427         * predict.c (predict_loops): Do not call scev_initialize and
8428         scev_finalize.
8429         (tree_estimate_probability_bb): New.
8430         (tree_estimate_probability): Do not initialize loops: move that
8431         code to the driver.  Call tree_estimate_probability_bb.
8432         (tree_estimate_probability_driver): New.
8433         (pass_profile): Use tree_estimate_probability_driver.
8434         * predict.h (tree_estimate_probability): Declared.
8435
8436 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8437
8438         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
8439         * graphite-dependences.c (graphite_legal_transform): Add time to
8440         TV_GRAPHITE_DATA_DEPS.
8441         (dependency_between_pbbs_p): Same.
8442         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
8443
8444 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
8445
8446         PR rtl-optimization/41033
8447         * alias.c (nonoverlapping_component_refs_p): Punt when strict
8448         aliasing is disabled.
8449
8450 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
8451
8452         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
8453         si_mask_operand, and_load_operand, low_bitmask_operand,
8454         and_reg_operand, and_operand): New predicates.
8455         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
8456         * config/mips/mips.c (and_operands_ok): New function.
8457         * config/mips/mips-protos.h (and_operands_ok): Declare it.
8458         * config/mips/mips.md (move_type): Add ext_ins and logical.
8459         (type): Handle them.
8460         (and<mode>3): Use and_reg_operand as the second operand's predicate.
8461         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
8462         shift_shift.  Remove commutative constraint modifier.
8463         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
8464         shift_shift.
8465         (*clear_upper32_dext): Remove define_insn_and_split.
8466         (*clear_upper32): Turn this define_insn_and_split ...
8467         (splitter for ANDing register with 0xffff_ffff): .. into this.
8468
8469 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
8470
8471         * combine.c (try_widen_shift_mode): Factor out code to check if an
8472         integer constant is a low-order bitmask from here ...
8473         * rtlanal.c (low_bitmask_len): ... to here.
8474         * rtl.h (low_bitmask_len): Declare.
8475
8476 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
8477
8478         PR target/8603
8479         * config/alpha/alpha.md (addsi3): Remove expander.
8480         (addsi3): Rename from *addsi3_internal insn pattern.
8481         (subsi3): Remove expander.
8482         (subsi3): Rename from *subsi3_internal insn pattern.
8483
8484 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
8485
8486         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
8487         FWRITE_UNLOCKED.
8488
8489 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
8490             Eric Botcazou  <botcazou@adacore.com>
8491             Douglas B Rupp  <rupp@gnat.com>
8492
8493         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
8494         that records that fit in 64 bits are returned by immediate value,
8495         as required by OpenVMS Calling Standard.
8496         (function_value): Adjust for above modification.
8497         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
8498         virtual_incoming_args_rtx as base object, not next_arg.
8499         * config/alpha/vms.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
8500
8501 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8502
8503         * reload.c (find_reloads_subreg_address): Check the original
8504         req_equiv_mem address to detect the case where an address is
8505         not valid in the outer mode.
8506
8507 2009-08-11  Richard Guenther  <rguenther@suse.de>
8508
8509         PR bootstrap/40788
8510         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
8511
8512 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
8513
8514         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
8515         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
8516
8517 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
8518             Douglas B Rupp  <rupp@gnat.com>
8519
8520         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
8521         PT_STACK when frame_pointer_needed on OpenVMS.
8522         (alpha_pv_save_size, alpha_using_fp): Remove.
8523         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
8524         with proper processing for PT_NULL.
8525         (alpha_vms_initial_elimination_offset): New function. Support for
8526         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
8527         (alpha_sa_size): Force procedure type to PT_STACK when
8528         frame_pointer_needed on OpenVMS.
8529         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
8530         (alpha_using_fp): Likewise.
8531         (alpha_vms_can_eliminate): Add prototype.
8532         (alpha_vms_initial_elimination_offset): Likewise.
8533         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
8534         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
8535
8536 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
8537             Douglas B Rupp  <rupp@gnat.com>
8538
8539         * config/alpha/alpha.c (common_object_handler): New function.
8540         (vms_attribute_table): Declare a single attribute "common_object".
8541         (vms_output_aligned_decl_common): New global function.
8542         (SECTION_VMS_OVERLAY): Delete.
8543         (SECTION_VMS_GLOBAL): Likewise.
8544         (SECTION_VMS_INITIALIZE): Likewise.
8545         (vms_asm_named_section): Remove support for above flags.
8546         (vms_section_type_flags): Delete.
8547         (TARGET_SECTION_TYPE_FLAGS): Likewise.
8548         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
8549         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
8550         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
8551
8552 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
8553
8554         PR target/41015
8555         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
8556         (sub_ddmmss): Likewise.
8557
8558 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
8559
8560         PR bootstrap/41018
8561         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
8562         year.
8563
8564 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8565
8566         PR target/37053
8567         * reload1.c (reload_as_needed): Use cancel_changes to completely
8568         undo a failed replacement attempt.
8569
8570 2009-08-10  Richard Guenther  <rguenther@suse.de>
8571
8572         PR middle-end/41006
8573         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
8574         (useless_type_conversion_p): ... here.  Require pointer targets
8575         to be compatible.
8576
8577 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
8578
8579         PR c++/40866
8580         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
8581         loose the original type of the statement list.
8582
8583 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
8584
8585         * config/alpha/alpha.c: Include libfuncs.h
8586         (avms_asm_output_extern): New function.
8587         (alpha_init_libfuncs): Init some decc libfuncs.
8588         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
8589         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
8590         (DO_CRTL_NAMES): Define.
8591         (LIB_SPEC): Remove.
8592         * config/alpha/vms64.h (POINTERS_EXTEND_UNSIGNED): Remove undef.
8593         (LONG_TYPE_SIZE): Define.
8594         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
8595         (SUBTARGET_SWITCHES): Define malloc64 switch.
8596         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
8597         (MASK_RETURN_ADDR): Define.
8598         doc/invoke.texi (mmalloc64): Document switch.
8599
8600 2009-08-09  Olivier Hainque  <hainque@adacore.com>
8601             Douglas B Rupp  <rupp@gnat.com>
8602
8603         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
8604         uses_condition_handler.
8605         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
8606         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
8607         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
8608         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
8609         (code_for_builtin): New insn codes for the new alpha_builtins.
8610         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
8611         (alpha_sa_size): Account for uses_condition_handler.
8612         (alpha_expand_prologue): Likewise.
8613         (alpha_start_function): Likewise.
8614         (alpha_expand_epilogue): Likewise.
8615         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
8616         establish/revert expanders.
8617         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
8618         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
8619         New expander, resorting to the alpha.c associated function.
8620         (builtin_revert_vms_condition_handler): Likewise.
8621         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
8622         __gcc_shell_handler, the static VMS condition handler used as
8623         an indirection wrapper to the current dynamically established
8624         handler.
8625         * config/alpha/vms-unwind.h: Complete rewrite.
8626         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
8627         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
8628
8629 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
8630             Douglas B Rupp  <rupp@gnat.com>
8631
8632         * config/alpha/alpha.c (alpha_links): Add 'target' field.
8633         (alpha_need_linkage): Handle aliases.  Return function symbol.
8634         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
8635         Use ultimate alias target for the linkage name.
8636         * config/alpha/alpha.md (movmemdi): Use the symbol returned
8637         by alpha_need_linkage for the function symbol.
8638         (setmemdi): Likewise.
8639
8640 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
8641
8642         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
8643         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
8644         (ASM_WEAKEN_LABEL): Define.
8645         (CRT_CALL_STATIC_FUNCTION): Define.
8646         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
8647         (ENDFILE_SPEC): Define.
8648         (INIT_SECTION_ASM_OP): Define.
8649         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
8650         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
8651         crtend.o crtendS.o.
8652         (MULTILIB_OSDIRNAMES): Define.
8653         (shlib_version): Define.
8654         (SHLIB_EXT): Define.
8655         (SHLIB_OBJS): Define.
8656         (SHLIB_NAME): Define.
8657         (SHLIB_MULTILIB): Define.
8658         (SHLIB_INSTALL): Define.
8659         (SHLIB_SYMVEC): Define.
8660         (SHLIB_SYMVECX2): Define.
8661         (SHLIB_LINK): Define.
8662
8663 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
8664
8665         * config/alpha/alpha.c (alpha_initialize_trampoline):
8666         Initialize VMS trampoline IAW ABI for bounded procedure calls.
8667         (alpha_start_function): Emit transfer address on nested functions
8668         for VMS trampoline call.
8669         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
8670         since no longer used.
8671         * config/alpha/vms-tramp.asm: Remove.
8672         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
8673         since now only data initialized at runtime.
8674
8675 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
8676
8677         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
8678         (LINK_GCC_C_SEQUENCE_SPEC): Define.
8679         (MD_EXEC_PREFIX): Remove, no longer used.
8680         (MD_STARTFILE_PREFIX): Likewise.
8681         (INCLUDE_DEFAULTS): Likewise.
8682         * config/alpha/t-vms:
8683         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
8684
8685 2009-08-09  Richard Guenther  <rguenther@suse.de>
8686
8687         PR tree-optimization/41016
8688         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
8689         (operand_precision): Remove.
8690         (integral_operand_p): Likewise.
8691         (recognize_single_bit_test): Adjust.
8692
8693 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
8694
8695         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
8696         operation overflows.  Likewise non-cast unary arithmetic.
8697         If one arm of a conditional expression is always taken,
8698         inhibit evaluation warnings for the other arm.  Likewise inhibit
8699         evaluation warnings for the second && or || operand if the first
8700         operand is enough to determine the result.
8701         * c-typeck.c (build_conditional_expr): Apply the same inhibition
8702         rules here.
8703         (build_binary_op): Prevent duplicate evaluation warnings.
8704
8705 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
8706
8707         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
8708         and destination have different modes, Use promote_mode to
8709         determine the signedness of the conversion.  Assert that the
8710         promoted source mode matches the destination mode.  Don't pass
8711         the destination and destination mode to expand_expr if the source
8712         mode is different.  Simplify conversion logic.
8713
8714 2009-08-09  Ira Rosen  <irar@il.ibm.com>
8715
8716         PR tree-optimization/41008
8717         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
8718         from condition only in case it's a comparison. Adjust checks.
8719
8720 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
8721
8722         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
8723         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
8724         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
8725         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
8726         (dump_cand): Handle them.
8727         (struct iv_cand): New members COST_STEP and AINC_USE.
8728         (stmt_after_increment): Likewise.
8729         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
8730         callers changed.  Use gimple_uid comparison instead of scanning.
8731         (add_candidate_1): When looking for identical candidates, take
8732         AINC_USE into account.  Set it for new candidates.
8733         (force_expr_to_var_cost): Cast target_spill_cost to int.
8734         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
8735         All callers changed.  Check for availability of autoinc addressing
8736         modes, both in general for a given mode, and in the specific use case.
8737         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
8738         changed.
8739         (get_computation_cost): Likewise.
8740         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
8741         add_autoinc_candidates): New static functions.
8742         (add_candidate): Call add_autoinc_candidates for candidates based on
8743         a USE_ADDRESS use.
8744         (find_iv_candidates): Call set_autoinc_for_original_candidates.
8745         (determine_use_iv_cost_address): If we have an autoinc candidate at
8746         the matching use, verify autoinc is possible and subtract the cost
8747         of the candidate's step from the cost.
8748         (determine_iv_cost): Record the cost of the increment in the COST_STEP
8749         member of the candidate.
8750         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
8751         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
8752
8753 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
8754
8755         * config.build (ia64-hp-*vms*): New target.
8756         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
8757         with ia64-hp-*vms*.
8758         * config.gcc (ia64-hp-*vms*): New target.
8759         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
8760         with ia64-hp-*vms*.
8761         * config.host (ia64-hp-*vms*): New target.
8762         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
8763         with ia64-hp-*vms*.
8764
8765 2009-08-08  Richard Guenther  <rguenther@suse.de>
8766
8767         PR tree-optimization/40991
8768         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
8769
8770 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
8771
8772         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
8773         mode check.  Do truncations in an integer mode.
8774         (force_to_mode): Handle subregs for all mode types.  Only do
8775         arithmetic simplifications on integer modes.
8776
8777 2009-08-07  Richard Guenther  <rguenther@suse.de>
8778
8779         PR tree-optimization/40999
8780         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
8781         (maybe_fold_reference): Lookup constant initializers.
8782         (fold_gimple_assign): Likewise.
8783
8784 2009-08-07  Richard Guenther  <rguenther@suse.de>
8785
8786         * tree-ssa.c (useless_type_conversion_p_1): Only for types
8787         that require structural equality defer to the langhook.
8788
8789 2009-08-07  Martin Jambor  <mjambor@suse.cz>
8790
8791         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
8792         comments.
8793         (struct ipa_pass_through_data): New type.
8794         (struct ipa_ancestor_jf_data): New type.
8795         (union jump_func_value): Removed field formal_id, added fields
8796         pass_through and ancestor.
8797         (struct ipa_param_call_note): Changed type of formal_id to int from
8798         unsigned.
8799         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
8800         operations jump functions and ancestor jump functions.
8801         (compute_complex_pass_through): New function.
8802         (compute_scalar_jump_functions): Call compute_complex_pass_through,
8803         reflect changes in the jump function strucutre.
8804         (update_jump_functions_after_inlining): Ignore complex pass-through
8805         and ancestor jump functions.
8806         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
8807         polynomial pass-through with operation jump functions.
8808
8809 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
8810
8811         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
8812         fde->dw_fde_begin as begin label instead of hot/cold label.
8813         Use LLSDAC label instead of LLSDA for second section lsda.
8814         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
8815         label instead of LLSDA if it is true.
8816         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
8817         callers.
8818         * except.c (add_call_site, dw2_size_of_call_site_table): Add
8819         SECTION argument.  Use it as index into crtl->eh.call_site_record
8820         array.
8821         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
8822         use it to determine how to print table entries instead of using
8823         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
8824         label instead of normal begin label as base.
8825         (sjlj_assign_call_site_values): Adjust add_call_site caller.
8826         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
8827         ensure no EH range spans between sections and that landing pads
8828         are always in the corresponding section.
8829         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
8830         for crtl->eh.call_site_record being an array rather than scalar.
8831         (output_one_function_exception_table): New function, copied
8832         from output_function_exception_table.  Adjust
8833         dw2_size_of_call_site_table, dw2_output_call_site_table
8834         callers.  For SECOND section use *C suffixed labels.
8835         (output_function_exception_table): Call
8836         output_one_function_exception_table and, when doing hot/cold
8837         partitioning, also another time for the second section.
8838         * opts.c: Include except.h.
8839         (decode_options): Allow -freorder-blocks-and-partition with
8840         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
8841         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
8842         * function.h (struct rtl_eh): Change call_site_record from
8843         scalar into array of 2 elements.
8844
8845 2009-08-07  Martin Jambor  <mjambor@suse.cz>
8846
8847         * ipa-prop.c (count_formal_params_1): New function.
8848         (ipa_get_vector_of_formal_parms): New function.
8849         (get_vector_of_formal_parm_types): New function.
8850         (ipa_modify_formal_parameters): New function.
8851         (ipa_modify_call_arguments): New function.
8852         (index_in_adjustments_multiple_times_p): New function.
8853         (ipa_combine_adjustments): New function.
8854         (ipa_dump_param_adjustments): New function.
8855         * ipa-prop.h (struct ipa_parm_adjustment): New type.
8856         (ipa_get_vector_of_formal_parms): Declare.
8857         (ipa_modify_formal_parameters): Declare.
8858         (ipa_modify_call_arguments): Declare.
8859         (ipa_combine_adjustments): Declare.
8860         (ipa_dump_param_adjustments): Declare.
8861         (build_ref_for_offset): Declare.
8862         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
8863         * tree-sra.c: Include ipa-prop.c.
8864         (build_ref_for_offset): Make public.
8865
8866 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
8867
8868         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
8869
8870 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
8871
8872         * gcc/doc/extend.texi (__builtin_extract_return_address)
8873         (__builtin_frob_return_address): Document.
8874
8875 2009-08-06  Paul Brook  <paul@codesourcery.com>
8876
8877         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
8878         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
8879         implementation on ARMv6-M.
8880
8881 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
8882
8883         * doc/extend.texi (pcs): Document new attribute for ARM.
8884
8885 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
8886
8887         * arm.c (pcs_attribute_args): Comment out unsupported attribute
8888         variants.
8889
8890 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
8891
8892         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
8893         warning ().
8894
8895 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
8896
8897         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
8898
8899 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
8900
8901         Merge ARM/hard_vfp_branch to trunk.
8902
8903         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
8904
8905         * arm.c (libcall_eq): New function.
8906         (libcall_hash): New function.
8907         (add_libcall): New function.
8908         (arm_libcall_uses_aapcs_base): New function.
8909         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
8910         libcalls using the base PCS.
8911         (arm_init_cumulative_args): Likewise.
8912
8913         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
8914
8915         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
8916         Use base ABI for conversion libfuncs between HFmode and SFmode.
8917
8918         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
8919
8920         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
8921         V4SImode as representatives of all 64-bit and 128-bit vector
8922         types.  Allow vector types without vector modes.
8923         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
8924         without vector modes like BLKmode.
8925         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
8926         BLKmode.  Avoid unsupported vector modes or TImode moves for
8927         non-TARGET_NEON.
8928         (aapcs_vfp_allocate_return_reg): Likewise.
8929         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
8930         V8QImode if TARGET_NEON || TARGET_IWMMXT.
8931
8932         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
8933
8934         * config/arm/arm.c (arm_handle_pcs_attribute): New.
8935         (arm_get_pcs_model): Pass attribute arguments to
8936         arm_pcs_from_attribute.
8937         (arm_init_cumulative_args): Use base AAPCS for conversions from
8938         floating-point types to DImode.
8939         (arm_attribute_table): Add pcs attribute.
8940         (arm_handle_pcs_attribute): New.
8941         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
8942         conversions from floating-point types to DImode, also declare them
8943         to use base AAPCS and declare functions they call to use base
8944         AAPCS and their RTABI names.
8945
8946         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
8947
8948         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
8949         -mfloat-abi=hard not being supported for VFP.
8950
8951         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
8952
8953         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
8954         SYMBOL_REF to hard_libcall_value.
8955
8956         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
8957             Richard Earnshaw  <rearnsha@arm.com>
8958
8959         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
8960         has been put on the stack, all remaining co-processory arguments for
8961         that co-processor also go on the stack.
8962
8963         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
8964
8965         * config/arm/arm.c (arm_return_in_memory): Handle returning
8966         vectors of suitable size in registers also for AAPCS case.
8967
8968         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
8969
8970         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
8971
8972         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
8973
8974         ARM Hard-VFP calling convention
8975         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
8976         * target.h (gcc_target): Add libcall_value to table of call hooks.
8977         * targhooks.h (default_libcall_value): Default implementation.
8978         * targhooks.c (default_libcall_value): Likewise.
8979         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
8980         * optabs.c (expand_unop): Use it.
8981         * expr.h (hard_libcall_value): Pass the function RTX through.
8982         * calls.c (emit_library_call_value_1): Update call to
8983         hard_libcall_value.
8984         * explow.c (hard_libcall_value): Use new target hook.
8985         * testsuite/lib/target-supports.exp
8986         (check_effective_target_arm_hard_vfp_ok): New hook.
8987         (check_effective_target_arm_neon_ok): Improve test for neon
8988         availability.
8989         * testsuite/gcc.target/arm/eabi1.c: Only run test in base variant.
8990         * config/arm/arm.c: Include cgraph.h
8991         (TARGET_FUNCTION_VALUE): Override default hook.
8992         (arm_pcs_default): New variable.
8993         (arm_override_options): Don't fault hard calling convention with VFP.
8994         Add support for AAPCS variants.
8995         (arm_function_value): Make static.  Handle AAPCS variants.
8996         (arm_libcall_value): New function.
8997         (arm_apply_result_size): Handle VFP registers in results.
8998         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
8999         conventions.
9000         (pcs_attribute_args): New variable.
9001         (arm_pcs_from_attribute): New function.
9002         (arm_get_pcs_model): New function.
9003         (aapcs_vfp_cum_init): New function.
9004         (aapcs_vfp_sub_candidate): New function.
9005         (aapcs_vfp_is_return_candidate): New function.
9006         (aapcs_vfp_is_call_candidate): New function.
9007         (aapcs_vfp_allocate): New function.
9008         (aapcs_vfp_allocate_return_reg): New function.
9009         (aapcs_vfp_advance): New function.
9010         (aapcs_cp_arg_layout): New variable.
9011         (aapcs_select_call_coproc): New function.
9012         (aapcs_select_return_coproc): New function.
9013         (aapcs_allocate_return_reg): New function.
9014         (aapcs_libcall_value): New function.
9015         (aapcs_layout_arg): New function.
9016         (arm_init_cumulative_args): Initialize AAPCS args data.
9017         (arm_function_arg): Handle AAPCS variants using new interface.
9018         (arm_arg_parital_bytes): Likewise.
9019         (arm_function_arg_advance): New function.
9020         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
9021         calling conventions.
9022         (arm_setup_incoming_varargs): Handle new AAPCS args data.
9023         * arm.h (NUM_VFP_ARG_REGS): Define.
9024         (LIBCALL_VALUE): Update.
9025         (FUNCTION_VALUE): Delete.
9026         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
9027         (arm_pcs): New enum.
9028         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
9029         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
9030         (FUNCTION_ARG_REGNO_P): Add VFP regs.
9031         * arm-protos.h (arm_function_arg_advance): Add.
9032         (aapcs_libcall_value): Add.
9033         (arm_function_value): Delete.
9034
9035 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
9036             H.J. Lu  <hongjiu.lu@intel.com>
9037
9038         PR target/40957
9039         * config/i386/i386.c (standard_sse_mode_p): Remove.
9040         (standard_sse_constant_p): Return 2 for integer mode
9041         vector_all_ones_operand when SSE2 is enabled.
9042         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
9043         (ix86_expand_vector_move): Do not check for negative values from
9044         standard_sse_constant_p.
9045
9046 2009-08-06  Richard Guenther  <rguenther@suse.de>
9047
9048         * tree-ssa.c (useless_type_conversion_p_1): Make function and
9049         array type comparisons frontend independent.
9050         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
9051         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
9052         out array reference lower bound and element size operands.
9053         (ao_ref_init_from_vn_reference): Properly compute the offset
9054         for ARRAY_RANGE_REF.
9055         (vn_reference_fold_indirect): Fill out array reference lower
9056         bound and element size operands.
9057         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
9058         a non gimple valued reference operand which can happen for
9059         array reference lower bound or element size.
9060         (create_component_ref_by_pieces_1): Properly generate the
9061         element size operand for array references.
9062
9063 2009-08-06  Richard Guenther  <rguenther@suse.de>
9064
9065         PR tree-optimization/40964
9066         * tree.c (iterative_hash_host_wide_int): Export.
9067         * tree.h (iterative_hash_host_wide_int): Declare.
9068         * tree-ssa-structalias.c (heapvar_map): New struct.
9069         (heapvar_map_eq): New function.
9070         (heapvar_map_hash): Likewise.
9071         (heapvar_lookup): Adjust.
9072         (heapvar_insert): Likewise.
9073         (make_constraint_from_heapvar): Allow multiple heap variables
9074         per decl at different offsets.
9075         (init_alias_heapvars): Adjust.
9076
9077 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
9078
9079         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
9080         * mips_output_sync_loop (mips_output_sync_loop): Only emit
9081         trailing sync if TARGET_SYNC_AFTER_SC.
9082
9083 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
9084
9085         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
9086         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
9087         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
9088         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
9089         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
9090         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
9091         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
9092         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
9093         test_and_set_12): Rewrite calls to mips_output_sync_loop.
9094         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
9095         the prototype declaration match the definition.
9096         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
9097         instructions explicitly.  Add barrier_before and operands
9098         parameters.
9099         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
9100         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
9101         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
9102         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
9103         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
9104         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
9105
9106 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
9107
9108         * tree-ssa-alias.c: Fix intervals to use [) syntax.
9109
9110 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
9111             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
9112
9113         PR target/40906
9114         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
9115         source operand.
9116
9117 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
9118
9119         PR rtl-optimization/40924
9120         * dse.c (canon_address): Before calling cselib_expand_value_rtx
9121         make sure canon_rtx (mem_address) isn't simpler than
9122         canon_rtx (expanded_mem_address).
9123
9124 2009-08-05  Li Feng  <nemokingdom@gmail.com>
9125
9126         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
9127         for each poly_bb_p.
9128         (build_scop_drs): Build alias set for each SCoP.
9129
9130 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
9131
9132         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
9133         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
9134         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
9135         (MIPS_ARCH_FLOAT_SPEC): Likewise.
9136         (BASE_DRIVER_SELF_SPECS): Likewise.
9137
9138 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
9139
9140         * tree-ssa-alias.c: Fix some comment typos.
9141
9142 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
9143
9144         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
9145         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
9146
9147 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
9148
9149         PR c/39902
9150         * simplify-rtx.c (simplify_binary_operation_1): Disable
9151         simplifications for decimal float operations.
9152
9153 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
9154
9155         PR middle-end/40943
9156         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
9157         operand of INDIRECT_REF.
9158
9159 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
9160
9161         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
9162         constants referencing TLS symbols.
9163
9164 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
9165
9166         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
9167         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
9168
9169 2009-08-03  Richard Guenther  <rguenther@suse.de>
9170
9171         * tree.c (make_vector_type): Build a main variant first,
9172         get the canonical one and then build the variant.
9173         * tree-ssa.c (useless_type_conversion_p_1): Handle
9174         fixed-point types.
9175         (useless_type_conversion_p): Conversions to pointers to
9176         incomplete record types are useless.
9177
9178 2009-08-03  Richard Guenther  <rguenther@suse.de>
9179
9180         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
9181         file will be created.
9182         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
9183         * toplev.c (compile_file): Adjust comment.
9184
9185 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
9186
9187         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
9188         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
9189         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9190         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
9191         (sh_promote_function_mode): Fix typo.
9192
9193 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
9194
9195         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
9196
9197 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9198
9199         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
9200         declaration arguments.
9201
9202 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
9203
9204         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
9205         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
9206         (ix86_split_ashl): Ditto.
9207         (ix86_expand_vector_init_one_nonzero): Ditto.
9208         (ix86_expand_vector_set): Ditto.
9209         (ix86_expand_reduc_v4sf): Ditto.
9210
9211 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
9212
9213         * explow.c (promote_function_mode): Remove assert.
9214         * config/sh/sh.c (sh_promote_function_mode): Declare.
9215
9216 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9217
9218         * config/pa/pa.c (pa_promote_function_mode): Declare.
9219         Change to static.  Fix promote_mode call.
9220
9221         * gthr-dce.h (CONST_CAST2): Define if not defined.
9222         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
9223
9224         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
9225
9226 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
9227
9228         * expr.c (store_constructor): Use promote_decl_mode.  Remove
9229         now write-only variable unsignedp.
9230         (expand_expr_real_1): Use promote_decl_mode.
9231         * expr.h (promote_function_mode, promote_decl_mode): New.
9232         (promote_mode): Remove last argument.
9233         * function.c (assign_temp): Drop last argument of promote_mode.
9234         (assign_parm_find_data_types): Use promote_function_mode.
9235         (assign_parm_setup_reg): Likewise.
9236         (expand_function_end): Use promote_function_mode.
9237         * calls.c (initialize_argument_information): Use promote_function_mode.
9238         (precompute_arguments): Use promote_mode instead of checking if
9239         only PROMOTE_FUNCTION_MODE is defined.
9240         (expand_call): When making sibcall decisions, use promote_function_mode.
9241         Below, remove an if for targetm.calls.promote_function_return and
9242         and use promote_function_mode.
9243         (emit_library_call_value_1): Use promote_function_mode, fix bug
9244         where promote_mode was passed FOR_CALL == 0 for a return value in an
9245         assertion.
9246         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
9247         * explow.c (promote_function_mode, promote_decl_mode): New.
9248         (promote_mode): Keep only the FOR_CALL == 0 case.
9249         * combine.c (setup_incoming_promotion): Remove test of
9250         promote_function_args.  Use promote_function_mode.
9251         * stmt.c (expand_value_return): Use promote_decl_mode.
9252         (expand_decl): Use promote_decl_mode.
9253
9254         * expr.c (store_constructor): Use promote_decl_mode.  Remove
9255         now write-only variable unsignedp.
9256         (expand_expr_real_1): Use promote_decl_mode.
9257         * expr.h (promote_function_mode, promote_decl_mode): New.
9258         (promote_mode): Remove last argument.
9259         * function.c (assign_temp): Drop last argument of promote_mode.
9260         (assign_parm_find_data_types): Use promote_function_mode.
9261         (assign_parm_setup_reg): Likewise.
9262         (expand_function_end): Use promote_function_mode.
9263         * calls.c (initialize_argument_information): Use promote_function_mode.
9264         (precompute_arguments): Use promote_mode instead of checking if
9265         only PROMOTE_FUNCTION_MODE is defined.
9266         (expand_call): When making sibcall decisions, use promote_function_mode.
9267         Below, remove an if for targetm.calls.promote_function_return and
9268         and use promote_function_mode.
9269         (emit_library_call_value_1): Use promote_function_mode, fix bug
9270         where promote_mode was passed FOR_CALL == 0 for a return value in an
9271         assertion.
9272         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
9273         * explow.c (promote_function_mode, promote_decl_mode): New.
9274         (promote_mode): Keep only the FOR_CALL == 0 case.
9275         * combine.c (setup_incoming_promotion): Remove test of
9276         promote_function_args.  Use promote_function_mode.
9277         * stmt.c (expand_value_return): Use promote_decl_mode.
9278         (expand_decl): Use promote_decl_mode.
9279
9280         * explow.c (promote_function_mode): Just call the target hook.
9281         * targhooks.c (default_promote_function_mode,
9282         default_promote_function_mode_always_promote): New.
9283         * targhooks.h (default_promote_function_mode,
9284         default_promote_function_mode_always_promote): Declare.
9285         * target.h (promote_function_args, promote_function_return): Remove.
9286         (promote_function_mode): New.
9287         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
9288         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9289         (TARGET_PROMOTE_FUNCTION_MODE): New.
9290         (TARGET_CALLS): Adjust.
9291         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
9292         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
9293
9294         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
9295         * config/s390/s390.c (s390_promote_function_mode): ... here,
9296         with pointer handling.
9297         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9298         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9299
9300         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
9301         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
9302         with pointer handling.
9303         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9304         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9305
9306         * config/sh/sh-protos.h (sh_promote_function_mode): New.
9307         * config/sh/sh.c (sh_promote_function_mode): New.
9308         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9309         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9310
9311         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
9312         * config/cris/cris.c (cris_promote_function_mode): ... here.
9313         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9314         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
9315
9316         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
9317         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
9318         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9319         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
9320
9321         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
9322         * config/arm/arm.c (arm_promote_function_mode): ... here, without
9323         complex type handling.
9324         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9325         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9326
9327         * config/pa/pa.c (pa_promote_function_mode): New.
9328         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9329         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9330
9331         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
9332         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9333         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
9334         * config/xtensa/xtensa.c: Likewise.
9335         * config/stormy16/stormy16.c: Likewise.
9336         * config/iq2000/iq2000.c: Likewise.
9337         * config/rs6000/rs6000.c: Likewise.
9338         * config/picochip/picochip.c: Likewise.
9339         * config/arc/arc.c: Likewise.
9340         * config/mcore/mcore.c: Likewise.
9341         * config/score/score.c: Likewise.
9342         * config/mips/mips.c: Likewise.
9343         * config/bfin/bfin.c: Likewise.
9344         * config/ia64/ia64.c: Likewise (disabled though).
9345
9346         * config/frv/frv.h: Remove pointless remark.
9347
9348         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
9349         TARGET_PROMOTE_FUNCTION_ARGS,
9350         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
9351         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
9352
9353 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
9354
9355         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
9356         -floop-parallelize-all.
9357         * toplev.c (process_options): Rename flag_graphite_force_parallel to
9358         flag_loop_parallelize_all.
9359         * tree-ssa-loop.c (gate_graphite_transforms): Same.
9360         * graphite.c (graphite_transform_loops): Same.
9361         * common.opt: Same.
9362         * graphite-poly.c (apply_poly_transforms): Same.
9363
9364 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
9365
9366         PR tree-optimization/40914
9367         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
9368         if set, then check the delta field of the PMF record.
9369         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
9370         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
9371         call is stored in the delta.
9372
9373 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
9374
9375         * config/mips/mips.md (*clear_upper32_dext): New pattern.
9376
9377 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
9378
9379         * config/i386/bsd.h (ASM_BYTE): New define.
9380         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
9381         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
9382         .byte.  Use fputs or putc instead of fprintf where appropriate.
9383         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
9384         fputs or putc instead of fprintf where appropriate.
9385         * config/i386/i386elf.h: Ditto.
9386         * config/i386/sysv4.h: Ditto.
9387
9388         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
9389         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
9390         (*tls_global_dynamic_64): Ditto.
9391
9392 2009-07-31  Christian Bruel  <christian.bruel@st.com>
9393
9394         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
9395
9396 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9397
9398         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
9399         Remove dead code for MINUS.
9400
9401 2009-07-31  Anthony Green  <green@moxielogic.com>
9402
9403         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
9404         $r12 in prologue.
9405         (moxie_expand_epilogue): Ditto for epilogue.
9406         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
9407         incoming arguments.
9408         (moxie_function_arg): Ditto.
9409         (moxie_pass_by_reference): Ditto.
9410         (moxie_arg_partial_bytes): Ditto.
9411         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
9412         (FUNCTION_ARG_ADVANCE) Ditto.
9413         (REG_PARM_STACK_SPACE) Ditto.
9414         (FUNCTION_ARG_REGNO_P) Dito.
9415
9416         * config.gcc: Add moxie linux config support.
9417         * gcc/config/moxie/uclinux.h: New file.
9418
9419 2009-07-31  DJ Delorie  <dj@redhat.com>
9420
9421         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
9422         (UNSPECV_SP_SWITCH_E): New.
9423         (sp_switch_1): Change to an unspec.
9424         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
9425         replace $r15.
9426         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
9427         reference the new stack's address
9428
9429 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9430
9431         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
9432         graphite-clast-to-gimple.o, graphite-dependences.o,
9433         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
9434         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
9435         (graphite-blocking.o,
9436         graphite-clast-to-gimple.o, graphite-dependences.o,
9437         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
9438         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
9439         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
9440         * cfgloop.h (struct loop): Add can_be_parallel field.
9441         * common.opt (fgraphite-identity): Moved up.
9442         (fgraphite-force-parallel): New flag.
9443         * graphite.c: Rewrite.
9444         * graphite.h: Rewrite.
9445         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
9446         after Graphite.
9447         * toplev.c (graphite_out_file): New file descriptor.
9448         (graphite_in_file): New.
9449         (process_options): flag_graphite_force_parallel cannot be used without
9450         Graphite.
9451         * tree-ssa-loop.c: Include toplev.h.
9452         (gate_graphite_transforms): Enable flag_graphite for
9453         flag_graphite_force_parallel.
9454
9455 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9456
9457         * ChangeLog.graphite: New.
9458         * graphite-blocking.c: New.
9459         * graphite-clast-to-gimple.c: New.
9460         * graphite-clast-to-gimple.h: New.
9461         * graphite-dependences.c: New.
9462         * graphite-dependences.h: New.
9463         * graphite-interchange.c: New.
9464         * graphite-poly.c: New.
9465         * graphite-poly.h: New.
9466         * graphite-ppl.c: New.
9467         * graphite-ppl.h: New.
9468         * graphite-scop-detection.c: New.
9469         * graphite-scop-detection.h: New.
9470         * graphite-sese-to-poly.c: New.
9471         * graphite-sese-to-poly.h: New.
9472         * sese.c: New.
9473         * sese.h: New.
9474
9475 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9476
9477         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
9478         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
9479
9480 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9481
9482         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
9483         (scev_is_linear_expression): Return false if the evolution is not
9484         affine multivariate.
9485
9486 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9487
9488         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
9489         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
9490
9491 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9492
9493         * tree-data-ref.c (debug_data_references): New.
9494         (debug_data_reference): New.
9495         * tree-data-ref.h (debug_data_references): Declared.
9496         (debug_data_reference): Declared.
9497
9498 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9499
9500         * tree-data-ref.c (stmt_simple_memref_p: Removed.
9501         * tree-data-ref.h (scop_p): Removed.
9502         (struct data_reference): Remove field scop.
9503         (DR_SCOP): Removed.
9504         (stmt_simple_memref_p): Removed.
9505
9506 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9507
9508         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
9509         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
9510         basic block empty.
9511
9512 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9513
9514         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
9515
9516 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9517
9518         * doc/invoke.texi (-fgraphite-identity): Documented.
9519
9520 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9521
9522         * tree-scalar-evolution.c: Fix comment.
9523         (instantiate_scev_1): Return unknow from scev instantiation if the
9524         result is not above instantiate_below.
9525
9526 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9527
9528         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
9529         static anymore.  Instantiate the symbols that may have been introduced
9530         by chrec_apply.
9531         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
9532         Declared.
9533
9534 2009-07-30  DJ Delorie  <dj@redhat.com>
9535
9536         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
9537         .vliw directive to VLIW sections.
9538
9539 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9540
9541         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
9542         New variables.
9543         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
9544         (AUTOHEADER): New variable.
9545         ($(srcdir)/cstamp-h.in): Use it.
9546
9547 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
9548             Pat Haugen  <pthaugen@us.ibm.com>
9549             Revital Eres <ERES@il.ibm.com>
9550
9551         * config/rs6000/vector.md (VEC_F): Add VSX support.
9552         (VEC_A): Ditto.
9553         (VEC_N): Ditto.
9554         (mov<mode>): Ditto.
9555         (vector_load_<mode>): Ditto.
9556         (vector_store_<mode>): Ditto.
9557         (vector GPR move split): Ditto.
9558         (vec_reload_and_plus_<mptrsize>): Ditto.
9559         (vec_reload_and_reg_<mptrsize>): Ditto.
9560         (add<mode>3): Ditto.
9561         (sub<mode>3): Ditto.
9562         (mul<mode>3): Ditto.
9563         (neg<mode>2): Ditto.
9564         (abs<mode>2): Ditto.
9565         (smin<mode>3): Ditto.
9566         (smax<mode>3): Ditto.
9567         (vector_eq<mode>): Ditto.
9568         (vector_gt<mode>): Ditto.
9569         (vector_ge<mode>): Ditto.
9570         (vector_gtu<mode>): Ditto.
9571         (vector_select_<mode>_uns): Ditto.
9572         (vector_eq_<mode>_p): Ditto.
9573         (vector_gt_<mode>_p): Ditto.
9574         (vector_ge_<mode>_p): Ditto.
9575         (vector_gtu_<mode>_p): Ditto.
9576         (cr6_test_for_zero): Ditto.
9577         (cr6_test_for_zero_reverse): Ditto.
9578         (cr6_test_for_lt): Ditto.
9579         (cr6_test_for_lt_reverse): Ditto.
9580         (xor<mode>3): Ditto.
9581         (ior<mode>3): Ditto.
9582         (and<mode>3): Ditto.
9583         (one_cmpl<mode>2): Ditto.
9584         (nor<mode>2): Ditto.
9585         (andc<mode>2): Ditto.
9586         (float<VEC_int<mode>2): Ditto.
9587         (unsigned_float<VEC_int><mode>2): Ditto.
9588         (fix_trunc<mode><VEC_int>2): Ditto.
9589         (fixuns_trunc<mode><VEC_int>2): Ditto.
9590         (vec_init<mode>):
9591         (vec_set<mode>): Ditto.
9592         (vec_extract<mode>): Ditto.
9593         (vec_interleave_highv4sf): Ditto.
9594         (vec_interleave_lowv4sf): Ditto.
9595         (vec_realign_load_<mode>): Ditto.
9596         (vec_shl_<mode>): Ditto.
9597         (vec_shr_<mode>): Ditto.
9598         (div<mode>3): New patterns for VSX.
9599         (vec_interleave_highv2df): Ditto.
9600         (vec_interleave_lowv2df): Ditto.
9601         (vec_pack_trunc_v2df): Ditto.
9602         (vec_pack_sfix_trunc_v2df): Ditto.
9603         (vec_pack_ufix_trunc_v2df): Ditto.
9604         (vec_unpacks_hi_v4sf): Ditto.
9605         (vec_unpacks_lo_v4sf): Ditto.
9606         (vec_unpacks_float_hi_v4si): Ditto.
9607         (vec_unpacks_float_lo_v4si): Ditto.
9608         (vec_unpacku_float_hi_v4si): Ditto.
9609         (vec_unpacku_float_lo_v4si): Ditto.
9610         (movmisalign<mode>): Ditto.
9611         (vector_ceil<mode>2): New patterns for vectorizing math library.
9612         (vector_floor<mode>2): Ditto.
9613         (vector_btrunc<mode>2): Ditto.
9614         (vector_copysign<mode>3): Ditto.
9615
9616         * config/rs6000/predicates.md (easy_vector_constant_msb): New
9617         predicate for setting the high bit in each word, used for copysign.
9618
9619         * config/rs6000/ppc-asm.h (f19): Whitespace.
9620         (f32-f63): Define if VSX.
9621         (v0-v31): Define if Altivec.
9622         (vs0-vs63): Define if VSX.
9623
9624         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
9625
9626         * config/rs6000/power7.md: New file, provide tuning parameters for
9627         -mcpu=power7.
9628
9629         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
9630         (rs6000_cpu_cpp_builtins): Ditto.
9631         (altivec_overloaded_builtins): Ditto.
9632         (altivec_resolve_overloaded_builtin): Ditto.
9633
9634         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
9635         debug switch to disable vectorizing simple math builtin
9636         functions.
9637
9638         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
9639         Vectorize simple math builtin functions.
9640         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
9641         hook to vectorize math builtins.
9642         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
9643         (rs6000_builtin_conversion): Add VSX/power7 support.
9644         (rs6000_builtin_vec_perm): Ditto.
9645         (vsplits_constant): Add support for loading up a vector constant
9646         with just the high bit set in each part.
9647         (rs6000_expand_vector_init): Add VSX/power7 support.
9648         (rs6000_expand_vector_set): Ditto.
9649         (rs6000_expand_vector_extract): Ditto.
9650         (rs6000_emit_move): Ditto.
9651         (bdesc_3arg): Ditto.
9652         (bdesc_2arg): Ditto.
9653         (bdesc_1arg): Ditto.
9654         (rs6000_expand_ternop_builtin): Ditto.
9655         (altivec_expand_builtin): Ditto.
9656         (rs6000_expand_unop_builtin): Ditto.
9657         (rs6000_init_builtins): Ditto.
9658         (altivec_init_builtins): Ditto.
9659         (builtin_function_type): Ditto.
9660         (rs6000_common_init_builtins): Ditto.
9661         (rs6000_handle_altivec_attribute); Ditto.
9662         (rs6000_mangle_type): Ditto.
9663         (rs6000_vector_mode_supported_p): Ditto.
9664         (rs6000_mode_dependent_address): Altivec addresses with AND -16
9665         are mode dependent.
9666
9667         * config/rs6000/vsx.md: New file for VSX support.
9668
9669         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
9670         identifing values with just the most significant bit set.
9671         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
9672         vectorized builtins.
9673
9674         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
9675         (UNSPEC_VRFIM): Delete.
9676         (splitter for loading up vector with most significant bit): New
9677         splitter for vectorizing copysign.
9678         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
9679         vectorizing simple math functions.
9680         (altivec_vrfip): Add support for vectorizing simple math functions.
9681         (altivec_vrfim): Ditto.
9682         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
9683
9684         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
9685         (power7.md, vsx.md): Include for power7 support.
9686         (copysigndf3): Use VSX instructions if -mvsx.
9687         (negdf2_fpr): Ditto.
9688         (absdf2_fpr): Ditto.
9689         (nabsdf2_fpr): Ditto.
9690         (adddf3_fpr): Ditto.
9691         (subdf3_fpr): Ditto.
9692         (muldf3_fpr): Ditto.
9693         (divdf3_fpr): Ditto.
9694         (fix_truncdfdi2_fpr): Ditto.
9695         (cmpdf_internal1): Ditto.
9696         (fred, fred_fpr): Convert into expander/insn to add VSX support.
9697         (btruncdf2, btruncdf2_fpr): Ditto.
9698         (ceildf2, ceildf2_fpr): Ditto.
9699         (floordf2, floordf2_fpr): Ditto.
9700         (floatdidf2, floatdidf2_fpr): Ditto.
9701         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
9702         (fmsubdf4_fpr): Ditto.
9703         (fnmadddf4_fpr_1): Ditto.
9704         (fnmadddf4_fpr_2): Ditto.
9705         (fnmsubdf4_fpr_1): Ditto.
9706         (fnmsubdf4_fpr_2): Ditto.
9707         (fixuns_truncdfdi2): Add expander for VSX support.
9708         (fix_truncdfdi2): Ditto.
9709         (fix_truncdfsi2): Ditto.
9710         (ftruncdf2): Ditto.
9711         (btruncsf2): Whitespace.
9712         (movdf_hardfloat32): Add support for VSX registers.
9713         (movdf_softfloat32): Ditto.
9714         (movdf_hardfloat64): Ditto.
9715         (movdf_hardfloat64_mfpgpr): Ditto.
9716         (movdf_softfloat64): Ditto.
9717         (movti splitters): Add check for vector registers supporting
9718         TImode in the future.
9719         (bpermd): Add power7 bpermd instruction.
9720
9721         * config/rs6000/altivec.h (vec_div): Define if VSX.
9722         (vec_mul): Ditto.
9723         (vec_msub): Ditto.
9724         (vec_nmadd): Ditto.
9725         (vec_nearbyint): Ditto.
9726         (vec_rint): Ditto.
9727         (vec_sqrt): Ditto.
9728         (all predicates): Use the generic builtin function, and not the V4SF
9729         specific function so that the predicates will work with VSX's V2DF.
9730         (vec_all_*): Ditto.
9731         (vec_any_*): Ditto.
9732
9733         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
9734         Document new VSX functions and types.
9735
9736         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
9737         switches.
9738
9739         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
9740         "wa", and "j" constraints.  Modify "v" to talk about Altivec
9741         instead of just vector.
9742
9743 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
9744
9745         PR debug/26475
9746         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
9747         location for phi arguments.
9748         (rewrite_update_phi_arguments): Find locations for reaching defs.
9749         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
9750         Add location to add_phi_arg calls.
9751         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
9752         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
9753         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
9754         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
9755         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
9756         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
9757         * tree-phinodes.c (make_phi_node): Initialize location.
9758         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
9759         (add_phi_arg): Add location parameter.
9760         (remove_phi_arg_num): Move location when moving phi argument.
9761         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
9762         location.
9763         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
9764         slpeel_update_phi_nodes_for_guard1,
9765         slpeel_update_phi_nodes_for_guard2,
9766         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
9767         vect_loop_versioning): Set locations.
9768         * tree-parloops.c (create_phi_for_local_result,
9769         transform_to_exit_first_loop, create_parallel_loop): Add locations.
9770         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
9771         * tree-vect-loop.c (get_initial_def_for_induction,
9772         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
9773         locations.
9774         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
9775         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
9776         (gimple_phi_arg_set_location): New.  Set locus.
9777         (gimple_phi_arg_has_location): New.  Check for locus.
9778         (redirect_edge_var_map_location): New.  Return locus from var_map.
9779         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
9780         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
9781         combining PHI arguments.
9782         (cond_store_replacement): Set location.
9783         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
9784         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
9785         scop_add_exit_phis_edge): Add locations.
9786         * tree-cfgcleanup.c (remove_forwarder_block,
9787         remove_forwarder_block_with_phi): Add locations.
9788         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
9789         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
9790         locations.
9791         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
9792         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
9793         flush_pending_stmts): Add source location.
9794         * lambda-code.c (perfect_nestify): Maintain location stack with argument
9795         stack to preserve locations.
9796         * tree-vect-stmts.c (vectorizable_load): Add location.
9797         * tree-inline.c (copy_phis_for_bb): Copy locus.
9798         (setup_one_parameter): Add call locus to inlined parameter stmts.
9799         (initialize_inlined_parameters): Pass in call location as parameter
9800         assignment locus.
9801         (tree_function_versioning): Pass location to setup_one_parameter.
9802         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
9803         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
9804         copy and edge lists.
9805         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
9806         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
9807         locus parameter and override the stmt default if provided.
9808         (new_elim_graph, clear_elim_graph, delete_elim_graph,
9809         elim_graph_add_edge, elim_graph_remove_succ_edge,
9810         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
9811         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
9812         eliminate_phi):  Add locus info in elimination graph for each edge and
9813         value copy.
9814         (insert_backedge_copies): Copy locus if present.
9815         * tree-flow.h (struct _edge_var_map): Add locus field.
9816         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
9817         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
9818         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
9819         locations.
9820         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
9821
9822 2009-07-30  Martin Jambor  <mjambor@suse.cz>
9823
9824         PR tree-optimization/40570
9825         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
9826         use inlining loops.
9827
9828 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
9829
9830         * ssa-loop-manip.c: Include langhooks.h.
9831         (rewrite_phi_with_iv): New.
9832         (rewrite_all_phi_nodes_with_iv): New.
9833         (canonicalize_loop_ivs): Move here from tree-parloops.c.
9834         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
9835         * tree-parloops.c (loop_parallel_p): Move out all conditions
9836         except dependency check.
9837         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
9838         (gen_parallel_loop): Call canonicalize_loop_ivs without
9839         reduction_list argument.
9840         (build_new_reduction): New.
9841         (gather_scalar_reductions): New.
9842         (try_get_loop_niter): New.
9843         (try_create_reduction_list): New.
9844         (parallleize_loops): Change the parallel conditions check.
9845         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
9846         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
9847
9848 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
9849
9850         * opt-functions.awk (opt_args): Allow argument to be enclosed in
9851         curly braces.
9852         * doc/options.texi (Option properties):  Mention new quoting syntax.
9853
9854 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
9855
9856         * config/alpha/alpha.c (alpha_start_function):
9857         Handle VMS_DEBUG_MAIN_POINTER
9858         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
9859         * doc/invoke.texi: Document -mdebug-main switch.
9860
9861 2009-07-29  Richard Henderson  <rth@redhat.com>
9862
9863         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
9864         (cgraph_create_edge_including_clones): Likewise.
9865         * tree-inline.c (copy_bb): Operate on the correct edges
9866         when updating the callgraph.
9867
9868 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
9869
9870         * config/alpha/vms-cc.c: Deleted.
9871         * config/alpha/vms-ld.c: Deleted.
9872         * config/alpha/t-vms64: Moved to config/vms
9873         * config/alpha/vms-crt0-64.c: Moved to config/vms
9874         * config/alpha/vms-crt0.c: Moved to config/vms
9875         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
9876         * config/alpha/vms-psxcrt0.c: Moved to config/vms
9877         * config/alpha/xm-vms.h: Moved to config/vms
9878         * config/alpha/x-vms: Moved to config/vms
9879         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
9880         config/vms/t-vms.
9881         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
9882         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
9883         (version): Set.
9884         * config/vms/t-vms64: Moved here from config/alpha
9885         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
9886         (argc,argv,envp): Enforce 32bit malloc'ing.
9887         * config/vms/vms-psxcrt0-64.c: Likewise.
9888         * config/vms/vms-crt0.c: Moved here from config/alpha.
9889         * config/vms/vms-psxcrt0.c: Likewise.
9890         * config/vms/vms-crtl-64.h: New file.
9891         * config/vms/vms-crtl.h: New file.
9892         * config/vms/vms.opt: New file.
9893         * config/vms/xm-vms64.h: New file.
9894         * config/vms/xm-vms.h: Moved here from config/alpha.
9895         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
9896         Set.
9897         * config/vms/x-vms: Moved here from config/alpha.
9898         (version, VMS_EXTRA_PARTS): Moved to t-vms.
9899         (vms-ld.o, vms-cc.o): Removed.
9900         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
9901
9902 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
9903
9904         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
9905         correct stack (obvious VMS fix).
9906
9907 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
9908
9909         * dwarf2out.c (output_file_names): Output VMS style file name, size,
9910         date, version info if VMS_DEBUGGING_INFO defined.
9911         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
9912         size, date calculating code moved here.
9913
9914 2009-07-29  Paul Brook  <paul@codesourcery.com>
9915
9916         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
9917         do_push/do_pop.
9918
9919 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
9920
9921         PR target/40577
9922         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
9923         to DImode when generating insq_le insn.
9924
9925 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
9926
9927         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
9928         New macro set for VMS_DEBUGGGING_INFO.
9929         (AT_string_form): Use it.
9930
9931 2009-07-28  DJ Delorie  <dj@redhat.com>
9932
9933         * config/mep/mep.c (vtext_section): New.
9934         (vftext_section): New.
9935         (ftext_section): New.
9936         (mep_select_section): Add support for functions.
9937         (mep_unique_section): Likewise.
9938         (mep_asm_init_sections): Likewise.
9939         (mep_encode_section_info): Remove it from here.
9940
9941         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
9942
9943 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
9944
9945         * tree.h (TREE_DEPRECATED): Document it is used for types too.
9946         (TYPE_VECTOR_OPAQUE): Use default_def_flag
9947
9948 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
9949
9950         * dwarf2out.c (output_file_names): Test new macro
9951         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
9952         (add_comp_dir_attribute): Likewise.
9953
9954 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
9955
9956         * config/i386/mingw-w64.h (LINK_SPEC): Add
9957         separating space between commands.
9958
9959 2009-07-28  Jan Hubicka  <jh@suse.cz>
9960
9961         PR tree-optimization/40759
9962         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
9963         for renaming.
9964
9965 2009-07-27  DJ Delorie  <dj@redhat.com>
9966
9967         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
9968         types are dword-aligned.
9969         (mep_expand_va_start): Likewise.
9970
9971 2009-07-27  Olivier Hainque  <hainque@adacore.com>
9972             Douglas B Rupp  <rupp@gnat.com>
9973
9974         * convert.c (convert_to_pointer): Don't assume the target
9975         pointer type is POINTER_SIZE long. Fetch its precision instead.
9976
9977 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
9978
9979         * system.h (fopen): Undefine if macro.
9980
9981 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
9982
9983         * dwarf2out.c (output_cfi_p): Removed.
9984         (output_cfis): New function.
9985         (output_fde): New function, split from output_call_frame_info.
9986         (output_call_frame_info): Use it.
9987         (dwarf2out_switch_text_section): Use output_cfis.
9988
9989 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
9990
9991         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
9992         TARGET_BI_ARCH is specified without enabling SJLJ.
9993         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
9994         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
9995
9996 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
9997
9998         * arm.md (negdi2): Use DImode if forcing a value into a register.
9999
10000 2009-07-26  Ira Rosen  <irar@il.ibm.com>
10001
10002         PR tree-optimization/40801
10003         * tree-vect-stmts.c (vectorizable_call): Get previous copy
10004         of vector operand from the previous copy of vector statement.
10005         Pass the correct definition type value to
10006         vect_get_vec_def_for_stmt_copy().
10007
10008 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10009
10010         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
10011         const char ** conversion.
10012
10013 2009-07-25 David Daney <ddaney@caviumnetworks.com>
10014
10015         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
10016         fancy_abort() if !ENABLE_ASSERT_CHECKING.
10017         (gcc_unreachable): Invoke __builtin_unreachable() if
10018         !ENABLE_ASSERT_CHECKING.
10019
10020 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
10021
10022         PR rtl-optimization/40445
10023         * emit-rtl.c (next_nonnote_insn_bb): New function.
10024         * rtl.h (next_nonnote_insn_bb): Declare new function.
10025         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
10026         with no successors that is the successor of the ENTRY_BLOCK.
10027         Continue from the top after removing an empty fallthrough block.
10028         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
10029         of next_nonnote_insn.
10030
10031 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
10032
10033         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
10034
10035 2009-07-25  Martin Jambor  <mjambor@suse.cz>
10036
10037         * c-common.c (c_common_attribute_table): New element for noclone.
10038         (handle_noclone_attribute): New function. Forward-declare.
10039         * tree-inline.c (tree_versionable_function_p): Check for noclone
10040         attribute.
10041         * doc/extend.texi (Labels as Values): Document need for noclone.
10042         (Function Attributes): Document noclone attribute.
10043
10044 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
10045
10046         PR rtl-optimization/34999
10047         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
10048         and dw_fde_switched_cold_to_hot fields.
10049         (output_cfi_p): New function.
10050         (output_call_frame_info): If fde->dw_fde_switched_sections,
10051         output 2 FDEs instead of one with corrupted header.
10052         (dwarf2out_do_cfi_startproc): New function.
10053         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
10054         and fde->dw_fde_switched_cold_to_hot.
10055         (dwarf2out_switch_text_section): Compute
10056         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
10057         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
10058         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
10059         Otherwise, compute fde->dw_fde_switch_cfi.
10060
10061 2009-07-24  Cary Coutant  <ccoutant@google.com>
10062
10063         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
10064
10065 2009-07-24  Cary Coutant  <ccoutant@google.com>
10066
10067         * cfghooks.c (split_block): Copy discriminator to new block.
10068         * tree-cfg.c (assign_discriminator): Check location of last
10069         instruction in block as well as first.
10070
10071 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
10072
10073         * config/i386/linux.c: Use fputs or putc instead of fprintf
10074         where appropriate.
10075         * config/i386/gas.h: Ditto.
10076         * config/i386/x86-64.h: Ditto.
10077         * config/i386/att.h: Ditto.
10078
10079 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
10080
10081         * expmed.c (emit_store_flag): Use a recursive call to optimize the
10082         xor case.
10083
10084 2009-07-24  Martin Jambor  <mjambor@suse.cz>
10085
10086         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
10087         (ipa_push_func_to_list_1): Declare.
10088         (ipa_push_func_to_list): New function.
10089
10090         * ipa-prop.c (ipa_push_func_to_list_1): New function.
10091         (ipa_init_func_list): Call ipa_push_func_to_list_1.
10092         (ipa_push_func_to_list): Removed.
10093         (ipa_pop_func_from_list): Clear node_enqueued flag.
10094
10095 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
10096
10097         * config/s390/s390.c (override_options): Default
10098         max-unrolled-insns to 100 for z10 tuning.
10099
10100 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
10101
10102         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
10103         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
10104         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
10105         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
10106         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
10107         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
10108         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
10109
10110 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
10111
10112         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
10113         use default set in mingw32.h header.
10114         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
10115         64-bit /mingw/include path.
10116         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
10117         path.
10118
10119 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
10120
10121         PR rtl-optimization/40209
10122         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
10123
10124 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
10125
10126         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
10127         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
10128         with the rest of string where appropriate.  Use fputs or putc
10129         instead of fprintf where appropriate.
10130
10131 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
10132             Pat Haugen  <pthaugen@us.ibm.com>
10133             Revital Eres <ERES@il.ibm.com>
10134
10135         * config/rs6000/vector.md: New file.  Move most of the vector
10136         expander support here from altivec.md to allow for the VSX vector
10137         unit in the future.  Add support for secondary_reload patterns.
10138         Rewrite the patterns for vector comparison, and vector comparison
10139         predicate instructions so that the RTL expresses the desired
10140         behavior, instead of using unspec.
10141
10142         * config/rs6000/constraints.md ("f" constraint): Use
10143         rs6000_constraints to hold the precalculated register class.
10144         ("d" constraint): Ditto.
10145         ("wd" constraint): New constraint for VSX.
10146         ("wf" constraint): Ditto.
10147         ("ws" constraint): Ditto.
10148         ("wa" constraint): Ditto.
10149         ("wZ" constraint): Ditto.
10150         ("j" constraint): Ditto.
10151
10152         * config/rs6000/predicates.md (vsx_register_operand): New
10153         predicate for VSX.
10154         (vfloat_operand): New predicate for vector.md.
10155         (vint_operand): Ditto.
10156         (vlogical_operand): Ditto.
10157         (easy_fp_constant): If VSX, 0.0 is an easy constant.
10158         (easy_vector_constant): Add VSX support.
10159         (altivec_indexed_or_indirect_operand): New predicate for
10160         recognizing Altivec style memory references with AND -16.
10161
10162         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
10163         for vector secondary reload support.
10164         (rs6000_vector_reg_class): Delete, replacing it with
10165         rs6000_constraints.
10166         (rs6000_vsx_reg_class): Ditto.
10167         (rs6000_constraints): New array to hold the register classes of
10168         each of the register constraints that can vary at runtime.
10169         (builtin_mode_to_type): New static array for builtin function type
10170         creation.
10171         (builtin_hash_table): New static hash table for builtin function
10172         type creation.
10173         (TARGET_SECONDARY_RELOAD): Define target hook.
10174         (TARGET_IRA_COVER_CLASSES): Ditto.
10175         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
10176         registers are 128 bits if VSX memory reference instructions are used.
10177         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
10178         unit is being used.
10179         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
10180         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
10181         Print several of the scheduling related parameters.
10182         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
10183         rs6000_constraints instead of rs6000_vector_reg_class.  Move
10184         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
10185         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
10186         Altivec.  Add VSX support.  Setup for secondary reload support on
10187         Altivec/VSX registers.
10188         (rs6000_override_options): Make power7 set the scheduling groups
10189         like the power5.  Add support for new debug switches to override
10190         the scheduling defaults.  Temporarily disable -mcpu=power7 from
10191         setting -mvsx.  Add support for debug switches -malways-hint,
10192         -msched-groups, and -malign-branch-targets.
10193         (rs6000_buitlin_conversion): Add support for returning unsigned
10194         vector conversion functions to fix regressions due to stricter
10195         type checking.
10196         (rs6000_builtin_mul_widen_even): Ditto.
10197         (rs6000_builtin_mul_widen_odd): Ditto.
10198         (rs6000_builtin_vec_perm): Ditto.
10199         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
10200         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
10201         to zero a register.
10202         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
10203         generated upstream.
10204         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
10205         VSX types for bit operations.  Changes to accomidate vector.md.
10206         (bdesc_2arg): Ditto.
10207         (bdesc_1arg): Ditto.
10208         (struct builtin_description_predicates): Rewrite predicate
10209         handling so that RTL describes the operation, instead of passing
10210         the instruction to be used as a string argument.
10211         (bdesc_altivec_preds): Ditto.
10212         (altivec_expand_predicate_builtin): Ditto.
10213         (altivec_expand_builtin): Ditto.
10214         (rs6000_expand_ternop_builtin): Use a switch instead of an if
10215         statement for vsldoi support.
10216         (altivec_expand_ld_builtin): Change to use new names from vector.md.
10217         (altivec_expand_st_builtin): Ditto.
10218         (paired_expand_builtin): Whitespace changes.
10219         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
10220         builtin_mode_to_type table for secondary reload.  Call
10221         builtin_function_type to build random builtin functions.
10222         (altivec_init_builtins): Change to use builtin_function_type to
10223         create builtin function types dynamically as we need them.
10224         (builtin_hash_function): New support for hashing the tree types
10225         for builtin function as we need it, rather than trying to build
10226         all of the trees that we need.  Add initial preliminary VSX support.
10227         (builtin_function_type): Ditto.
10228         (builtin_function_eq): Ditto.
10229         (builtin_hash_struct): Ditto.
10230         (rs6000_init_builtins): Ditto.
10231         (rs6000_common_init_builtins): Ditto.
10232         (altivec_init_builtins): Ditto.
10233         (rs6000_common_init_builtins): Ditto.
10234         (enum reload_reg_type): New enum for simplifing reg classes.
10235         (rs6000_reload_register_type): Simplify register classes into GPR,
10236         Vector, and other registers.  Altivec and VSX addresses in reload.
10237         (rs6000_secondary_reload_inner): Ditto.
10238         (rs6000_ira_cover_classes): New target hook, that returns the
10239         appropriate cover classes, based on -mvsx being used or not.
10240         (rs6000_secondary_reload_class): Add VSX support.
10241         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
10242         (get_vsel_insn): Ditto.
10243         (rs6000_emit_vector_compare): Rewrite vector conditional support
10244         so that where we can, we use RTL operators, instead of blindly use
10245         UNSPEC.
10246         (rs6000_emit_vector_select): Ditto.
10247         (rs6000_emit_vector_cond_expr): Ditto.
10248         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
10249         (create_TOC_reference): Add -mdebug=addr support.
10250         (emit_frame_save): VSX loads/stores need register indexed addressing.
10251
10252         * config/rs6000/rs6000.md: Include vector.md.
10253
10254         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
10255
10256         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
10257         support for V2DI, V2DF in logical, permute, select operations.
10258
10259         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
10260         switch for vsx/power7.
10261         (-mvsx-scalar-memory): Ditto.
10262         (-mvsx-align-128): Ditto.
10263         (-mallow-movmisalign): Ditto.
10264         (-mallow-df-permute): Ditto.
10265         (-msched-groups): Ditto.
10266         (-malways-hint): Ditto.
10267         (-malign-branch-targets): Ditto.
10268
10269         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
10270         hook instead.
10271         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
10272         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
10273         (rs6000_vector_reg_class): Delete.
10274         (rs6000_vsx_reg_class): Ditto.
10275         (enum rs6000_reg_class_enum): New enum for the constraints that
10276         vary based on target switches.
10277         (rs6000_constraints): New array to hold the register class for all
10278         of the register constraints that vary based on the switches used.
10279         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
10280         (enum rs6000_builtins): Add unsigned varients for the builtin
10281         declarations returned by target hooks for expanding multiplies,
10282         select, and permute operations.  Add VSX builtins.
10283         (enum rs6000_builtin_type_index): Add entries for VSX.
10284         (V2DI_type_node): Ditto.
10285         (V2DF_type_node): Ditto.
10286         (unsigned_V2DI_type_node): Ditto.
10287         (bool_long_type_node): Ditto.
10288         (intDI_type_internal_node): Ditto.
10289         (uintDI_type_internal_node): Ditto.
10290         (double_type_internal_node): Ditto.
10291
10292         * config/rs6000/altivec.md (whole file): Move all expanders to
10293         vector.md from altivec.md.  Rename insn matching functions to be
10294         altivec_foo.
10295         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
10296         (altivec_vcmp*): Ditto.
10297         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
10298         (VM): New iterator for moves that includes the VSX types.
10299         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
10300         (altivec_vperm_<mode>_uns): New, for unsigned types.
10301         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
10302         (altivec_eq<mode>): Ditto.
10303         (altivec_gt<mode>): Ditto.
10304         (altivec_gtu<mode>): Ditto.
10305         (altivec_eqv4sf): Ditto.
10306         (altivec_gev4sf): Ditto.
10307         (altivec_gtv4sf): Ditto.
10308         (altivec_vcmpbfp_p): Ditto.
10309
10310 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
10311
10312         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
10313         unsigned HWI.
10314
10315 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
10316
10317         PR target/40832
10318         * config/i386/i386.c (output_387_ffreep): Rewrite to use
10319         ASM_SHORT instead of .word.
10320         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
10321         instead of .word in asm template.
10322
10323 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
10324
10325         PR target/37488
10326         * ira-lives.c (bb_has_abnormal_call_pred): New function.
10327         (process_bb_node_lives): Use it.
10328
10329         * ira.c (setup_cover_and_important_classes): Don't setup
10330         ira_important_class_nums.  Add cover classes to the end of
10331         important classes.
10332         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
10333         New.
10334         (find_reg_class_closure): Use reorder_important_classes.
10335
10336         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
10337
10338         * config/i386/i386.c (i386_ira_cover_classes): New function.
10339         (TARGET_IRA_COVER_CLASSES): Redefine.
10340
10341         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
10342         importance of order of cover classes in the array.
10343
10344 2009-07-22  Diego Novillo  <dnovillo@google.com>
10345
10346         * tree-pass.h (TDF_EH): Define.
10347         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
10348         contains TDF_EH, print the EH region number holding GS.
10349         * tree-dump.c (dump_options): Add "eh".
10350         * doc/invoke.texi: Document it.
10351
10352 2009-07-22  Doug Kwan  <dougkwan@google.com>
10353
10354         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
10355
10356 2009-07-22  Michael Matz  <matz@suse.de>
10357
10358         PR tree-optimization/35229
10359         PR tree-optimization/39300
10360
10361         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
10362         (inhibit_phi_insertion): New function.
10363         (insert_into_preds_of_block): Call it for REFERENCEs.
10364         (init_pre): Initialize and finalize scalar evolutions.
10365         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
10366
10367 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
10368
10369         * config/i386/predicates.md (zero_extended_scalar_load_operand):
10370         Use CONST_VECTOR_NUNITS to determine number of elements.
10371
10372 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
10373
10374         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
10375         (U, W): Constraints are now deprecated and will be removed if we
10376         run out of letters.
10377         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
10378         the file.
10379         ("prefetch"): Add the stcmh instruction for prefetching.
10380         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
10381         changes.
10382         (s390_short_displacement): Return always true if compiling for
10383         machines not providing the long displacement facility.
10384         (s390_mem_constraint): Support the new constraint letter Z.
10385         (s390_check_qrst_address): New function.
10386
10387 2009-07-21  DJ Delorie  <dj@redhat.com>
10388
10389         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
10390         alone too.
10391
10392 2009-07-21  Jason Merrill  <jason@redhat.com>
10393
10394         * c-common.c (max_tinst_depth): Increase default to 1024.
10395
10396 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
10397
10398         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
10399         (vec_unpacku_float_lo_v4si): Ditto.
10400
10401 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
10402
10403         PR target/40811
10404         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
10405         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
10406         (builtin_description): Add __builtin_ia32_cvtudq2ps.
10407         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
10408
10409 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
10410
10411         PR tree-optimization/40813
10412         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
10413         it.
10414
10415 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
10416
10417         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
10418         with a NOP_EXPR if needed.
10419
10420 2009-07-21  Paul Brook <paul@codesourcery.com>
10421
10422         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
10423         Terminate debug dump with newline.
10424
10425 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10426
10427         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
10428         Cast "1" to unsigned HOST_WIDE_INT.
10429         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
10430         deposit length to the maximum length - lsb.  Extend length if
10431         HOST_BITS_PER_WIDE_INT is 32.
10432
10433 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
10434
10435         * cgraph.h (constant_pool_htab): New function.
10436         (constant_descriptor_tree): Move from varasm.c.
10437         * varasm.c (constant_pool_htab): New function.
10438         (constant_descriptor_tree): Move to cgraph.h.
10439
10440 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
10441
10442         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
10443
10444 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
10445
10446         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
10447         $(VARRAY_H).
10448
10449 2009-07-20  Xinliang David Li  <davidxl@google.com>
10450
10451         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
10452
10453 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
10454
10455         * config/mips/mips.md (move_type): Add arith.
10456         (type): Handle arith.
10457         (zero_extendsidi2): Rename this into ...
10458         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
10459         (zero_extendsidi2): New expander.
10460         (*zero_extendsidi2_dext): New pattern.
10461
10462 2009-07-20  Nick Clifton  <nickc@redhat.com>
10463
10464         * config.gcc (mips64-*-*): Add definition of tm_defines in order
10465         to set MIPS_ABI_DEFAULT.
10466         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
10467
10468 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
10469
10470         * tree-object-size.c (addr_object_size): Handle unions with
10471         array in it as last field of structs in __bos (, 1) as __bos (, 0).
10472
10473         PR tree-optimization/40792
10474         * tree.c (build_function_type_skip_args): Remove bogus assert.
10475
10476 2009-07-20  Jan Hubicka  <jh@suse.cz>
10477             Martin Jambor  <mjambor@suse.cz>
10478
10479         * cgraph.h (combined_args_to_skip): New field.
10480         * cgraph.c (cgraph_create_virtual_clone): Properly handle
10481         combined_args_to_skip and args_to_skip.
10482         * tree-inline.c (update_clone_info): New function.
10483         (tree_function_versioning): Call update_clone_info.
10484         * cgraphunit.c (cgraph_materialize_clone): Dump materialized
10485         functions.
10486         (cgraph_materialize_all_clones): More extensive dumping, working
10487         with combined_args_to_skip rather than args_to_skip.
10488
10489 2009-07-20  Ira Rosen  <irar@il.ibm.com>
10490
10491         * tree-vectorizer.h (vectorizable_condition): Add parameters.
10492         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
10493         (get_initial_def_for_reduction): Likewise.
10494         (vectorizable_reduction): Skip the check of first operand in case
10495         of COND_EXPR. Add check that it is outer loop vectorization if
10496         nested cycle was detected. Call vectorizable_condition() for
10497         COND_EXPR. If reduction epilogue cannot be created do not fail for
10498         nested cycles (if it is not double reduction). Assert that there
10499         is only one type in the loop in case of COND_EXPR. Call
10500         vectorizable_condition() to vectorize COND_EXPR.
10501         * tree-vect-stmts.c (vectorizable_condition): Update comment.
10502         Add parameters. Allow nested cycles if called from
10503         vectorizable_reduction(). Use reduction vector variable if provided.
10504         (vect_analyze_stmt): Call vectorizable_reduction() before
10505         vectorizable_condition().
10506         (vect_transform_stmt): Update call to vectorizable_condition().
10507
10508 2009-07-20  Christian Bruel  <christian.bruel@st.com>
10509
10510         * config/sh/sh.opt (-mfmovd): Resurrect and document.
10511         * doc/invoke.texi (-mfmovd): Likewise.
10512         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
10513
10514 2009-07-20  Jan Hubicka  <jh@suse.cz>
10515
10516         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
10517         when handling SSA name.
10518
10519 2009-07-19  Jan Hubicka  <jh@suse.cz>
10520
10521         PR tree-optimization/40676
10522         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
10523         virtual PHIs in empty BBs.
10524
10525 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
10526
10527         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
10528         re-expanded the compound use gen_lowpart instead to convert to the
10529         desired mode.
10530
10531 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
10532
10533         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
10534         OUTER_CONST arguments.
10535         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
10536         the new wider mode will be masked off.
10537         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
10538
10539 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
10540
10541         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
10542         high-order bits are zero.
10543
10544 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
10545
10546         * combine.c (simplify_shift_const_1): Split code to determine
10547         shift_mode into ...
10548         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
10549         new bits shifted in are identical to the old sign bit.
10550
10551 2009-07-18  Richard Guenther  <rguenther@suse.de>
10552
10553         PR c/40787
10554         * gimplify.c (gimplify_call_expr): Reject code using results from
10555         functions returning void.
10556
10557 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
10558
10559         * doc/md.texi: Document the new PowerPC "es" constraint.
10560         Document that "m" can include automodified addresses on this target,
10561         and explain how %U must be used.  Extend the "Q" and "Z" documentation
10562         to suggest "es" as well as "m".
10563         * config/rs6000/constraints.md (es): New memory constraint.
10564         (Q, Z): Update strings to match new documentation.
10565
10566 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
10567
10568         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
10569         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
10570         * config/rs6000/predicates.md (volatile_mem_operand): Use
10571         offsettable_nonstrict_memref_p.
10572         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
10573         (*floatunssidf2_internal): Likewise.
10574         (*fix_truncdfsi2_internal): Likewise.
10575         (*fix_trunctfsi2_internal): Likewise.
10576
10577 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
10578
10579         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
10580         atmega32u2 devices.
10581         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
10582
10583 2009-07-17  Richard Guenther  <rguenther@suse.de>
10584
10585         PR c/40401
10586         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
10587         (pass_warn_unused_result): Likewise.
10588         (TODO_set_props): Remove.
10589         * omp-low.c (diagnose_omp_structured_block_errors): Change to
10590         run as a pass.
10591         (pass_diagnose_omp_blocks): Define.
10592         * c-decl.c (pop_file_scope): Do not finalize the CU here.
10593         (c_gimple_diagnostics_recursively): Remove.
10594         (finish_function): Do not call it.
10595         (c_write_global_declarations): Continue after errors.
10596         Finalize the CU here.
10597         * c-gimplify.c (c_genericize): Do not gimplify here.
10598         * c-common.c (c_warn_unused_result): Move ...
10599         * tree-cfg.c (do_warn_unused_result): ... here.
10600         (run_warn_unused_result): New function.
10601         (gate_warn_unused_result): New function.
10602         (pass_warn_unused_result): New pass.
10603         * c-common.h (c_warn_unused_result): Remove.
10604         * flags.h (flag_warn_unused_result): Declare.
10605         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
10606         * opts.c (flag_warn_unused_result): Initialize to false.
10607         * toplev.c (compile_file): Add comment.
10608         * omp-low.c (create_omp_child_function): Do not register
10609         the function with the frontend.
10610         (diagnose_omp_structured_block_errors): Prepare to be
10611         called as optimization pass.
10612         (gate_diagnose_omp_blocks): New function.
10613         (pass_diagnose_omp_blocks): New pass.
10614         * cgraph.h (cgraph_optimize): Remove.
10615         (cgraph_analyze_function): Likewise.
10616         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
10617         * cgraphunit.c (cgraph_lower_function): Lower nested functions
10618         before their parents here.
10619         (cgraph_finalize_function): Not here.
10620         (cgraph_analyze_function): Gimplify functions here.
10621         (cgraph_finalize_compilation_unit): Continue after errors.
10622         Optimize the callgraph from here.
10623         (cgraph_optimize): Make static.
10624         * langhooks.c (write_global_declarations): Finalize the CU.
10625         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
10626         (gimplify_function_tree): Assert we gimplify only once.
10627         Set PROP_gimple_any property.
10628         * tree-nested.c (gimplify_all_functions): New function.
10629         (lower_nested_functions): Gimplify all nested functions.
10630         * gimple.h (diagnose_omp_structured_block_errors): Remove.
10631         * passes.c (init_optimization_passes): Add pass_warn_unused_result
10632         and pass_diagnose_omp_blocks after gimplification.  Do not
10633         set TODO_set_props on all_lowering_passes.
10634         (execute_one_pass): Do not handle TODO_set_props.
10635         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
10636         (gimplify.o): Add tree-pass.h dependency.
10637         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
10638         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
10639         (unsave_r): Likewise.
10640         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
10641         temporary variable.
10642
10643 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
10644
10645         * doc/service.texi (Service): Restore previously removed link,
10646         which isn't broken after all.
10647
10648 2009-07-17  Richard Guenther  <rguenther@suse.de>
10649
10650         PR tree-optimization/40321
10651         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
10652         PHI nodes to the maximal set.
10653         (make_values_for_phi): Add PHI arguments to the maximal set.
10654         (execute_pre): Dump PHI_GEN and the maximal set.
10655
10656 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
10657
10658         PR c++/40780
10659         * gimplify.c (gimplify_conversion): Don't change non-conversions into
10660         VIEW_CONVERT_EXPR.
10661
10662 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
10663
10664         * doc/extend.texi (Nested Functions): Replace broken link with
10665         textual reference.
10666         * doc/service.texi (Service): Remove broken link.
10667
10668 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
10669
10670         PR bootstrap/40781
10671         * builtins.c (expand_builtin_memcmp): Use loc instead of
10672         EXPR_LOCATION (exp).
10673         (expand_builtin_strncmp): Likewise.
10674
10675 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
10676             Manuel López-Ibáñez  <manu@gcc.gnu.org>
10677
10678         PR 40435
10679         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
10680         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
10681         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
10682         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
10683         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
10684         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
10685         tree-inline.c, c-common.c, c-common.h, gimple.c,
10686         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
10687         convert.c: Add location argument to fold_{unary,binary,ternary},
10688         fold_build[123], build_call_expr, build_size_arg,
10689         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
10690         fold_build1_initializer, fold_build2_initializer,
10691         fold_build3_initializer, fold_build_call_array,
10692         fold_build_call_array_initializer, fold_single_bit_test,
10693         omit_one_operand, omit_two_operands, invert_truthvalue,
10694         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
10695         combine_comparisons, fold_builtin_*, fold_call_expr,
10696         build_range_check, maybe_fold_offset_to_address, round_up,
10697         round_down.
10698
10699 2009-07-16  Jason Merrill  <jason@redhat.com>
10700
10701         PR libstdc++/37907
10702         * c-common.c (c_common_reswords): Add __is_standard_layout
10703         and __is_trivial.
10704         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
10705         * doc/implement-cxx.texi: New.
10706         * doc/gcc.texi: Include it.
10707
10708 2009-07-16  DJ Delorie  <dj@redhat.com>
10709
10710         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
10711         compares that may be indirectly affected by previous instructions.
10712
10713 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10714
10715         * builtins.c (do_mpc_arg2): New.
10716         (fold_builtin_2): Fold builtin cpow.
10717         * real.h (HAVE_mpc_pow): New.
10718
10719 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
10720
10721         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
10722         comparison to skip unprofitable schedule
10723
10724 2009-07-16  Simon Baldwin  <simonb@google.com>
10725
10726         * gcc.c (option_map): New flag -no-canonical-prefixes.
10727         * (display_help): Print help text for new flag.
10728         * (process_command): Move options translation and language specifics
10729         and handle new flag early.  Use it to set a function pointer to a
10730         prefix builder.  Replace make_relative_prefix calls with calls to
10731         the function pointed to.  Ignore new flag in regular options handling.
10732         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
10733
10734 2009-07-15  DJ Delorie  <dj@redhat.com>
10735
10736         * config/mep/mep.md (sibcall_internal): Change register to avoid
10737         argument registers.
10738         (sibcall_value_internal): Likewise.
10739
10740 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
10741
10742         PR rtl-optimization/40710
10743         * resource.c (mark_target_live_regs): Reset DF problem to LR.
10744
10745 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
10746
10747         * config/mips/mips.md (*extenddi_truncate<mode>,
10748         *extendsi_truncate<mode>): Change type attribute to move_type
10749         with shift_shift.  Split out code handling exts from here ...
10750         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
10751         pattern.
10752         (*extendhi_truncateqi): Change type attribute to move_type with
10753         shift_shift.  Split out code handling exts from here ...
10754         (*extendhi_truncateqi_exts): ... to this new pattern.
10755
10756 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
10757
10758         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
10759         instead of "and" with inverted sign bit mask value.  Use
10760         "nonimmediate_operand" for operand 1 and operand 2 predicate.
10761         Allocate registers only for operand 4 and operand 5.
10762
10763 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
10764
10765         PR middle-end/40747
10766         * fold-const.c (fold_cond_expr_with_comparison): When folding
10767         < and <= to MIN, make sure the MIN uses the same type as the
10768         comparison's operands.
10769
10770 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
10771
10772         * arm.md (ior_xor): New code iterator.
10773         (split for ior/xor with shift and zero-extend): New split pattern.
10774         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
10775
10776 2009-07-15  Richard Guenther  <rguenther@suse.de>
10777
10778         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
10779         offset member.
10780
10781 2009-07-15  Richard Guenther  <rguenther@suse.de>
10782
10783         PR middle-end/40753
10784         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
10785
10786 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
10787
10788         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
10789         handle 2.6.30 kernel.
10790
10791 2009-07-15  DJ Delorie  <dj@redhat.com>
10792
10793         * config/mep/mep.md (sibcall_internal): Change register to allow
10794         for 24-bit addresses.
10795         (sibcall_value_internal): Likewise.
10796
10797 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
10798
10799         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
10800         that are enabled/disabled by the flags introduced by a previous patch.
10801
10802 2009-07-14  DJ Delorie  <dj@redhat.com>
10803
10804         * config/mep/mep.md (sibcall_internal): Include non-toggling
10805         non-jmp case.
10806         (sibcall_value_internal): Likewise.
10807
10808 2009-07-14  Taras Glek  <tglek@mozilla.com>
10809             Rafael Espindola  <espindola@google.com>
10810
10811         * doc/sourcebuild.texi: Document install-plugin target.
10812         * configure.ac: Added install-plugin target to language makefiles.
10813         * configure: Regenerate.
10814         * Makefile.in (install-plugin): Install more headers,
10815         depend on lang.install-plugin.
10816
10817 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
10818
10819         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
10820         translation.
10821
10822 2009-07-14  DJ Delorie  <dj@redhat.com>
10823
10824         * config/mep/mep.c (mep_vliw_jmp_match): New function.
10825         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
10826         * config/mep/mep.md (sibcall_internal): Change test from
10827         mep_vliw_mode_match to mep_vliw_jmp_match.
10828         (sibcall_value_internal): Likewise.
10829
10830 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
10831
10832         * config/i386/sse.md (copysign<mode>3): New expander.
10833         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
10834         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
10835         Use ix86_build_const_vector.
10836         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
10837         IX86_BUILTIN_CPYSGNPD.
10838         (builtin_description): Add __builtin_ia32_copysignps and
10839         __builtin_ia32_copysignpd.
10840         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
10841         and BUILT_IN_COPYSIGNF.
10842
10843 2009-07-13  Jason Merrill  <jason@redhat.com>
10844
10845         * builtins.c (can_trust_pointer_alignment): New fn.
10846         (get_pointer_alignment): Factor it out from here.
10847         * tree.h: Declare it.
10848
10849 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
10850
10851         * config/rs6000/predicates.md (offsettable_mem_operand): Test
10852         RTX_AUTOINC class.
10853
10854 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
10855
10856         PR debug/40705
10857         PR c++/403057
10858         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
10859
10860 2009-07-14  Richard Guenther  <rguenther@suse.de>
10861             Andrey Belevantsev <abel@ispras.ru>
10862
10863         PR middle-end/40745
10864         * cfgexpand.c (partition_stack_vars): Do not bother to update
10865         alias information when not optimizing.
10866
10867 2009-07-14  Richard Guenther  <rguenther@suse.de>
10868             Andrey Belevantsev <abel@ispras.ru>
10869
10870         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
10871         (pt_solution_set): Likewise.
10872         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
10873         * tree-ssa-structalias.c (pt_solution_set): New function.
10874         * final.c (rest_of_clean_state): Free SSA data structures.
10875         * print-rtl.c (print_decl_name): Remove.
10876         (print_mem_expr): Implement in terms of print_generic_expr.
10877         * alias.c (ao_ref_from_mem): New function.
10878         (rtx_refs_may_alias_p): Likewise.
10879         (true_dependence): Query alias-export info.
10880         (canon_true_dependence): Likewise.
10881         (write_dependence_p): Likewise.
10882         * tree-dfa.c (get_ref_base_and_extent): For void types leave
10883         size unknown.
10884         * emit-rtl.c (component_ref_for_mem_expr): Remove.
10885         (mem_expr_equal_p): Use operand_equal_p.
10886         (set_mem_attributes_minus_bitpos): Do not use
10887         component_ref_for_mem_expr.
10888         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
10889         (update_alias_info_with_stack_vars): Likewise.
10890         (partition_stack_vars): Call update_alias_info_with_stack_vars.
10891         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
10892         explicitly nor clear stmt operands.
10893         Free the decl-to-pointer map.
10894         * tree-optimize.c (execute_free_datastructures): Do not free
10895         SSA data structures here.
10896         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
10897         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
10898         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
10899         dependencies.
10900         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
10901
10902 2009-07-13  DJ Delorie  <dj@redhat.com>
10903
10904         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
10905         unrolling at the right iteration count.
10906
10907         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
10908         calculations.
10909
10910 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
10911
10912         * haifa-sched.c (rank_for_schedule): Introduced flags to
10913         enable/disable individual scheduling heuristics.
10914         * common.opt: Introduced flags to enable/disable individual
10915         heuristics in the scheduler.
10916         * doc/invoke.texi: Introduced flags to enable/disable individual
10917         heuristics in the scheduler.
10918
10919 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
10920
10921         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
10922         config/i386/mingw-tls.c.
10923         * config/i386/mingw-tls.c: Removed.
10924
10925 2009-07-13  Ira Rosen  <irar@il.ibm.com>
10926
10927         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
10928         checks access only relevant statements.
10929         (vectorizable_reduction): Likewise.
10930
10931 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
10932
10933         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
10934         just for 32-bit case.
10935
10936 2009-07-12  Jan Hubicka  <jh@suse.cz>
10937
10938         PR tree-optimization/40585
10939         * except.c (expand_resx_expr): When there already is resume
10940         instruction, produce linked list.
10941         (build_post_landing_pads): Assert that resume is empty.
10942         (connect_post_landing_pads): Handle resume lists.
10943         (dump_eh_tree): Dump resume list.
10944
10945 2009-07-12  Ira Rosen  <irar@il.ibm.com>
10946
10947         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
10948         with additional argument.
10949         * tree-vectorizer.h (enum vect_def_type): Add
10950         vect_double_reduction_def.
10951         (vect_is_simple_reduction): Add argument.
10952         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
10953         indentation.
10954         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
10955         vect_is_simple_reduction with additional argument.
10956         (vect_analyze_loop_operations): Handle exit phi nodes in case of
10957         double reduction.
10958         (reduction_code_for_scalar_code): Handle additional codes by
10959         returning ERROR_MARK for them. Fix comment and indentation.
10960         (vect_is_simple_reduction): Fix comment, add argument to specify
10961         double reduction. Detect double reduction.
10962         (get_initial_def_for_induction): Fix indentation.
10963         (get_initial_def_for_reduction): Fix comment and indentation.
10964         Handle double reduction. Create initial definitions that do not
10965         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
10966         (vect_create_epilog_for_reduction): Fix comment, add argument to
10967         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
10968         epilogue result extraction. Create double reduction phi node and
10969         replace relevant uses.
10970         (vectorizable_reduction): Call vect_is_simple_reduction with
10971         additional argument. Fix indentation. Update epilogue code treatment
10972         according to the changes in reduction_code_for_scalar_code. Check
10973         for double reduction. Call vect_create_epilog_for_reduction with
10974         additional argument.
10975         * tree-vect-stmts.c (process_use): Handle double reduction, update
10976         documentation.
10977         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
10978         (vect_get_vec_def_for_operand): Likewise.
10979
10980 2009-07-12  Danny Smith  <dansmister@gmail.com>
10981
10982         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
10983         dllexport if !TREE_PUBLIC.
10984         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
10985
10986 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
10987
10988         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
10989         (avr_extra_arch_macro) Remove declatation.
10990         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
10991         (avr_extra_arch_macro) Declare as static.
10992         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
10993
10994 2009-07-11  Jan Hubicka  <jh@suse.cz>
10995
10996         PR middle-end/48388
10997         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
10998
10999 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
11000
11001         PR debug/40713
11002         * dwarf2out.c (dw_fde_struct): Add in_std_section and
11003         cold_in_std_section bits.
11004         (dwarf2out_begin_prologue): Initialize them.
11005         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
11006         if already covered by text_section or cold_text_section range.
11007
11008         PR rtl-optimization/40667
11009         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
11010         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
11011         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
11012         * config/i386/i386.c (ix86_minimum_alignment): New function.
11013         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
11014         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
11015         * emit-rtl.c (gen_reg_rtx): Likewise.
11016         * function.c (assign_parms): Likewise.  If nominal_type needs
11017         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
11018         rather than passed_type's alignment.
11019
11020         PR target/40668
11021         * function.c (assign_parm_setup_stack): Adjust
11022         MEM_OFFSET (data->stack_parm) if promoted_mode is different
11023         from nominal_mode on big endian.
11024
11025 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
11026
11027         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
11028
11029 2009-07-10  DJ Delorie  <dj@redhat.com>
11030
11031         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
11032
11033 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
11034
11035         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
11036         attribute.
11037         (thumb2_cbnz): Likewise.
11038
11039 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
11040
11041         PR target/39079
11042         * config.gcc (supported_defaults): Add synci.
11043         (with_synci): Add validation.
11044         (all_defaults): Add synci.
11045         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
11046         ISA_HAS_SYNCI.
11047         (synci): Same.
11048         * config/mips/mips.opt (msynci): New option.
11049         * config/mips/mips.c (mips_override_options): Warn on use of
11050         -msynci for targets that do now support it.
11051         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
11052         msynci.
11053         * gcc/doc/invoke.texi (-msynci): Document the new option.
11054         * doc/install.texi (--with-synci): Document the new option.
11055
11056 2009-07-10  Richard Guenther  <rguenther@suse.de>
11057
11058         PR tree-optimization/40496
11059         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
11060         the PHI result with a compatible type.
11061
11062 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11063
11064         PR 25509
11065         PR 40614
11066         * c.opt (Wunused-result): New.
11067         * doc/invoke.texi: Document it.
11068         * c-common.c (c_warn_unused_result): Use it.
11069
11070 2009-07-09  DJ Delorie  <dj@redhat.com>
11071
11072         * targhooks.c (default_target_can_inline_p): Rename from
11073         default_target_option_can_inline_p.
11074         * targhooks.h (default_target_can_inline_p): Likewise.
11075         * target-def.h (TARGET_CAN_INLINE_P): Rename from
11076         TARGET_OPTION_CAN_INLINE_P.
11077         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
11078         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
11079         (mep_target_can_inline_p): Rename from
11080         mep_target_option_can_inline_p.
11081
11082         PR target/40626
11083         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
11084         registers used to pass vectors.
11085
11086         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
11087
11088 2009-07-09  Tom Tromey  <tromey@redhat.com>
11089
11090         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
11091         * config/mmix/mmix.c: Include dwarf2.h.
11092         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
11093         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
11094         * config/sh/sh.c: Include dwarf2.h.
11095         * config/i386/i386.c: Include dwarf2.h.
11096         * Makefile.in (DWARF2_H): Remove 'elf'.
11097         * except.c: Include dwarf2.h.
11098         * unwind-dw2.c: Include dwarf2.h.
11099         * dwarf2out.c: Include dwarf2.h.
11100         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
11101         * unwind-dw2-fde.c: Include dwarf2.h.
11102         * dwarf2asm.c: Include dwarf2.h.
11103
11104 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
11105
11106         * haifa-sched.c (insn_finishes_cycle_p): New static function.
11107         (max_issue): Use it.
11108         * sched-int.h (struct sched_info: insn_finishes_block_p): New
11109         scheduler hook.
11110         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
11111         (region_sched_info): Update.
11112         * sched-ebb.c (ebb_sched_info): Update.
11113         * modulo-sched.c (sms_sched_info): Update.
11114         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
11115
11116 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
11117
11118         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
11119
11120 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
11121
11122         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
11123
11124 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
11125
11126         PR middle-end/40692
11127         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
11128         arg1 with arg01 if arg1 is already INTEGER_CST.
11129
11130 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
11131
11132         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
11133         Transform (and (truncate)) into (truncate (and)).
11134
11135 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
11136
11137         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
11138         creating LHS paradoxical subregs.  Fix surrounding returns to
11139         use NULL_RTX rather than 0.
11140
11141 2009-07-08  DJ Delorie  <dj@redhat.com>
11142
11143         * config/mep/mep.c (mep_option_can_inline_p): New.
11144         (TARGET_OPTION_CAN_INLINE_P): Define.
11145
11146 2009-07-08  Mark Wielaard  <mjw@redhat.com>
11147
11148         PR debug/40659
11149         * dwarf2out.c (add_data_member_location_attribute): When we have
11150         only a constant offset don't emit a new location description using
11151         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
11152         dwarf_version > 2.
11153
11154 2009-07-08  Richard Henderson  <rth@redhat.com>
11155
11156         PR target/38900
11157         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
11158         (enum reg_class): Add CLOBBERED_REGS.
11159         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
11160         * config/i386/i386.c (ix86_conditional_register_usage): Moved
11161         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
11162         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
11163         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
11164         force 64-bit sibcalls into R11.
11165         * config/i386/constraints.md (U): New constraint.
11166         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
11167         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
11168         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
11169
11170 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
11171
11172         * basic-block.h (dump_regset, debug_regset): Remove duplicate
11173         prototypes.
11174         * c-objc-common.h (c_initialize_diagnostics): Ditto.
11175         * ebitmap.h (dump_ebitmap): Ditto.
11176         * optabs.h (optab_libfunc): Ditto.
11177         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
11178         * tree-flow.h (vect_can_force_dr_alignment_p,
11179         get_vectype_for_scalar_type): Ditto.
11180         (vectorize_loops): Move prototype to ...
11181         * tree-vectorizer.h: ... here. Also, adjust comment.
11182         (vect_set_verbosity_level): Remove duplicate prototype.
11183         * tree-ssa-loop.c: Include tree-vectorizer.h.
11184         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
11185
11186 2009-07-08  Nick Clifton  <nickc@redhat.com>
11187
11188         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
11189         forward slash.
11190
11191 2009-07-08  DJ Delorie  <dj@redhat.com>
11192
11193         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
11194         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
11195         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
11196         written to.
11197         * config/mep/intrinsics.md: Regenerated.
11198         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
11199         registers when asm() or calls are detected.
11200
11201 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11202
11203         PR c++/31246
11204         * gimplify.c (gimplify_expr): Propagate no_warning flag when
11205         gimplifying.
11206         * gimple (gimple_build_call_from_tree): Likewise.
11207         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
11208         no_warning flag before warning.
11209
11210 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11211
11212         * tree.c (set_expr_locus): Remove.
11213         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
11214         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
11215         EXPR_LOCATION.
11216         * gimplify.c (internal_get_tmp_var): Likewise.
11217         (gimplify_call_expr): Likewise.
11218         (gimplify_one_sizepos): Likewise.
11219
11220 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
11221
11222         PR debug/40666
11223         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
11224         to variables for debugging purposes.
11225
11226 2009-06-23  Mark Loeser  <mark@halcy0n.com>
11227
11228         PR build/40010
11229         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
11230
11231 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11232
11233         * pretty-print.c (pp_base_format): Remove %J.
11234         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
11235         gcc_cxxdiag_char_table): Likewise.
11236         (init_dynamic_diag_info): Likewise.
11237
11238 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11239
11240         * pretty-print.c (pp_base_format): Remove %H.
11241         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
11242         gcc_cxxdiag_char_table): Likewise.
11243         (init_dynamic_diag_info): Likewise.
11244         * config/mep/mep.c (mep_select_section): Likewise.
11245
11246 2009-07-07  Duncan Sands  <baldrick@free.fr>
11247
11248         * final.c (pass_clean_state): Give the pass a name.
11249         * passes.c (pass_rest_of_compilation): Likewise.
11250         * tree-optimize.c (pass_all_optimizations): Likewise.
11251
11252 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
11253
11254         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
11255         an extra 'decl' for error_at.
11256
11257 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
11258
11259         PR middle-end/40669
11260         * tree-tailcall.c (adjust_return_value_with_ops,
11261         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
11262         if it has complex or vector type.
11263
11264 2009-07-07  Olivier Hainque  <hainque@adacore.com>
11265
11266         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
11267         pthread symbols.
11268
11269 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
11270
11271         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
11272
11273 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11274
11275         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
11276         * c-decl.c: Likewise.
11277         * function.c: Likewise.
11278         * varasm.c: Likewise.
11279         * tree-ssa.c: Likewise.
11280         * c-common.c: Likewise.
11281         * tree-cfg.c: Likewise.
11282         * config/spu/spu.c: Likewise.
11283         * config/ia64/ia64.c: Likewise.
11284         * config/v850/v850.c: Likewise.
11285
11286 2009-07-06  DJ Delorie  <dj@redhat.com>
11287
11288         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
11289         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
11290         unspecified accesses to control registers.
11291         * config/mep/intrinsics.md: Regenerate.
11292         * config/mep/intrinsics.h: Regenerate.
11293         * config/mep/mep-intrin.h: Regenerate.
11294
11295 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11296
11297         * c-lex.c: Replace %H by an explicit location. Update all calls.
11298         * c-common.c: Likewise.
11299         * c-decl.c: Likewise.
11300         * c-typeck.c: Likewise.
11301         * fold-const.c: Likewise.
11302         * gimplify.c: Likewise.
11303         * stmt.c: Likewise.
11304         * tree-cfg.c: Likewise.
11305         * tree-ssa-loop-niter.c: Likewise.
11306         * tree-vrp.c: Likewise.
11307         * value-prof.c: Likewise.
11308
11309 2009-07-06  Diego Novillo  <dnovillo@google.com>
11310
11311         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
11312         if it has one.  Handle cases where VAR does not have an
11313         annotation or cfun is NULL.
11314
11315 2009-07-06  Diego Novillo  <dnovillo@google.com>
11316
11317         * tree.c: Include debug.h.
11318         (initialize_tree_contains_struct): New.
11319         (init_ttree): Call it.
11320         (tree_node_structure_for_code): Factor out of ...
11321         (tree_node_structure): ... here.
11322         * treestruct.def (TS_PHI_NODE): Remove.
11323         (TS_GIMPLE_STATEMENT): Remove.
11324
11325 2009-07-06  Diego Novillo  <dnovillo@google.com>
11326
11327         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
11328         (debug_tree_chain): Handle cycles.
11329
11330 2009-07-06  Nick Clifton  <nickc@redhat.com>
11331             DJ Delorie  <dj@redhat.com>
11332
11333         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
11334         __FMOVD_ENABLED__ is defined.
11335         * config/sh/sh.h
11336         (TARGET_FMOVD): Provide a default definition.
11337         (MASK_FMOVD): Likewise.
11338         (TARGET_CPU_CPP_BUILTINS): Define
11339         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
11340         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
11341         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
11342         (split for DF load from memory into register): Also handle
11343         MEMs which consist of REG+DISP addressing.
11344         (split for DF store from register to memory): Likewise.
11345         (movsf_ie): Always use single fp_mode.
11346         * config/sh/sh.c (sh_override_options): Do not automatically
11347         enable TARGET_MOVD for the SH2A when supporting doubles - leave
11348         that to the -mfmovd command line switch.
11349         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
11350         (fldi_ok): Always allow.
11351         * config/sh/sh.opt (mfmovd): Remove this switch.
11352         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
11353
11354 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
11355             Kaz Kojima  <kkojima@gcc.gnu.org>
11356
11357         PR rtl-optimization/30807
11358         * postreload.c (reload_combine): For every new use of REG_SUM,
11359         record the use of BASE.
11360
11361 2009-07-06  Jan Hubicka  <jh@suse.cz>
11362
11363         * params.def: Revert my accidental commit at 2009-06-30.
11364
11365 2009-07-04  Ian Lance Taylor  <iant@google.com>
11366
11367         PR target/40636
11368         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
11369         EXPORTED_CONST.
11370         (mingw_format_attribute_overrides): Likewise.
11371
11372 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
11373
11374         PR debug/40596
11375         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
11376         don't check cfa.reg.  Instead of cfa.indirect use
11377         fde && fde->drap_reg != INVALID_REGNUM test.
11378
11379 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
11380
11381         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
11382
11383 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
11384
11385         PR target/40587
11386         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
11387
11388 2009-07-03  Richard Guenther  <rguenther@suse.de>
11389
11390         PR tree-optimization/40640
11391         * tree-switch-conversion.c (build_arrays): Perform arithmetic
11392         in original type.
11393
11394 2009-07-03  Jan Hubicka  <jh@suse.cz>
11395
11396         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
11397         for size, reduce amount of inlining.
11398
11399 2009-07-03  Richard Guenther  <rguenther@suse.de>
11400
11401         PR middle-end/34163
11402         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
11403         if t +- x is known to not overflow and the conversion widens the
11404         operation.
11405         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
11406
11407 2009-07-03  Jan Hubicka  <jh@suse.cz>
11408
11409         * ipa-pure-const.c (analyze): Update loop optimizer init.
11410         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
11411         try_remove_empty_loop, remove_empty_loops): Remove.
11412         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
11413         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
11414         to mark regular loops as neccesary.
11415         (degenerate_phi_p): New function.
11416         (propagate_necessity, remove_dead_phis): Use it.
11417         (forward_edge_to_pdom): Likewise.
11418         (eliminate_unnecessary_stmts): Take care to remove uses of results of
11419         virtual PHI nodes that became unreachable.
11420         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
11421         * tree-flow.h (remove_empty_loops): Remove.
11422         * passes.c (init_optimization_passes): Remove.
11423
11424 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
11425
11426         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
11427         can_create_pseudo_p.
11428         (*fix_trunc<mode>_i387_1): Ditto.
11429         (*floathi<mode>2_1): Ditto.
11430         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
11431         (*fistdi2_1): Ditto.
11432         (*fist<mode>2_1): Ditto.
11433         (frndintxf2_floor): Ditto.
11434         (*fist<mode>2_floor_1): Ditto.
11435         (frndintxf2_ceil): Ditto.
11436         (*fist<mode>2_ceil_1): Ditto.
11437         (frndintxf2_trunc): Ditto.
11438         (frndintxf2_mask_pm): Ditto.
11439         (fxam<mode>2_i387_with_temp): Ditto.
11440         * config/i386/sse.md (mulv16qi3): Ditto.
11441         (*sse2_mulv4si3): Ditto.
11442         (mulv2di3): Ditto.
11443         (sse4_2_pcmpestr): Ditto.
11444         (sse4_2_pcmpistr): Ditto.
11445
11446 2009-07-03  Jan Hubicka  <jh@suse.cz>
11447
11448         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
11449         (mark_stmt_necessary): Set it.
11450         (mark_operand_necessary): Set it.
11451         (mark_control_dependent_edges_necessary): Set it.
11452         (mark_virtual_phi_result_for_renaming): New function.
11453         (get_live_post_dom): New function.
11454         (forward_edge_to_pdom): New function.
11455         (remove_dead_stmt): Fix handling of control dependences.
11456         (tree_dce_init): Init new bitmap.
11457         (tree_dce_done): Free it.
11458
11459 2009-07-02  Richard Guenther  <rguenther@suse.de>
11460
11461         PR bootstrap/40617
11462         * tree-ssa-structalias.c (new_var_info): Initialize
11463         is_restrict_var.
11464
11465 2009-07-02  Jan Hubicka  <jh@suse.cz>
11466
11467         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
11468         local.
11469
11470 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
11471
11472         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
11473         instead of recomputing it.  Adjust calls.
11474         (emit_store_flag): Adjust recursive calls.
11475
11476 2009-07-02  Richard Guenther  <rguenther@suse.de>
11477
11478         * tree-ssa-live.c (remove_unused_locals): Do not remove
11479         heap variables.
11480         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
11481         of DECL_EXTERNAL for HEAP variables.
11482         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
11483         HEAP variables.  Do not adjust RESTRICT vars.
11484         (find_what_var_points_to): Nobody cares if something
11485         points to READONLY.
11486
11487 2009-07-02  Ben Elliston  <bje@au.ibm.com>
11488
11489         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
11490         pc_low and pc_high declarations to the top of the function.
11491
11492 2009-07-01  DJ Delorie  <dj@redhat.com>
11493
11494         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
11495         registers as fixed.
11496         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
11497         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
11498         unspecified accesses to control registers.
11499         * config/mep/intrinsics.md: Regenerate.
11500         * config/mep/intrinsics.h: Regenerate.
11501         * config/mep/mep-intrin.h: Regenerate.
11502
11503 2009-07-01  Anthony Green  <green@moxielogic.com>
11504
11505         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
11506         instruction when possible.
11507         (moxie_expand_prologue): Ditto.  Also, save an instruction and
11508         some complexity by popping off of $r12 instead of $sp.
11509         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
11510         operands.
11511
11512 2009-07-01  Richard Henderson  <rth@redhat.com>
11513
11514         PR bootstrap/40347
11515         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
11516         contained no insns, reposition note before last insn.
11517
11518 2009-07-01  Richard Henderson  <rth@redhat.com>
11519
11520         PR debug/40431
11521         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
11522         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
11523
11524 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
11525
11526         PR bootstrap/40558
11527         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
11528         darwin9 for printing reg addresses with %y.
11529
11530 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
11531
11532         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
11533         truncation from operands in binary operations.
11534
11535 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
11536
11537         Revert:
11538         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
11539         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
11540         subreg of op0 to the original op0.
11541
11542         * expmed.c (store_bit_field_1): Use a temporary as the destination
11543         instead of a paradoxical subreg when we need to truncate the result.
11544
11545 2009-07-01  DJ Delorie  <dj@redhat.com>
11546
11547         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
11548         names to VLIW variants.
11549         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
11550         * config/mep/intrinsics.md: Regenerate.
11551         * config/mep/intrinsics.h: Regenerate.
11552         * config/mep/mep-intrin.h: Regenerate.
11553
11554 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
11555
11556         PR debug/40462
11557         * jump.c (returnjump_p): Revert last patch.
11558         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
11559
11560 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11561
11562         PR target/40575
11563         * pa.md (casesi32p): Use jump table label to determine the offset
11564         of the jump table.
11565         (casesi64p): Likewise.
11566
11567         * pa.c (forward_branch_p): Return bool type.  Use instruction
11568         addresses when available.  Assert that INSN has a jump label.
11569         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
11570         have a jump label.
11571
11572 2009-07-01  Richard Guenther  <rguenther@suse.de>
11573
11574         PR tree-optimization/19831
11575         * tree-ssa-dce.c (propagate_necessity): Calls to functions
11576         that only act as barriers do not make any previous stores necessary.
11577         * tree-ssa-structalias.c (handle_lhs_call): Delay making
11578         HEAP variables global, do not add a constraint from nonlocal.
11579         (find_func_aliases): Handle escapes through return statements.
11580         (compute_points_to_sets): Make escaped HEAP variables global.
11581
11582 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
11583
11584         PR bootstrap/40597
11585         * expmed.c (emit_store_flag): Perform a conversion if necessary,
11586         after reducing a DImode cstore to SImode.
11587
11588 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
11589
11590         * expr.c (expand_expr_real_1): Reinstate fallthrough to
11591         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
11592
11593 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
11594
11595         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
11596         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
11597         to 0.
11598         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
11599         and umod_optab if TARGET_BSD_DIVMOD.
11600         * config/vax/lib1funcs.asm: New file.
11601         * config/vax/t-linux: New file.
11602         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
11603
11604 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
11605
11606         PR c++/40566
11607         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
11608         to type arguments that have void type.
11609
11610         PR debug/40573
11611         * dwarf2out.c (gen_formal_parameter_die): Call
11612         equate_decl_number_to_die if node is different from origin.
11613
11614 2009-06-30  Anthony Green  <green@moxielogic.com>
11615
11616         Clean up moxie port for --enable-build-with-cxx.
11617         * config/moxie/moxie.c (moxie_function_value): First two
11618         parameters are const_tree, not tree.
11619         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
11620         (REG_CLASS_NAMES): Ditto.
11621         (REGNO_REG_CLASS): Ditto.
11622         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
11623         (moxie_function_value): Fix constyness of arguments.
11624
11625 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
11626
11627         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
11628         finalize_size_functions before further processing.
11629         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
11630         (variable_size): Call self_referential_size on size expressions
11631         that contain a PLACEHOLDER_EXPR.
11632         (size_functions): New static variable.
11633         (copy_self_referential_tree_r): New static function.
11634         (self_referential_size): Likewise.
11635         (finalize_size_functions): New global function.
11636         * tree.c: Include tree-inline.h.
11637         (push_without_duplicates): New static function.
11638         (find_placeholder_in_expr): New global function.
11639         (substitute_in_expr) <tcc_declaration>: Return the replacement object
11640         on equality.
11641         <tcc_expression>: Likewise.
11642         <tcc_vl_exp>: If the replacement object is a constant, try to inline
11643         the call in the expression.
11644         * tree.h (finalize_size_functions): Declare.
11645         (find_placeholder_in_expr): Likewise.
11646         (FIND_PLACEHOLDER_IN_EXPR): New macro.
11647         (substitute_placeholder_in_expr): Update comment.
11648         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
11649         is true.
11650         (copy_tree_body_r): Likewise.
11651         (copy_tree_body): New static function.
11652         (maybe_inline_call_in_expr): New global function.
11653         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
11654         (maybe_inline_call_in_expr): Declare.
11655         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
11656         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
11657         GIMPLE_H.
11658
11659 2009-06-30  Richard Guenther  <rguenther@suse.de>
11660
11661         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
11662         continue walking.
11663         (propagate_necessity): Do not mark reaching defs of stores
11664         as necessary.
11665
11666 2009-06-30  Jan Hubicka  <jh@suse.cz>
11667
11668         * cfgloopanal.c (check_irred): Move into ...
11669         (mark_irreducible_loops): ... here; return true if ireducible
11670         loops was found.
11671         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
11672         (analyze_function): Try to prove loop finiteness.
11673         * cfgloop.h (mark_irreducible_loops): Update prototype.
11674         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
11675
11676 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
11677
11678         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
11679
11680 2009-06-30  Ira Rosen  <irar@il.ibm.com>
11681
11682         PR tree-optimization/40542
11683         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
11684         types.
11685
11686 2009-06-30  Martin Jambor  <mjambor@suse.cz>
11687
11688         PR tree-optimization/40582
11689         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
11690         than useless_type_conversion_p.
11691         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
11692         proper place.
11693
11694 2009-06-30  Martin Jambor  <mjambor@suse.cz>
11695
11696         PR middle-end/40554
11697         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
11698
11699 2009-06-30  Richard Guenther  <rguenther@suse.de>
11700
11701         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
11702         use ao_ref references.
11703         (walk_aliased_vdefs): Likewise.
11704         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
11705         * tree-ssa-dce.c (struct ref_data): Remove.
11706         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
11707         (mark_aliased_reaching_defs_necessary): Adjust.
11708         (mark_all_reaching_defs_necessary_1): Likewise.
11709
11710 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
11711
11712         PR boostrap/40597
11713         * expmed.c (emit_cstore): New name of emit_store_flag_1.
11714         (emit_store_flag_1): Extract from emit_store_flag, adjust
11715         calls to (what now is) emit_cstore.
11716         (emit_store_flag): Call emit_store_flag_1 and also use it
11717         for what used to be recursive calls.
11718
11719 2009-06-30  Wei Guozhi  <carrot@google.com>
11720
11721         PR/40416
11722         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
11723         if the target bb post dominates from bb.
11724         * config/i386/i386.c (memory_address_length): Check existence of base
11725         register before using it.
11726
11727 2009-06-30  Nick Clifton  <nickc@redhat.com>
11728             DJ Delorie  <dj@redhat.com>
11729
11730         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
11731         __FMOVD_ENABLED__ is defined.
11732         * config/sh/sh.h
11733         (TARGET_FMOVD): Provide a default definition.
11734         (MASK_FMOVD): Likewise.
11735         (TARGET_CPU_CPP_BUILTINS): Define
11736         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
11737         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
11738         two fmov instructions depending upon whether TARGET_FMOVD is
11739         enabled.
11740         (split for DF load from memory into register): Also handle
11741         MEMs which consist of REG+DISP addressing.
11742         (split for DF store from register to memory): Likewise.
11743         * config/sh/sh.opt (mfmovd): Remove this switch.
11744         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
11745         * config/sh/sh.c (sh_override_options): Do not automatically
11746         enable TARGET_MOVD for the SH2A when supporting doubles - leave
11747         that to the -mfmovd command line switch.
11748
11749         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
11750         the SH4 and SH4A.
11751         (fldi_ok): Always allow.
11752         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
11753
11754 2009-06-29  DJ Delorie  <dj@redhat.com>
11755
11756         * doc/install.texi (mep-x-elf): Correct chip's full name.
11757
11758 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
11759
11760         * doc/extend.texi: Fix typo.
11761
11762 2009-06-29  Tom Tromey  <tromey@redhat.com>
11763
11764         * dwarf2.h: Remove.
11765         * Makefile.in (DWARF2_H): New variable.
11766         (except.o): Use it.
11767         (dwarf2out.o): Likewise.
11768         (dwarf2asm.o): Likewise.
11769         * config/i386/t-i386: Use DWARF2_H.
11770         * except.c: Include elf/dwarf2.h.
11771         * unwind-dw2.c: Include elf/dwarf2.h.
11772         * dwarf2out.c: Include elf/dwarf2.h.
11773         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
11774         <dtprel>: New field.
11775         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
11776         (size_of_loc_descr): Likewise.
11777         (output_loc_operands_raw): Likewise.
11778         (output_loc_operands): Handle new dtprel field.
11779         (loc_checksum): Update.
11780         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
11781         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
11782         * unwind-dw2-fde.c: Include elf/dwarf2.h.
11783         * dwarf2asm.c: Include elf/dwarf2.h.
11784         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
11785         * config/mmix/mmix.c: Include elf/dwarf2.h.
11786         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
11787         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
11788         * config/sh/sh.c: Include elf/dwarf2.h.
11789         * config/i386/i386.c: Include elf/dwarf2.h.
11790
11791 2009-06-29  DJ Delorie  <dj@redhat.com>
11792
11793         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
11794
11795         * doc/extend.texi: Add MeP attributes and pragmas.
11796         * doc/invoke.text: Add MeP Options.
11797         * doc/contrib.texi: Add MeP contribution.
11798         * doc/md.texi: Add MeP constraints.
11799         * doc/install.texi: Add MeP target.
11800
11801 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
11802
11803         * target.h (struct gcc_target): Add frame_pointer_required field.
11804         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
11805         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
11806         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
11807         hook.
11808         * reload1.c (update_eliminables): (Ditto.).
11809         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
11810         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
11811         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
11812
11813         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
11814
11815         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
11816         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
11817         (arm_frame_pointer_required): New function.
11818
11819         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
11820         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11821         (avr_frame_pointer_required_p): Declare as static.
11822         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
11823
11824         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
11825         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
11826         (bfin_frame_pointer_required): Make as static, change return type
11827         to bool.
11828         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
11829
11830         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
11831         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11832         (cris_frame_pointer_required): New function.
11833
11834         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
11835
11836         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
11837         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11838         (fr30_frame_pointer_required): New function.
11839
11840         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
11841         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
11842         (frv_frame_pointer_required): Make as static, change return type
11843         to bool.
11844         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
11845
11846         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
11847         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11848         (ix86_frame_pointer_required): Make as static, change return type to
11849         bool.
11850         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
11851
11852         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
11853         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11854
11855         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
11856
11857         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
11858
11859         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
11860
11861         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
11862         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11863         (mips_frame_pointer_required): Make as static.
11864         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
11865
11866         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
11867         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11868         (mmix_frame_pointer_required): Mew function.
11869
11870         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
11871         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11872
11873         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
11874
11875         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
11876
11877         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
11878
11879         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
11880         (CAN_ELIMINATE): Redefine.
11881         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11882         (sparc_frame_pointer_required): New function.
11883         (sparc_can_eliminate): New function.
11884         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
11885
11886         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
11887         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
11888
11889         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
11890         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
11891         (xtensa_frame_pointer_required): Make as static, change return type
11892         to bool.
11893         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
11894         Remove.
11895
11896 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
11897
11898         * doc/plugins.texi: Document PLUGIN_START_UNIT.
11899         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
11900         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
11901         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
11902         (register_callback): Handle PLUGIN_START_UNIT.
11903         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
11904
11905 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
11906
11907         * tree.c (process_call_operands): Propagate TREE_READONLY from the
11908         operands.
11909         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
11910         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
11911
11912 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
11913
11914         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
11915         move cost.
11916
11917 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
11918
11919         * doc/extend.texi (Additional Floating Types): __float128 is also
11920         supported on i386 targets.
11921
11922 2009-06-29  Richard Guenther  <rguenther@suse.de>
11923
11924         PR middle-end/14187
11925         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
11926         flag.
11927         (pt_solutions_same_restrict_base): Declare.
11928         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
11929         flag.
11930         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
11931         (make_constraint_from, make_copy_constraint): Move earlier.
11932         (make_constraint_from_heapvar): New function.
11933         (make_constraint_from_restrict): Likewise.
11934         (handle_lhs_call): Use it.
11935         (find_func_aliases): Use it to track conversions to restrict
11936         qualified pointers.
11937         (struct fieldoff): Add only_restrict_pointers flag.
11938         (push_fields_onto_fieldstack): Initialize it.
11939         (create_variable_info_for): Track global restrict qualified pointers.
11940         (intra_create_variable_infos): Use make_constraint_from_heapvar.
11941         Track restrict qualified pointer arguments.
11942         (set_uids_in_ptset): Use varinfo is_global_var flag.
11943         (find_what_var_points_to): Set the vars_contains_restrict flag.
11944         Always create the points-to solution for sets including restrict tags.
11945         (pt_solutions_same_restrict_base): New function.
11946         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
11947         qualified pointers use pt_solutions_same_restrict_base as
11948         additional source for disambiguation.
11949
11950 2009-06-29  Richard Guenther  <rguenther@suse.de>
11951
11952         PR middle-end/38212
11953         * alias.c (find_base_decl): Remove.
11954         (get_deref_alias_set_1): Remove restrict handling.
11955         * c-common.c (c_apply_type_quals_to_decl): Do not set
11956         DECL_POINTER_ALIAS_SET.
11957         * gimplify.c (find_single_pointer_decl_1): Remove.
11958         (find_single_pointer_decl): Likewise.
11959         (internal_get_tmp_var): Remove restrict handling.
11960         (gimple_regimplify_operands): Likewise.
11961         * omp-low.c (expand_omp_atomic_pipeline): Do not set
11962         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
11963         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
11964         * tree.c (restrict_base_for_decl): Remove.
11965         (init_ttree): Do not allocate it.
11966         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
11967         LABEL_DECL_UID for label decls.
11968         (copy_node_stat): Do not copy restrict information.
11969         (decl_restrict_base_lookup): Remove.
11970         (decl_restrict_base_insert): Likewise.
11971         (print_restrict_base_statistics): Likewise.
11972         (dump_tree_statistics): Do not call print_restrict_base_statistics.
11973         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
11974         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
11975         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
11976         (LABEL_DECL_UID): Adjust.
11977         (DECL_BASED_ON_RESTRICT_P): Remove.
11978         (DECL_GET_RESTRICT_BASE): Likewise.
11979         (SET_DECL_RESTRICT_BASE): Likewise.
11980         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
11981
11982         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
11983         instead of DECL_POINTER_ALIAS_SET.
11984         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
11985         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
11986         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
11987
11988 2009-06-29  Richard Guenther  <rguenther@suse.de>
11989
11990         PR tree-optimization/40579
11991         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
11992         the IL to simplify has constants that overflowed.
11993
11994 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
11995
11996         PR tree-optimization/40550
11997         * tree-vect-generic.c (expand_vector_operations_1): Compute in
11998         vector_compute_type only when the size of vector_compute_type is
11999         less than the size of type.
12000
12001 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
12002
12003         * fold-const.c (contains_label_1): Fix comments.
12004         (contains_label_p): Do not walk trees multiple time.
12005
12006 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
12007
12008         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
12009         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
12010         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
12011         ix86_fp_comparison_operator.
12012         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
12013         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
12014         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
12015         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
12016         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
12017         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
12018         (related splits): Change predicate to ix86_fp_comparison_operator.
12019         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
12020         instead of ix86_fp_comparison_codes.
12021         (ix86_trivial_fp_comparison_operator,
12022         ix86_fp_comparison_operator): New.
12023         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
12024         (ix86_expand_compare): Eliminate last two parameters.
12025         (ix86_fp_jump_nontrivial_p): Kill.
12026         * config/i386/i386.c (put_condition_code): Eliminate call to
12027         ix86_fp_comparison_codes and subsequent assertion.
12028         (ix86_fp_comparison_codes): Eliminate.
12029         (ix86_fp_swap_condition): New.
12030         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
12031         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
12032         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
12033         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
12034         and ix86_fp_swap_condition.
12035         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
12036         Use ix86_fp_comparison_strategy.
12037         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
12038         (ix86_fp_jump_nontrivial_p): Eliminate.
12039         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
12040         call to ix86_expand_compare.
12041         (ix86_split_fp_branch, ix86_expand_setcc,
12042         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
12043         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
12044
12045 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
12046
12047         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
12048         related to jump_clobbers.
12049         * config/arm/arm.md (conds): Remove jump_clob case.
12050         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
12051         splits): Change comparison_operator to arm_comparison_operator.
12052         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
12053         Eliminate.
12054
12055 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
12056
12057         * dojump.c (do_compare_rtx_and_jump): Try swapping the
12058         condition for floating point modes.
12059         * expmed.c (emit_store_flag_1): Move here a bigger part
12060         of emit_store_flag.
12061         (emit_store_flag): Try swapping the condition for floating point
12062         modes.
12063         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
12064
12065 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
12066
12067         * expr.c (expand_expr_real_1): Just use do_store_flag.
12068         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
12069         emit_store_flag_force.
12070         * expmed.c (emit_store_flag_force): Copy here trick
12071         previously in expand_expr_real_1.  Try reversing the comparison.
12072         (emit_store_flag_1): Work if target is NULL.
12073         (emit_store_flag): Work if target is NULL, using the result mode
12074         from the comparison.  Use split_comparison, restructure final part
12075         to simplify conditionals.
12076
12077 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
12078
12079         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
12080         * dojump.c (do_jump): Change handling of floating-point
12081         ops to use just do_compare_and_jump.
12082         (split_comparison): New.
12083         (do_compare_rtx_and_jump): Add here logic coming previously
12084         in do_jump, using split_comparison.
12085
12086 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
12087
12088         PR target/40489
12089         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
12090
12091 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
12092
12093         * tree-ssa-alias.c: Fix unintentional commit.
12094
12095 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
12096
12097         * passes.c (execute_one_pass): Fix unintentional commit.
12098
12099 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
12100
12101         * df-problems.c (df_set_seen, df_unset_seen): Delete.
12102         (df_rd_local_compute, df_md_local_compute): Inline them.
12103
12104         (df_md_scratch): New.
12105         (df_md_alloc, df_md_free): Allocate/free it.
12106         (df_md_local_compute): Only include live registers in init.
12107         (df_md_transfer_function): Prune the in-set computed by
12108         the confluence function, and the gen-set too.
12109
12110 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
12111
12112         PR rtl-optimization/26854
12113         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
12114         * df-problems.c (df_rd_add_problem): Fix comment.
12115         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
12116         df_md_simulate_artificial_defs_at_top,
12117         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
12118         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
12119         df_md_transfer_function, df_md_init, df_md_confluence_0,
12120         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
12121         problem_MD, df_md_add_problem): New.
12122         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
12123         df_md_get_bb_info): New.
12124         (DF_LAST_PROBLEM_PLUS1): Adjust.
12125
12126         * Makefile.in (fwprop.o): Include domwalk.h.
12127         * fwprop.c: Include domwalk.h.
12128         (reg_defs, reg_defs_stack): New.
12129         (bitmap_only_bit_between): Remove.
12130         (process_defs): New.
12131         (process_uses): Use reg_defs and local_md instead of
12132         bitmap_only_bit_between and local_rd.
12133         (single_def_use_enter_block): New, from build_single_def_use_links.
12134         (single_def_use_leave_block): New.
12135         (build_single_def_use_links): Remove code moved to
12136         single_def_use_enter_block, invoke domwalk.
12137         (use_killed_between): Adjust comment.
12138
12139 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
12140
12141         * bitmap.h (bitmap_ior_and_into): New.
12142         * bitmap.c (bitmap_ior_and_into): New.
12143
12144 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
12145
12146         * domwalk.h (struct dom_walk_data): Remove all callbacks except
12147         before_dom_children_before_stmts and after_dom_children_after_stmts.
12148         Rename the two remaining callbacks to just before_dom_children and
12149         after_dom_children. Remove other GIMPLE statement walking bits.
12150         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
12151         * graphite.c: Do not include domwalk.h.
12152         * tree-into-ssa.c (interesting_blocks): New global.
12153         (struct mark_def_sites_global_data): Remove it and names_to_rename.
12154         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
12155         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
12156         now that they're not domwalk callbacks.
12157         (rewrite_initialize_block): Rename to...
12158         (rewrite_enter_block): ... this, place after called functions.  Test
12159         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
12160         (rewrite_finalize_block): Rename to...
12161         (rewrite_leave_block): ... this, place after called functions.
12162         (rewrite_update_init_block): Rename to...
12163         (rewrite_update_enter_block): ... this, place after called functions.
12164         Test interesting_blocks, call rewrite_update_stmt and
12165         rewrite_update_phi_arguments.
12166         (rewrite_update_fini_block): Rename to...
12167         (rewrite_leave_block): ... this, place after called functions.
12168         (rewrite_blocks): Remove last argument, simplify initialization of
12169         walk_data.
12170         (mark_def_sites_initialize_block): Rename to...
12171         (mark_def_sites_block): ... this, call mark_def_sites.
12172         (mark_def_sites_blocks): Remove argument, simplify initialization of
12173         walk_data.
12174         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
12175         (update_ssa): Likewise.
12176         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
12177         callback.
12178         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
12179         (dom_opt_initialize_block): Rename to...
12180         (dom_opt_enter_block): ... this, place after called functions.  Walk
12181         statements here, inline propagate_to_outgoing_edges.
12182         (dom_opt_finalize_block): Rename to...
12183         (dom_opt_leave_block): ... this, place after called functions.
12184         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
12185         domwalk callback.
12186         (dse_enter_block, dse_record_phi): New.
12187         (dse_record_phis): Delete.
12188         (dse_finalize_block): Rename to...
12189         (dse_leave_block): ... this.
12190         (tree_ssa_dse): Simplify initialization of walk_data.
12191         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
12192         Adjust initialization of walk_data.
12193         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
12194         * tree-ssa-loop-phiopt.c (get_non_trapping):
12195         Adjust initialization of walk_data.
12196         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
12197         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
12198         it's not a domwalk callback.
12199         (uncprop_initialize_block): Rename to...
12200         (dse_enter_block): ... this, call uncprop_into_successor_phis.
12201         (dse_finalize_block): Rename to...
12202         (dse_leave_block): ... this.
12203         (tree_ssa_uncprop): Simplify initialization of walk_data.
12204         * Makefile.in: Adjust dependencies.
12205
12206 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
12207
12208         * arm.md (casesi): Fix test for Thumb1.
12209         (thumb1_casesi_internal_pic): Likewise.
12210         (thumb1_casesi_dispatch): Likewise.
12211
12212 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
12213
12214         * config/arm/arm-cores.def: Added core cortex-m0.
12215         * config/arm/arm-tune.md: Regenerated.
12216         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
12217
12218 2009-06-26  DJ Delorie  <dj@redhat.com>
12219
12220         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
12221
12222         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
12223         the scheduler doesn't tag jump insns.
12224
12225 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
12226
12227         * c-decl.c (merge_decls): Re-indent.
12228
12229 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
12230
12231         PR c/39902
12232         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
12233         Special-case decimal float constants.
12234
12235 2009-06-26  Richard Henderson  <rth@redhat.com>
12236
12237         * function.h (struct function): Add cannot_be_copied_reason,
12238         and cannot_be_copied_set.
12239         * tree-inline.c (has_label_address_in_static_1): Rename from
12240         inline_forbidden_p_2; don't set inline_forbidden_reason here.
12241         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
12242         don't set inline_forbidden_reason.
12243         (copy_forbidden): New function, split out of inline_forbidden_p.
12244         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
12245         (inline_forbidden_p): Use copy_forbidden.
12246         (tree_versionable_function_p): Likewise.
12247         (inlinable_function_p): Merge into tree_inlinable_function_p.
12248         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
12249         * ipa-cp.c (ipcp_versionable_function_p): New function.
12250         (ipcp_cloning_candidate_p): Use it.
12251         (ipcp_node_modifiable_p): Likewise.
12252
12253 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
12254
12255         * builtins.c (expand_builtin_alloca): Handle builtin alloca
12256         that is marked not to be inlined. Remove flag_mudflap use.
12257         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
12258         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
12259
12260 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
12261
12262         PR bootstrap/40338
12263         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
12264         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
12265
12266 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
12267
12268         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
12269         shared libgcc.
12270         (__mingwthr_remove_key_dtor): Likewise.
12271
12272 2009-06-26  Richard Guenther  <rguenther@suse.de>
12273
12274         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
12275
12276 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
12277
12278         PR middle-end/40525
12279         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
12280         try the non-cond_exec path also.
12281
12282 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12283
12284         PR target/40468
12285         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
12286         (output_cbranch): Use new functions.
12287         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
12288         Likewise.
12289
12290 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
12291             Pat Haugen  <pthaugen@us.ibm.com>
12292             Revital Eres <ERES@il.ibm.com>
12293
12294         * config/rs6000/rs6000.c (print_operand): Correct lossage message
12295         for %c error.  Add %x support to print VSX registers as a unified
12296         register set, instead of separate float and altivec registers.
12297         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
12298         %y case, and add support for VSX pre-modify addresses.
12299         (output_toc): Add assert for CONST containing an integer constant
12300         in the PLUS case.
12301         (rs6000_adjust_cost): Add POWER7 support.
12302         (insn_must_be_first_in_group): Ditto.
12303         (insn_must_be_last_in_group): Ditto.
12304         (rs6000_emit_popcount): Ditto.
12305         (rs6000_vector_mode_supported_p): Ditto.
12306
12307         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
12308         Change some of the functions called by macros to being called
12309         through a pointer, so debug functions can be inserted if
12310         -mdebug=addr or -mdebug=cost.
12311         (rs6000_preferred_reload_class_ptr): Ditto.
12312         (rs6000_secondary_reload_class_ptr): Ditto.
12313         (rs6000_secondary_memory_needed_ptr): Ditto.
12314         (rs6000_cannot_change_mode_class_ptr): Ditto.
12315         (rs6000_secondary_reload_inner): Ditto.
12316         (rs6000_legitimize_reload_address): Ditto.
12317         (rs6000_legitimize_reload_address_ptr): Ditto.
12318         (rs6000_mode_dependent_address): Ditto.
12319         (rs6000_mode_dependent_address_ptr): Ditto.
12320
12321         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
12322         function to return true if the mode allows reg + integer
12323         addresses.
12324         (virtual_stack_registers_memory_p): New function to return true if
12325         the address refers to a virtual stack register.
12326         (rs6000_legitimate_offset_address_p): Move code to say whether a
12327         mode supports reg+int addressing to reg_offset_addressing_ok_p and
12328         call it.
12329         (rs6000_legitimate_address_p): Add checks for modes that only can
12330         do reg+reg addressing.  Start adding VSX support.
12331         (rs6000_legitimize_reload_address): Ditto.
12332         (rs6000_legitimize_address): Ditto.
12333         (rs6000_debug_legitimate_address_p): New debug functions for
12334         -mdebug=addr and -mdebug=cost.
12335         (rs6000_debug_rtx_costs): Ditto.
12336         (rs6000_debug_address_costs): Ditto.
12337         (rs6000_debug_adjust_cost): Ditto.
12338         (rs6000_debug_legitimize_address): Ditto.
12339         (rs6000_legitimize_reload_address_ptr): Point to call normal
12340         function or debug function.  Make functions called via pointer
12341         static.
12342         (rs6000_mode_dependent_address_ptr): Ditto.
12343         (rs6000_secondary_reload_class_ptr): Ditto.
12344         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
12345         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
12346         into a friendlier error.
12347         (rs6000_init_builtins): Add initial VSX support.
12348         (rs6000_adjust_cost): Fix some spacing issues.
12349
12350         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
12351         (REG_CLASS_NAMES): Ditto.
12352         (REG_CLASS_CONTENTS): Ditto.
12353         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
12354         pointer, to add -mdebug=addr support.
12355         (CANNOT_CHANGE_MODE_CLASS): Ditto.
12356         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
12357         -mdebug=addr support.
12358         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
12359         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
12360         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
12361
12362         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
12363         16-bit values.
12364         (bswapsi*): Set attribute types for load/store.  Add combiner
12365         patterns to eliminate zero extend on 64-bit.
12366         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
12367         stdbrx if the hardware supports those instructions.
12368
12369 2009-06-25  Ian Lance Taylor  <iant@google.com>
12370
12371         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
12372         (Link Options): Document -static-libstdc++.
12373
12374 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12375
12376         PR target/38731
12377         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
12378         DATA_ALIGNMENT instead.
12379
12380 2009-06-25  Richard Guenther  <rguenther@suse.de>
12381
12382         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
12383         indirect references against the callused/escaped solutions.
12384         (call_may_clobber_ref_p_1): Likewise.
12385
12386 2009-06-25  Martin Jambor  <mjambor@suse.cz>
12387
12388         PR tree-optimization/40493
12389         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
12390         (enum unscalarized_data_handling): New type.
12391         (handle_unscalarized_data_in_subtree): Return what has been done.
12392         (load_assign_lhs_subreplacements): Handle left flushes differently.
12393         (sra_modify_assign): Use unscalarized_data_handling, simplified
12394         condition determining whether to remove the statement.
12395
12396 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
12397
12398         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
12399         excerpt - @ should be doubled for texinfo.
12400
12401 2009-06-24  Ian Lance Taylor  <iant@google.com>
12402
12403         * config/arc/arc.c: Include "df.h".
12404         (arc_attribute_table): Make static.  Move higher in file.
12405         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
12406         (output_shift): Initialize n later to avoid warning.
12407         * config/arm/arm.c (arm_attribute_table): Make static.  Move
12408         higher in file.
12409         * config/avr/avr.c (avr_attribute_table): Make static.  Move
12410         higher in file.
12411         (reg_class_tab): Change array type from int to enum reg_class.
12412         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
12413         LABEL_REF.
12414         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
12415         (lshrhi3_out): Likewise.
12416         (class_likely_spilled_p): Change return type to bool.
12417         (avr_rtx_costs): Use local code variable with enum type.
12418         * config/avr/avr.md (movmemhi): Use add_reg_note.
12419         (andhi3, andsi3): Don't use AS2 with "and".
12420         (iorhi3, iorsi3): Don't use AS2 with "or".
12421         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
12422         * config/crx/crx.c: Include "df.h".
12423         (crx_attribute_table): Make static.
12424         * config/m32r/m32r.c: Include "df.h".
12425         (m32r_attribute_table): Make static.  Move higher in file.
12426         (pop): Use add_reg_note.
12427         (block_move_call): Change 0 to LCT_NORMAL in function call.
12428         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
12429         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
12430         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
12431         declare, not just when TREE_CODE is defined.
12432         * config/m68hc11/m68hc11.c: Include "expr.h".
12433         (m68hc11_attribute_table): Make static.  Move higher in file.
12434         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
12435         function call.
12436         (m68hc11_register_indirect_p): Likewise.
12437         (m68hc11_function_arg_padding): Change return type to enum
12438         direction.
12439         (emit_move_after_reload): Use add_reg_note.
12440         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
12441         (m68hc11_split_logical): Likewise.
12442         (m68hc11_rtx_costs): Add local code_and outer_code variables with
12443         enum type.
12444         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
12445         to VOIDmode in function call.
12446         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
12447         tree is defined.
12448         (m68hc11_split_logical): Update declaration.
12449         (m68hc11_function_arg_padding): Update declaration.
12450         * config/mcore/mcore.c (regno_reg_class): Change form array of int
12451         to array of enum reg_class.
12452         (mcore_attribute_table): Make static.  Move higher in file.
12453         (mcore_rtx_costs): Add cast to enum type.
12454         * config/mcore/mcore.h (regno_reg_class): Update declaration.
12455         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
12456         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
12457         in file.
12458         * config/sh/predicates.md (trapping_target_operand): Rename and to
12459         and_expr.
12460         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
12461         higher in file.
12462         * config/spu/spu.c (spu_attribute_table): Make static.  Move
12463         higher in file.
12464         * config/v850/v850.c (v850_attribute_table): Make static.  Move
12465         higher in file.
12466         (v850_rtx_costs): Use local code with enum type.
12467         (expand_epilogue): Add cast.
12468         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
12469
12470 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
12471
12472         PR target/40515
12473         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
12474         -m2a-single-only and -m2a-nofpu.
12475         * config/sh/sh.opt: Document m2a generates FPU code.
12476
12477 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
12478
12479         * defaults.h (CAN_ELIMINATE): Provide default.
12480         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
12481         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
12482         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
12483         * config/spu/spu.h (CAN_ELIMINATE): Delete.
12484         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
12485         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
12486         * config/cris/cris.h (CAN_ELIMINATE): Delete.
12487         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
12488         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
12489         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
12490
12491 2009-06-24  DJ Delorie  <dj@redhat.com>
12492
12493         * mep-ext-cop.cpu: Fix copyright notice.
12494         * mep-default: Fix copyright notice.
12495         * mep-core: Fix copyright notice.
12496         * mep: Fix copyright notice.
12497         * mep-ivc2: Fix copyright notice.
12498         * mep-c5: Fix copyright notice.
12499
12500 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
12501
12502         * doc/contrib.texi (Contributors):
12503
12504 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12505
12506         PR middle-end/40501
12507         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
12508         src and dst operands if necessary.
12509
12510 2009-06-23  DJ Delorie  <dj@redhat.com>
12511
12512         Add MeP port.
12513         * config.gcc: Add mep support.
12514         * recog.c: Resurrect validate_replace_rtx_subexp().
12515         * recog.h: Likewise.
12516         * config/mep/: Add new port:
12517         * config/mep/constraints.md: New file.
12518         * config/mep/default.h: New file.
12519         * config/mep/intrinsics.h: New file.
12520         * config/mep/intrinsics.md: New file.
12521         * config/mep/ivc2-template.h: New file.
12522         * config/mep/mep-c5.cpu: New file.
12523         * config/mep/mep-core.cpu: New file.
12524         * config/mep/mep-default.cpu: New file.
12525         * config/mep/mep-ext-cop.cpu: New file.
12526         * config/mep/mep-intrin.h: New file.
12527         * config/mep/mep-ivc2.cpu: New file.
12528         * config/mep/mep-lib1.asm: New file.
12529         * config/mep/mep-lib2.c: New file.
12530         * config/mep/mep-pragma.c: New file.
12531         * config/mep/mep-protos.h: New file.
12532         * config/mep/mep-tramp.c: New file.
12533         * config/mep/mep.c: New file.
12534         * config/mep/mep.cpu: New file.
12535         * config/mep/mep.h: New file.
12536         * config/mep/mep.md: New file.
12537         * config/mep/mep.opt: New file.
12538         * config/mep/predicates.md: New file.
12539         * config/mep/t-mep: New file.
12540
12541 2009-06-23  Ian Lance Taylor  <iant@google.com>
12542
12543         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
12544         from loose_warn into c_loose_warn and from strict_warn into
12545         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
12546         --enable-build-with-cxx.  Set and substitute
12547         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
12548         * Makefile.in (CXXFLAGS): New variable.
12549         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
12550         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
12551         the default is the same as $(STRICT_WARN).
12552         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
12553         (CXX): New variable.
12554         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
12555         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
12556         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
12557         (HOST_LIBS): New variable.
12558         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
12559         (ALL_CXXFLAGS): New variable.
12560         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
12561         * doc/install.texi (Configuration): Document
12562         --enable-build-with-cxx, --with-stage1-ldflags,
12563         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
12564         * configure: Rebuild.
12565
12566 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12567
12568         * config/arm/arm.c (arm_override_options): Fix braces and formatting
12569         from previous commit.
12570
12571 2009-06-23  Ian Lance Taylor  <iant@google.com>
12572
12573         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
12574
12575 2009-06-23  Ian Lance Taylor  <iant@google.com>
12576
12577         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
12578         with ATTRIBUTE_UNUSED.
12579
12580 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
12581             Pat Haugen  <pthaugen@us.ibm.com>
12582             Revital Eres  <eres@il.ibm.com>
12583
12584         * config.in (HAVE_AS_POPCNTD): Add default definition.
12585         (HAVE_AS_LWSYNC): Ditto.
12586
12587         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
12588         release number.
12589         (gcc_cv_as_powerpc_cmpb): Ditto.
12590         (gcc_cv_as_powerpc_dfp): Ditto.
12591         (gcc_cv_as_powerpc_vsx): Ditto.
12592         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
12593         supporting the popcntd/lwsync instructions.
12594         (gcc_cv_as_powerpc_lwsync): Ditto.
12595         * configure: Regenerate.
12596
12597         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
12598         -mcpu=native and -mcpu=power7.
12599         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
12600
12601         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
12602         a variable instead of a mask to reduce the number of mask bits.
12603         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
12604         (-mbit-word): Ditto.
12605         (-mregnames): Ditto.
12606         * config/rs6000/rs6000.opt (-mupdate): Ditto.
12607         (-mfused-madd): Ditto.
12608
12609         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
12610         2.06 instructions.
12611         (-mvsx): New switch for VSX instructions.
12612         (-misel): Move from a variable to a mask to allow it to be set by
12613         -mcpu=.
12614
12615         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
12616         function declaration to an array declaration.
12617         (rs6000_hard_regno_nregs): New external array declaration.
12618
12619         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
12620         files included by rs6000.md.
12621
12622         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
12623         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
12624
12625         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
12626         a target mask.
12627         (rs6000_debug_reg): New -mdebug= variables.
12628         (rs6000_debug_addr): Ditto.
12629         (rs6000_debug_cost): Ditto.
12630         (rs6000_pmode): New variable to hold Pmode.
12631         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
12632         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
12633         calculated at compiler start.
12634         (rs6000_hard_regno_nregs): Change function to an array which holds
12635         HARD_REGNO_NREGS calculated at compiler start.
12636         (rs6000_explicit_options): Delete isel field.
12637         (rs6000_vector_unit): New array to hold which vector unit
12638         supports arithmetic options for a given type.
12639         (rs6000_vector_mem): New array to hold which vector unit supports
12640         memory reference operations for a given type.
12641         (rs6000_vector_align): New array to given the alignment of each
12642         vector type.
12643         (power7_cost): New basic costs for power7.
12644         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
12645         (rs6000_hard_regno_nregs_internal): New function, moved from
12646         HARD_REGNO_NREGS, to calculate the number of registers each hard
12647         register takes for each type.
12648         (rs6000_debug_reg_print): New function for -mdebug=reg support.
12649         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
12650         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
12651         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
12652         unit information here so it is calculated once at compiler startup
12653         time.
12654         (rs6000_override_options): Make -misel a target mask.  Add more
12655         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
12656         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
12657         -mdebug=cost.
12658         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
12659         (rs6000_handle_option): Move -misel from variable to target mask.
12660         (rs6000_builtin_mask_for_load): Add VSX support.
12661         (rs6000_conditional_register_usage): Ditto.
12662         (USE_ALTIVEC_FOR_ARG_P): Ditto.
12663         (function_arg_boundary): Ditto.
12664         (rs6000_expand_builtin): Ditto.
12665         (def_builtin): Make abort message a little friendlier.
12666         (rs6000_emit_int_cmove): Add support for 64-bit isel.
12667
12668         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
12669         assembler support the popcntd instruction instead of a vsx
12670         instruction to enable power7 support.
12671         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
12672         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
12673         option to the assembler if -mcpu=native.
12674         (ASM_CPU_NATIVE_SPEC): Ditto.
12675         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
12676         ISA 2.06 features.
12677         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
12678         the lwsync instruction.
12679         (enum processor_type): Add PROCESSOR_POWER7.
12680         (rs6000_debug_reg): New -mdebug= options.
12681         (rs6000_debug_addr): Ditto.
12682         (rs6000_debug_cost): Ditto.
12683         (rs6000_isel): Delete.
12684         (enum rs6000_vector): New enum to say what vector unit we have.
12685         (VECTOR_UNIT_*): New macros to say which vector unit has
12686         arithmetic operations for a given type.
12687         (VECTOR_MEM_*): New macros to say which vector unit has memory
12688         operations for a given type.
12689         (TARGET_LDBRX): Whether the machine supports the ldbrx
12690         instruction.
12691         (TARGET_ISEL): Delete, -misel moved to be a mask.
12692         (TARGET_ISEL64): New macro for 64-bit isel support.
12693         (UNITS_PER_VSX_WORD): New macro.
12694         (POINTER_SIZE): Move to be an external variable, rather than
12695         calculating whether we are generating 32 ot 64-bit code.
12696         (Pmode): Ditto.
12697         (STACK_BOUNDARY): Add VSX support.
12698         (LOCAL_ALIGNMENT): Ditto.
12699         (SLOW_UNALIGNED_ACCESS): Ditto.
12700         (VSX_REGNO_P): New macro for VSX support.
12701         (VFLOAT_REGNO_P): Ditto.
12702         (VINT_REGNO_P): Ditto.
12703         (VLOGICAL_REGNO_P): Ditto.
12704         (VSX_VECTOR_MODE): Ditto.
12705         (VSX_SCALAR_MODE): Ditto.
12706         (VSX_MODE): Ditto.
12707         (VSX_MOVE_MODE): Ditto.
12708         (VSX_REG_CLASS_P): Ditto.
12709         (HARD_REGNO_NREGS): Instead of calling a function, use an array
12710         lookup.
12711         (UNITS_PER_SIMD_WORD): Add VSX support.
12712         (MODES_TIEABLE_P): Ditto.
12713         (STARTING_FRAME_OFFSET): Ditto.
12714         (STACK_DYNAMIC_OFFSET): Ditto.
12715         (EPILOGUE_USES): Ditto.
12716         (REGNO_REG_CLASS): Move to array lookup.
12717         (CLASS_MAX_NREGS): Ditto.
12718         (rs6000_vector_reg_class): Add declaration.
12719         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
12720         overlap with the floating point and Altivec registers.
12721
12722         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
12723
12724         * config/rs6000/driver-rs6000.c (asm_names): New static array to
12725         give the appropriate asm switches if -mcpu=native.
12726         (host_detect_local_cpu): Add support for "asm".
12727         (host_detect_local_cpu): Follow GNU code guidelines for name.
12728
12729         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
12730         -mbit-word to a variable instead of being a target mask.
12731
12732         * config/rs6000/sync.md (lwsync): If the assembler supports it,
12733         emit the lwsync instruction instead of emitting the instruction as
12734         an integer constant.
12735
12736         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
12737         fixuns_trundfsi2, move expander into rs6000.md.
12738
12739         * config/rs6000/rs6000.md (cpu): Add power7.
12740         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
12741         (logical predicate patterns): Change the single instruction
12742         primitives that set CR0 to be fast_compare instead of compare.
12743         (norsi*): Ditto.
12744         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
12745         (popcntddi2): Ditto.
12746         (popcount<mode>): Ditto.
12747         (floating multiply/add insns): Name the floating point
12748         multiply/add insns.
12749         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
12750         (isel_unsigned_<mode>): Ditto.
12751         (fixuns_trundfsi2): Move expander here from spe.md.
12752         (smindi3): Define if we have -misel on 64-bit systems.
12753         (smaxdi3): Ditto.
12754         (umindi3): Ditto.
12755         (umaxdi3): Ditto.
12756
12757 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
12758
12759         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
12760         extra_objs.
12761         * config/avr/avr.c (avr_current_device): New variable.
12762         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
12763         (avr_arch, mcu_type_s): Move to avr.h.
12764         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
12765         default_data_section_start fields.
12766         (avr_arch): Moved from avr.c.
12767         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
12768         library_name fields.
12769         (avr_current_device, avr_mcu_types, avr_arch_types,
12770         avr_device_to_arch, avr_device_to_data_start,
12771         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
12772         (EXTRA_SPEC_FUNCTIONS): Define.
12773         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
12774         options mapping. Use device_to_arch and device_to_data_start insted.
12775         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
12776         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
12777         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
12778         * config/avr/driver-avr.c: New file.
12779         * config/avr/avr-devices.c: New file.
12780
12781 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
12782
12783         * var-tracking.c (unshare_variable): Force initialized to
12784         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
12785         (set_variable_part): Likewise.
12786         (struct variable_union_info): Remove pos_src field.
12787         (vui_vec, vui_allocated): New variables.
12788         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
12789         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
12790         == 1 use a simpler sorting algorithm.  Compute pos field right
12791         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
12792         Avoid quadratic comparison if !flag_var_tracking_uninit.
12793         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
12794         unshare_variable unconditionally.
12795         (dataflow_set_different_2): Removed.
12796         (dataflow_set_different): Don't traverse second hash table.
12797         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
12798         unconditionally to var_reg_set or var_mem_set.
12799         (emit_notes_in_bb): Likewise.
12800         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
12801         unshare_variable.
12802         (emit_note_insn_var_location): Don't set initialized to
12803         VAR_INIT_STATUS_INITIALIZED early.
12804         (vt_finalize): Free vui_vec if needed, clear vui_vec and
12805         vui_allocated.
12806         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
12807
12808         * tree-object-size.c (addr_object_size): Instead of checking
12809         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
12810         are no FIELD_DECLs following it.
12811
12812 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
12813
12814         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
12815         order to match bswaps with signed source operands.
12816
12817 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
12818
12819         * sdbout.c (sdbout_one_type): Fix braces in switch.
12820
12821 2009-06-23  Richard Guenther  <rguenther@suse.de>
12822
12823         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
12824         member.
12825         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
12826         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
12827         var_callused, callused_tree, var_storedanything, storedanything_tree,
12828         var_integer, integer_tree): Remove global variables.
12829         (new_var_info): Do not pass new id, append the new var to the
12830         global variable vector.
12831         (do_ds_constraint): Use is_global_var member of the variable-info.
12832         (new_scalar_tmp_constraint_exp): Adjust.
12833         (create_function_info_for): Likewise.
12834         (create_variable_info_for): Likewise.
12835         (find_what_var_points_to): Remove dead code.
12836         (init_base_vars): Simplify.
12837         (compute_points_to_sets): Adjust.
12838
12839 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
12840
12841         * combine.c (try_combine): Dump information about the insns we're
12842         combining.
12843
12844 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
12845
12846         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
12847         check when calling force_to_mode on TRUNCATE's operand.
12848
12849 2009-06-22  Ian Lance Taylor  <iant@google.com>
12850
12851         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
12852
12853 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
12854
12855         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
12856
12857 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12858
12859         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
12860         override library linkage flags such as -static-libgcc or
12861         -shared-libgcc.
12862
12863 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
12864
12865         * config/m68k/m68k-devices.def: Add line for MCF5221x.
12866
12867 2009-06-22  Ian Lance Taylor  <iant@google.com>
12868
12869         * config/linux.opt: Put mglibc ahead of muclibc.
12870
12871         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
12872         for duplicate decls.
12873
12874 2009-06-22  Matthias Klose  <doko@ubuntu.com>
12875
12876         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
12877
12878 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
12879
12880         PR objc/28050
12881         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
12882         instead of NULL if a parser error occurs.
12883
12884 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
12885
12886         * dwarf2out.c (dwarf2_debug_hooks): Initialize
12887         non-DWARF2_DEBUGGING_INFO version.
12888
12889 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
12890
12891         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
12892         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
12893
12894         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
12895         (LIBGCC2_TF_CEXT): Define.
12896         (TF_SIZE): Define.
12897
12898 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12899
12900         PR target/40463
12901         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
12902
12903 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12904
12905         * config/arm/arm.c (arm_override_options): Disable
12906         -mcaller-super-interworking and -mcallee-super-interworking.
12907         * doc/invoke.texi (ARM Options): Document this.
12908
12909 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
12910
12911         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
12912         * config/arm/constraints.md (j): New constraint for movw operands.
12913         (N): Remove thumb2 meaning.
12914         * config/arm/arm.md (*arm_movw): Delete.
12915         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
12916         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
12917         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
12918
12919 2009-06-22  Martin Jambor  <mjambor@suse.cz>
12920
12921         PR tree-optimization/40492
12922         * tree-sra.c (sra_modify_assign): Pass zero offsets to
12923         build_ref_for_offset.
12924
12925 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
12926
12927         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
12928         JUMP_TABLE_DATA_P predicates where applicable.
12929         * auto-inc-dec.c: Ditto.
12930         * builtins.c: Ditto.
12931         * caller-save.c: Ditto.
12932         * calls.c: Ditto.
12933         * cfgcleanup.c: Ditto.
12934         * cfglayout.c: Ditto.
12935         * cfgrtl.c: Ditto.
12936         * combine.c: Ditto.
12937         * combine-stack-adj.c: Ditto.
12938         * cse.c: Ditto.
12939         * cselib.c: Ditto.
12940         * dbxout.c: Ditto.
12941         * df-scan.c: Ditto.
12942         * dse.c: Ditto.
12943         * dwarf2asm.c: Ditto.
12944         * dwarf2out.c: Ditto.
12945         * emit-rtl.c: Ditto.
12946         * except.c: Ditto.
12947         * explow.c: Ditto.
12948         * expmed.c: Ditto.
12949         * expr.c: Ditto.
12950         * final.c: Ditto.
12951         * function.c: Ditto.
12952         * fwprop.c: Ditto.
12953         * gcse.c: Ditto.
12954         * genpreds.c: Ditto.
12955         * genrecog.c: Ditto.
12956         * ifcvt.c: Ditto.
12957         * ira-costs.c: Ditto.
12958         * ira-lives.c: Ditto.
12959         * jump.c: Ditto.
12960         * loop-iv.c: Ditto.
12961         * lower-subreg.c: Ditto.
12962         * modulo-sched.c: Ditto.
12963         * optabs.c: Ditto.
12964         * postreload.c: Ditto.
12965         * print-rtl.c: Ditto.
12966         * recog.c: Ditto.
12967         * reginfo.c: Ditto.
12968         * regmove.c: Ditto.
12969         * reload1.c: Ditto.
12970         * reload.c: Ditto.
12971         * reorg.c: Ditto.
12972         * rtlanal.c: Ditto.
12973         * rtl.c: Ditto.
12974         * sched-vis.c: Ditto.
12975         * sdbout.c: Ditto.
12976         * sel-sched-ir.c: Ditto.
12977         * simplify-rtx.c: Ditto.
12978         * targhooks.c: Ditto.
12979         * var-tracking.c: Ditto.
12980         * vmsdbgout.c: Ditto.
12981
12982 2009-06-22  Matthias Klose  <doko@ubuntu.com>
12983
12984         * Makefile.in (install-plugin): Always use DESTDIR.
12985
12986 2009-06-22  Olivier Hainque  <hainque@adacore.com>
12987
12988         * config/pa/pa.c (output_call): Don't optimize post call jumps
12989         into return address adjustments if the call may throw.
12990
12991 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
12992
12993         * arm.c (thumb1_output_casesi): New function.
12994         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
12995         optimizing for size or PIC.
12996         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
12997         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
12998         (casesi): Handle Thumb-1 when optimizing for size or PIC.
12999         (thumb1_casesi_internal_pic): New expand rule.
13000         (thumb1_casesi_dispatch): New pattern.
13001         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
13002         thumb-1 mode.
13003         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
13004         in the text seciton when PIC or optimizing for size.
13005         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
13006         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
13007         preservation properties of code.
13008         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
13009         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
13010         (__gnu_thumb1_case_si): New function.
13011         * t-arm (LIB1ASMSRC): Define here.
13012         (LIB1ASMFUNCS): Add some common functions.
13013         * t-arm-elf (LIB1ASMSRC): Delete.
13014         (LIB1ASMFUNCS): Append to existing set.
13015         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
13016         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
13017         * t-symbian (LIB1ASMFUNCS): Likewise.
13018         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
13019         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
13020
13021 2009-06-21  Richard Guenther  <rguenther@suse.de>
13022
13023         PR tree-optimization/38729
13024         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
13025         to loops with a single exit if -fno-expensive-optimizations.
13026
13027 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
13028
13029         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
13030         (dataflow_set): Change vars type from htab_t to shared_hash.
13031         (shared_hash_pool, empty_shared_hash): New variables.
13032         (vars_clear): Removed.
13033         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
13034         shared_hash_find_slot_unshare, shared_hash_find_slot,
13035         shared_hash_find_slot_noinsert, shared_hash_find): New
13036         static inlines.
13037         (shared_hash_unshare, shared_hash_destroy): New functions.
13038         (unshare_variable): Unshare set->vars if shared, use
13039         shared_hash_htab.
13040         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
13041         (get_init_value, find_src_set_src, dump_dataflow_set,
13042         clobber_variable_part, emit_notes_for_differences): Use
13043         shared_hash_htab.
13044         (dataflow_set_init): Remove second argument, set vars to
13045         empty_shared_hash instead of creating a new htab.
13046         (dataflow_set_clear): Call shared_hash_destroy and set vars
13047         to empty_shared_hash instead of calling vars_clear.
13048         (dataflow_set_copy): Don't call vars_copy, instead just share
13049         the src htab with dst.
13050         (variable_union): Use shared_hash_*, use initially NO_INSERT
13051         lookup if set->vars is shared.  Don't keep slot cleared before
13052         calling unshare_variable.  Unshare set->vars if needed.
13053         Even ->refcount == 1 vars must be unshared if set->vars is shared
13054         and var needs to be modified.
13055         (variable_canonicalize): New function.
13056         (dataflow_set_union): If dst->vars is empty, just share src->vars
13057         with dst->vars and traverse with variable_canonicalize to canonicalize
13058         and unshare what is needed.
13059         (dataflow_set_different): If old_set and new_set use the same shared
13060         htab, they aren't different.  If number of htab elements is different,
13061         htabs are different.  Use shared_hash_*.
13062         (dataflow_set_destroy): Call shared_hash_destroy instead of
13063         htab_delete.
13064         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
13065         second argument to dataflow_set_init.
13066         (vt_initialize): Likewise.  Initialize shared_hash_pool and
13067         empty_shared_hash, move bb in/out initialization afterwards.
13068         Use variable_htab_free instead of NULL as changed_variables del hook.
13069         (variable_was_changed): Change type of second argument to pointer to
13070         dataflow_set.  When inserting var into changed_variables, bump
13071         refcount.  Unshare set->vars if set is shared htab and slot needs to
13072         be cleared.
13073         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
13074         lookup if set->vars is shared.  Unshare set->vars if needed.
13075         Even ->refcount == 1 vars must be unshared if set->vars is shared
13076         and var needs to be modified.  Adjust variable_was_changed caller.
13077         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
13078         vars must be unshared if set->vars is shared and var needs to be
13079         modified.  Adjust variable_was_changed caller.
13080         (emit_note_insn_var_location): Don't pool_free var.
13081         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
13082         instead of 1.
13083         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
13084         free_alloc_pool on shared_hash_pool.
13085
13086 2009-06-20  Anthony Green  <green@moxielogic.com>
13087
13088         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
13089         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
13090
13091 2009-06-20  Richard Guenther  <rguenther@suse.de>
13092
13093         * tree-ssa-structalias.c (find_func_aliases): For memset use
13094         a constraint from NULL if we memset to zero.
13095         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
13096         we explicitly handle that do not read from memory.
13097         (call_may_clobber_ref_p_1): Properly handle builtins that may
13098         set errno.
13099
13100 2009-06-20  Richard Guenther  <rguenther@suse.de>
13101
13102         PR tree-optimization/40495
13103         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
13104         (new_scalar_tmp_constraint_exp): New function.
13105         (process_constraint): Do not create temporary decls.
13106         (process_all_all_constraints): Likewise.
13107         (handle_const_call): Likewise.
13108         (create_function_info_for): Do not set decl.
13109
13110 2009-06-19  Ian Lance Taylor  <iant@google.com>
13111
13112         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
13113         (rs6000_attribute_table): Make static; move before use.
13114
13115 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
13116
13117         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
13118         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
13119         Propagate the TREE_READONLY flag without overwriting it.
13120         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
13121         Propagate the TREE_READONLY flag onto the result.
13122         (process_call_operands): Move around.  Use correct constant value.
13123
13124 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13125
13126         PR target/40482
13127         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
13128         * config/arm/arm.md: Likewise.
13129
13130 2009-06-19  Ian Lance Taylor  <iant@google.com>
13131
13132         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
13133         to GIMPLE_ERROR_MARK.
13134
13135         * c-typeck.c (build_conditional_expr): Add op1_original_type and
13136         op2_original_type parameters.  Warn about using different enum types.
13137         * c-parser.c (c_parser_conditional_expression): Pass original
13138         types to build_conditional_expr.
13139         * c-tree.h (build_conditional_expr): Update declaration.
13140
13141 2009-06-19  Ian Lance Taylor  <iant@google.com>
13142
13143         * config/i386/i386.c (ix86_function_specific_save): Test that
13144         fields match values, rather than testing the values are in a
13145         certain range.
13146
13147 2009-06-19  Richard Guenther  <rguenther@suse.de>
13148
13149         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
13150         ADDR_EXPR pointers.
13151         (ptr_derefs_may_alias_p): Likewise.
13152         (ptr_deref_may_alias_ref_p_1): New function.
13153         (ptr_deref_may_alias_ref_p): Likewise.
13154         (ref_maybe_used_by_call_p_1): Handle builtins that are not
13155         covered by looking at the ESCAPED solution.
13156         (call_may_clobber_ref_p_1): Likewise.
13157         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
13158         Handle NULL_TREE offset.  Do not produce redundant constraints.
13159         (process_all_all_constraints): New helper function.
13160         (do_structure_copy): Use it.
13161         (handle_lhs_call): Likewise.
13162         (find_func_aliases): Handle some builtins with pointer arguments
13163         and/or return values explicitly.
13164
13165 2009-06-19  Ian Lance Taylor  <iant@google.com>
13166
13167         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
13168
13169 2009-06-19  Ian Lance Taylor  <iant@google.com>
13170
13171         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
13172
13173 2009-06-19  Ian Lance Taylor  <iant@google.com>
13174
13175         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
13176         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
13177         version.
13178
13179         * c-decl.c (finish_decl): If -Wc++-compat, warn about
13180         uninitialized const.
13181
13182 2009-06-19  Ian Lance Taylor  <iant@google.com>
13183
13184         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
13185         all uses.
13186
13187         * c-decl.c (in_struct, struct_types): Remove.
13188         (struct c_binding): Add in_struct field.
13189         (c_binding_ptr): Define type, along with VEC.
13190         (struct c_struct_parse_info): Define.
13191         (struct_parse_info): New static variable.
13192         (bind): Initialize in_struct field.
13193         (start_struct): Remove enclosing_in_struct and
13194         enclosing_struct_types parameters.  Add
13195         enclosing_struct_parse_info parameter.  Change all callers.  Set
13196         struct_parse_info rather than in_struct and struct_types.
13197         (grokfield): If -Wc++-compat and there is a symbol binding for the
13198         field name, set the in_struct flag and push it on the
13199         struct_parse_info->fields vector.
13200         (warn_cxx_compat_finish_struct): New static function.
13201         (finish_struct): Remove enclosing_in_struct and
13202         enclosing_struct_types parameters.  Add
13203         enclosing_struct_parse_info parameter.  Change all callers.  Don't
13204         set C_TYPE_DEFINED_IN_STRUCT here.  Call
13205         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
13206         parameter.  Only push on struct_types if warn_cxx_compat.
13207         (finish_enum): Only push on struct_types if warn_cxx_compat.
13208         (declspecs_add_type): Add loc parameter.  Change all callers.
13209         Change all error calls to error_at.  Pass loc, not input_location,
13210         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
13211         defined in a struct.  If -Wc++-compat and parsing a struct, record
13212         that a typedef name was used.
13213         * c-parser.c (c_parser_declspecs): Get location to pass to
13214         declspecs_add_type.
13215         (c_parser_struct_or_union_specifier): Update calls to start_struct
13216         and finish_struct.
13217         * c-tree.h (struct c_struct_parse_info): Declare.
13218         (finish_struct, start_struct): Update declarations.
13219         (declspecs_add_type): Update declaration.
13220
13221 2009-06-19  Ian Lance Taylor  <iant@google.com>
13222
13223         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
13224         variable with an anonymous type.
13225
13226 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
13227
13228         * see.c: Remove for real.
13229
13230 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
13231
13232         * optabs.h (enum optab_index): Add new OTI_significand.
13233         (significand_optab): Define corresponding macro.
13234         * optabs.c (init_optabs): Initialize significand_optab.
13235         * genopinit.c (optabs): Implement significand_optab using
13236         significand?f2 patterns.
13237         * builtins.c (expand_builtin_mathfn): Handle
13238         BUILT_IN_SIGNIFICAND{,F,L}.
13239         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
13240         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
13241
13242         * config/i386/i386.md (significandxf2, significand<mode>2): New
13243         expanders to implement significandf, significand and significandl
13244         built-ins as inline x87 intrinsics.
13245
13246 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
13247
13248         * config/avr/avr.c (avr_override_options): Remove setting value of
13249         PARAM_INLINE_CALL_COST.
13250
13251 2009-06-18  Richard Henderson  <rth@redhat.com>
13252
13253         PR 40488
13254         * tree-pass.h (TDF_ASMNAME): New.
13255         * tree-dump.c (dump_options): Add asmname.
13256         * doc/invoke.texi: Document it.
13257
13258         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
13259         (dump_decl_name): ...here.
13260         (dump_function_name): New flags arg; mind TDF_ASMNAME.
13261         (dump_generic_node): Update dump_function_name calls.
13262         (print_call_name): New flags arg; update all dump calls.
13263         * diagnostic.h (print_call_name): Update.
13264         * gimple-pretty-print.c (dump_gimple_call): Update.
13265
13266 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
13267
13268         PR target/40470
13269         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
13270
13271 2009-06-18  Diego Novillo  <dnovillo@google.com>
13272
13273         * doc/plugins.texi: Document plugin_is_GPL_compatible.
13274         * plugin.c (str_license): Declare.
13275         (try_init_one_plugin): Assert that the symbol
13276         'plugin_is_GPL_compatible' exists.
13277
13278 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
13279
13280         * see.c: Remove.
13281         * Makefile.in (OBJS-common): Remove see.o.
13282         (see.o): Remove.
13283         * common.opt (fsee): Mark as preserved for backward compatibility.
13284         * opts.c (common_handle_option): Add OPT_fsee to the backward
13285         compatibility section.
13286         * passes.c (init_optimization_passes, pass_see): Remove pass.
13287         * timevar.def (TV_SEE): Remove.
13288         * tree-pass.h (pass_see): Remove declaration.
13289         * doc/invoke.texi (-fsee): Remove documentation.
13290
13291 2009-06-18  Martin Jambor  <mjambor@suse.cz>
13292
13293         * tree-sra.c: Include statistics.h
13294         (sra_stats): New variable.
13295         (sra_initialize): Clear sra_stats.
13296         (create_access_replacement): Increment sra_stats.replacements.
13297         (get_access_replacement): Do not return twice.
13298         (analyze_all_variable_accesses): Increment statistics counter by the
13299         number of scalarized aggregates.
13300         (generate_subtree_copies): Increment sra_stats.subtree_copies.
13301         (sra_modify_expr): Increment sra_stats.exprs.
13302         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
13303         (sra_modify_assign): Increment sra_stats.exprs,
13304         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
13305         (perform_intra_sra): Update statistics counters.
13306         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
13307
13308 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
13309
13310         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
13311         (arm_scalar_mode_supported_p): New function.
13312
13313 2009-06-18  Paul Brook  <paul@codesourcery.com>
13314             Sandra Loosemore  <sandra@codesourcery.com>
13315
13316         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
13317         (__extendhfsf2, __truncsfhf2): Define.
13318         * config/arm/fp16.c: New file.
13319         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
13320         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
13321
13322 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
13323
13324         * doc/extend.texi (Half-Precision): New section.
13325         * doc/invoke.texi (Option Summary): List -mfp16-format.
13326         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
13327         * config/arm/arm.opt (mfp16-format=): New.
13328         * config/arm/arm.c: Include intl.h.
13329         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
13330         (TARGET_INVALID_RETURN_TYPE): Redefine.
13331         (TARGET_PROMOTED_TYPE): Redefine.
13332         (TARGET_CONVERT_TO_TYPE): Redefine.
13333         (arm_fp16_format): Define.
13334         (all_fpus): Add entry for neon-fp16.
13335         (fp_model_for_fpu): Likewise.
13336         (struct fp16_format): Declare.
13337         (all_fp16_formats): Define.
13338         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
13339         functions.
13340         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
13341         and no ldrh.
13342         (arm_legitimate_index_p): Treat HFmode like HImode.
13343         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
13344         (coproc_secondary_reload_class): Special-case HFmode.
13345         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
13346         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
13347         (arm_init_fp16_builtins): New.
13348         (arm_init_builtins): Call it.
13349         (arm_invalid_parameter_type): New.
13350         (arm_invalid_return_type): New.
13351         (arm_promoted_type): New.
13352         (arm_convert_to_type).
13353         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
13354         format.
13355         (arm_emit_fp16_const): New function.
13356         (arm_mangle_type): Mangle __fp16 as "Dh".
13357         * config/arm/arm.h (TARGET_VFPD32): Make it know about
13358         FPUTYPE_NEON_FP16.
13359         (TARGET_NEON_FP16): New.
13360         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
13361         (enum fputype): Add FPUTYPE_NEON_FP16.
13362         (enum arm_fp16_format_type): Declare.
13363         (arm_fp16_format): Declare.
13364         (LARGEST_EXPONENT_IS_NORMAL): Define.
13365         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
13366         * config/arm/arm-modes.def (HFmode): Define.
13367         * config/arm/vfp.md (*movhf_vfp): New.
13368         (extendhfsf2): New.
13369         (truncsfhf2): New.
13370         * config/arm/arm.md (fpu): Add neon_fp16.
13371         (floatsihf2, floatdihf2): New.
13372         (fix_trunchfsi2, fix_trunchfdi2): New.
13373         (truncdfhf2): New.
13374         (extendhfdf2): New.
13375         (movhf): New.
13376         (*arm32_movhf): New.
13377         (*thumb1_movhf): New.
13378         (consttable_2): Add check for HFmode constants.
13379         (consttable_4): Handle HFmode constants.
13380
13381 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
13382
13383         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
13384
13385 2009-06-17  Olivier Hainque  <hainque@adacore.com>
13386
13387         * collect2.c (main): Use CONST_CAST2 to perform char ** to
13388         const char ** conversion in AIX specific section.
13389
13390 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
13391
13392         * config/i386/i386.c (ix86_special_builtin_type): Remove
13393         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
13394         (bdesc_special_args): Updated.
13395         (ix86_init_mmx_sse_builtins): Likewise.
13396         (ix86_expand_special_args_builtin): Likewise.
13397
13398 2009-06-17  Richard Henderson  <rth@redhat.com>
13399
13400         * tree-pretty-print.c (maybe_dump_asm_name): New.
13401         (dump_decl_name): Use it.
13402         (PRINT_FUNCTION_NAME): Merge into...
13403         (dump_function_name): ... here.  Use maybe_dump_asm_name.
13404
13405 2009-06-17  Cary Coutant  <ccoutant@google.com>
13406
13407         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
13408         Change caller.
13409         * debug.c (struct gcc_debug_hooks): Change placeholder for
13410         source_line hook.
13411         (debug_nothing_int_charstar_int): Replaced by...
13412         (debug_nothing_int_charstar_int_bool): ...this.
13413         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
13414         source_line prototype.
13415         (debug_nothing_int_charstar_int): Replaced by...
13416         (debug_nothing_int_charstar_int_bool): ...this.
13417         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
13418         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
13419         Output is_stmt operand when necessary.
13420         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
13421         (notice_source_line): Add is_stmt parameter.
13422         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
13423         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
13424         Change callers.
13425         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
13426         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
13427
13428 2009-06-17  Ian Lance Taylor  <iant@google.com>
13429
13430         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
13431         Change all uses.
13432         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
13433         call uses.
13434
13435 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
13436
13437         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
13438         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
13439         tree_strip_sign_nop_conversions and
13440         tree_ssa_strip_useless_type_conversions rather than stripping
13441         the operations here.
13442         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
13443         Declare them.
13444         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
13445         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
13446         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
13447         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
13448         functions.
13449
13450 2009-06-17  Michael Eager  <eager@eagercon.com>
13451
13452         * config/rs6000/constraints.md (register_constraint "d"): New.
13453         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
13454         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
13455         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
13456         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
13457         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
13458         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
13459         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
13460         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
13461         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
13462         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
13463         __fctiwz): Same.
13464         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
13465         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
13466         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
13467         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
13468         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
13469         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
13470         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
13471         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
13472         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
13473         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
13474         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
13475         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
13476         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
13477         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
13478
13479 2009-06-16  Ian Lance Taylor  <iant@google.com>
13480
13481         * profile.c (total_num_never_executed): Don't define.
13482         (compute_branch_probabilities): Don't count or print
13483         num_never_executed.
13484         (init_branch_prob): Don't set total_num_never_executed.
13485         (end_branch_prob): Don't print total_num_never_executed.
13486
13487 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
13488
13489         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
13490
13491 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
13492
13493         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
13494         (nabstd2_fpr): Same.
13495
13496 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
13497
13498         * expr.c (expand_assignment): Change complex type check.
13499
13500 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
13501
13502         * doc/plugins.texi (Building GCC plugins): Added new section.
13503
13504 2009-06-17  Ian Lance Taylor  <iant@google.com>
13505
13506         * c-pch.c (get_ident): Don't set size of templ array.
13507         (pch_init): Don't set size of partial_pch array.
13508
13509         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
13510         string constant to intialize an array whose size is the length of
13511         the string.
13512
13513 2009-06-17  Richard Guenther  <rguenther@suse.de>
13514
13515         PR tree-optimization/40389
13516         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
13517         to addressable types.
13518         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
13519
13520 2009-06-17  Richard Guenther  <rguenther@suse.de>
13521
13522         PR middle-end/40460
13523         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
13524         if there is no evolution of left in the loop bail out.
13525         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
13526         chrec_fold_multiply.
13527
13528 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
13529             Janis Johnson  <janis187@us.ibm.com>
13530
13531         PR target/39254
13532         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
13533         for the symbol ref of a constant that is the source of a move
13534         - nor for any other not-obvious-label-ref constants.
13535
13536 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
13537
13538         * plugin.c (position_pass): Skip newly inserted pass during list
13539         traversal to avoid repeated insertion.
13540
13541 2009-06-16  Ian Lance Taylor  <iant@google.com>
13542
13543         * vec.h (VEC_stack_alloc): Define different version if
13544         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
13545         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
13546         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
13547         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
13548
13549 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
13550
13551         * config.gcc (extra_headers): Add ia32intrin.h for x86.
13552
13553         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
13554         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
13555         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
13556         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
13557         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
13558         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
13559         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
13560         (bdesc_special_args): Add __builtin_ia32_rdtsc and
13561         __builtin_ia32_rdtscp.
13562         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
13563         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
13564         and __builtin_ia32_rorhi.
13565         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
13566         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
13567         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
13568         (ix86_expand_args_builtin): Likewise.
13569         (ix86_expand_special_args_builtin): Likewise.
13570
13571         * config/i386/i386.md (UNSPECV_RDTSCP): New.
13572         (UNSPECV_RDTSC): Likewise.
13573         (UNSPECV_RDPMC): Likewise.
13574         (*bsr): Renamed to ...
13575         (bsr): This
13576         (*bsr_rex64): Renamed to ...
13577         (bsr_rex64): This.
13578         (rdpmc): New.
13579         (*rdpmc): Likewise.
13580         (*rdpmc_rex64): Likewise.
13581         (rdtsc): Likewise.
13582         (*rdtsc): Likewise.
13583         (*rdtsc_rex64): Likewise.
13584         (rdtscp): Likewise.
13585         (*rdtscp): Likewise.
13586         (*rdtscp_rex64): Likewise.
13587
13588         * config/i386/ia32intrin.h: New.
13589
13590         * config/i386/x86intrin.h: Include <ia32intrin.h>.
13591
13592 2009-06-16  Ian Lance Taylor  <iant@google.com>
13593
13594         * ira-build.c (copy_info_to_removed_store_destinations):
13595         Initialize parent_a.
13596
13597 2009-06-16  Ian Lance Taylor  <iant@google.com>
13598
13599         * c-decl.c (grokdeclarator): Change size_varies to bool.
13600
13601 2009-06-16  Ian Lance Taylor  <iant@google.com>
13602
13603         * sel-sched.c: Make forward declarations of move_op_hooks and
13604         fur_hooks explicitly extern.
13605
13606 2009-06-16  Ian Lance Taylor  <iant@google.com>
13607
13608         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
13609         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
13610
13611 2009-06-16  Ian Lance Taylor  <iant@google.com>
13612
13613         * resource.c (mark_referenced_resources): Change
13614         include_delayed_effects parameter to bool.  Change all callers.
13615         (mark_end_of_function_resources): Likewise.
13616         * reorg.c (insn_references_resource_p): Likewise.
13617         (insn_sets_resource_p): Likewise.
13618         * resource.h (mark_referenced_resources): Update declaration.
13619         (mark_end_of_function_resources): Update declaration.
13620
13621 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
13622
13623         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
13624
13625 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
13626
13627         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
13628         GCC can bootstrap on AIX with GNU Binutils 2.20.
13629
13630 2009-06-16  Ian Lance Taylor  <iant@google.com>
13631
13632         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
13633
13634 2009-06-16  Ian Lance Taylor  <iant@google.com>
13635
13636         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
13637         inline, not extern inline.
13638         (exact_log2): Likewise.
13639         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
13640         test CLZ_HWI.
13641         (exact_log2): Likewise, but don't test CTZ_HWI.
13642
13643 2009-06-16  Ian Lance Taylor  <iant@google.com>
13644
13645         * bitmap.c (bitmap_clear): Don't declare as inline.
13646         * gimple.c (gimplify_assign): Likewise.
13647         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
13648         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
13649         (sched_scan_info): Remove duplicate definition.
13650
13651 2009-06-16  Ian Lance Taylor  <iant@google.com>
13652
13653         * c-common.c (skip_evaluation): Don't define.
13654         (c_inhibit_evaluation_warnings): Define global variable.
13655         (overflow_warning): Check c_inhibit_evaluation_warnings rather
13656         than skip_evaluation.
13657         (convert_and_check, warn_for_div_by_zero): Likewise.
13658         * c-common.h (skip_evaluation): Don't declare.
13659         (c_inhibit_evaluation_warnings): Declare.
13660         * c-parser.c (c_parser_typeof_specifier): Set
13661         c_inhibit_evaluation_warnings rather than skip_evaluation.
13662         (c_parser_conditional_expression): Likewise.
13663         (c_parser_binary_expression): Likewise.
13664         (c_parser_sizeof_expression): Likewise.
13665         (c_parser_alignof_expression): Likewise.
13666         * c-typeck.c (build_indirect_ref): Check
13667         c_inhibit_evaluation_warnings rather than skip_evaluation.
13668         (build_conditional_expr, build_binary_op): Likewise.
13669
13670 2009-06-16  Richard Guenther  <rguenther@suse.de>
13671
13672         * tree-ssa-alias.c (is_escape_site): Remove.
13673         * tree-ssa-alias.h (enum escape_type): Remove.
13674         (is_escape_site): Likewise.
13675         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
13676         via casts and asms without deferring to is_escape_site.
13677
13678 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
13679
13680         PR middle-end/40446
13681         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
13682         use gen_lowpart if op0 has complex mode.
13683
13684 2009-06-16  Richard Guenther  <rguenther@suse.de>
13685
13686         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
13687         variables add them to ESCAPED.
13688         (find_func_aliases): Do not make all indirectly stored values escaped.
13689
13690 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
13691
13692         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
13693         make_decl_one_only.
13694
13695 2009-06-16  Martin Jambor  <mjambor@suse.cz>
13696
13697         PR tree-optimization/40432
13698         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
13699         check whether we need to force gimple register operand.
13700
13701 2009-06-16  Martin Jambor  <mjambor@suse.cz>
13702
13703         PR tree-optimization/40413
13704         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
13705         build_ref_for_offset.
13706         (propagate_subacesses_accross_link): Fix a typo in a comment.
13707
13708 2009-06-16  Ira Rosen  <irar@il.ibm.com>
13709
13710         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
13711         with additional parameter.
13712         * tree-vectorizer.h (enum vect_def_type): Add new value
13713         vect_nested_cycle.
13714         (enum vect_relevant): Add comments.
13715         (vect_is_simple_reduction): Add new argument.
13716         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
13717         Detect nested cycles.
13718         (vect_is_simple_reduction): Update documentation, add an argument to
13719         distinguish inner-loop reduction from nested cycle, detect nested
13720         cycles, fix printings and indentation, don't swap operands in case
13721         of nested cycle.
13722         (get_initial_def_for_reduction): Handle subtraction.
13723         (vect_create_epilog_for_reduction): Add new argument to specify
13724         reduction variable.
13725         (vect_finalize_reduction): Handle subtraction, fix comments.
13726         (vectorizable_reduction): Handle nested cycles. In case of nested
13727         cycle keep track of the reduction variable position. Call
13728         vect_is_simple_reduction with additional parameter. Use original
13729         statement code in reduction epilogue for nested cycle. Call
13730         vect_create_epilog_for_reduction with additional parameter.
13731         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
13732         inner-loop vectorization.
13733         (vect_recog_widen_sum_pattern): Likewise.
13734         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
13735         and reductions.
13736         (vect_mark_stmts_to_be_vectorized): Likewise.
13737         (vect_get_vec_def_for_operand): Handle nested cycles.
13738
13739 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13740
13741         * doc/invoke.texi (Debugging Options): Fix option index entries
13742         for -fdump-statistics, -frandom-seed add entries for
13743         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
13744         (FRV Options): Fix entries for -mTLS, -mtls.
13745         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
13746         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
13747         (M68hc1x Options): Fix @itemx for -mnominmax.
13748         (MCore Options): Fix entry for -mno-lsim.
13749         (MMIX Options): Fix entry for -mabi=mmixware.
13750         (PDP-11 Options): Fix entry for -mbcopy-builtin.
13751
13752 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
13753
13754         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
13755         Mention the plugin mode of gengtype.
13756         * doc/gty.texi (Source Files Containing Type Information): Likewise.
13757         * gengtype.c: Updated copyright.
13758         (plugin_files, nb_plugin_files) Added new static variables.
13759         (measure_input_list) Care about plugin_files.
13760         (write_rtx_next): Added early return in plugin mode.
13761         (create_file): Updated copyright year in generated file. Added
13762         asserts.
13763         (oprintf): Added early return if NULL outf.
13764         (get_output_file_with_visibility): Care of plugin_files.
13765         (get_output_file_name): May return null.
13766         (write_local): Added early return.
13767         (put_mangled_filename): Ditto.
13768         (finish_root_table): Added check for base_files.
13769         (write_roots): Care about null when plugins.
13770         (main): Added plugin mode.
13771
13772 2009-06-15  Ian Lance Taylor  <iant@google.com>
13773
13774         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
13775         * gcov.c (read_count_file): Add braces around variables declared
13776         before label.
13777
13778         * c.opt (Wjump-misses-init): New warning.
13779         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
13780         -Wall and -Wc++-compat if not already set.
13781         (c_common_post_options): Clear warn_jump_misses_init if it was not
13782         set.
13783         * c-decl.c (struct c_binding): Change type field to a union with
13784         new label field.  Make it the first field in the struct.  Update
13785         references to type to use u.type instead.
13786         (struct c_spot_bindings): Define.
13787         (struct c_goto_bindings): Define.
13788         (c_goto_bindings_p): Define, along with VECs.
13789         (struct c_label_vars): Define.
13790         (struct c_scope): Add has_label_bindings field.
13791         (bind_label, set_spot_bindings): New static functions.
13792         (decl_jump_unsafe, update_spot_bindings): New static functions.
13793         (update_label_decls): New static function.
13794         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
13795         Update binding u.label field to shadowed field.
13796         (c_binding_start_stmt_expr): New function.
13797         (c_binding_end_stmt_expr): New function.
13798         (pushdecl): Don't call c_begin_vm_scope.
13799         (make_label): Add defining and p_label_vars parameters.  Change
13800         all callers.
13801         (lookup_label): Correct test for whether a label has not yet been
13802         defined.  Call bind_label rather than bind.
13803         (warn_about_goto): New static function.
13804         (lookup_label_for_goto): New function.
13805         (declare_label): Call bind_label rather than bind.
13806         (check_earlier_gotos): New static function.
13807         (define_label): Don't give errors about jumping into statement
13808         expressions or scopes of variably modified types.  Call
13809         set_spot_bindings and check_earlier_gotos.  Call bind_label
13810         instead of bind.  Don't set label_context_stack_se or
13811         label_context_stack_vm.
13812         (c_get_switch_bindings): New function.
13813         (c_release_switch_bindings): New function.
13814         (c_check_switch_jump_warnings): New function.
13815         (start_function): Don't set label_context_stack_se or
13816         label_context_stack_vm.
13817         (finish_function): Likewise.
13818         * c-typeck.c (label_context_stack_se): Don't define.
13819         (label_context_stack_vm): Don't define.
13820         (c_finish_goto_label): Call lookup_label_for_goto rather than
13821         lookup_label.  Don't give errors about jumping into a statement
13822         expression or the scope of a variably modified type.  Don't set
13823         label_context_stack_se or label_context_stack_vm.
13824         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
13825         fields.  Add bindings field.
13826         (c_start_case): Don't set deleted fields.  Set bindings field.
13827         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
13828         or blocked_vm.  Call c_check_switch_jump_warnings.
13829         (c_finish_case): Don't test blocked_stmt_expr field.  Call
13830         c_release_switch_bindings.
13831         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
13832         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
13833         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
13834         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
13835         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
13836         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
13837         (c_begin_vm_scope, c_end_vm_scope): Don't define.
13838         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
13839         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
13840         (C_DECL_UNJUMPABLE_VM): Don't define.
13841         (C_DECL_UNDEFINABLE_VM): Don't define.
13842         (struct c_label_list): Don't define.
13843         (struct c_label_context_se): Don't define.
13844         (struct c_label_context_vm): Don't define.
13845         (struct c_spot_bindings): Declare.
13846         (c_bindings_start_stmt_expr): Declare.
13847         (c_bindings_end_stmt_expr): Declare.
13848         (lookup_label_for_goto): Declare.
13849         (c_get_switch_bindings, c_release_switch_bindings): Declare.
13850         (c_check_switch_jump_warnings): Declare.
13851         (label_context_stack_se, label_context_stack_vm): Don't declare.
13852         (c_finish_goto_label): Update declaration.
13853         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
13854         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
13855         (Warning Options): Document -Wjump-misses-init.
13856
13857 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
13858
13859         * tree-object-size.c (addr_object_size): Fix a pasto in the last
13860         change.
13861
13862 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
13863
13864         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
13865
13866 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
13867
13868         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
13869
13870 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
13871
13872         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
13873
13874 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
13875
13876         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
13877         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
13878         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
13879         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
13880         * dwarf2asm.c (dw2_force_const_mem): Update call to
13881         make_decl_one_only.
13882         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
13883         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
13884         * langhooks.c (lhd_comdat_group): Remove.
13885         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
13886         * tree.h (DECL_COMDAT_GROUP): New.
13887         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
13888         (tree_decl_with_vis): Add comdat_group. Remove one_only.
13889         (make_decl_one_only): Change signature.
13890         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
13891         make_decl_one_only.
13892         (make_decl_one_only): Change signature.
13893         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
13894
13895 2009-06-15  Richard Guenther  <rguenther@suse.de>
13896
13897         PR middle-end/40439
13898         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
13899
13900 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
13901
13902         * tree-ssa-math-opts.c: Remove extra divide.
13903
13904 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
13905
13906         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
13907
13908 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
13909
13910         * passes.c: Add bswap pass.
13911         * tree-pass.h: Add pass_optimize_bswap declaration.
13912         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
13913         Include rtl.h, expr.h and optabs.h for optab_handler check.
13914         (struct symbolic_number, pass_optimize_bswap): New definition.
13915         (do_shift_rotate, verify_symbolic_number_p): New functions.
13916         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
13917         (gate_optimize_bswap): New function.
13918         * tree.c (widest_int_cst_value): New function.
13919         * tree.h (widest_int_cst_value): Prototype added.
13920
13921 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
13922
13923         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
13924         REG_EQUAL/REG_EQUIV notes.
13925
13926 2009-06-14  Richard Guenther  <rguenther@suse.de>
13927
13928         PR middle-end/40389
13929         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
13930         has its address taken if NRV was applied and it is addressable.
13931         * tree-ssa-structalias.c (get_constraint_for_address_of): New
13932         function split out from ...
13933         (get_constraint_for_1): ... here.
13934         (handle_rhs_call): Use it to mark the return slot escaped if
13935         it is addressable and NRV was applied.
13936
13937 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
13938
13939         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
13940         Change first argument type to location_t.
13941         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
13942         Do not set input_location.
13943         Use loc instead of input_location throughout.
13944
13945 2009-06-13  Richard Guenther  <rguenther@suse.de>
13946
13947         PR tree-optimization/40421
13948         * tree-predcom.c (should_unroll_loop_p): Remove.
13949         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
13950
13951 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
13952
13953         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
13954         Add location argument.
13955
13956 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
13957
13958         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
13959         build_decl.
13960         * config/s390/s390.c (s390_build_builtin_va_list): Same.
13961         (s390_gimplify_va_arg): Pass location to create_artificial_label.
13962         * config/spu/spu-protos.h: Add location to
13963         spu_resolve_overloaded_builtin.
13964         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
13965         spu_build_builtin_va_list.
13966         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
13967         argument.  Pass location to build_function_call_vec.
13968         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
13969         build_decl.
13970         (emit_fpu_switch): Same.
13971         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
13972         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
13973         to build_decl and create_artificial_label.
13974         (xtensa_gimplify_va_arg_expr): Same.
13975         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
13976         (xstormy16_gimplify_va_arg_expr): Same.
13977         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
13978         * config/arm/arm.c (arm_build_builtin_va_list): Same.
13979         * config/mips/mips.c (mips_build_builtin_va_list): Same.
13980         (mips16_build_function_stub): Same.
13981         (mips16_build_call_stub): Same.
13982
13983 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
13984
13985         PR target/40327
13986         * arm/constraints.md (Pa, Pb): New constraints.
13987         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
13988         split pattern to deal with them.
13989
13990 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
13991
13992         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
13993         fix index entry for -Xpreprocessor.
13994
13995 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
13996
13997         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
13998         Add location argument to build_decl call.
13999         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
14000         (rs6000_init_builtins): Same.
14001         (spe_init_builtins): Same.
14002         (rs6000_gimplify_va_arg): Add location argument to
14003         create_artificial_label call.
14004
14005 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
14006
14007         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
14008         * combine-stack-adj.c (pass_stack_adjustments): Use it.
14009         * Makefile.in: Fix GGC dependency for gcse.o.
14010
14011 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
14012
14013         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
14014         * gimple-pretty-print.c (dump_gimple_stmt): Same.
14015         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
14016         created.
14017         * c-parser.c (c_parser_binary_expression): Use current column while
14018         building binary operations.
14019         * common.opt (fshow-column): Enable by default.
14020         * tree-vrp.c (check_array_ref): Use warning_at.
14021         (check_array_bounds): Use location from call back if expr has no
14022         location.
14023         * tree.h: Add location argument to maybe_fold_*.
14024         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
14025         (maybe_fold_offset_to_array_ref): Add location argument and use it.
14026         (maybe_fold_offset_to_component_ref): Same.
14027         (maybe_fold_offset_to_reference): Same.
14028         (maybe_fold_offset_to_address): Same.
14029         (maybe_fold_stmt_indirect): Same.
14030         (maybe_fold_stmt_addition): Same.
14031         (fold_stmt_r): Pass location to maybe_fold_*.
14032         (fold_gimple_assign): Same.
14033         * c-tree.h: Add location argument to finish_decl,
14034         default_function_array_conversion, store_init_value.
14035         * c-decl.c (define_label): Use error_at.
14036         (c_make_fname_decl): Pass location to finish_decl.
14037         (finish_decl): New location argument.
14038         (build_compound_literal): Pass location to store_init_value.
14039         (grokdeclarator): Pass location to finish_decl.
14040         (grokfield): Same.
14041         * c-typeck.c (array_to_pointer_conversion): New location argument.
14042         (function_to_pointer_conversion): Same.
14043         (default_function_array_conversion): Same.
14044         (parser_build_unary_op): Pass location to overflow_warning.
14045         (parser_build_binary_op): Same.  Use warning_at.
14046         (build_unary_op): Pass location to array_to_pointer_conversion.
14047         (build_c_cast): Pass location to digest_init.
14048         (build_modify_expr): New location argument.
14049         (convert_for_assignment): Same.
14050         (store_init_value): Same.
14051         (digest_init): Same.
14052         (output_init_element): Pass location to digest_init and
14053         array_to_pointer_conversion.
14054         (c_finish_return): Pass location to convert_for_assignment.
14055         * gimplify.c (gimplify_conversion): Pass location to
14056         maybe_fold_offset_to_address.
14057         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
14058         to maybe_fold_stmt_addition.
14059         * c-omp.c (c_finish_omp_atomic): Pass new location to
14060         build_modify_expr.
14061         (c_finish_omp_for): Same.
14062         * c-common.c (overflow_warning): New argument.
14063         * c-common.h: New argument to build_modify_expr, overflow_warning.
14064         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
14065         finish_decl.
14066         (c_parser_initializer): Pass location to
14067         default_function_array_conversion.
14068         (c_parser_initelt): Same.
14069         (c_parser_initval): Same.
14070         (c_parser_asm_operands): Same.
14071         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
14072         (c_parser_conditional_expression): Same.
14073         (c_parser_binary_expression): Add location info to stack.  Use it.
14074         (c_parser_unary_expression): Pass location to
14075         default_function_array_conversion, parser_build_unary_op,
14076         build_indirect_ref, c_parser_postfix_expression_after_primary.
14077         (c_parser_postfix_expression_after_primary): New location argument.
14078         Use it.
14079         (c_parser_expression_conv): Pass location to
14080         default_function_array_conversion.
14081         (c_parser_expr_list): Same.
14082         (c_parser_omp_atomic): Same.
14083         (c_parser_omp_for_loop): Same.
14084         * c-tree.h (struct c_declarator): Add comment to id_loc.
14085         (build_array_declarator): New argument.
14086         * c-decl.c (build_array_declarator): Add location argument.
14087         (grokdeclarator): Set id_loc for cdk_array.
14088         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
14089         build_array_declarator.
14090         * tree.c (build_omp_clause): Add location argument.
14091         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
14092         (OMP_CLAUSE_LOCATION): New macro.
14093         (struct tree_omp_clause): Add location field.
14094         (build_omp_clause): Add argument.
14095         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
14096         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
14097         build_omp_clause.
14098         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
14099         (cp_parser_omp_clause_collapse): Same.
14100         (cp_parser_omp_clause_default): Same.
14101         (cp_parser_omp_clause_if): Same.
14102         (cp_parser_omp_clause_nowait): Same.
14103         (cp_parser_omp_clause_num_threads): Same.
14104         (cp_parser_omp_clause_ordered): Same.
14105         (cp_parser_omp_clause_schedule): Same.
14106         (cp_parser_omp_clause_untied): Same.
14107         (cp_parser_omp_for_loop): Same.
14108         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
14109         * c-tree.h (c_start_case): Add location argument.
14110         (c_process_expr_stmt): Same.
14111         (c_finish_goto_*): Same.
14112         * tree-parloops.c (initialize_reductions): Pass location to
14113         build_omp_clause.
14114         (create_parallel_loop): Same.
14115         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
14116         (gfc_trans_omp_reduction_list): Same.
14117         (gfc_trans_omp_clauses): Same.
14118         (gfc_trans_omp_do): Same.
14119         * c-typeck.c (c_finish_goto_label): Same.
14120         (c_finish_goto_ptr): New location argument.
14121         (c_start_case): Same.
14122         (emit_side_effect_warnings): Same.
14123         (c_process_expr_stmt): Same.
14124         (c_finish_stmt_expr): Same.
14125         (c_finish_omp_clauses): Use error_at instead of error.
14126         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
14127         build_omp_clause.
14128         * c-omp.c (c_split_parallel_clauses): New location argument.
14129         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
14130         to build_omp_clause.
14131         (convert_local_reference_stmt): Same.
14132         (convert_gimple_call): Same.
14133         * c-common.h (c_split_parallel_clauses): New argument.
14134         * c-parser.c (c_parser_statement_after_labels): Pass location to
14135         c_finish_goto_label.
14136         (c_parser_switch_statement): Pass location to c_start_case.
14137         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
14138         and c_process_expr_stmt.
14139         (c_parser_omp_variable_list): Add location argument.
14140         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
14141         (c_parser_omp_clause_default): Same.
14142         (c_parser_omp_clause_if): Same.
14143         (c_parser_omp_clause_num_threads): Same.
14144         (-c_parser_omp_clause_ordered): Same.
14145         (c_parser_omp_clause_reduction): Pass location to
14146         c_parser_omp_variable_list.
14147         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
14148         (c_parser_omp_clause_untied): Same.
14149         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
14150         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
14151
14152         * c-tree.h (check_for_loop_decls, undeclared_variable,
14153         build_component_ref, build_array_ref, build_external_ref,
14154         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
14155         build_conditional_expr, build_compound_expr, c_cast_expr,
14156         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
14157         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
14158         argument.
14159         * c-semantics.c (build_stmt): Same.
14160         (build_case_label): Same.
14161         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
14162         (undeclared_variable): New argument.
14163         (make_label): Same.
14164         (lookup_label): Pass location on down.
14165         (define_label): Same.
14166         (finish_decl): Same.
14167         (build_compound_literal): Same.
14168         (finish_struct): Same.
14169         (finish_function): Do not set location here.
14170         (check_for_loop_decls): New argument.
14171         * tree.c (save_expr): Set location.
14172         (build_empty_stmt): New argument.
14173         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
14174         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
14175         * builtins.c (gimplify_va_arg_expr): Use locations.
14176         (expand_builtin_sync_operation): Same.
14177         * c-typeck.c (build_component_ref): New argument.
14178         (build_array_ref): Same.
14179         (build_external_ref): Same.
14180         (c_expr_sizeof_expr): Same.
14181         (c_expr_sizeof_type): Same.
14182         (parser_build_unary_op): Same.
14183         (build_conditional_expr): Same.
14184         (build_compound_expr): Pass location on down.
14185         (build_compound_expr): New argument.
14186         (build_c_cast): Same.
14187         (c_cast_expr): Same.
14188         (build_asm_expr): Same.
14189         (c_finish_return): Same.
14190         (c_process_expr_stmt): Pass location on down.
14191         (c_finish_stmt_expr): New argument.
14192         (push_clenaup): Same.
14193         (c_finish_omp_parallel): Same.
14194         (c_finish_omp_task): Same.
14195         * gimplify.c (gimplify_call_expr): Pass location on down.
14196         * c-omp.c (c_finish_omp_master): New argument.
14197         (c_finish_omp_critical): Same.
14198         (c_finish_omp_ordered): Same.
14199         (c_finish_omp_barrier): Same.
14200         (-c_finish_omp_taskwait): Same.
14201         (c_finish_omp_atomic): Same.
14202         (c_finish_omp_flush): Same.
14203         * tree-inline.c (copy_tree_body_r): Pass location on down.
14204         (inline_forbidden_p): Remove use of input_location.
14205         * c-gimplify.c (c_build_bind_expr): New argument.
14206         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
14207         (c_sizeof_or_alignof_type): New argument.
14208         (c_alignof_expr): Same.
14209         (build_va_arg): Same.
14210         (c_add_case_label): Same.
14211         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
14212         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
14213         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
14214         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
14215         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
14216         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
14217         New argument.
14218         * stub-objc.c (objc_build_selector_expr): Same.
14219         (objc_build_throw_stmt): Same.
14220         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
14221         (c_parser_initelt): Same.
14222         (c_parser_compound_statement): Same.
14223         (c_parser_compound_statement_nostart): Same.
14224         (c_parser_label): Same.
14225         (c_parser_statement_after_labels): Same.
14226         (c_parser_if_body): Same.
14227         (c_parser_else_body): Same.
14228         (c_parser_if_statement): Same.
14229         (c_parser_switch_statement): Same.
14230         (c_parser_while_statement): Same.
14231         (c_parser_do_statement): Same.
14232         (c_parser_for_statement): Same.
14233         (c_parser_asm_statement): Same.
14234         (c_parser_conditional_expression): Same.
14235         (c_parser_binary_expression): Same.
14236         (c_parser_cast_expression): Same.
14237         (c_parser_unary_expression): Same.
14238         (c_parser_sizeof_expression): Same.
14239         (c_parser_alignof_expression): Same.
14240         (c_parser_postfix_expression): Same.
14241         (c_parser_expression): Same.
14242         (c_parser_objc_receiver): Same.
14243         (c_parser_omp_variable_list): Same.
14244         (c_parser_omp_structured_block): Same.
14245         (c_parser_omp_atomic): New argument.
14246         (c_parser_omp_barrier): Same.
14247         (c_parser_omp_critical): Same.
14248         (c_parser_omp_flush): Pass location on down.
14249         (c_parser_omp_for_loop): New argument.
14250         (c_parser_omp_for): Same.
14251         (c_parser_omp_master): Same.
14252         (c_parser_omp_ordered): Same.
14253         (c_parser_omp_sections_scope): Same.
14254         (c_parser_omp_sections): Same.
14255         (c_parser_omp_parallel): Same.
14256         (c_parser_omp_single): Same.
14257         (c_parser_omp_task): Same.
14258         (c_parser_omp_taskwait): Pass location on down.
14259         (c_parser_omp_construct): Same.
14260         (c_parser_omp_threadprivate): Same.
14261         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
14262         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
14263         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
14264         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
14265         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
14266         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
14267         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
14268         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
14269         config/i386/i386.c, stmt.c:
14270         Add location argument to the following function definitions and/or
14271         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
14272         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
14273         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
14274         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
14275         do_case, c_finish_bc_stmt, build_compound_literal,
14276         build_function_call.
14277         * c-decl.c (build_compound_literal): Add location argument.
14278         Make all diagnostic calls use location.
14279         (start_struct): Same.
14280         (finish_struct): Same.
14281         (start_enum): Same.
14282         (build_enumerator): Same.
14283         (start_function): Same.
14284         (grokdeclarator): Make all diagnostic calls use location.
14285         (store_parm_decls_oldstyle): Same.
14286         * c-typeck.c (build_function_call): Add location argument.
14287         Make all diagnostic calls use location.
14288         (do_case): Same.
14289         (c_finish_bc_stmt): Same.
14290         * tree-nested.c (get_trampoline_type): Add argument.
14291         Pass location to build_decl.
14292         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
14293         * rtl.h (RTL_LOCATION): New.
14294         * c-common.c (c_add_case_label): Add location argument.
14295         Make all diagnostic calls use location.
14296         * c-common.h: Add location argument to make_fname_decl, do_case,
14297         c_add_case_label, build_function_call, resolve_overloaded_builtin.
14298         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
14299         Set it appropriately for every case.  Pass enum_loc to start_enum
14300         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
14301         parser_xref_tag.
14302         (c_parser_struct_or_union_specifier): Save location.  Use it for
14303         start_struct, finish_struct, and parser_xref_tag.
14304
14305 2009-06-12  Ian Lance Taylor  <iant@google.com>
14306
14307         * fold-const.c (fold_unary): Rename local variable and to and_expr.
14308
14309         * c-opts.c (c_common_handle_option): For -Wc++-compat set
14310         cpp_opts->warn_cxx_operator_names.
14311
14312 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14313
14314         PR tree-opt/38865
14315         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
14316         is returns NULL and OP is a VCE, look through the VCE.
14317
14318 2009-06-12  Ian Lance Taylor  <iant@google.com>
14319
14320         PR bootstrap/40430
14321         * collect2.c (main): Use CONST_CAST2 in code inside #if
14322         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
14323
14324 2009-06-12  Joey Ye  <joey.ye@intel.com>
14325
14326         PR middle-end/39146
14327         * cfgexpand.c (get_decl_align_unit): Update
14328         max_used_stack_slot_alignment with align instead of
14329         stack_alignment_needed.
14330
14331         * function.c (assign_stack_local_1): Update
14332         max_used_stack_slot_alignment with alignment_in_bits instead
14333         of stack_alignment_needed.
14334         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
14335         here.
14336
14337 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
14338
14339         * dwarf2out.c (last_var_location_insn): New variable.
14340         (dwarf2out_end_epilogue): Clear last_var_location_insn.
14341         (dwarf2out_var_location): Don't record anything after last real
14342         insn.  Only change labels if there were any real instructions
14343         in between last note and this one, or if changed sections.
14344
14345 2009-06-11  Richard Henderson  <rth@redhat.com>
14346
14347         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
14348         note when storing the frame pointer in a register.
14349         (FRP): Don't redefine to nothing for epilogue.
14350         (alpha_expand_epilogue): Mark register and sp restores.
14351         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
14352
14353         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
14354         when gen_lowpart is needed.
14355
14356 2009-06-11  Richard Henderson  <rth@redhat.com>
14357
14358         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
14359
14360         * dwarf2out.c (need_data_align_sf_opcode): New.
14361         (div_data_align): Move earlier.
14362         (def_cfa_1, reg_save): Use it.
14363
14364 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
14365
14366         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
14367         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
14368         (ix86_handle_option): Handle OPT_mcrc32.
14369         (ix86_target_string): Add -mcrc32.
14370         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
14371
14372         * config/i386/i386.h (TARGET_CRC32): New.
14373
14374         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
14375         (sse4_2_crc32di): Likewise.
14376
14377         * config/i386/i386.opt (mcrc32): New.
14378
14379         * doc/invoke.texi: Document -mcrc32.
14380
14381 2009-06-11  Richard Henderson  <rth@redhat.com>
14382
14383         * common.opt (gdwarf-): Accept a version number.
14384         * doc/invoke.texi (gdwarf-): Update docs.
14385         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
14386         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
14387         version level, and record it.
14388
14389         * dwarf2.h (DW_CIE_VERSION): Remove.
14390         * dwarf2out.c (DWARF_VERSION): Remove.
14391         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
14392         (output_call_frame_info): Use CIE version 3 for dwarf3,
14393         or if the return register column is out of range for version 1.
14394         (dwarf_stack_op_name): Add all dwarf3 values.
14395         (DEBUG_PUBTYPES_SECTION): New.
14396         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
14397         encoding change for dwarf3.
14398         (output_die) [dw_val_class_die_ref]: Likewise.
14399         (output_compilation_unit_header): Emit correct version for dwarf3.
14400         (output_line_info): Likewise.
14401         (output_pubnames): Update for DWARF_VERSION removal.
14402         (output_aranges): Likewise.
14403         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
14404         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
14405         (dwarf2out_finish): Likewise.
14406
14407 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
14408
14409         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
14410         in r148403.
14411
14412 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
14413
14414         PR c/39252
14415         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
14416         * builtins.c (expand_builtin_unreachable): New function.
14417         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
14418         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
14419         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
14420         successors.
14421         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
14422         searching for missing barriers.
14423
14424 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
14425
14426         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
14427         when -fprofile-generate* was passed.
14428         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
14429
14430 2009-06-11  Anthony Green  <green@moxielogic.com>
14431
14432         * config/moxie/moxie.md: Define length attribute for all instructions.
14433         (rCC): Define.
14434         (*b<cond:code>): Support limited branch ranges for new PC-relative
14435         branch instructions.
14436         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
14437
14438 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
14439
14440         * config/i386/i386.c (min_insn_size): Use get_attr_length
14441         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
14442         For __asm return 0.
14443
14444         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
14445         instead of emit_insn_before.
14446
14447 2009-06-10  Ian Lance Taylor  <iant@google.com>
14448
14449         PR bootstrap/40408
14450         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
14451         GIMPLE_SWITCH.
14452
14453 2009-06-10  Revital Eres  <eres@il.ibm.com>
14454
14455         * passes.c (init_optimization_passes): Reschedule
14456         predictive-commoning pass before complete unroll pass.
14457
14458 2009-06-10  Martin Jambor  <mjambor@suse.cz>
14459
14460         * cgraph.c (cgraph_node_can_be_local_p): New function.
14461         (cgraph_make_node_local): New function.
14462         * cgraph.h (cgraph_node_can_be_local_p): Declare.
14463         (cgraph_make_node_local): Declare.
14464
14465 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
14466
14467         * tree.h (tree_base): Add packed_flag and user_align fields.
14468         Decrease size of spare field.
14469         (TYPE_USER_ALIGN): Use user_align from tree_base.
14470         (DECL_USER_ALIGN): Likewise.
14471         (TYPE_PACKED): Use packed_flag from tree_base.
14472         (DECL_PACKED): Likewise.
14473         (tree_type): Delete packed_flag and user_align fields.  Widen
14474         precision field.  Widen mode field and shuffle fields to align
14475         mode on an 8-bit boundary.
14476         (tree_decl_common): Delete decl_flag_1 and user_align fields.
14477         Renumber decl_flag_* fields.  Fix comments.  Widen
14478         decl_common_unused field.
14479         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
14480         (DECL_EXTERNAL): Likewise.
14481         (DECL_BIT_FIELD): Likewise.
14482         (DECL_NONADDRESSABLE_P): Likewise.
14483         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
14484         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
14485
14486 2009-06-10  Ian Lance Taylor  <iant@google.com>
14487
14488         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
14489         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
14490         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
14491         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
14492         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
14493         DEF_VEC_ALLOC_FUNC_P.
14494         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
14495         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
14496         DEF_VEC_ALLOC_FUNC_O.
14497         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
14498         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
14499         DEF_VEC_ALLOC_FUNC_I.
14500         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
14501         (vec_stack_p_reserve_exact_1): Declare.
14502         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
14503         (vec_stack_free): Declare.
14504         (VEC_stack_alloc): Define.
14505         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
14506         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
14507         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
14508         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
14509         for void_p.
14510         (stack_vecs): New static variable.
14511         (vec_stack_p_reserve_exact_1): New function.
14512         (vec_stack_o_reserve_1): New static function.
14513         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
14514         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
14515         (vec_stack_free): New function.
14516         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
14517         (VEC_df_ref_stack_alloc): Define.
14518         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
14519         DEF_VEC_ALLOC_P_STACK.
14520         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
14521         (struct df_collection_rec): Change _vec fields to VEC.  Remove
14522         _use fields.
14523         (df_free_collection_rec): Adjust for new fields.
14524         (df_insn_rescan): Use new df_collection_rec fields.
14525         (df_notes_rescan, df_canonize_collection_rec): Likewise.
14526         (df_ref_create_structure, df_ref_record): Likewise.
14527         (df_get_conditional_uses, df_get_call_refs): Likewise.
14528         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
14529         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
14530         (df_record_exit_block_uses, df_bb_verify): Likewise.
14531         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
14532         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
14533         Remove count parameter.  Change return type to void.  Change all
14534         callers.
14535         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
14536         Remove count parameter.  Change return type to void.  Change all
14537         callers.
14538         (df_install_refs): Change old_vec parameter to VEC.  Remove count
14539         parameter.  Change all callers.
14540         (df_install_mws): Change old_vec parameter to VEC.  Remove count
14541         parameter.  Change all callers.
14542         (df_refs_verify): Change new_rec parameter to VEC.  Change call
14543         callers.
14544         (df_mws_verify): Likewise.
14545
14546 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
14547
14548         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
14549
14550 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
14551
14552         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
14553
14554 2009-06-10  Anthony Green  <green@moxielogic.com>
14555
14556         * config/moxie/crti.asm: New file.
14557         * config/moxie/crtn.asm: New file.
14558         * config/moxie/moxie.c: New file.
14559         * config/moxie/moxie.h: New file.
14560         * config/moxie/sfp-machine.h: New file.
14561         * config/moxie/moxie-protos.h: New file.
14562         * config/moxie/t-moxie: Created.
14563         * config/moxie/t-moxie-softfp: Created.
14564         * config/moxie/moxie.md: Created.
14565         * config/moxie/constraints.md: Created.
14566         * config.gcc: Add moxie support.
14567         * doc/md.texi (Machine Constraints): Add moxie constraints.
14568         * doc/contrib.texi (Contributors): Mention moxie port.
14569         * doc/install.texi (Specific): Mention the moxie port.
14570
14571 2009-06-09  Ian Lance Taylor  <iant@google.com>
14572
14573         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
14574         compiling with C++.
14575         * optabs.c (optab_table): Only use designated initializers if
14576         HAVE_DESIGNATED_INITIALIZERS is defined.
14577         (convert_optab_table): Likewise.
14578         (init_optabs): Always call init_insn_codes if
14579         HAVE_DESIGNATED_INITIALIZERS is not defined.
14580
14581 2009-06-09  Ian Lance Taylor  <iant@google.com>
14582
14583         * targhooks.c (default_builtin_vectorized_function): Change fn
14584         parameter to unsigned int.
14585         (default_builtin_vectorized_conversion): Change code parameter to
14586         unsigned int.
14587         (default_builtin_reciprocal): Change fn parameter to unsigned int.
14588         * targhooks.h: Update declarations.
14589         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
14590         parameter to unsigned int.
14591
14592         * c-typeck.c (comptypes_check_enum_int): New static function.
14593         (comptypes_internal): Add enum_and_int_p parameter.  Change all
14594         callers.
14595         (comp_target_types): Add location parameter.  Change all callers.
14596         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
14597         Change all callers.
14598         (function_types_compatible_p, type_lists_compatible_p): Likewise.
14599         (build_conditional_expr): Add colon_loc parameter.  Change all
14600         callers.
14601         (convert_for_assignment): Add location parameter.  Change all callers.
14602         * c-parser.c (c_parser_conditional_expression): Pass location of
14603         colon to build_conditional_expr.
14604         * c-tree.h (build_conditional_expr): Update declaration.
14605
14606 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
14607
14608         * graphite.c: Revert previous patch.
14609
14610 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
14611
14612         PR bootstrap/40103
14613         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
14614
14615 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
14616
14617         * tree-ssa-loop-prefetch.c
14618         (loop_prefetch_arrays): Fixed a portability problem in printf format
14619         string.
14620
14621 2009-06-09  Martin Jambor  <mjambor@suse.cz>
14622
14623         PR tree-optimization/40351
14624         * tree-sra.c (propagate_subacesses_accross_link): Check that a
14625         refrence to a potential artifical subaccess can be constructed.
14626
14627 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
14628
14629         * config/sh/sh-protos.h (sh_optimization_options): Declare.
14630         (sh_override_options): Likewise.
14631         * config/sh/sh.c: Include params.h.
14632         (sh_optimization_options): New.
14633         (sh_override_options): Likewise.
14634         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
14635         (OVERRIDE_OPTIONS): Use sh_override_options.
14636
14637 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
14638
14639         * dwarf2out.c (emit_cfa_remember): New variable.
14640         (add_fde_cfi): If emit_cfa_remember, recurse to add
14641         DW_CFA_remember_state first.
14642         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
14643         instead just set emit_cfa_remember.
14644
14645 2009-06-08  Jan Hubicka  <jh@suse.cz>
14646
14647         PR debug/40126
14648         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
14649
14650 2009-06-08  Jan Hubicka  <jh@suse.cz>
14651
14652         PR middle-end/39834
14653         * cgraphunit.c (save_inline_function_body): Do not copy transform
14654         hooks for saved inline bodies.
14655         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
14656         for given function.
14657
14658 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
14659
14660         * jump.c (returnjump_p): Handle delayed branches.  Add missing
14661         function comment.
14662
14663 2009-06-08  Jan Hubicka  <jh@suse.cz>
14664
14665         PR middle-end/40102
14666         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
14667         original node might've been modified.
14668         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
14669
14670 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
14671
14672         * tree-object-size.c (addr_object_size): Add OSI argument.
14673         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
14674         (compute_builtin_object_size, expr_object_size): Adjust callers.
14675         (plus_stmt_object_size): Call addr_object_size instead of
14676         compute_builtin_object_size.
14677
14678 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
14679             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
14680
14681         * tree-ssa-loop-prefetch.c
14682         (gather_memory_references): Introduced a counter for the number of
14683         memory references.
14684         (anything_to_prefetch_p): Introduced a counter for the number of
14685         prefetches.
14686         (is_loop_prefetching_profitable): New function with a cost model
14687         for prefetching.
14688         (loop_prefetch_arrays): Use the new cost model to determine if
14689         prefetching is profitable.
14690         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
14691         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
14692         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
14693         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
14694         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
14695         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
14696
14697 2009-06-08  Michael Matz  <matz@suse.de>
14698
14699         PR debug/40012
14700         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
14701         partitions use the same.
14702         (expand_one_var): Deal with DECL_RTL sometimes begin set also
14703         for basevars of SSA_NAMEs.
14704         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
14705         to not expand them twice.
14706         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
14707         multiple places.
14708
14709 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
14710
14711         * common.opt (fcompare-debug=, fcompare-debug-second): New.
14712         (fdump-final-insns=, gtoggle): New.
14713         * doc/invoke.texi: Document them.
14714         * final.c (rest_of_clean_state): Dump final insn stream.
14715         * gcc.c (invoke_as): Hook in -fcompare-debug.
14716         (static_spec_functions): Add compare-debug-dump-opt,
14717         compare-debug-self-opt and compare-debug-auxbase-opt.
14718         (compare_debug, compare_debug_second, compare_debug_opt): New.
14719         (switches_debug_check, n_switches_debug_check): New.
14720         (debug_auxbase_opt, debug_check_temp_file): New.
14721         (process_command): Handle -fno-compare-debug, -fcompare-debug and
14722         -fcompare-debug=*.
14723         (do_self_spec): Handle arguments after switches.
14724         (do_spec_1): Add .gk extension to temp file basenames for compare.
14725         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
14726         (cc1_options): Use it instead of normal auxbase computation for
14727         the second compare-debug compilation.
14728         (compare_files): New.
14729         (main): Set up and implement compare debug mode.
14730         (compare_debug_dump_opt_spec_function): New.
14731         (compare_debug_self_opt_spec_function): New.
14732         (compare_debug_auxbase_opt_spec_function): New.
14733         * toplev.c (process_options): Handle flag_gtoggle,
14734         flag_dump_final_insns.
14735         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
14736         during -fcompare-debug-second compilation.
14737
14738 2009-06-07  Ian Lance Taylor  <iant@google.com>
14739
14740         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
14741         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
14742
14743         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
14744         with no default node.  Change warning with %H to warning_at.
14745         Don't clear warn_switch around case checking.
14746         * doc/invoke.texi (Warning Options): Clarify distinction between
14747         -Wswitch and -Wswitch-enum.
14748
14749 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14750
14751         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
14752
14753 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14754
14755         * gbl-ctors.h: Add header guard.
14756
14757 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14758
14759         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
14760         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
14761         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
14762         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
14763         prototypes for removed functions.
14764         (expressions_equal_p): Move to ...
14765         * tree-ssa-sccvn.h: ... here and ...
14766         * matrix-reorg.c: ... adjust includes.
14767
14768 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14769
14770         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
14771
14772 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14773
14774         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
14775         (finish_function): Remove erroneous whitespace.
14776
14777 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14778
14779         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
14780         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
14781
14782 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14783
14784         * errors.c (internal_error): Commentary typo fix.
14785         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
14786         * tree-ssa-pre.c: Ditto.
14787
14788 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14789
14790         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
14791         them is supposed to hold actual statements.
14792
14793 2009-06-06  Ian Lance Taylor  <iant@google.com>
14794
14795         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
14796         empty statements can now have attributes.
14797
14798 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
14799
14800         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
14801         * config/mips/mips.md: Ditto.
14802
14803 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
14804
14805         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
14806         _RELOCATABLE.
14807         (__eabi_uconvert): Likewise.
14808
14809 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
14810
14811         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
14812         CFI_* definitions with IN_GCC.
14813
14814 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
14815
14816         * xcoffout.h (xcoffout_source_line): Update prototype.
14817
14818 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14819
14820         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
14821         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
14822
14823 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
14824
14825         PR middle-end/40340
14826         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
14827         inlined_function_outer_scope_p blocks for artificial inlines
14828         even at -g0/-g1.
14829         * tree.c (tree_nonartificial_location): Rewrite using
14830         block_nonartificial_location.
14831
14832 2009-06-05  Revital Eres  <eres@il.ibm.com>
14833             Leehod Baruch  <leehod@il.ibm.com>
14834
14835         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
14836         (expand_expr_real_1): Remove comment.
14837         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
14838         Vectorize misaligned access when the target supports it.
14839         (vect_supportable_dr_alignment): Check for unaligned access support.
14840         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
14841         and remove asset.
14842
14843 2009-06-05  Julian Brown  <julian@codesourcery.com>
14844
14845         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
14846         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
14847
14848 2009-06-05  Richard Guenther  <rguenther@suse.de>
14849
14850         PR bootstrap/40350
14851         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
14852         as possibly unused.
14853
14854 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
14855
14856         * config/s390/s390.c (global_not_special_regno_p): New static inline.
14857         (save_gprs): Don't tell unwinder when a global register is saved.
14858         (s390_emit_epilogue): Emit needed epilogue unwind info.
14859
14860 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
14861
14862         * dwarf2out.c (deferred_asm_name): New.
14863         (add_name_and_src_coords_attributes): Defer creation of
14864         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
14865         computed yet.
14866         (move_linkage_attr): New.
14867         (dwarf2out_finish): Revisit deferrals and emit attributes at the
14868         right place.
14869
14870 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
14871
14872         * tree-nested.c (finalize_nesting_tree_1): Declare the
14873         frame_decl in the binding tree.
14874
14875 2009-06-04  Cary Coutant  <ccoutant@google.com>
14876
14877         * basic-block.h (struct basic_block_def): Add discriminator field.
14878         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
14879         callers.
14880         * debug.c (do_nothing_debug_hooks): Add additional entry.
14881         (debug_nothing_int_charstar_int): New function.
14882         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
14883         (debug_nothing_int_charstar_int): New declaration.
14884         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
14885         discriminator value in .loc directive.
14886         * final.c (last_discriminator): New variable.
14887         (discriminator): New variable.
14888         (final_start_function): Initialize above variables, pass current
14889         discriminator to debug hook.
14890         (notice_source_line): Check for discriminator change.
14891         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
14892         * sdbout.c (sdbout_source_line): New parameter.
14893         * tree-cfg.c (struct locus_discrim_map): New structure type.
14894         (discriminator_per_locus): New hash table.
14895         (build_gimple_cfg): Allocate and free discriminator hash table.
14896         (make_edges): Call assign_discriminator.
14897         (locus_map_hash): New function.
14898         (locus_map_eq): New function.
14899         (next_discriminator_for_locus): New function.
14900         (same_line_p): New function.
14901         (assign_discriminator): New function.
14902         (make_cond_expr_edges): Call assign_discriminator.
14903         (make_gimple_switch_edges): Likewise.
14904         (first_non_label_stmt): New function.
14905         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
14906         all callers.
14907         * xcoffout.c (xcoffout_source_line): Add new parameter.
14908
14909         * configure.ac (gcc_cv_as_discriminator): New configury check for
14910         gas support for discriminator.
14911         * configure: Regenerate.
14912         * config.in: Regenerate.
14913
14914 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
14915
14916         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
14917         val after checking for integers.
14918
14919 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
14920
14921         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
14922         X64_REGPARM_MAX.
14923         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
14924         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
14925         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
14926         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
14927         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
14928         X64_SSE_REGPARM_MAX.
14929         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
14930         X64_SSE_REGPARM_MAX.
14931
14932 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
14933
14934         * gcc.c (report_times_to_file): New.
14935         (execute): Implement it.
14936         (process_command): Support -time=.
14937         * doc/invoke.texi: Document it.
14938
14939 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
14940
14941         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
14942         that have value exprs.
14943
14944 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
14945
14946         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
14947         declarations for constants until...
14948         (dw2_output_indirect_constant_1): ... this point.
14949
14950 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
14951
14952         PR target/10242
14953         * arm.md (arm_addsi3): Don't try to split an add with an
14954         eliminable register until after reload has completed.
14955
14956 2009-06-03  Ian Lance Taylor  <iant@google.com>
14957
14958         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
14959         * genattrtab.c (write_length_unit_log): Likewise.
14960         * genchecksum.c (dosum): Likewise.
14961         * gengtype.c (write_rtx_next): Likewise.
14962         (finish_root_table, write_roots): Likewise.
14963         * gimple.c (gimple_ops_offset_): Likewise.
14964         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
14965         * config/arc/arc.c (arc_attribute_table): Likewise.
14966         * config/arm/arm.c (arm_attribute_table): Likewise.
14967         * config/avr/avr.c (avr_attribute_table): Likewise.
14968         * config/crx/crx.c (crx_attribute_table): Likewise.
14969         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
14970         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
14971         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
14972         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
14973         * config/sh/sh.c (sh_attribute_table): Likewise.
14974         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
14975         * config/spu/spu.c (spu_attribute_table): Likewise.
14976         * config/v850/v850.c (v850_attribute_table): Likewise.
14977
14978         * config/alpha/alpha.c (vms_attribute_table): Make static.
14979         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
14980         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
14981         * config/mips/mips.c (mips_attribute_table): Likewise.
14982
14983         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
14984         $(SYSTEM_H).
14985         (cc1-checksum.o): Likewise.
14986
14987 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
14988
14989         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
14990
14991 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
14992
14993         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
14994         insn if it is changing sp.  Use gen_add3_insn instead of
14995         conditionally gen_addsi3 and gen_adddi3.
14996         (offset_below_red_zone_p): New static inline function.
14997         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
14998         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
14999         * config/rs6000/ppc-asm.h: Include auto-host.h.
15000         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
15001         CFI_RESTORE): Define.
15002         * config/rs6000/crtresxgpr.asm: Add unwind info.
15003         * config/rs6000/crtresxfpr.asm: Likewise.
15004         * config/rs6000/crtresgpr.asm: Likewise.
15005         * config/rs6000/crtresfpr.asm: Likewise.
15006         * config/rs6000/crtsavgpr.asm: Likewise.
15007         * config/rs6000/crtsavfpr.asm: Likewise.
15008
15009         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
15010         argument of DWARF2_FRAME_REG_OUT macros.
15011
15012 2009-06-03  Julian Brown  <julian@codesourcery.com>
15013
15014         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
15015         words or less (including TImode) in core registers.
15016
15017 2009-06-03  Richard Guenther  <rguenther@suse.de>
15018
15019         PR middle-end/40328
15020         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
15021
15022 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
15023
15024         * statistics.c (statistics_counter_event): Do not record event
15025         in pass dump if its number == -1.
15026         (curr_statistics_hash): Add assert that we never get passes
15027         with static number == -1.
15028
15029 2009-06-03  Richard Guenther  <rguenther@suse.de>
15030             Andrey Belevantsev  <abel@ispras.ru>
15031
15032         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
15033         non-BLKmode arrays addressable.
15034
15035 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
15036
15037         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
15038         * config/m68k/m68k.h: ... here.
15039
15040 2009-06-03  Martin Jambor  <mjambor@suse.cz>
15041
15042         PR tree-optimization/40323
15043         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
15044         assignment.
15045
15046 2009-06-03  Richard Guenther  <rguenther@suse.de>
15047
15048         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
15049         consistently.
15050
15051 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
15052
15053         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
15054         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
15055         JUMP_TABLE_DATA_P where applicable.
15056         * config/sh/sh.c: Ditto.
15057         * config/sh/sh.h: Ditto.
15058         * config/sh/sh.md: Ditto.
15059         * config/sh/symbian.c: Ditto.
15060
15061 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
15062
15063         * config/i386/driver-i386.c (describe_cache): Optimize
15064         concatenation of strings.  Use snprintf instead of sprintf.
15065         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
15066         target when not compiling with GCC.
15067
15068 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
15069
15070         * config/sh/sh.c: Revert last change.
15071         (sh_expand_epilogue): Emit a blockage insn before the frame
15072         pointer adjustment unconditionally.
15073
15074 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
15075
15076         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
15077         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
15078         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
15079         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
15080         to COLLECT_GCC_OPTIONS.
15081
15082 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
15083
15084         * collect2.c (target_system_root): New variable.
15085         (main): Handle --sysroot=.
15086         (ignore_library): Strip the sysroot from the library path.
15087
15088 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
15089
15090         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
15091         (collect2.o): Depend on collect2-aix.h.
15092         (collect2-aix.o): New rule.
15093         * collect2-aix.h: New file.
15094         * collect2-aix.c: Likewise.
15095         * collect2.c: Include collect2-aix.h.  Don't undefine
15096         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
15097         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
15098         Use TARGET_AIX_VERSION instead of _AIX51.
15099         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
15100         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
15101         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
15102         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
15103         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
15104
15105 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
15106
15107         * collect2.c (ignore_library): Avoid premature post-increment
15108         and null deference.
15109
15110 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
15111
15112         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
15113         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
15114         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
15115         CROSS_DIRECTORY_STRUCTURE too.
15116         (LINK_LIBG_SPEC): Likewise.
15117         (LIB_SPEC): Add %R to sysroot paths.
15118         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
15119         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
15120         * config/rs6000/aix51.h: As for aix43.h.
15121         * config/rs6000/aix52.h: Likewise.
15122         * config/rs6000/aix53.h: Likewise.
15123         * config/rs6000/aix61.h: Likewise.
15124         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
15125         to the beginning of sysroot paths.
15126
15127 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15128
15129         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
15130         INSN_LISTs that are out of the REG_NOTE range.
15131
15132 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15133
15134         * loop-unroll.c (struct iv_to_split): Add pointer to next.
15135         (struct var_to_expand): Likewise.
15136         (struct opt_info): Add head and tail for linked lists of the above.
15137         (analyze_insn_to_expand_var): Initialize next.
15138         (analyze_iv_to_split_insn): Likewise.
15139         (analyze_insns_in_loop): Create linked lists.
15140         (allocate_basic_variable): Simplify for use without hash table.
15141         (insert_var_expansion_initialization): Likewise, make it type-safer.
15142         (combine_var_copies_in_loop_exit): Likewise.
15143         (apply_opt_in_copies): Walk lists rather than hash tables.
15144         (release_var_copies): Simplified and inlined by hand into...
15145         (free_opt_info): ... this function.
15146
15147 2009-06-02  Richard Guenther  <rguenther@suse.de>
15148
15149         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
15150         for field decls.
15151
15152 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15153
15154         * cfgexpand.c (gimple_expand_cfg): Discard the source location
15155         only for builtins that are not overridden.
15156
15157 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15158
15159         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
15160         label string.
15161
15162 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15163
15164         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
15165
15166 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15167
15168         * combine.c (move_deaths): Compare LUIDs within the same BB only.
15169
15170 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15171
15172         * common.opt (fdump-unnumbered-links): New.
15173         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
15174         * print-rtl.c (flag_dump_unnumbered_links): New.
15175         (print_rtx): Test it.
15176
15177 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
15178
15179         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
15180         push/pop multiple to 8-byte alignment.
15181
15182 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
15183
15184         * config/i386/i386.c (queued_cfa_restores): New static variable.
15185         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
15186         functions.
15187         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
15188         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
15189         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
15190         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
15191         note unconditionally.
15192         (ix86_emit_restore_regs_using_mov): Likewise.
15193         (ix86_emit_restore_sse_regs_using_mov): Likewise.
15194         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
15195         it through to ix86_emit_restore_reg_using_pop.
15196         (ix86_emit_leave): Add RED_OFFSET argument.  Call
15197         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
15198         instead of adding REG_CFA_OFFSET note unconditionally.
15199         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
15200         the above functions.  Call ix86_add_queued_cfa_restore_notes when
15201         needed.
15202
15203         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
15204         force output of the label even for dwarf2out_do_cfi_asm.
15205         (add_fde_cfi): If -g2 and above and cfi might change CFA,
15206         force creation of CFI label and chain DW_CFA_set_loc jumping to it
15207         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
15208         caller.
15209         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
15210         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
15211         dwarf2out_cfi_label callers.
15212         * tree.h (dwarf2out_cfi_label): Adjust prototype.
15213         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
15214         Adjust dwarf2out_cfi_label callers.
15215         * config/vax/vax.c (vax_output_function_prologue): Likewise.
15216
15217         * config/i386/i386.h (struct machine_cfa_state,
15218         struct machine_function): Guard with ifndef USED_FOR_TARGET
15219         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
15220
15221         PR other/40024
15222         * emutls.c (__emutls_get_address): Change arr->size to mean number
15223         of allocated arr->data entries instead of # of slots + 1.
15224
15225         PR middle-end/40316
15226         * recog.c (peep2_reinit_state): New function.
15227         (peephole2_init_state): Use it at the end of a basic block and also
15228         when seeing a RTX_FRAME_RELATED_P insn.
15229
15230 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
15231
15232         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
15233         fixuns_truncrfdi2): New.
15234         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
15235         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
15236         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
15237         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
15238         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
15239         *recip_approx): Remove.
15240         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
15241         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
15242         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
15243         move to div.md.
15244         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
15245         setf_exp_rf): New.
15246
15247 2009-06-01  Ian Lance Taylor  <iant@google.com>
15248
15249         * attribs.c (register_attribute): Use CONST_CAST.
15250         * collect2.c (main): Use CONST_CAST2.
15251         (scan_prog_file): Likewise.
15252         * gcc.c (process_command, main): Likewise.
15253         * toplev.c (toplev_main): Likewise.
15254
15255         * c-typeck.c (handle_warn_cast_qual): New static function,
15256         partially broken out of build_c_cast.
15257         (build_c_cast): Call handle_warn_cast_qual.
15258         * doc/invoke.texi (Warning Options): Document new effect of
15259         -Wcast-qual.
15260
15261 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
15262
15263         * diagnostic.c (diagnostic_build_prefix): Always print columns.
15264         (diagnostic_report_current_module): Print columns.
15265         * common.opt (flag_show_column): Enable by default.
15266
15267 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
15268
15269         * alias.c (find_base_term): Check for NULL term before returning.
15270
15271 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
15272
15273         Revert due to PR40320:
15274         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
15275         * calls.c (emit_library_call_value_1): Don't force_operand for move
15276         and push insns.
15277
15278 2009-06-01  Olivier Hainque  <hainque@adacore.com>
15279             Eric Botcazou  <ebotcazou@adacore.com>
15280
15281         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
15282         to be processed as a bitfield for constructor output purposes.
15283         * output.h (initializer_constant_valid_for_bitfield_p): Declare
15284         new function.
15285         * varasm.c (oc_local_state): New type, output_constructor
15286         local state to support communication with helpers.
15287         (oc_outer_state): New type, output_constructor outer state of
15288         relevance in recursive calls.
15289         (output_constructor_array_range): New output_constructor helper,
15290         extracted code for an array range element.
15291         (output_constructor_regular_field): New output_constructor helper,
15292         extracted code for an element that is not a bitfield.
15293         (output_constructor_bitfield): New output_constructor helper,
15294         extracted code for a bitfield element.  Accept an OUTER state
15295         argument for recursive processing.  Recurse on record or array
15296         CONSTRUCTOR values, possibly past noop conversions.
15297         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
15298         VALUE is a valid constant-valued expression for use in a static
15299         bit-field initializer.
15300         (output_constructor): Rework to use helpers.  Accept and honor an
15301         OUTER state argument for recursive calls.  Return total size.  Be
15302         prepared for nested constructors initializing bitfields.
15303         (output_constant): Feed OUTER in calls to output_constructor.
15304
15305 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
15306
15307         * calls.c (emit_library_call_value_1): Don't force_operand for move
15308         and push insns.
15309
15310 2009-06-01  Nick Clifton  <nickc@redhat.com>
15311
15312         * doc/invoke.texi (IA-64 Options): Fix typo.
15313
15314 2009-06-01  Ira Rosen  <irar@il.ibm.com>
15315
15316         PR tree-optimization/39129
15317         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
15318         printed message.
15319         (vect_do_peeling_for_loop_bound): Use
15320         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
15321         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
15322         (vect_loop_versioning): Likewise.
15323         (vect_create_cond_for_alias_checks): Fix indentation.
15324         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
15325         macros.
15326         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
15327         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
15328         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
15329         "control flow in loop".
15330         (vect_estimate_min_profitable_iters): Use
15331         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
15332         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
15333         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
15334         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
15335         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
15336         statement belongs to a group of strided accesses with the exact code
15337         check.
15338         (vectorizable_load): Likewise.
15339         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
15340         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
15341
15342 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
15343
15344         * config/freebsd-stdint.h: New file.
15345         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
15346         Add freebsd-stdint.h to tm_file.
15347
15348 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
15349
15350         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
15351         (thumb2_extendhidi2): Likewise.
15352
15353 2009-05-31  Ian Lance Taylor  <iant@google.com>
15354
15355         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
15356
15357 2009-05-31  Ian Lance Taylor  <iant@google.com>
15358
15359         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
15360         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
15361         (ipa-reference.o): Depend upon gt-ipa-reference.h.
15362
15363 2009-05-31  Jason Merrill  <jason@redhat.com>
15364
15365         * tree-pretty-print.c (print_call_name): Take the callee, not the
15366         call itself.  Make non-static.  Use dump_function_name for functions.
15367         (dump_generic_node): Adjust.
15368         * diagnostic.h: Declare print_call_name.
15369         * gimple-pretty-print.c (dump_gimple_call): Use it.
15370
15371 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
15372
15373         * config/sh/sh.md (ashldi3_std): New define_expand.
15374         (ashldi3): Use it.
15375
15376 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
15377
15378         PR target/40313
15379         * config/sh/sh.c: Include debug.h.
15380         (sh_expand_epilogue): Emit a blockage insn before the frame
15381         pointer adjustment also when dwarf2out_do_frame returns true.
15382
15383 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
15384
15385         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
15386         (thumb2_extendqidi2): New pattern.
15387
15388 2009-05-31  Ira Rosen  <irar@il.ibm.com>
15389
15390         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
15391         mark phis for renaming.
15392         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
15393         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
15394         Call mark_sym_for_renaming.
15395         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
15396         * tree-vect-loop.c (vect_transform_loop): Remove
15397         vect_memsyms_to_rename initialization and a call to
15398         mark_set_for_renaming.
15399
15400 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
15401
15402         PR middle-end/40304
15403         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
15404         frame related even if !set_cfa && style < 0.
15405
15406 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
15407
15408         * config/i386/mingw-tls.c: New file.
15409         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
15410         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
15411         defining _WIN32 but not __CYGWIN__.
15412
15413 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15414
15415         * configure.ac: Add MPC support.
15416
15417         * config.in, configure: Regenerate.
15418
15419 2009-05-29  Richard Henderson  <rth@redhat.com>
15420
15421         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
15422         NOTE_INSN_BASIC_BLOCK.
15423         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
15424         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
15425         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
15426         to be deleted.
15427         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
15428         add in_use field.
15429         (add_cfi): Disable check redefining cfa away from drap.
15430         (lookup_cfa_1): Add remember argument; handle remember/restore.
15431         (lookup_cfa): Pass remember argument.
15432         (cfa_remember): New.
15433         (compute_barrier_args_size_1): Remove sibcall check.
15434         (dwarf2out_frame_debug_def_cfa): New.
15435         (dwarf2out_frame_debug_adjust_cfa): New.
15436         (dwarf2out_frame_debug_cfa_offset): New.
15437         (dwarf2out_frame_debug_cfa_register): New.
15438         (dwarf2out_frame_debug_cfa_restore): New.
15439         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
15440         (dwarf2out_begin_epilogue): New.
15441         (dwarf2out_frame_debug_restore_state): New.
15442         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
15443         DW_CFA_restore_state.
15444         (output_cfi_directive): Likewise.
15445         (convert_cfa_to_fb_loc_list): Likewise.
15446         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
15447         * dwarf2out.h: Update.
15448         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
15449         (copy_insn_1): Early out for null.
15450         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
15451         and dwarf2out_frame_debug_restore_state.
15452         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
15453         (prologue_insn_hash, epilogue_insn_hash): New.
15454         (free_after_compilation): Adjust freeing accordingly.
15455         (record_insns): Create hash table if needed; push insns into
15456         hash instead of array.
15457         (maybe_copy_epilogue_insn): New.
15458         (contains): Search hash table instead of array.
15459         (sibcall_epilogue_contains): Remove.
15460         (thread_prologue_and_epilogue_insns): Split eh_return insns
15461         and mark them as epilogues.
15462         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
15463         scanning in terms of basic blocks.
15464         * insn-notes.def (CFA_RESTORE_STATE): New.
15465         * jump.c (returnjump_p_1): Accept EH_RETURN.
15466         (eh_returnjump_p_1, eh_returnjump_p): New.
15467         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
15468         CFA_REGISTER, CFA_RESTORE): New.
15469         * rtl.def (EH_RETURN): New.
15470         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
15471
15472         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
15473         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
15474
15475         * config/i386/i386.c (gen_push): Update cfa state.
15476         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
15477         add a CFA_ADJUST_CFA note.
15478         (ix86_dwarf_handle_frame_unspec): Remove.
15479         (ix86_expand_prologue): Update cfa state.
15480         (ix86_emit_restore_reg_using_pop): New.
15481         (ix86_emit_restore_regs_using_pop): New.
15482         (ix86_emit_leave): New.
15483         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
15484         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
15485         * config/i386/i386.h (struct machine_cfa_state): New.
15486         (ix86_cfa_state): New.
15487         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
15488         (eh_return_internal): Merge from eh_return_<mode>,
15489         use eh_return rtx, split w/ epilogue.
15490
15491 2009-05-29  Ian Lance Taylor  <iant@google.com>
15492
15493         * builtins.c (validate_gimple_arglist): Don't use va_arg with
15494         enum type.
15495         * calls.c (emit_library_call_value_1): Likewise.
15496
15497         * c-typeck.c (c_build_va_arg): New function.
15498         * c-tree.h (c_build_va_arg): Declare.
15499         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
15500         instead of build_va_arg.
15501
15502 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
15503
15504         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
15505         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
15506         (ptr_difference_cost): Use affine combinations to compute it.
15507         (difference_cost): Likewise.
15508         (get_computation_cost_at): Compute more accurate cost for addresses
15509         if the ratio is a multiplier allowed in addresses.
15510         For non-addresses, consider that an additional offset or symbol is
15511         added only once.
15512
15513 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
15514
15515         * config/i386/i386.c (ix86_decompose_address): Avoid useless
15516         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
15517
15518         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
15519         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
15520         (prefix_rex): For UNIT_MMX don't imply the prefix by default
15521         if MODE_DI.
15522         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
15523         to 1 for TYPE_SSE{IADD1,CVT1}.
15524         (prefix_vex_imm8): Removed.
15525         (length_vex): Only pass 1 as second argument to
15526         ix86_attr_length_vex_default if prefix_extra is 0.
15527         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
15528         (length): For prefix vex computation use length_immediate
15529         attribute instead of prefix_vex_imm8.
15530         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
15531         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
15532         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
15533         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
15534         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
15535         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
15536         a space in between the operands.
15537         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
15538         if one operand is 0xff and the other one si, di, bp or sp.
15539         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
15540         other one si, di, bp or sp.
15541         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
15542         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
15543         type and mode attributes.
15544         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
15545         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
15546         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
15547         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
15548         prefix_data16 attribute iff MODE_DF.
15549         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
15550         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
15551         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
15552         constm128_operand in length_immediate computation.
15553         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
15554         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
15555         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
15556         length_immediate attribute to 1.
15557         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
15558         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
15559         for certain alternatives.
15560         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
15561         prefix_data16 attribute if MODE_V1DF.
15562         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
15563         length_immediate to 1.
15564         (set_got_rex64, set_rip_rex64): Remove length attribute, set
15565         length_address to 4, set mode attribute to MODE_DI.
15566         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
15567         (fxam<mode>2_i387): Set length attribute to 4.
15568         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
15569         *prefetch_3dnow_rex): Override length_address attribute.
15570         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
15571         attributes.
15572         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
15573         (constm128_operand): Removed.
15574         * config/i386/i386.c (memory_address_length): For
15575         disp && !index && !base in 64-bit mode account for SIB byte if
15576         print_operand_address can't optimize disp32 into disp32(%rip)
15577         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
15578         for fs: or gs: segment.
15579         (ix86_attr_length_immediate_default): When checking if shortform
15580         is possible, truncate immediate to the length of the non-shortened
15581         immediate.
15582         (ix86_attr_length_address_default): Ignore MEM_P operands
15583         with X constraint.
15584         (ix86_attr_length_vex_default): Only check for DImode on
15585         GENERAL_REG_P operands.
15586         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
15587         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
15588         (sse_cvttps2pi): Clear prefix_rep attribute.
15589         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
15590         attribute.
15591         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
15592         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
15593         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
15594         iff operand 2 is const_int_operand.
15595         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
15596         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
15597         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
15598         instead of vex.
15599         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
15600         prefix_data16.
15601         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
15602         prefix_data16 attribute for movlpd and movhpd instructions.
15603         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
15604         length_immediate for shufpd instruction.
15605         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
15606         (avx_cmpp<avxmodesuffixf2c><mode>3,
15607         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
15608         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
15609         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
15610         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
15611         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
15612         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
15613         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
15614         prefix_data16 attribute for the first alternative to 1.
15615         (*avx_loadlps): Override length_immediate for the first alternative.
15616         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
15617         attributes for second alternative.
15618         (*vec_concatv2sf_sse4_1): Override length_immediate and
15619         prefix_data16 attributes for second alternative.
15620         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
15621         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
15622         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
15623         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
15624         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
15625         prefix_data16 and length_immediate to 1.
15626         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
15627         to 1.
15628         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
15629         prefix_extra attribute for variants that don't have 0f prefix alone.
15630         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
15631         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
15632         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
15633         *sse4_1_pextrd): Set length_immediate to 1.
15634         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
15635         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
15636         to 1.
15637         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
15638         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
15639         length_immediate to 1 for second alternative.
15640         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
15641         prefix_extra and length_immediate attributes for the first
15642         alternative.
15643         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
15644         first alternative.
15645         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
15646         to 1 for the first and third alternative.
15647         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
15648         alternative.
15649         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
15650         attribute.
15651         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
15652         attribute to 0.
15653         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
15654         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
15655         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
15656         *avx_psign<mode>3): Set prefix_extra attribute to 1.
15657         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
15658         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
15659         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
15660         ssse3_psign<mode>3): Override prefix_rex attribute.
15661         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
15662         (ssse3_palignrti): Override length_immediate to 1.
15663         (ssse3_palignrdi): Override length_immediate to 1, override
15664         prefix_rex attribute.
15665         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
15666         (sse4a_extrqi): Override length_immediate to 2.
15667         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
15668         (sse4a_insertq): Override prefix_data16 to 0.
15669         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
15670         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
15671         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
15672         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
15673         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
15674         and length_immediate to 1.
15675         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
15676         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
15677         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
15678         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
15679         and length_immediate to 1.
15680         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
15681         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
15682         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
15683         avx_ptest256): Override prefix_extra to 1.
15684         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
15685         Override prefix_data16 and length_immediate to 1.
15686         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
15687         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
15688         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
15689         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
15690         prefix_data16 to 0 and prefix_extra to 2.
15691         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
15692         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
15693         attribute.
15694         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
15695         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
15696         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
15697         and prefix_extra to 2.
15698         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
15699         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
15700         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
15701         avx_vpermilvar<mode>3,
15702         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
15703         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
15704         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
15705         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
15706         Override prefix_extra to 1.
15707         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
15708         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
15709         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
15710         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
15711         prefix_extra and length_immediate to 1.
15712         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
15713         modrm to 0.
15714         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
15715         to 1 for the first alternative.
15716         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
15717         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
15718         cases.
15719         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
15720         *movv2sf_internal_avx, *movv2sf_internal): Override
15721         prefix_rep attribute for certain alternatives.
15722         (*mov<mode>_internal): Override prefix_rep or prefix_data16
15723         attributes for certain alternatives.
15724         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
15725         attributes for certain alternatives.
15726         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
15727         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
15728         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
15729         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
15730         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
15731         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
15732         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
15733         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
15734         length_immediate to 1 if operand 2 is const_int_operand.
15735         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
15736         *vec_extractv2si_1): Set length_immediate attribute to 1.
15737         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
15738         using old 3DNOW insn rather than SSE/3DNOW_A.
15739         (mmx_emms, mmx_femms): Clear modrm attribute.
15740
15741 2009-05-29  Martin Jambor  <mjambor@suse.cz>
15742
15743         * tree-sra.c:  New implementation of SRA.
15744
15745         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
15746         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
15747         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
15748         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
15749         (SRA_MAX_STRUCTURE_COUNT): Removed.
15750         (SRA_FIELD_STRUCTURE_RATIO): Removed.
15751         * doc/invoke.texi (sra-max-structure-size): Removed.
15752         (sra-field-structure-ratio): Removed.
15753
15754 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
15755
15756         PR middle-end/40291
15757         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
15758         before expansion.
15759
15760 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
15761
15762         PR rtl-optimization/40101
15763         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
15764         seqno.  Adjust comment.
15765         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
15766         inserting bookkeeping before a jump, the jump is not scheduled.
15767         When no positive seqno found, provide a value.  Add comment.
15768
15769 2009-05-29  Richard Guenther  <rguenther@suse.de>
15770
15771         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
15772         short-cutting on the first component.
15773
15774 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
15775
15776         PR middle-end/39958
15777         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
15778         for trees other than decls/types.
15779
15780 2009-05-29  Richard Guenther  <rguenther@suse.de>
15781
15782         * tree-ssa-operands.c (get_expr_operands): Do not handle
15783         INDIRECT_REFs in the handled-component case.  Remove
15784         unused get_ref_base_and_extent case.
15785         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
15786         tree_low_cst and host_integerp where possible.
15787         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
15788         codes for equivalence.
15789         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
15790
15791 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
15792
15793         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
15794         to tmake_file for i[34567]86-*-cygwin*.
15795
15796 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
15797
15798         PR target/40017
15799         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
15800         (altivec_categorize_keyword, init_vector_keywords,
15801         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
15802         similar to bool.
15803
15804 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
15805
15806         * tree.c (handle_dll_attribute): Check if node is
15807         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
15808
15809 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
15810
15811         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
15812         component.
15813         (thumb2_zero_extendqidi2): Likewise.
15814
15815 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
15816
15817         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
15818         instead of gen_movrt.
15819         * config/sh/sh.md (movrt): Remove.
15820
15821 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
15822
15823         * doc/invoke.texi (IA-64 Options):
15824         Add -msdata, -mfused-madd, -mno-inline-float-divide,
15825         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
15826         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
15827         -msched-prefer-non-control-spec-insns,
15828         -msched-stop-bits-after-every-cycle,
15829         -msched-count-spec-in-critical-path,
15830         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
15831         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
15832         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
15833         and -msched-spec-verbose.
15834
15835 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
15836
15837         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
15838         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
15839         error if used.
15840         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
15841
15842 2009-05-28  Richard Guenther  <rguenther@suse.de>
15843
15844         * tree-ssa-alias.c (ao_ref_init): New function.
15845         (ao_ref_base): Likewise.
15846         (ao_ref_base_alias_set): Likewise.
15847         (ao_ref_alias_set): Likewise.
15848         (refs_may_alias_p_1): Change signature.
15849         (refs_may_alias_p): Adjust.
15850         (refs_anti_dependent_p): Likewise.
15851         (refs_output_dependent_p): Likewise.
15852         (call_may_clobber_ref_p_1): Change signature.
15853         (call_may_clobber_ref_p): Adjust.
15854         (stmt_may_clobber_ref_p_1): New function split out from ...
15855         (stmt_may_clobber_ref_p): ... here.
15856         (maybe_skip_until): Adjust signature.
15857         (get_continuation_for_phi): Likewise.
15858         (walk_non_aliased_vuses): Likewise.
15859         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
15860         (ao_ref_init): Declare.
15861         (ao_ref_base): Likewise.
15862         (ao_ref_alias_set): Likewise.
15863         (stmt_may_clobber_ref_p_1): Likewise.
15864         (walk_non_aliased_vuses): Adjust.
15865         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
15866         (get_ref_from_reference_ops): remove.
15867         (vn_reference_lookup_2): Adjust signature.
15868         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
15869         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
15870         (vn_reference_lookup): Adjust.
15871         (vn_reference_insert): Likewise.
15872         (vn_reference_insert_pieces): Adjust signature.
15873         (visit_reference_op_call): Adjust.
15874         * tree-ssa-pre.c (get_expr_type): Simplify.
15875         (phi_translate_1): Adjust.
15876         (compute_avail): Likewise.
15877         (translate_vuse_through_block): Do not re-build trees.
15878         (value_dies_in_block_x): Likewise.
15879         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
15880         fields.
15881         (vn_reference_lookup_pieces): Adjust declaration.
15882         (vn_reference_insert_pieces): Likewise.
15883
15884 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
15885
15886         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
15887         with checking disabled.
15888
15889 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
15890
15891         PR target/37216
15892
15893         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
15894         macro definition for support of three-operand format aligned
15895         .comm directive in assembler on cygwin/pe/mingw target OS.
15896         * configure:  Regenerate.
15897         * config.h:  Regenerate.
15898
15899         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
15900         aligned form of .comm directive if -mpe-aligned-commons is in effect.
15901         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
15902
15903         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
15904         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
15905
15906 2009-05-28  Ira Rosen  <irar@il.ibm.com>
15907
15908         PR tree-optimization/40254
15909         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
15910         in analysis of basic blocks.
15911
15912 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
15913
15914         PR middle-end/33699
15915         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
15916         * target-def.h (TARGET_CONST_ANCHOR): New macro.
15917         (TARGET_INITIALIZER): Use it.
15918         * cse.c (CHEAPER): Move it up to the other macros.
15919         (insert): Rename this ...
15920         (insert_with_costs): ... to this.  Add cost parameters.  Update
15921         function comment.
15922         (insert): New function.  Call insert_with_costs.
15923         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
15924         find_reg_offset_for_const, try_const_anchors): New functions.
15925         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
15926         when using a const-anchor.  Call insert_const_anchors.
15927         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
15928         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
15929
15930 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
15931
15932         * tree-inline.c (remap_decls): Enable nonlocalized variables
15933         when not optimizing.
15934
15935 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
15936
15937         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
15938         Simplify other tests involving optimize.
15939
15940 2009-05-27  Tom Tromey  <tromey@redhat.com>
15941
15942         * unwind-dw2.c (_Unwind_DebugHook): New function.
15943         (uw_install_context): Call _Unwind_DebugHook.
15944
15945 2009-05-27  Tom Tromey  <tromey@redhat.com>
15946
15947         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
15948
15949 2009-05-27  Ian Lance Taylor  <iant@google.com>
15950
15951         * Makefile.in (LINKER, LINKER_FLAGS): Define.
15952         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
15953         (ALL_LINKERFLAGS): Define.
15954         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
15955         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
15956         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
15957         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
15958         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
15959         $(LINKER_FOR_BUILD).
15960         (build/gcov-iov$(build_exeext)): Likewise.
15961
15962 2009-05-27  Julian Brown  <julian@codesourcery.com>
15963
15964         * gcse.c (target.h): Include.
15965         (can_assign_to_reg_without_clobbers_p): Check that the target allows
15966         copy of argument to a pseudo register.
15967
15968 2009-05-27  Diego Novillo  <dnovillo@google.com>
15969
15970         * tree-ssa-live.c (dump_scope_block): Document arguments.
15971         (dump_scope_blocks): Document.
15972         (debug_scope_blocks): New.
15973         * tree-flow.h (debug_scope_blocks): Declare.
15974
15975 2009-05-21  Denis Chertykov  <denisc@overta.ru>
15976
15977         * doc/contrib.texi (Contributors): Add myself to the list.
15978
15979 2009-05-27  Olivier Hainque  <hainque@adacore.com>
15980
15981         * expr.c (target_align): New function.  Alignment the TARGET of an
15982         assignment may be assume to have.
15983         (highest_pow2_factor_for_target): Use it instead of relying on
15984         immediate tree attributes of TARGET, not necessarily honored when
15985         intermediate bitfields are involved.
15986
15987 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
15988
15989         PR target/40266
15990         * config/i386/driver-i386.c (host_detect_local_cpu): Support
15991         AVX, SSE4, AES, PCLMUL and POPCNT.
15992
15993 2009-05-27  Diego Novillo  <dnovillo@google.com>
15994
15995         * tree-pretty-print.c (dump_location): New.
15996         (dump_generic_node): Call it.
15997         Factor code to handle BLOCK nodes ...
15998         (dump_block_node): ... here.
15999
16000 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
16001
16002         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
16003         with it.
16004         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
16005         included.
16006         * gcc-plugin.h: Include config.h and system.h.
16007         (IN_GCC): Define if not defined.
16008
16009 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
16010
16011         PR middle-end/40249
16012         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
16013         with -fno-inline.
16014
16015 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
16016
16017         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
16018         applicable.
16019         * config/m32r/m32r.h: Ditto.
16020         * config/m32r/m32r.md: Ditto.
16021         * config/m32r/predicates.md: Ditto.
16022
16023 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
16024
16025         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
16026
16027 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
16028
16029         * doc/plugins.texi
16030         (Loading plugins): typo.
16031         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
16032         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
16033         (Interacting with the GCC Garbage Collector): Added new section.
16034         (Giving information about a plugin): Added new section for
16035         PLUGIN_INFO.
16036         * ggc.h (ggc_register_root_tab): Added declaration.
16037         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
16038         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
16039         (register_callback): Improved comment in declaration.
16040         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
16041         (extra_root_vec) Added static variable for dynamic roots registration.
16042         (ggc_register_root_tab) Added new routine.
16043         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
16044         PLUGIN_GGC_MARKING event.
16045         * ggc-zone.c: Include plugin.h.
16046         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
16047         * ggc-page.c: Include plugin.h.
16048         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
16049         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
16050         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
16051         (register_callback): check lack of callbacks for
16052         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
16053         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
16054         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
16055         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
16056         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
16057         dependency on plugin.h.
16058         (plugin.o): Added dependency on ggc.h...
16059
16060 2009-05-26  Richard Guenther  <rguenther@suse.de>
16061
16062         PR middle-end/40248
16063         Revert
16064         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
16065         with mismatched comparison modes.
16066
16067         * expr.c (expand_expr_real_1): Expand the operand of a
16068         VIEW_CONVERT_EXPR in its natural mode.
16069
16070 2009-05-26  Ian Lance Taylor  <iant@google.com>
16071
16072         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
16073         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
16074         (ALL_COMPILERFLAGS): Define.
16075         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
16076         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
16077         (collect2$(exeext), collect2.o): Likewise.
16078         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
16079         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
16080         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
16081         (libbackend.o, intl.o, cppdefault.o): Likewise.
16082         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
16083         (build/%.o): Use $(COMPILER_FOR_BUILD).
16084         (build/gen%$(build_exeext)): Likewise.
16085         (build/gcov-iov$(build_exeext)): LIkewise.
16086         * config/t-darwin (darwin.o): Use $(COMPILER).
16087         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
16088         * config/t-sol2 (sol2-c.o): Likewise.
16089         (sol2.o): Likewise.
16090         * config/t-vxworks (vxworks.o): Likewise.
16091         * config/x-darwin (host-darwin.o): Likewise.
16092         * config/x-hpux (host-hpux.o): Likewise.
16093         * config/x-linux (host-linux.o): Likewise.
16094         * config/x-solaris (host-solaris.o): Likewise.
16095         * config/alpha/x-alpha (driver-alpha.o): Likewise.
16096         * config/arm/t-arm (arm-c.o): Likewise.
16097         * config/arm/t-pe (pe.o): Likewise.
16098         * config/arm/t-wince-pe (pe.o): Likewise.
16099         * config/i386/t-cygming (winnt.o): Likewise.
16100         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
16101         * config/i386/t-cygwin (cygwin1.o): Likewise.
16102         (cygwin2.o): Likewise.
16103         * config/i386/t-i386 (i386-c.o): Likewise.
16104         * config/i386/t-interix (winnt.o): Likewise.
16105         * config/i386/t-netware (netware.o): Likewise.
16106         * config/i386/t-nwld (nwld.o): Likewise.
16107         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
16108         * config/i386/x-i386 (driver-i386.o): Likewise.
16109         * config/i386/x-cygwin (host-cygwin.o): Likewise.
16110         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
16111         * config/ia64/t-ia64 (ia64-c.o): Likewise.
16112         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
16113         * config/mips/x-native (driver-native.o): Likewise.
16114         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
16115         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
16116         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
16117         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
16118         * config/score/t-score-elf (score7.o): Likewise.
16119         (score3.o): Likewise.
16120         * config/sh/t-sh (sh-c.o): Likewise.
16121         * config/sh/t-symbian (sh-c.o): Likewise.
16122         (symbian.o): Likewise.
16123         * config/spu/t-spu-elf (spu-c.o): Likewise.
16124         * config/v850/t-v850 (v850-c.o): Likewise.
16125         * config/v850/t-v850e (v850-c.o): Likewise.
16126
16127 2009-05-26  Richard Guenther  <rguenther@suse.de>
16128
16129         PR tree-optimization/40122
16130         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
16131         VECTOR_CSTs if possible.
16132         (fold_gimple_assign): Likewise.
16133
16134 2009-05-26  Richard Guenther  <rguenther@suse.de>
16135
16136         PR middle-end/40252
16137         * fold-const.c (fold_binary): Use the correct types for building
16138         rotates.
16139
16140 2009-05-26  Richard Guenther  <rguenther@suse.de>
16141
16142         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
16143         redundant calls to merge_alias_info.
16144         (bump_vector_ptr): Likewise.
16145         * tree-ssa-copy.c (merge_alias_info): Remove.
16146         (replace_exp_1): Remove call to merge_alias_info.
16147         (propagate_tree_value): Likewise.
16148         (fini_copy_prop): Propagate points-to info.
16149         * tree-flow.h (merge_alias_info): Remove.
16150
16151 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
16152
16153         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
16154
16155 2009-05-25  Jan Hubicka  <jh@suse.cz>
16156
16157         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
16158         * cgraph.h (struct inline_summary): New filed self_wize,
16159         size_inlining_benefit, self_time and time_inlining_benefit.
16160         (struct cgraph_global_info): Replace insns by time ans size fields.
16161         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
16162         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
16163         (ipcp_update_callgraph): Do not touch function bodies.
16164         * ipa-inline.c: Include except.h
16165         (MAX_TIME): New constant.
16166         (overall_insns): Remove.
16167         (leaf_node_p): New.
16168         (overall_size, max_benefit): New static variables.
16169         (cgraph_estimate_time_after_inlining): New function.
16170         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
16171         (cgraph_clone_inlined_nodes): Update size.
16172         (cgraph_mark_inline_edge): Update size.
16173         (cgraph_estimate_growth): Use size info.
16174         (cgraph_check_inline_limits): Check size.
16175         (cgraph_default_inline_p): Likewise.
16176         (cgraph_edge_badness): Compute badness based on benefit and size cost.
16177         (cgraph_decide_recursive_inlining): Check size.
16178         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
16179         and times.
16180         (cgraph_decide_inlining): Likewise.
16181         (cgraph_decide_inlining_incrementally): Likewise; honor
16182         PARAM_EARLY_INLINING_INSNS.
16183         (likely_eliminated_by_inlining_p): New predicate.
16184         (estimate_function_body_sizes): New function.
16185         (compute_inline_parameters): Use it.
16186         * except.c (must_not_throw_labels): New function.
16187         * except.h (must_not_throw_labels): Declare.
16188         * tree-inline.c (init_inline_once): Kill inlining_weigths
16189         * tree-ssa-structalias.c: Avoid uninitialized warning.
16190         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
16191         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
16192         (PARAM_INLINE_CALL_COST): Remove.
16193         (PARAM_EARLY_INLINING_INSNS): New.
16194
16195 2009-05-25  Richard Guenther  <rguenther@suse.de>
16196
16197         PR tree-optimization/36327
16198         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
16199         callback for reference translation or lookup at the point of may-defs.
16200         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
16201         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
16202         for union COMPONENT_REFs.
16203         (vn_reference_lookup_3): New callback.  Lookup from memset
16204         and CONSTRUCTOR assignment, translate through struct copies.
16205         (vn_reference_lookup_pieces): Make sure to not free the
16206         passed operands array.  Adjust walk_non_aliased_vuses call.
16207         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
16208         make sure we do not leak memory.
16209
16210 2009-05-25  Richard Guenther  <rguenther@suse.de>
16211
16212         * tree-ssa-alias.h (dump_points_to_solution): Declare.
16213         * tree-inline.c (expand_call_inline): Reset the escaped and
16214         callused solutions.
16215         * tree-ssa-structalias.c (pass_build_ealias): New.
16216         * tree-pass.h (pass_build_ealias): Declare.
16217         * passes.c (init_optimization_passes): Add PTA during
16218         early optimizations.
16219         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
16220         and CALLUSED solutions.
16221         (dump_points_to_solution): New function, split out from ...
16222         (dump_points_to_info_for): ... here.
16223         * tree-parloops.c (parallelize_loops): Reset the escaped and
16224         callused solutions.
16225
16226 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
16227
16228         PR bootstrap/40027
16229         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
16230         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
16231
16232 2009-05-25  Ira Rosen  <irar@il.ibm.com>
16233
16234         PR tree-optimization/40238
16235         * tree-vect-stmts.c (vect_init_vector): Insert initialization
16236         statements after basic block's labels.
16237         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
16238         to free the allocated memory.
16239
16240 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
16241
16242         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
16243         return address with a USE.
16244
16245 2009-05-24  Richard Guenther  <rguenther@suse.de>
16246
16247         PR middle-end/40233
16248         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
16249         array type from the main variant of the inner type.
16250
16251 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
16252
16253         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
16254         definition to bool (from int) to un-break build.
16255         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
16256
16257 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
16258
16259         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
16260         discard_stmt_changes): Delete.
16261         * tree-ssa-operands.c (scb_stack): Delete.
16262         (init_ssa_operands): Do not initialize it.
16263         (fini_ssa_operands): Do not free it.
16264         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
16265
16266         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
16267         update_stmt, remove the others.  Fix comments.
16268         * tree-dfa.c (optimize_stack_restore): Likewise.
16269         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
16270         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
16271         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
16272         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
16273         Likewise.
16274         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
16275         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
16276         (dom_opt_finalize_block): Likewise, adjusting access to
16277         stmts_to_rescan.
16278         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
16279         (stmts_to_rescan): Change item type to gimple.
16280         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
16281
16282 2009-05-24  Ira Rosen  <irar@il.ibm.com>
16283
16284         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
16285         * tree-pass.h (pass_slp_vectorize): New pass.
16286         * params.h (SLP_MAX_INSNS_IN_BB): Define.
16287         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
16288         * tree-vectorizer.c (timevar.h): Include.
16289         (user_vect_verbosity_level): Declare.
16290         (vect_location): Fix comment.
16291         (vect_set_verbosity_level): Update user_vect_verbosity_level
16292         instead of vect_verbosity_level.
16293         (vect_set_dump_settings): Add an argument. Ignore user defined
16294         verbosity if dump flags require higher level of verbosity. Print to
16295         stderr only for loop vectorization.
16296         (vectorize_loops): Update call to vect_set_dump_settings.
16297         (execute_vect_slp): New function.
16298         (gate_vect_slp): Likewise.
16299         (struct gimple_opt_pass pass_slp_vectorize): New.
16300         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
16301         access its members.
16302         (vec_info_for_bb): New function.
16303         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
16304         (VECTORIZATION_ENABLED): New macro.
16305         (SLP_ENABLED, SLP_DISABLED): Likewise.
16306         (vect_is_simple_use): Add bb_vec_info argument.
16307         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
16308         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
16309         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
16310         vect_schedule_slp, vect_analyze_slp): Likewise.
16311         (vect_analyze_stmt): Add slp_tree argument.
16312         (find_bb_location): Declare.
16313         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
16314         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
16315         (vect_analyze_loop_operations, vect_analyze_loop,
16316         get_initial_def_for_induction, vect_create_epilog_for_reduction,
16317         vect_finalize_reduction, vectorizable_reduction,
16318         vectorizable_live_operation, vect_transform_loop): Likewise.
16319         * tree-data-ref.c (dr_analyze_innermost): Update comment,
16320         skip evolution analysis if analyzing a basic block.
16321         (dr_analyze_indices): Likewise.
16322         (initialize_data_dependence_relation): Skip the test whether the
16323         object is invariant for basic blocks.
16324         (compute_all_dependences): Skip dependence analysis for data
16325         references in basic blocks.
16326         (find_data_references_in_stmt): Don't fail in case of invariant
16327         access in basic block.
16328         (find_data_references_in_bb): New function.
16329         (find_data_references_in_loop): Move code to
16330         find_data_references_in_bb and add a call to it.
16331         (compute_data_dependences_for_bb): New function.
16332         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
16333         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
16334         that STEP is 0.
16335         (vect_analyze_data_ref_dependence): Check for interleaving in case of
16336         unknown dependence in basic block and fail in case of dependence in
16337         basic block.
16338         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
16339         dependence instances from either loop or basic block vectorization
16340         info.
16341         (vect_compute_data_ref_alignment): Check if it is loop vectorization
16342         before calling nested_in_vect_loop_p.
16343         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
16344         dependence instances from either loop or basic block vectorization
16345         info.
16346         (vect_verify_datarefs_alignment): Likewise.
16347         (vect_enhance_data_refs_alignment): Adjust function calls.
16348         (vect_analyze_data_refs_alignment): Likewise.
16349         (vect_analyze_group_access): Fix printing. Skip different checks if
16350         DR_STEP is 0. Keep strided stores either in loop or basic block
16351         vectorization data structure. Fix indentation.
16352         (vect_analyze_data_ref_access): Fix comments, allow zero step in
16353         basic blocks.
16354         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
16355         dependence instances from either loop or basic block vectorization
16356         info.
16357         (vect_analyze_data_refs): Update comment. Call
16358         compute_data_dependences_for_bb to analyze basic blocks.
16359         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
16360         case of loop vectorization. In case of basic block vectorization use
16361         data-ref itself as a base.
16362         (vect_create_data_ref_ptr): In case of basic block vectorization:
16363         don't advance the pointer, add new statements before the current
16364         statement.  Adjust function calls.
16365         (vect_supportable_dr_alignment): Support only aligned accesses in
16366         basic block vectorization.
16367         * common.opt (ftree-slp-vectorize): New flag.
16368         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
16369         (vect_pattern_recog_1): Likewise.
16370         * tree-vect-stmts.c (process_use): Likewise.
16371         (vect_init_vector): Add new statements in the beginning of the basic
16372         block in case of basic block SLP.
16373         (vect_get_vec_def_for_operand): Adjust function calls.
16374         (vect_finish_stmt_generation): Likewise.
16375         (vectorizable_call): Add assert that it is loop vectorization, adjust
16376         function calls.
16377         (vectorizable_conversion, vectorizable_assignment): Likewise.
16378         (vectorizable_operation): In case of basic block SLP, take
16379         vectorization factor from statement's type and skip the relevance
16380         check. Adjust function calls.
16381         (vectorizable_type_demotion): Add assert that it is loop
16382         vectorization, adjust function calls.
16383         (vectorizable_type_promotion): Likewise.
16384         (vectorizable_store): Check for outer loop only in case of loop
16385         vectorization. Adjust function calls. For basic blocks, skip the
16386         relevance check and don't advance pointers.
16387         (vectorizable_load): Likewise.
16388         (vectorizable_condition): Add assert that it is loop vectorization,
16389         adjust function calls.
16390         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
16391         that it is not reduction, get vector type, call only supported
16392         functions, skip loop specific parts.
16393         (vect_transform_stmt): Check for outer loop only in case of loop
16394         vectorization.
16395         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
16396         (vect_is_simple_use): Fix comment, add new argument, fix conditions
16397         for external definition.
16398         * passes.c (pass_slp_vectorize): New pass.
16399         * tree-vect-slp.c (find_bb_location): New function.
16400         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
16401         check for patterns only in loops.
16402         (vect_build_slp_tree): Add argument, adjust function calls, fail in
16403         case of multiple types in basic block SLP.
16404         (vect_mark_slp_stmts_relevant): New function.
16405         (vect_supported_load_permutation_p): Fix comment.
16406         (vect_analyze_slp_instance): Add argument. In case of basic block
16407         SLP, take vectorization factor from statement's type, check that
16408         unrolling factor is 1. Adjust function call. Save SLP instance in
16409         either loop or basic block vectorization structure. Return FALSE,
16410         if SLP failed.
16411         (vect_analyze_slp): Add argument. Get strided stores groups from
16412         either loop or basic block vectorization structure. Return FALSE
16413         if basic block SLP failed.
16414         (new_bb_vec_info): New function.
16415         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
16416         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
16417         (vect_schedule_slp): Add argument. Get SLP instances from either
16418         loop or basic block vectorization structure. Set vectorization factor
16419         to be 1 for basic block SLP.
16420         (vect_slp_transform_bb): New function.
16421         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
16422
16423 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
16424
16425         * final.c (shorten_branches): Do not align labels for jump tables.
16426         (final_scan_insn): Use JUMP_TABLE_DATA_P.
16427
16428 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
16429
16430         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
16431         Remove outdated reference to flow.c and fix nits.
16432         * doc/gccint.texi: Tweak RTL description.
16433         * doc/rtl.texi: Likewise.
16434
16435 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
16436
16437         * config/avr/avr.c: Change my email address.
16438         * config/avr/avr.h: Likewise.
16439         * config/avr/avr.md: Likewise.
16440         * config/avr/avr-protos.h: Likewise.
16441         * config/avr/libgcc.S: Likewise.
16442
16443 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
16444
16445         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
16446         (spu_split_load, spu_split_store): Change return type to int.
16447         (spu_split_convert): Declare.
16448         * config/spu/predicates.md (spu_mem_operand): Remove.
16449         (spu_mov_operand): Update.
16450         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
16451         * config/spu/spu.c (regno_aligned_for_load): Remove.
16452         (reg_aligned_for_addr, spu_expand_load): Define.
16453         (spu_expand_extv): Reimplement and handle MEM.
16454         (spu_expand_insv): Handle MEM.
16455         (spu_sched_reorder): Handle insn's with length 0.
16456         (spu_legitimate_address_p): Reimplement.
16457         (store_with_one_insn_p): Return TRUE for any mode with size
16458         larger than 16 bytes.
16459         (address_needs_split): Define.
16460         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
16461         operands.
16462         (spu_convert_move): Define.
16463         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
16464         (spu_split_store): Change all MEM's to TImode.
16465         (spu_init_expanders): Preallocate registers that correspond to
16466         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
16467         mark_reg_pointer.
16468         (spu_split_convert): Define.
16469         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
16470         (_move<mode>, _movdi, _movti): Update predicate and condition.
16471         (load, store): Change to define_split.
16472         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
16473         extend<mode>ti2.
16474         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
16475         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
16476         define_insn_and_split of lshr<mode>3.
16477         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
16478         (<v>ashr<mode>3_imm): Define.
16479         (extv, extzv, insv): Allow MEM operands.
16480         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
16481         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
16482         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
16483         (_spu_convert2): Change to define_insn_and_split and remove the
16484         corresponding define_peephole2.
16485         (stack_protect_set, stack_protect_test, stack_protect_test_si):
16486         Change predicates to memory_operand.
16487
16488 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
16489
16490         * config/arm/thumb2.md: Add 16-bit multiply instructions.
16491
16492 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
16493
16494         PR tree-optimization/40219
16495         * tree.c (iterative_hash_expr): Make sure the builtin function is
16496         a normal builtin function and not a front end or back end builtin
16497         before indexing into the built_in_decls array.
16498
16499 2009-05-22  Richard Guenther  <rguenther@suse.de>
16500
16501         PR middle-end/38964
16502         * alias.c (write_dependence_p): Do not use TBAA for answering
16503         anti-dependence or output-dependence.
16504         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
16505         (emit_pointer_definition): Remove.
16506         (emit_alias_warning): Likewise.
16507         (find_what_var_points_to): Remove TBAA pruning code.
16508         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
16509         violations.
16510         (compute_points_to_sets): Remove code computing the set of
16511         dereferenced pointers.
16512         * tree-data-ref.c (dr_may_alias_p): Properly use the split
16513         oracle for querying anti and output dependencies.
16514         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
16515         if TBAA may be applied.
16516         (refs_anti_dependent_p): New function.
16517         (refs_output_dependent_p): Likewise.
16518         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
16519         (refs_output_dependent_p): Likewise.
16520         * doc/tree-ssa.texi (Memory model): New section.
16521         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
16522         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
16523         * cfgexpand.c (expand_gimple_basic_block): Do not handle
16524         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
16525         * expr.c (expand_expr_real_1): Likewise.
16526         * gimple-low.c (lower_stmt): Likewise.
16527         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
16528         (dump_gimple_cdt): Remove.
16529         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
16530         (gimple_size): Likewise.
16531         (walk_gimple_op): Likewise.
16532         (is_gimple_stmt): Likewise.
16533         (walk_stmt_load_store_addr_ops): Likewise.
16534         (gimple_build_cdt): Remove.
16535         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
16536         * gimple.h (gimple_cdt_new_type): Remove.
16537         (gimple_cdt_new_type_ptr): Likewise.
16538         (gimple_cdt_set_new_type): Likewise.
16539         (gimple_cdt_location): Likewise.
16540         (gimple_cdt_location_ptr): Likewise.
16541         (gimple_cdt_set_location): Likewise.
16542         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
16543         * tree-cfg.c (remove_useless_stmts_1): Do not handle
16544         GIMPLE_CHANGE_DYNAMIC_TYPE.
16545         (verify_types_in_gimple_stmt): Likewise.
16546         * tree-inline.c (estimate_num_insns): Likewise.
16547         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
16548         (copy_decl_to_var): Likewise.
16549         (copy_result_decl_to_var): Likewise.
16550         * tree-pretty-print.c (dump_generic_node): Do not handle
16551         CHANGE_DYNAMIC_TYPE_EXPR.
16552         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
16553         * tree-ssa-operands.c (get_expr_operands): Likewise.
16554         * tree-ssa-structalias.c (struct variable_info): Remove
16555         no_tbaa_pruning member.
16556         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
16557         (unify_nodes): Do not copy it.
16558         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
16559         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
16560         (set_uids_in_ptset): Do not check it.
16561         (find_what_var_points_to): Likewise.
16562         (compute_tbaa_pruning): Remove.
16563         (compute_points_to_sets): Do not call it.
16564         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
16565         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
16566         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
16567         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
16568         (DECL_NO_TBAA_P): Likewise.
16569         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
16570         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
16571         (expand_omp_atomic_pipeline): Do not set it.
16572         * print-tree.c (print_node): Do not dump it.
16573         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
16574         redundant check.
16575
16576 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
16577
16578         PR target/39856
16579         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
16580         for clobber.
16581
16582 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
16583
16584         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
16585         non-external.
16586
16587 2009-05-22  Ben Elliston  <bje@au.ibm.com>
16588
16589         * Makefile.in (bversion.h, s-bversion): New targets.
16590         (TOPLEV_H): Add bversion.h.
16591         * toplev.h: Include "bversion.h".
16592         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
16593         the __format__ attribute only if compiling with the same version
16594         of GCC as the sources (the "build version").
16595
16596 2009-05-22  Ben Elliston  <bje@au.ibm.com>
16597
16598         * c-format.c (handle_format_attribute): Fix comment typo.
16599
16600 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
16601
16602         PR target/37846
16603         * config/ia64/ia64.opt (mfused-madd): New.
16604         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
16605         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
16606         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
16607         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
16608         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
16609         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
16610         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
16611         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
16612         instruction if !TARGET_FUSED_MADD.
16613         (fpma, fpms): Remove colon from name.
16614
16615 2009-05-22  Richard Guenther  <rguenther@suse.de>
16616
16617         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
16618         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
16619         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
16620         TARGET_MEM_REF.
16621         (create_expression_by_pieces): Only convert if necessary.
16622         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
16623         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
16624
16625 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
16626
16627         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
16628         regular pattern from a template and rename it ...
16629         (*extzv_truncsi_exts): ... to this.
16630
16631 2009-05-21  Richard Guenther  <rguenther@suse.de>
16632
16633         * cgraph.h (struct cgraph_node): Remove inline_decl member.
16634         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
16635         (cgraph_default_inline_p): Likewise.
16636         (cgraph_decide_inlining_incrementally): Likewise.
16637
16638 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16639             Uros Bizjak  <ubizjak@gmail.com>
16640
16641         * config/i386/cpuid.h (bit_MOVBE): New.
16642
16643         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
16644
16645         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
16646         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
16647         (ix86_handle_option): Handle OPT_mmovbe.
16648         (ix86_target_string): Add -mmovbe.
16649         (pta_flags): Add PTA_MOVBE.
16650         (processor_alias_table): Add PTA_MOVBE to "atom".
16651         (override_options): Handle PTA_MOVBE.
16652
16653         * config/i386/i386.h (TARGET_MOVBE): New.
16654
16655         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
16656         (*bswapsi_movbe): New.
16657         (*bswapdi_movbe): Likewise.
16658         (bswapdi2): Renamed to ...
16659         (*bswapdi_1): This.
16660         (bswapdi2): New expander.
16661
16662         * config/i386/i386.opt (mmovbe): New.
16663
16664         * doc/invoke.texi: Document -mmovbe.
16665
16666 2009-05-21  Taras Glek  <tglek@mozilla.com>
16667
16668         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
16669         * gcc-plugin.h (plugin_init): Updated signature.
16670         * gcc-plugin.h (plugin_name_args): Moved to this header.
16671         * doc/plugins.texi (plugin_init): Updated documention to reflect
16672         API change.
16673         * doc/plugins.texi (plugin_name_args): Added to documention.
16674
16675 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
16676
16677         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
16678         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
16679
16680 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
16681
16682         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
16683         JUMP_TABLE_DATA_P predicates where applicable.
16684         * config/i386/predicates.md: Ditto.
16685         * config/i386/sse.md: Ditto.
16686
16687 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
16688
16689         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
16690         operand2 -128 override length_immediate attribute to 1.
16691         * config/i386/predicates.md (constm128_operand): New predicate.
16692
16693         * config/i386/i386.c (memory_address_length): Handle %r12
16694         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
16695         also check REGNO.
16696         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
16697         mode look through optional ZERO_EXTEND and SUBREG.
16698         * config/i386/i386.md (R12_REG): New define_constant.
16699         (prefix_data16): For sse unit set also for MODE_TI insns.
16700         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
16701         insns set if operand 1 is ext_QIreg_operand.
16702         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
16703         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
16704         immediate.
16705         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
16706         mode from MODE_DI to MODE_SI.
16707         (movdi_1_rex64): Override modrm and length_immediate attributes
16708         only for movabs (TYPE_IMOV, alternative 2).
16709         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
16710         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
16711         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
16712         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
16713         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
16714         prefix_rex attribute if DImode.
16715         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
16716         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
16717         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
16718         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
16719         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
16720         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
16721         Likewise.  For TYPE_IMOV clear length_immediate attribute.
16722         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
16723         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
16724         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
16725         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
16726         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
16727         or one operand TYPE_ISHIFT.
16728         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
16729         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
16730         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
16731         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
16732         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
16733         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
16734         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
16735         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
16736         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
16737         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
16738         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
16739         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
16740         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
16741         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
16742         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
16743         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
16744         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
16745         set mode attribute, don't override length attribute.
16746         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
16747         to 1.
16748         (return_internal_long): Set length attribute to 2 instead of 1.
16749         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
16750         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
16751         prefix_rex attribute.
16752         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
16753         New predicates.
16754         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
16755
16756 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16757
16758         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
16759
16760 2009-05-20  Ian Lance Taylor  <iant@google.com>
16761
16762         * tree.c (build_tree_list_vec_stat): New function.
16763         (ctor_to_vec): New function.
16764         (build_nt_call_vec): New function.
16765         (build_call_array): Change args to be a const pointer.
16766         (build_call_vec): New function.
16767         * tree.h (build_nt_call_vec): Declare.
16768         (build_tree_list_vec_stat): Declare.
16769         (build_tree_list_vec): Define.
16770         (build_call_array): Update declaration.
16771         (build_call_vec): Declare.
16772         (ctor_to_vec): Declare.
16773         * c-common.c (tree_vector_cache): New static variable.
16774         (make_tree_vector): New function.
16775         (release_tree_vector): New function.
16776         (make_tree_vector_single): New function.
16777         (make_tree_vector_copy): New function.
16778         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
16779         (make_tree_vector_single, make_tree_vector_copy): Declare.
16780         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
16781         (c_parser_expr_list): Don't manage cache here, instead call
16782         make_tree_vector.
16783         (c_parser_release_expr_list): Remove static function.
16784         (c_parser_vec_to_tree_list): Remove static function.
16785         (c_parser_attributes): Call build_tree_list_vec instead of
16786         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
16787         c_parser_release_expr_list.
16788         (c_parser_postfix_expression_after_primary): Likewise.
16789         (c_parser_objc_keywordexpr): Likewise.
16790
16791 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
16792
16793         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
16794         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
16795         TARGET_CONVERT_TO_TYPE.
16796         * hooks.c (hook_tree_const_tree_null): Define.
16797         * hooks.h (hook_tree_const_tree_null): Declare.
16798         * target.h (struct gcc_target):  Add invalid_parameter_type,
16799         invalid_return_type, promoted_type, and convert_to_type fields.
16800         * target-def.h (TARGET_INVALID_PARAMETER_TYPE): Define.
16801         (TARGET_INVALID_RETURN_TYPE): Define.
16802         (TARGET_PROMOTED_TYPE): Define.
16803         (TARGET_CONVERT_TO_TYPE): Define.
16804         (TARGET_INITIALIZER): Update for new fields.
16805         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
16806         (grokparms): Check targetm.invalid_parameter_type.
16807         * c-typeck.c (default_conversion): Check targetm.promoted_type.
16808         * c-convert.c (convert): Check targetm.convert_to_type.
16809
16810 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
16811
16812         * config/mips/mips.md (*extenddi_truncate<mode>,
16813         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
16814         defintions.
16815         (*extendhi_truncateqi): New define_insn_and_sptit.
16816
16817 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
16818
16819         PR middle-end/40204
16820         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
16821         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
16822
16823 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
16824
16825         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
16826         the operand of VIEW_CONVERT_EXPR.
16827
16828 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
16829
16830         * config/i386/driver-i386.c (host_detect_local_cpu): Check
16831         extended family and model for Intel processors.  Support Intel Atom.
16832
16833 2009-05-20  Olivier Hainque  <hainque@adacore.com>
16834
16835         * gstab.h (stab_code_type): Define, to be used instead of the
16836         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
16837         notice.
16838         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
16839         occurrences by stab_code_type.
16840         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
16841
16842 2009-05-20  Martin Jambor  <mjambor@suse.cz>
16843
16844         * tree-flow.h (insert_edge_copies_seq): Undeclare.
16845         (sra_insert_before): Likewise.
16846         (sra_insert_after): Likewise.
16847         (sra_init_cache): Likewise.
16848         (sra_type_can_be_decomposed_p): Likewise.
16849         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
16850         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
16851         (sra_insert_before): Likewise.
16852         (sra_insert_after): Likewise.
16853         (sra_init_cache): Likewise.
16854         (insert_edge_copies_seq): Made static and moved upwards.
16855
16856         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
16857         case.
16858
16859         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
16860
16861         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
16862         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
16863         simple copies.
16864
16865 2009-05-20  Richard Guenther  <rguenther@suse.de>
16866
16867         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
16868         with mismatched comparison modes.
16869
16870 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16871
16872         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
16873         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
16874         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
16875         with shifts for Thumb2.
16876         (orsi_notsi): New for orn.
16877         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
16878         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
16879         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
16880         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
16881         Don't invert remainder for IOR.
16882
16883 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
16884
16885         PR tree-optimization/40087
16886         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
16887         number_of_iterations_ne): Rename never_infinite argument.
16888         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
16889         number_of_iterations_le): Handle pointer-type ivs when
16890         exit_must_be_taken is false.
16891         (number_of_iterations_cond):  Do not always assume that
16892         exit_must_be_taken if the control variable is a pointer.
16893
16894 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16895
16896         * c-typeck.c (build_binary_op): Allow % on integal vectors.
16897         * doc/extend.texi (Vector Extension): Document that % is allowed too.
16898
16899 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
16900
16901         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
16902         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
16903
16904 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16905
16906         PR c/40172
16907         * c.opt (Wlogical-op): Disabled by default.
16908         * c-opt (c_common_post_options): Do not enable Wlogical-op with
16909         Wextra.
16910         * doc/invoke.texi (Wlogical-op): Likewise.
16911
16912 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
16913
16914         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
16915         into CASE_CONVERT.
16916         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
16917         Propagate the type of the first operand.
16918         <ASSERT_EXPR>: Simplify.
16919         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
16920         Rewrite using the RHS code as discriminant.
16921         <NOP_EXPR>: Turn into CASE_CONVERT.
16922         <PLUS_EXPR>: Propagate the type of the first operand.
16923
16924 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
16925
16926         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
16927         (ia64_dconst_0_375): New.
16928         * config/ia64/ia64.c (ia64_override_options): Remove
16929         -minline-sqrt-min-latency warning.
16930         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
16931         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
16932         * config/ia64/ia64.md (*sqrt_approx): Remove.
16933         (sqrtsf2): Remove #if 0.
16934         (sqrtsf2_internal_thr): Rewrite and move to div.md.
16935         (sqrtdf): Remove assert.
16936         (sqrtdf2_internal_thr): Rewrite and move to div.md.
16937         (sqrtxf2): Remove #if 0.
16938         (sqrtxf2_internal_thr): Rewrite and move to div.md.
16939         * div.md (sqrt_approx_rf): New.
16940         (sqrtsf2_internal_thr): New implementation.
16941         (sqrtsf2_internal_lat): New.
16942         (sqrtdf2_internal_thr: New implementation.
16943         (sqrtxf2_internal): New implementation.
16944
16945 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
16946             Hans-Peter Nilsson  <hp@axis.com>
16947
16948         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
16949         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
16950         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
16951         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
16952         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
16953         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
16954         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
16955         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
16956         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
16957         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
16958         * c-common.c: ...from here.
16959
16960 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16961
16962         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
16963
16964 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16965
16966         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
16967
16968 2009-05-19  Ben Elliston  <bje@au.ibm.com>
16969
16970         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
16971         assignments with memcpy calls.
16972         (add_fdes): Likewise.
16973         (binary_search_unencoded_fdes): Likewise.
16974         (linear_search_fdes): Eliminate type puns.
16975
16976 2009-05-19  Richard Guenther  <rguenther@suse.de>
16977
16978         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
16979         not falsely claim to have propagated into all uses.
16980
16981 2009-05-19  Ben Elliston  <bje@au.ibm.com>
16982
16983         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
16984         version to v3.0.
16985
16986 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
16987
16988         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
16989         * config/sh/sh.c (sh_legitimate_address_p): Make static.
16990         (TARGET_LEGITIMATE_ADDRESS_P): New.
16991         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16992         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
16993
16994 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
16995
16996         PR debug/40109
16997         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
16998         child of the containing namespace's DIE.
16999
17000 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
17001
17002         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
17003         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
17004         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
17005         extend patterns.
17006
17007 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
17008
17009         PR target/39942
17010         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
17011         gen_align with gen_pad.
17012         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
17013         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
17014
17015         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
17016         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
17017
17018         * config/i386/i386.md (align): Renamed to ...
17019         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
17020         ASM_OUTPUT_MAX_SKIP_PAD.
17021
17022 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
17023
17024         * config.gcc: Fix variable syntax.
17025
17026         PR target/39531
17027         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
17028         before calling exact_log2.
17029         (output_iorsi3): Likewise.
17030         (output_xorsi3): Likewise.
17031
17032 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
17033
17034         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
17035         for the none zero constant operand except for EQ and NE
17036         comprisons even when the first operand is R0.
17037
17038 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
17039
17040         * config/s390/2064.md: Remove trailing whitespaces.
17041         * config/s390/2084.md: Likewise.
17042         * config/s390/constraints.md: Likewise.
17043         * config/s390/fixdfdi.h: Likewise.
17044         * config/s390/libgcc-glibc.ver: Likewise.
17045         * config/s390/s390-modes.def: Likewise.
17046         * config/s390/s390-protos.h: Likewise.
17047         * config/s390/s390.c: Likewise.
17048         * config/s390/s390.h: Likewise.
17049         * config/s390/s390.md: Likewise.
17050         * config/s390/tpf-unwind.h: Likewise.
17051
17052 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
17053
17054         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
17055
17056 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
17057
17058         M68K TLS support.
17059         * configure.ac (m68k-*-*): Check if binutils support TLS.
17060         * configure: Regenerate.
17061         * config/m68k/predicates.md (symbolic_operand): Extend comment.
17062         * config/m68k/constraints.md (Cu): New constraint.
17063         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
17064         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
17065         (movsi): Handle TLS symbols.
17066         (addsi3_5200): Handle XTLS symbols, indent.
17067         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
17068         (m68k_tls_reference_p): Declare.
17069         (m68k_legitimize_address): Declare.
17070         (m68k_unwrap_symbol): Declare.
17071         * config/m68k/m68k.opt (mxtls): New option.
17072         * config/m68k/m68k.c (ggc.h): Include.
17073         (m68k_output_dwarf_dtprel): Implement hook.
17074         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
17075         (m68k_expand_prologue): Load GOT pointer when function needs it.
17076         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
17077         (m68k_legitimate_constant_address_p): Same.
17078         (m68k_decompose_address): Handle TLS references.
17079         (m68k_get_gp): New static function.
17080         (enum m68k_reloc): New contants.
17081         (TLS_RELOC_P): New macro.
17082         (m68k_wrap_symbol): New static function.
17083         (m68k_unwrap_symbol): New function.
17084         (m68k_final_prescan_insn_1): New static function.
17085         (m68k_final_prescan_insn): New function.
17086         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
17087         functions.
17088         (legitimize_pic_address): Handle TLS references..
17089         (m68k_tls_get_addr, m68k_get_tls_get_addr)
17090         (m68k_libcall_value_in_a0_p)
17091         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
17092         (m68k_call_m68k_read_tp): Helper variables and functions for ...
17093         (m68k_legitimize_tls_address): Handle TLS references.
17094         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
17095         New functions.
17096         (m68k_legitimize_address): Handle TLS symbols.
17097         (m68k_get_reloc_decoration): New static function.
17098         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
17099         UNSPEC_RELOC32.
17100         (m68k_output_dwarf_dtprel): Implement hook.
17101         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
17102         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
17103         m68k_call_* routines.
17104         (sched_attr_op_type): Handle TLS symbols.
17105         (gt-m68k.h): Include.
17106         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
17107         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
17108
17109 2009-05-18  Martin Jambor  <mjambor@suse.cz>
17110
17111         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
17112         (visit_store_addr_for_mod_analysis): New function.
17113         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
17114         (determine_cst_member_ptr): Use gimple_assign_single_p.
17115         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
17116         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
17117         operands.  Don't check number of operands of a NOP_EXPR.
17118
17119 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
17120
17121         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
17122
17123 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
17124
17125         PR c/40172
17126         * c-common.c (warn_logical_operator): Don't warn if one of
17127         expression isn't always true or false.
17128
17129 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
17130
17131         * config/i386/biarch32.h: New file.
17132         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
17133
17134 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
17135
17136         * config/mips/mips.md (*zero_extend<mode>_trunchi,
17137         *zero_extend<mode>_truncqi): Merge these into ...
17138         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
17139         Name the pattern following this as *zero_extendhi_truncqi.
17140
17141 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
17142
17143         PR middle-end/39301
17144         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
17145         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
17146         (output_info): Make field HOST_WIDEST_INT.
17147         (print_statistics): Use HOST_WIDEST_INT_PRINT.
17148         (dump_bitmat_statistics): Same.
17149
17150 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
17151
17152         * config.gcc (use_gcc_stdint):  Set to wrap.
17153         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
17154         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
17155         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
17156         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
17157         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
17158         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
17159         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
17160         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
17161
17162 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
17163
17164         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
17165         tune_64.
17166         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
17167         Move definitions earlier.
17168         (OPT_ARCH64, OPT_ARCH32): Define.
17169         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
17170         and tune_64.
17171
17172 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
17173
17174         PR target/40153
17175         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
17176         implies.
17177
17178 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
17179
17180         * arm.md (movdi2): Copy non-reg values to DImode registers.
17181
17182 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
17183
17184         PR target/39942
17185         * final.c (label_to_max_skip): New function.
17186         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
17187         CODE_LABEL_NUMBER <= max_labelno.
17188         * output.h (label_to_max_skip): New prototype.
17189         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
17190         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
17191         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
17192         Handle CODE_LABELs with >= 16 byte alignment or with
17193         max_skip == (1 << align) - 1.
17194         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
17195         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
17196
17197         PR target/39942
17198         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
17199         .p2align 3 if MAX_SKIP is smaller than 7.
17200         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
17201
17202 2009-05-15  Ian Lance Taylor  <iant@google.com>
17203
17204         * alias.c (struct alias_set_entry_d): Rename from struct
17205         alias_set_entry.  Change all uses.
17206         * except.c (struct call_site_record_d): Rename from struct
17207         call_site_record.  Change all uses.
17208         * except.h (struct eh_region_d): Rename from struct eh_region.
17209         Change all uses.
17210         * gcse.c (struct hash_table_d): Rename from struct hash_table.
17211         Change all uses.
17212         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
17213         ivtype_map_elt.  Change all uses.
17214         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
17215         Change all uses.
17216         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
17217         * graphite.h (struct name_tree_d): Rename from struct name_tree.
17218         Change all uses.
17219         (struct sese_d): Rename from struct sese.  Change all uses.
17220         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
17221         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
17222         * optabs.h (struct optab_d): Rename from struct optab.  Change all
17223         uses.
17224         (struct convert_optab_d): Rename from struct convert_optab.
17225         Change all uses.
17226         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
17227         ipa_opt_pass.  Change all uses.
17228         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
17229         all uses.
17230
17231         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
17232         defined as a typedef.
17233         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
17234         defined as a tag.
17235
17236 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
17237
17238         PR 16302
17239         * fold-const.c (make_range,build_range_check,merge_ranges): Move
17240         declaration to...
17241         (merge_ranges): Returns bool.
17242         * tree.h (make_range): .. to here.
17243         (build_range_check): Likewise.
17244         (merge_ranges): Likewise. Renamed from merge_ranges.
17245         * c-typeck.c (parser_build_binary_op): Update calls to
17246         warn_logical_operator.
17247         * c-common.c (warn_logical_operator): Add new warning.
17248         * c-common.h (warn_logical_operator): Update declaration.
17249
17250 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
17251
17252         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
17253
17254 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17255
17256         * doc/install.texi: Document MPC requirements, flags etc.
17257
17258         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
17259         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
17260         Evaluate constant arguments.
17261         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
17262         (fold_builtin_1): Likewise, also evaluate constant arguments.
17263         Remove superfluous break.
17264         (do_mpc_ckconv): New.
17265         * real.h: Include mpc.h.
17266         * toplev.c (print_version): Output MPC version info if available.
17267
17268 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
17269
17270         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
17271
17272 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
17273
17274         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
17275         only once.
17276
17277 2009-05-15  Jan Hubicka  <jh@suse.cz>
17278
17279         * doc/invoke.texi (max-early-inliner-iterations): New flag.
17280         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
17281         (try_inline): Fix return value.
17282         (cgraph_decide_inlining_incrementally): Honor new value.
17283         (cgraph_early_inlining): Handle indirect inlining.
17284         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
17285
17286 2009-05-15  Jan Hubicka  <jh@suse.cz>
17287
17288         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
17289         * cgraphunit.c (cgraph_finalize_function): Set it.
17290         (cgraph_expand_function): Use it.
17291
17292 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
17293
17294         * real.c (encode_ieee_half): Define.
17295         (decode_ieee_half): Define.
17296         (ieee_half_format): Define.
17297         (arm_half_format): Define.
17298         * real.h (ieee_half_format): Declare.
17299         (arm_half_format): Declare.
17300
17301 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
17302
17303         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
17304         swapped, and reversed optabs exist before trying to use them.
17305
17306 2009-05-15  Paul Brook  <paul@codesourcery.com>
17307             Sandra Loosemore  <sandra@codesourcery.com>
17308
17309         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
17310         loads.  Allow PRE_DEC.
17311         (output_move_neon): Handle PRE_DEC.
17312         (arm_print_operand): Add 'A' for neon structure loads.
17313         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
17314         * config/arm/neon.md (neon_mov): Update comment.
17315         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
17316         calls.
17317         (Um): New constraint.
17318
17319 2009-05-15  Jan Hubicka  <jh@suse.cz>
17320
17321         Revert the following patch until testsuite fallout is fixed:
17322         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
17323         * cgraph.h (struct inline_summary): New filed self_wize,
17324         size_inlining_benefit, self_time and time_inlining_benefit.
17325         (struct cgraph_global_info): Replace insns by time ans size fields.
17326         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
17327         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
17328         (ipcp_update_callgraph): Do not touch function bodies.
17329         * ipa-inline.c: Include except.h
17330         (MAX_TIME): New constant.
17331         (overall_insns): Remove
17332         (overall_size, max_benefit): New static variables.
17333         (cgraph_estimate_time_after_inlining): New function.
17334         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
17335         (cgraph_clone_inlined_nodes): Update size.
17336         (cgraph_mark_inline_edge): Update size.
17337         (cgraph_estimate_growth): Use size info.
17338         (cgraph_check_inline_limits): Check size.
17339         (cgraph_default_inline_p): Likewise.
17340         (cgraph_edge_badness): Compute badness based on benefit and size cost.
17341         (cgraph_decide_recursive_inlining): Check size.
17342         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
17343         and times.
17344         (cgraph_decide_inlining): Likewise.
17345         (cgraph_decide_inlining_incrementally): Likewise; honor
17346         PARAM_EARLY_INLINING_INSNS.
17347         (likely_eliminated_by_inlining_p): New predicate.
17348         (estimate_function_body_sizes): New function.
17349         (compute_inline_parameters): Use it.
17350         * except.c (must_not_throw_labels): New function.
17351         * except.h (must_not_throw_labels): Declare.
17352         * tree-inline.c (init_inline_once): Kill inlining_weigths
17353         * tree-ssa-structalias.c: Avoid uninitialized warning.
17354         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
17355         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
17356         (PARAM_INLINE_CALL_COST): Remove.
17357         (PARAM_EARLY_INLINING_INSNS): New.
17358
17359 2009-05-15  Richard Guenther  <rguenther@suse.de>
17360
17361         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
17362         not TODO_update_ssa.
17363
17364 2009-05-15  Richard Guenther  <rguenther@suse.de>
17365
17366         PR tree-optimization/39999
17367         * gimple.h (gimple_expr_type): Use the expression type looking
17368         through useless conversions.
17369         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
17370         (vn_nary_op_insert_stmt): Likewise.
17371         (simplify_binary_expression): Likewise.
17372
17373 2009-05-15  Richard Guenther  <rguenther@suse.de>
17374
17375         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
17376         New options, enabled by default.
17377         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
17378         Document.
17379         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
17380         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
17381         * tree-ssa-structalias.c (gate_tree_pta): New function.
17382         (pass_build_alias): Use it.
17383
17384 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
17385
17386         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
17387         recurse on an invariant address if a conversion from a pointer
17388         type to a wider integer type is involved.
17389
17390 2009-05-15  Jan Hubicka  <jh@suse.cz>
17391
17392         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
17393         * cgraph.h (struct inline_summary): New filed self_wize,
17394         size_inlining_benefit, self_time and time_inlining_benefit.
17395         (struct cgraph_global_info): Replace insns by time ans size fields.
17396         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
17397         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
17398         (ipcp_update_callgraph): Do not touch function bodies.
17399         * ipa-inline.c: Include except.h
17400         (MAX_TIME): New constant.
17401         (overall_insns): Remove
17402         (overall_size, max_benefit): New static variables.
17403         (cgraph_estimate_time_after_inlining): New function.
17404         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
17405         (cgraph_clone_inlined_nodes): Update size.
17406         (cgraph_mark_inline_edge): Update size.
17407         (cgraph_estimate_growth): Use size info.
17408         (cgraph_check_inline_limits): Check size.
17409         (cgraph_default_inline_p): Likewise.
17410         (cgraph_edge_badness): Compute badness based on benefit and size cost.
17411         (cgraph_decide_recursive_inlining): Check size.
17412         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
17413         and times.
17414         (cgraph_decide_inlining): Likewise.
17415         (cgraph_decide_inlining_incrementally): Likewise; honor
17416         PARAM_EARLY_INLINING_INSNS.
17417         (likely_eliminated_by_inlining_p): New predicate.
17418         (estimate_function_body_sizes): New function.
17419         (compute_inline_parameters): Use it.
17420         * except.c (must_not_throw_labels): New function.
17421         * except.h (must_not_throw_labels): Declare.
17422         * tree-inline.c (init_inline_once): Kill inlining_weigths
17423         * tree-ssa-structalias.c: Avoid uninitialized warning.
17424         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
17425         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
17426         (PARAM_INLINE_CALL_COST): Remove.
17427         (PARAM_EARLY_INLINING_INSNS): New.
17428         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
17429         (inline-call-cost): Remove.
17430         (early-inlining-insns): New.
17431
17432 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
17433
17434         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
17435         for bounds.
17436         (print_int_cst_bounds_in_octal_p): Likewise.
17437         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
17438         with subtypes.
17439         * dwarf2out.c (base_type_die): Likewise.
17440         (is_subrange_type): Delete.
17441         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
17442         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
17443         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
17444         if the destination type is boolean.
17445         (build_range_check): Do not special-case subtypes.
17446         (fold_sign_changed_comparison): Likewise.
17447         (fold_unary): Likewise.
17448         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
17449         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
17450         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
17451         * tree.c (subrange_type_for_debug_p): New predicate based on the
17452         former is_subrange_type.
17453         * tree.h (subrange_type_for_debug_p): Declare.
17454         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
17455         (convert_affine_scev): Remove call to above function.
17456         (chrec_convert_aggressive): Likewise.
17457         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
17458         false for conversions involving subtypes.
17459         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
17460         (vrp_val_min): Likewise.
17461         (needs_overflow_infinity): Likewise.
17462         (extract_range_from_unary_expr): Likewise.
17463
17464 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
17465
17466         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
17467         * config/frv/frv.c: Likewise.
17468         * config/s390/s390.c: Likewise.
17469         * config/sparc/sparc.h: Likewise.
17470         * config/i386/i386.h: Likewise.
17471         * config/i386/i386.c: Likewise.
17472         * config/crx/crx.c: Likewise.
17473         * config/m68hc11/m68hc11.h: Likewise.
17474         * config/iq2000/iq2000.c: Likewise.
17475         * config/mn10300/mn10300.h: Likewise.
17476         * config/mn10300/mn10300.c: Likewise.
17477         * config/m68k/m68k.c: Likewise.
17478         * config/rs6000/rs6000.c: Likewise.
17479         * config/rs6000/xcoff.h: Likewise.
17480         * config/rs6000/linux64.h: Likewise.
17481         * config/rs6000/sysv4.h: Likewise.
17482         * config/score/score3.c: Likewise.
17483         * config/score/score7.c: Likewise.
17484         * config/score/score.c: Likewise.
17485         * config/arm/arm.md: Likewise.
17486         * config/mips/mips.c: Likewise.
17487         * config/mips/mips.md: Likewise.
17488         * config/bfin/bfin.h: Likewise.
17489         * config/pa/pa.c: Likewise.
17490         * config/pa/constraints.md: Likewise.
17491
17492         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
17493         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
17494         * config/pdp11/pdp11.h: Use memory_address_p instead.
17495
17496 2009-05-14  Ian Lance Taylor  <iant@google.com>
17497
17498         * passes.c (finish_optimization_passes): Change i to int.
17499         * plugin.c (plugins_active_p): Change event to int.
17500         (dump_active_plugins): Likewise.
17501         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
17502         Add cast.
17503         * tree.c (tree_range_check_failed): Change c to unsigned int.
17504         (omp_clause_range_check_failed): Likewise.
17505         (build_common_builtin_nodes): Change mode to int.  Add cast.
17506         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
17507         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
17508
17509         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
17510         ++ or -- with a variable of enum type.
17511
17512 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
17513
17514         PR driver/40144
17515         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
17516
17517 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
17518
17519         * store-motion.c: Do not include params.h
17520         * Makefile.in: Fix dependencies for various files.
17521
17522 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
17523
17524         * auto-inc-dec.c: Fix pass description, remove apparent
17525         accidental duplication.
17526
17527 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
17528
17529         PR middle-end/40147
17530         * ipa-utils.h (memory_identifier_string): Moved to ...
17531         * tree.h (memory_identifier_string): Here.  Add GTY(()).
17532
17533 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
17534
17535         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
17536         in the former documentation of...
17537         (GO_IF_LEGITIMATE_ADDRESS): ... this.
17538         * ira-conflicts.c (get_dup_num): Use address_operand.
17539         * targhooks.c (default_legitimate_address_p): New.
17540         * targhooks.h (default_legitimate_address_p): New.
17541         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
17542         Call hook.
17543         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
17544         * target.h (struct target): Add legitimate_address_p.
17545         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
17546         (TARGET_INITIALIZER): Include it.
17547
17548         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17549         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
17550         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
17551         (TARGET_LEGITIMATE_ADDRESS_P): New.
17552
17553         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17554         (REG_OK_STRICT_P): Delete.
17555         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
17556         (frv_legitimate_address_p_1): ... this.
17557         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
17558         (frv_legitimate_address_p_1): ... the renamed old
17559         frv_legitimate_address_p.
17560         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
17561         (TARGET_LEGITIMATE_ADDRESS_P): New.
17562
17563         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17564         * config/s390/s390-protos.h (legitimate_address_p): Remove.
17565         * config/s390/s390.c (legitimate_address_p): Rename to...
17566         (s390_legitimate_address_p): ... this, make static.
17567         (legitimize_address): Adjust call.
17568         (TARGET_LEGITIMATE_ADDRESS_P): New.
17569         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
17570
17571         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17572         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
17573         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
17574         (TARGET_LEGITIMATE_ADDRESS_P): New.
17575
17576         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17577         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
17578         * config/spu/spu.c (spu_legitimate_address): Rename to...
17579         (spu_legitimate_address_p): ... this, make static.
17580         (TARGET_LEGITIMATE_ADDRESS_P): New.
17581
17582         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17583         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
17584         * config/sparc/sparc.c (legitimate_address_p): Rename to...
17585         (sparc_legitimate_address_p): ... this, make static and return bool.
17586         (legitimize_address): Adjust call.
17587         (TARGET_LEGITIMATE_ADDRESS_P): New.
17588
17589         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17590         * config/i386/i386-protos.h (legitimate_address_p): Remove.
17591         * config/i386/i386.c (legitimate_address_p): Rename to...
17592         (ix86_legitimate_address_p): ... this, make static.
17593         (constant_address_p): Move after it, adjust call.
17594         (TARGET_LEGITIMATE_ADDRESS_P): New.
17595
17596         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17597         * config/avr/avr-protos.h (legitimate_address_p): Remove.
17598         * config/avr/avr.c (legitimate_address_p): Rename to...
17599         (avr_legitimate_address_p): ... this, make static.
17600         (legitimize_address): Adjust call.
17601         (TARGET_LEGITIMATE_ADDRESS_P): New.
17602
17603         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17604         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
17605         * config/crx/crx.c (crx_legitimate_address_p): Make static.
17606         (TARGET_LEGITIMATE_ADDRESS_P): New.
17607
17608         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17609         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
17610         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
17611         (TARGET_LEGITIMATE_ADDRESS_P): New.
17612
17613         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17614         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
17615         Remove.
17616         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
17617         Make static.
17618         (TARGET_LEGITIMATE_ADDRESS_P): New.
17619
17620         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17621         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
17622         Remove.
17623         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
17624         Rename to...
17625         (m68hc11_legitimate_address_p): ... this, make static.
17626         (go_if_legitimate_address_internal): Rename to...
17627         (m68hc11_legitimate_address_p_1): ... this.
17628         (legitimize_address): Adjust call.
17629         (TARGET_LEGITIMATE_ADDRESS_P): New.
17630
17631         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17632         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
17633         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
17634         (TARGET_LEGITIMATE_ADDRESS_P): New.
17635
17636         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17637         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
17638         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
17639         (mn10300_legitimate_address_p): ... this, make static.
17640         (TARGET_LEGITIMATE_ADDRESS_P): New.
17641
17642         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17643         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
17644         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
17645         (TARGET_LEGITIMATE_ADDRESS_P): New.
17646
17647         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17648         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
17649         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
17650         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17651         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
17652         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
17653         (rs6000_legitimate_address_p): ... this, make static.
17654         (TARGET_LEGITIMATE_ADDRESS_P): New.
17655         (REG_MODE_OK_FOR_BASE_P): Delete.
17656         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
17657
17658         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17659         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
17660         Delete.
17661         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
17662         static, adjust types.
17663         (TARGET_LEGITIMATE_ADDRESS_P): New.
17664
17665         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17666         * config/score/score.c (score_address_p): Rename to...
17667         (score_legitimate_address_p): ... this.
17668         (TARGET_LEGITIMATE_ADDRESS_P): New.
17669         * config/score/score3.c (score3_address_p): Rename to...
17670         (score3_legitimate_address_p): ... this.
17671         * config/score/score7.c (score7_address_p): Rename to...
17672         (score7_legitimate_address_p): ... this.
17673
17674         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
17675         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
17676         GO_IF_LEGITIMATE_ADDRESS): Delete.
17677         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
17678         thumb2_legitimate_address_p): Delete.
17679         (arm_legitimate_address_p): Rename to...
17680         (arm_legitimate_address_outer_p): ... this.
17681         * config/arm/constraints.md ("Uq"): Adjust call.
17682         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
17683         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
17684         to...
17685         (arm_legitimate_address_outer_p): ... this.
17686         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
17687         static.
17688         (TARGET_LEGITIMATE_ADDRESS_P): New.
17689
17690         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17691         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
17692         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
17693         (TARGET_LEGITIMATE_ADDRESS_P): New.
17694
17695         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17696         * config/vax/vax-protos.h (legitimate_address_p): Remove.
17697         * config/vax/vax.c (legitimate_address_p): Rename to...
17698         (vax_legitimate_address_p): ... this, make static.
17699         (TARGET_LEGITIMATE_ADDRESS_P): New.
17700
17701         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17702         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
17703         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
17704         (TARGET_LEGITIMATE_ADDRESS_P): New.
17705
17706         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17707         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
17708         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
17709         (mmix_legitimate_address_p): ... this, make static.
17710         (TARGET_LEGITIMATE_ADDRESS_P): New.
17711
17712         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17713         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
17714         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
17715         (TARGET_LEGITIMATE_ADDRESS_P): New.
17716
17717 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
17718
17719         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
17720         of MODE_COMPLEX_INT.
17721
17722 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
17723
17724         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
17725         LCT_NORMAL in function call.
17726         * mips-tdump.c (print_file_desc): Add cast to enum type.
17727         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
17728         (mark_stabs): Add casts to enum types.
17729         (parse_stabs_common): Add casts to enum types.
17730
17731 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
17732
17733         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
17734         Check for invalid values of LETTER.
17735
17736 2009-05-13  Taras Glek  <tglek@mozilla.com>
17737
17738         * attribs.c (register_attribute): moved out attribute registration
17739         into register_attribute.
17740         * doc/plugins.texi: Documented register_attribute and
17741         PLUGIN_ATTRIBUTES.
17742         * gcc-plugin.h: Added forward decl for register_attribute.
17743         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
17744         * plugin.c (register_callback, invoke_plugin_callbacks): Added
17745         PLUGIN_ATTRIBUTES boilerplate.
17746
17747 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
17748
17749         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
17750         values even in sentinel and empty entries.
17751         (ms_printf_flag_specs):  Likewise.
17752         (ms_scanf_flag_specs):  Likewise.
17753         (ms_strftime_flag_specs):  Likewise.
17754         (ms_print_char_table):  Likewise.
17755         (ms_scan_char_table):  Likewise.
17756         (ms_time_char_table):  Likewise.
17757
17758 2009-05-13  Doug Kwan  <dougkwan@google.com>
17759
17760         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
17761
17762 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
17763
17764         * config/mips/mips.md (store): Add attributes for QI and HI.
17765         Update comment.
17766         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
17767         (truncdi<mode>2): ... this new pattern.
17768
17769 2009-05-13  Brad Hards  <bradh@kde.org>
17770
17771         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
17772
17773 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
17774             Ben Elliston <bje@au.ibm.com>
17775
17776         PR middle-end/40035
17777         * dse.c (check_mem_read_rtx): Guard against width == -1.
17778
17779 2009-05-13  Michael Matz  <matz@suse.de>
17780
17781         PR middle-end/39976
17782         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
17783         (trivially_conflicts_p): New function.
17784         (insert_backedge_copies): Use it.
17785
17786 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
17787
17788         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
17789         (handle_stdc_pragma): Use new enum constant names.
17790         (handle_pragma_float_const_decimal64): Ditto.
17791
17792 2009-05-13  Ian Lance Taylor  <iant@google.com>
17793
17794         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
17795         tree.def.
17796
17797 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
17798
17799         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
17800         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
17801         multilibs.
17802         * config/m68k/m68k.h (FL_UCLINUX): Define.
17803
17804 2009-05-13  Jan Hubicka  <jh@suse.cz>
17805
17806         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
17807
17808 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
17809
17810         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
17811         unless -fschedule-insns is specified.
17812
17813 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
17814
17815         PR target/39561
17816         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
17817         TARGET_EXPAND_CBRANCHDI4.
17818         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
17819         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
17820         (cmpeqdi): Fix comment.
17821
17822 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
17823
17824         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
17825         (sh_legitimate_address_p): Likewise.
17826         * config/sh/sh.c (sh_legitimate_index_p): New.
17827         (sh_legitimate_address_p): Likewise.
17828         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
17829         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
17830         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
17831         (MAYBE_BASE_REGISTER_RTX_P): New macro.
17832         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
17833         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
17834         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
17835         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
17836         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
17837
17838 2009-05-12  Jan Hubicka  <jh@suse.cz>
17839
17840         * tree-inline.c (estimate_operator_cost): Add operands;
17841         when division happens by constant, it is cheap.
17842         (estimate_num_insns): Loads and stores are not having cost of 0;
17843         EH magic stuff is cheap; when computing runtime cost of switch,
17844         use log2 base of amount of its cases; builtin_expect has cost of 0;
17845         compute cost for moving return value of call.
17846         (init_inline_once): Initialize time_based flags.
17847         * tree-inline.h (eni_weights_d): Add time_based flag.
17848
17849 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
17850
17851         * df-core.c: Update head documentation.
17852
17853 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
17854
17855         PR bootstrap/40118
17856         * rs6000.c (rs6000_generate_compare): Use op1b instead of
17857         shadowing exisiting variable op1.
17858
17859 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
17860
17861         PR target/37179
17862         * config/i386/driver-i386.c (processor_signatures): New enum.
17863         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
17864         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
17865         processor signature to detect geode processor.
17866
17867 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
17868
17869         Revert:
17870
17871         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
17872
17873         * optabs.c (prepare_cmp_insn): Temporarily disable test that
17874         causes spurious differences between trunk and cond-optab branch.
17875
17876 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
17877
17878         * dojump.c (compare_from_rtx): Delete.
17879         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
17880         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
17881         if the comparison does not satisfy the predicate; test predicates for
17882         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
17883         further if one existing pattern fails.
17884         * expr.h (compare_from_rtx): Delete.
17885         (prepare_operand): Declare it.
17886         * optabs.c: Change "lib call" to "libcall" throughout.
17887         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
17888         HAVE_conditional_trap, emit_cmp_insn): Delete.
17889         (can_compare_p): Delete cmp_optab case.
17890         (prepare_float_lib_cmp): Return an rtx and a machine mode.
17891         Accept other parameters by value.
17892         (prepare_operand): Make non-static.
17893         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
17894         other parameters by value.  Try to widen operands here based on
17895         an optab_methods argument and looking at cbranch_optab.
17896         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
17897         loop.  Use cbranch_optab directly.
17898         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
17899         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
17900         assertion.
17901         (emit_conditional_move, emit_conditional_add): Inline what's needed
17902         of compare_from_rtx, using new prepare_cmp_insn for the rest.
17903         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
17904         with COMPARE.  Move cmov_optab and cstore_optab above
17905         with cbranch_optab, move cmp_optab down with ucmp_optab,
17906         remove tst_otpab.  Do not initialize trap_rtx.
17907         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
17908         for trap code.  Do not check HAVE_conditional_trap.  Use
17909         prepare_cmp_insn.  Accept no predicate for operand 3.
17910         * optabs.h (OTI_cmp): Mark as used only for libcalls.
17911         (OTI_ctrap, ctrap_optab): New.
17912         (tst_optab): Delete.
17913         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
17914         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
17915         with lookup of ctrap_optab.
17916         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
17917         Delete.
17918         (ctrap_optab): New.
17919
17920         * combine.c (combine_simplify_rtx, simplify_set): Do not
17921         special case comparing against zero for cc0 machines.
17922         * simplify-rtx.c (simplify_binary_operation_1): Never remove
17923         COMPARE on cc0 machines.
17924         (simplify_relational_operation): Return a new expression when
17925         a COMPARE could be removed.
17926         * final.c (final_scan_insn): Compare cc_status values
17927         against LHS of a (compare FOO (const_int 0)) cc0 source.
17928         Also check if cc_status.value is the full compare.
17929
17930         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
17931         (cstoreMM4): Document.
17932         (conditional_trap): Document ctrapMM4 instead.
17933         (sync_compare_and_swapMM): Refer to cbranchcc4.
17934         (Dependent Patterns): Eliminate obsolete information referring to
17935         the old jump optimization phase.
17936         (Canonicalization): Include cbranchcc4 case, omit canonicalization
17937         of compares with 0 on cc0 machines.
17938         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
17939         avoiding references to cc0.  Remove text about storing operands
17940         in cmpMM.
17941         * doc/tm.texi (Condition Codes): Include blurb on different
17942         condition code representations, separate into subsections for
17943         CC0, MODE_CC and conditional execution.
17944
17945         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
17946         alpha_emit_setcc): Accept operands and a machine mode.
17947         * config/alpha/alpha.c (alpha_emit_conditional_branch):
17948         Get code/op0/op1 from operands, use machine mode argument
17949         instead of alpha_compare.fp_p.  Emit the branch here.
17950         (alpha_emit_setcc): Likewise, and return boolean.
17951         (alpha_emit_conditional_move): Likewise.  Assert that
17952         cmp_op_mode == cmp_mode, and simplify accordingly.
17953         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
17954         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
17955         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
17956         Delete.
17957         (stack probe test): Use cbranchdi4.
17958         * config/alpha/predicates.md (alpha_cbranch_operator): New.
17959
17960         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
17961         * config/arc/arc.h (movsicc, movsfcc): Use it.
17962         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
17963         (cbranchsi4, cstoresi4): New.
17964         (cmpsi, bCC and sCC expanders): Remove.
17965
17966         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
17967         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
17968         * config/arm/predicates.md (arm_comparison_operator): Only include
17969         floating-point operators if there is a hardware floating-point unit.
17970         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
17971         deferring to cbranch_cc and cstore_cc respectively.
17972         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
17973         cbranch_cc, cstore_cc): New.
17974         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
17975         arm_compare_op1.
17976         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
17977
17978         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
17979         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
17980         as an argument.
17981         (adjust_insn_length): Adjust calls.
17982         (avr_reorg): Handle (compare (foo) (const_int 0)).
17983         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
17984         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
17985         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
17986         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
17987         (bCC): Remove.
17988         (cbranchqi4, cbranchhi4, cbranchsi4): New.
17989         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
17990
17991         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
17992         (cbranchsi4, cstorebi4, cstoresi4): New.
17993         (movbisi): This insn is duplicate, split it to zero_extend.
17994         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
17995         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
17996         (bfin_optimize_loop): Use cbranch expander.
17997         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
17998         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
17999         (bfin_bimode_comparison_operator): ... this.
18000         (bfin_direct_comparison_operator): New.
18001
18002         * config/cris/cris.c (cris_normal_notice_update_cc): Look
18003         inside (compare FOO (const_int 0)).
18004         (cris_rtx_costs): Handle ZERO_EXTRACT.
18005         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
18006         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
18007         (*tstdi_v32): Delete.
18008         (*cmpdi_non_v32): Add M alternative for operand 1.
18009         (cmpsi, cmp<mode>): Make private.
18010         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
18011         with COMPARE.
18012         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
18013
18014         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
18015         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
18016         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
18017         (cc_reg_operand): New.
18018         (any_cond): Delete.
18019         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
18020         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
18021         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
18022         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
18023         crx_expand_scond): Delete.
18024
18025         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
18026         (cbranchsi4): New.
18027         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
18028         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
18029
18030         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
18031         cstoresi4, cstoresf4, cstoredf4): New.
18032         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
18033         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
18034         Receive the entire operands array.
18035         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
18036         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
18037         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
18038         Get test/op0/op1 from the operands array.
18039         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
18040
18041         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
18042         (h8300_expand_store): New.
18043         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
18044         (const_int 0)).
18045         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
18046         (h8300_expand_store): New.
18047         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
18048         or do not try to produce (set (cc0) REG).
18049         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
18050         change a compare into a move to a scratch register.  Disable some
18051         peepholes when comparing with zero.
18052         (tstsi, tsthi, tstsi, cmpqi): Make private.
18053         (cmphi): Delete.
18054         (bCC, sCC): Delete.
18055         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
18056         cstoresi4): New.
18057
18058         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
18059         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
18060         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
18061         (ix86_emit_i387_log1p): Use cbranchxf2.
18062         (ix86_expand_setcc): Return void.
18063         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
18064         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
18065         cmp<MODEF>, cmpcc): Remove.
18066         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
18067         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
18068         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
18069         (sCC and bCC expanders): Remove.
18070         (stack_protect_test): Use cbranchcc4.
18071
18072         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
18073         Delete.
18074         (ia64_expand_compare): Accept three rtx by reference and return void.
18075         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
18076         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
18077         from *expr.  Update *expr with the BImode comparison to do.
18078         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
18079         cmptf, bCC, sCC, conditional_trap): Delete.
18080         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
18081         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
18082         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
18083         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
18084         * config/ia64/predicates.md (ia64_cbranch_operator): New.
18085
18086         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
18087         type of last argument.
18088         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
18089         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
18090         use machine mode argument instead of branch_type.  Remove dead
18091         code for floating-point comparisons.
18092         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
18093         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
18094         Remove.
18095         (cbranchsi4, cstoresi4): New.
18096         * config/iq2000/predicates.md (reg_or_const_operand): New.
18097
18098         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
18099         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
18100         (b<code>_op): Rewrite to...
18101         (bcc_op): ... this, using match_operator.
18102         (s<code>_op): Rewrite to...
18103         (scc_op): ... this, using match_operator.
18104         (s<code>_24_op): Rewrite to...
18105         (scc_op_24): ... this, using match_operator.
18106         (s<code>_<mode>): Rewrite to...
18107         (cstore<mode>4): ... this, using match_operator.
18108         (s<code>_<mode>_24): Rewrite to...
18109         (cstore<mode>4_24): ... this, using match_operator.
18110         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
18111         m32c_unpend_compare, m32c_expand_scc): Delete.
18112         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
18113         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
18114         (m32c_expand_movcc): Change NE to EQ if necessary.
18115         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
18116
18117         * config/m32r/m32r-protos.h (gen_cond_store): New.
18118         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
18119         (gen_cond_store): New, from sCC patterns.
18120         (m32r_expand_block_move): Use cbranchsi4.
18121         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
18122         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
18123         (cbranchsi4, cstoresi4): New.
18124
18125         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
18126         Delete.
18127         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
18128         (m68hc11_notice_update_cc): Look into a compare with 0.
18129         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
18130         Delete.
18131         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
18132         cmphi, cmpqi, bCC): Delete.
18133         (cbranchsi4, cbranchhi4, cbranchqi4): New.
18134         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
18135         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
18136         sets with COMPARE.
18137
18138         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
18139         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
18140         * config/m68k/constraints.md (H): New.
18141         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
18142         the define_insn below.
18143         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
18144         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
18145         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
18146         patterns): Wrap RHS with COMPARE.
18147         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
18148         (*cmpdi_internal): Name this pattern.
18149         (cmpdi): Change to define_insn.
18150         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
18151         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
18152         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
18153         predicate.
18154         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
18155         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
18156         (conditional_trap): Change to...
18157         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
18158         (*conditional_trap): Use the ordered_comparison_operator and
18159         const1_operand predicates.
18160         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
18161         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
18162         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
18163         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
18164
18165         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
18166         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
18167         (mcore_gen_compare): New.
18168         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
18169         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
18170         (mcore_gen_compare): ... this.
18171         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
18172         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
18173         (stack probe pattern): Use cbranchsi4.
18174
18175         * config/mips/predicates.md (mips_cstore_operator): New.
18176         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
18177         * config/mips/mips.md (any_cond): Delete.
18178         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
18179         always succeed.
18180         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
18181         fixuns_truncsfdi2): Use cbranch patterns.
18182         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
18183         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
18184         Adjust call to mips_expand_conditional_branch.
18185         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
18186         cstore<GPR:mode>4.
18187         * config/mips/mips-protos.h (mips_expand_conditional_branch,
18188         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
18189         * config/mips/mips.c (cmp_operands): Delete.
18190         (mips_emit_compare): Get comparison operands from *op0/*op1.
18191         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
18192         that it succeeds.  Use op0/op1 instead of cmp_operands.
18193         (mips_expand_conditional_branch, mips_expand_conditional_move,
18194         mips_expand_conditional_trap): Likewise.
18195         (mips_block_move_loop): Use cbranch patterns.
18196         * config/mips/mips.h (cmp_operands): Delete.
18197
18198         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
18199         (mmix_gen_compare_reg): Just return a register in the right CC mode.
18200         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
18201         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
18202         (*cmpcc_folded): Rename to...
18203         (*cmpdi_folded): this.
18204         (*cmpcc): Rename to...
18205         (*cmps): ... this.
18206         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
18207         (bCC): Remove.
18208         (cbranchdi4): New.
18209         (cbranchdf4): New.  Handle invalid comparisons here.
18210         * config/mmix/predicates.md (float_comparison_operator): New.
18211
18212         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
18213         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
18214         * config/mn10300/mn10300.md (tst): Delete.
18215         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
18216         Name these patterns and wrap RHS in a compare.
18217         (*cmpsi): Make this pattern private.  Include tst.
18218         (*cmpsf): Make this pattern private.
18219         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
18220         (compare with zero peepholes): Likewise.
18221         (bCC): Remove.
18222         (cbranchsi4, cbranchsf4): New.
18223         (casesi): Use cbranchsi4.
18224
18225         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
18226         hppa_branch_type): Delete.
18227         (return_addr_rtx): Use cbranchsi4.
18228         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
18229         Emit CCFPmode comparison here.
18230         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
18231         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
18232         hppa_branch_type): Delete.
18233         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
18234         (movsicc, movdicc): Remove references to hppa_compare_op0,
18235         hppa_compare_op1 and compare_from_rtx.
18236         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
18237         (casesi): Use cbranchsi4.
18238
18239         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
18240         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
18241         * config/pdp11/pdp11.md (register_or_const0_operand): New.
18242         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
18243         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
18244         (bCC): Delete.
18245         (cbranchdf4, cbranchhi4, cbranchqi4): New.
18246         (*branch, *branch_inverted): New.
18247
18248         * config/picochip/picochip.md (cbranchhi4): Use
18249         ordered_comparison_operator.
18250         (cmphi, bCC): Remove.
18251
18252         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
18253         (trap_comparison_operator): Delete.
18254         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
18255         rs6000_emit_cbranch): Accept mode and operands.
18256         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
18257         rs6000_compare_fp_p): Delete.
18258         (rs6000_generate_compare): Accept mode and comparison.  Extract code
18259         and op0/op1 from there.  Replace references to rs6000_compare_op0
18260         and rs6000_compare_op1.
18261         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
18262         extract result from passed operands.
18263         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
18264         extract loc from passed operands.
18265         (rs6000_emit_cmove): Likewise.
18266         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
18267         rs6000_compare_fp_p): Delete.
18268         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
18269         (cbranch<GPR>4, cbranch<FP>4): New.
18270         (cstore<mode>4): New.  Consolidate here all choices about when to use
18271         portable or specialized sCC sequences.
18272         (stack_protect_test): Use cbranchsi4.
18273         (conditional_trap): Replace with ctrap<GPR>4.
18274         (conditional trap insn): Replace trap_comparison_operator with
18275         ordered_comparison_operator.
18276
18277         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
18278         (s390_emit_prologue): Use ctrap.
18279         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
18280         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
18281         New predicates replacing...
18282         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
18283         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
18284         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
18285         (add<mode>cc): Do not use s390_compare_op0/op1.
18286         (s<code>): Change to...
18287         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
18288         (seq): Change to...
18289         (cstorecc4): ... this.  Handle EQ or NE equally.
18290         (*sne): Un-privatize for use in cstorecc4.
18291         (b<code>): Change to...
18292         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
18293         (conditional_trap): Replace with...
18294         (ctrap<GPR>4, ctrap<FP>4): ... these.
18295         (stack_protect): Use cbranchcc4.
18296
18297         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
18298         * config/score/score-protos.h (score_gen_cmp): Delete.
18299         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
18300         (score_block_move-loop): Use cbranchsi4.
18301         * config/score/score.md (cbranchsi4): New.
18302         (cmpsi, bCC): Delete.
18303         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
18304         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
18305         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
18306         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
18307         * config/score/score3.h (score3_gen_cmp): Delete.
18308         * config/score/score7.h (score7_gen_cmp): Delete.
18309
18310         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
18311         (sh_emit_scc_to_t): ... this.  Return void.
18312         (from_compare): Rename to...
18313         (sh_emit_compare_and_branch): ... this.
18314         (sh_emit_compare_and_set): New.
18315         (sh_expand_t_scc): Accept operands.
18316         * config/sh/predicates.md (sh_float_comparison_operator): New.
18317         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
18318         (prepare_scc_operands): Rename to...
18319         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
18320         arguments.
18321         (sh_emit_cheap_store_flag): New.
18322         (sh_emit_set_t_insn): New.
18323         (from_compare): Rename to...
18324         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
18325         handling of TARGET_SH2E floating point to avoid recursive call.
18326         Generate branch here.
18327         (sh_emit_compare_and_set): New.
18328         (sh_expand_t_scc): Get op0/op1 from arguments.
18329         (sh_emit_cheap_store_flag): New.
18330         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
18331         cases.
18332         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
18333         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
18334         (movsicc, movdicc): Do nothing when it recreated operands from
18335         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
18336         prepare_scc_operands (now sh_emit_scc_to_t).
18337         (udivdi3): Use cstoresi4.
18338         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
18339         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
18340         (cbranchint4_media, cbranchfp4_media): New.
18341         (casesi): Use cbranchdi4.
18342         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
18343         Delete.
18344         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
18345         (movnegt): Remove second operand.
18346         (cbranchsf4, cbranchdf4): New.
18347         (stack_protect): Use cbranchdi4/cbranchsi4.
18348
18349         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
18350         (gen_compare_reg): Accept comparison, extract part of it to...
18351         (gen_compare_reg_1): ... this.
18352         (gen_compare_operator): Delete.
18353         (gen_v9_scc): Accept separate destination, comparison code and arms.
18354         Do not use sparc_compare_op0/sparc_compare_op1.
18355         (emit_scc_insn, emit_conditional_branch_insn): New.
18356         (emit_v9_brxx): Make static.  Remove useless assertion.
18357         (sparc_emit_float_lib_cmp): Return RTL instead of calling
18358         emit_cmp_insn.
18359         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
18360         * config/sparc/sparc-protos.h (gen_compare_reg,
18361         sparc_emit_float_lib_cmp): Adjust prototype.
18362         (emit_scc_insn, emit_conditional_branch_insn): New.
18363         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
18364         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
18365         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
18366         iterators to the top.
18367         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
18368         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
18369         snedi_special_trunc): Delete.
18370         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
18371         and snedi_special_trunc.
18372         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
18373         cbranchdi4, cbranch<F:mode>4): New.
18374         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
18375         here.  Use gen_compare_reg instead of gen_compare_operator.
18376         (conditional_trap): Replace with...
18377         (ctrapsi4, ctrapdi4): ... this.
18378         (stack_protect_test): Use cbranchcc4.
18379
18380         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
18381         argument to rtx.
18382         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
18383         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
18384         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
18385         from operands[0] or operands[3] depending on is_set.
18386         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
18387         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
18388         cmpdf, bCC), sCC: Remove.
18389         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
18390         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
18391         cstoredf4): New.
18392         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
18393         spu_emit_branch_or_set.
18394
18395         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
18396         Add two arguments.
18397         * config/stormy16/stormy16.h (xstormy16_compare_op0,
18398         xstormy16_compare_op1): Delete.
18399         * config/stormy16/stormy16.c (xstormy16_compare_op0,
18400         xstormy16_compare_op1): Delete.
18401         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
18402         Adjust calls.
18403         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
18404         (cmphi, cmpsi, bCC): Remove.
18405
18406         * config/v850/v850.md (tstsi, cmpsi): Fold into...
18407         (*cmpsi): ... this one.
18408         (cbranchsi4, cstoresi4): New.
18409         (bCC expanders): Delete.
18410         (sCC insns): Fold into...
18411         (*setcc): ... this one.
18412         (casesi): Do not use gen_cmpsi and gen_bgtu.
18413         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
18414         (movsicc): Simplify.
18415         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
18416
18417         * config/vax/vax-protos.h (cond_name): New.
18418         (vax_output_conditional_branch): Remove.
18419         * config/vax/vax.c (cond_name): New.
18420         (vax_output_conditional_branch): Remove.
18421         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
18422         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
18423         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
18424         (bit<VAXint>): Wrap source with (compare).
18425         (b<code> and following unnamed pattern): Rename to *branch and
18426         *branch_reversed.  Change macroization to match_operator.
18427         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
18428
18429         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
18430         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
18431         Change last argument to machine_mode.
18432         (xtensa_expand_scc): Add machine_mode argument.
18433         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
18434         (gen_conditional_move, xtensa_expand_conditional_branch,
18435         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
18436         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
18437         Adjust operand numbers.
18438         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
18439         Delete.
18440         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
18441         (cmpsi, cmpsf, b<code>, s<code>): Delete.
18442         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
18443
18444 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
18445
18446         * optabs.c (prepare_cmp_insn): Temporarily disable test that
18447         causes spurious differences between trunk and cond-optab branch.
18448
18449 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
18450
18451         PR target/37137
18452         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
18453
18454 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
18455
18456         * tree.c (iterative_hash_pointer): Delete.
18457         (iterative_hash_expr): Short-circuit handling of NULL pointer.
18458         Hash UIDs and versions of SSA names.  Don't special-case built-in
18459         function declarations.
18460
18461 2009-05-11  Ian Lance Taylor  <iant@google.com>
18462
18463         PR bootstrap/40103
18464         * graphite.c: Force -Wc++-compat to only be a warning before
18465         #including "cloog/cloog.h".
18466
18467 2009-05-11  Martin Jambor  <mjambor@suse.cz>
18468
18469         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
18470
18471 2009-05-11  Jan Hubicka  <jh@suse.cz>
18472
18473         * tree-ssa-loop-ivcanon.c: Include target.h
18474         (struct loop_size): new structure.
18475         (constant_after_peeling): New predicate.
18476         (tree_estimate_loop_size): New function.
18477         (estimated_unrolled_size): Rewrite for new estimates.
18478         (try_unroll_loop_completely): Use new estimates.
18479         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
18480
18481 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18482
18483         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
18484         libcpp interface change.
18485         (spu_macro_to_expand): Likewise.
18486
18487 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
18488
18489         PR tree-optimization/40026
18490         * gimplify.c (gimplify_init_constructor): Change initial conditional
18491         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
18492         optimize_compound_literals_in_ctor.
18493
18494 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
18495
18496         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
18497         New devices.
18498         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
18499
18500 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
18501
18502         * tree-vect-data-refs.c (vect_analyze_group_access): Use
18503         HOST_WIDE_INT for gap.
18504
18505 2009-05-11  Ira Rosen  <irar@il.ibm.com>
18506
18507         PR tree-optimization/40074
18508         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
18509         account in group size and step comparison.
18510
18511 2009-05-11  Richard Guenther  <rguenther@suse.de>
18512
18513         * passes.c (init_optimization_passes): Strip now incorrect comment.
18514         (execute_function_todo): Do not set PROP_alias.
18515         * tree-pass.h (PROP_alias): Remove.
18516         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
18517         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
18518         * tree-nrv.c (pass_return_slot): Likewise.
18519         * tree-object-size.c (pass_object_sizes): Likewise.
18520         * tree-ssa-dom.c (pass_dominator): Likewise.
18521         (pass_phi_only_cprop): Likewise.
18522         * tree-ssa-dse.c (pass_dse): Likewise.
18523         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
18524         (pass_cselim): Likewise.
18525         * tree-ssa-pre.c (pass_pre): Likewise.
18526         (pass_fre): Likewise.
18527         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
18528         * tree-ssa-sink.c (pass_sink_code): Likewise.
18529         * tree-stdarg.c (pass_stdarg): Likewise.
18530         * tree-tailcall.c (pass_tail_calls): Likewise.
18531         * tree-vrp.c (pass_vrp): Likewise.
18532
18533 2009-05-10  Ian Lance Taylor  <iant@google.com>
18534
18535         * basic-block.h (enum profile_status): Break out of struct
18536         control_flow_graph.
18537         * cgraph.h (struct inline_summary): Break out of struct
18538         cgraph_local_info.
18539         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
18540         of struct cgraph_order_sort.
18541         * combine.c (enum undo_kind): New enum, broken out of struct undo.
18542         * cse.c (struct branch_path): Break out of struct
18543         cse_basic_block_data.
18544         * except.h (enum eh_region_type): Break out of struct eh_region.
18545         * gcc.c (enum add_del): Break out of struct modify_target.
18546         * genrecog.c (enum decision_type): Break out of struct decision_test.
18547         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
18548         ggc_pch_data.
18549         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
18550         * regmove.c (enum match_use): New enum, broken out of struct match.
18551         * sched-int.h (enum post_call_group): New enum, broken out of
18552         struct deps.
18553         (struct deps_reg): Break out of struct deps.
18554         * target.h (struct asm_int_op): Break out of struct gcc_target.
18555         * tree-eh.c (struct goto_queue_node): Break out of struct
18556         leh_tf_state.
18557         * tree-inline.h (enum copy_body_cge_which): Break out of
18558         copy_body_data.
18559         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
18560
18561         * c-decl.c (in_struct, struct_types): New static variables.
18562         (pushtag): Add loc parameter.  Change all callers.
18563         (lookup_tag): Add ploc parameter.  Change all callers.
18564         (check_compound_literal_type): New function.
18565         (parser_xref_tag): Add loc parameter.  Change all callers.  If
18566         -Wc++-compat, warn about struct/union/enum types defined within a
18567         struct or union.
18568         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
18569         and loc parameters.  Change all callers.  Change error calls to
18570         error_at, using loc.  For a redefinition, if the location of the
18571         original definition is known, report it.  Set in_struct and
18572         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
18573         (finish_struct): Add new parameters enclosing_in_struct and
18574         enclosing_struct_types.  Change all callers.  Set
18575         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
18576         in the struct.  If in a struct, add this struct to struct_types.
18577         (start_enum): Add loc parameter.  Change all callers.  Use
18578         error_at for errors, using loc.  For a redefinition, if the
18579         location of the original definition is known, report it.  If in a
18580         struct, add this enum type to struct_types.  If -Wc++-compat warn
18581         if in sizeof, typeof, or alignof.
18582         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
18583         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
18584         (c_parser_enum_specifier): Get enum location for start_enum.
18585         (c_parser_struct_or_union_specifier): Get struct location for
18586         start_struct.  Save in_struct and struct_types status between
18587         start_struct and finish_struct.
18588         (c_parser_cast_expression): Get location of cast.
18589         (c_parser_alignof_expression): Get location of type.
18590         (c_parser_postfix_expression): Likewise.
18591         (c_parser_postfix_expression_after_paren_type): Add type_loc
18592         parameter.  Change all callers.  Call check_compound_literal_type.
18593         Use type_loc for error about variable size type.
18594         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
18595         of an enum constant from an enum type defined in a struct or union.
18596         (c_cast_expr): Add loc parameter.  Change all callers.  If
18597         -Wc++-compat, warn about defining a type in a cast.
18598         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
18599         (start_enum, start_struct, finish_struct): Update declarations.
18600         (parser_xref_tag, c_cast_expr): Update declarations.
18601         (check_compound_literal_type): Declare.
18602
18603 2009-05-11  Ben Elliston  <bje@au.ibm.com>
18604
18605         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
18606         for recent libcpp interface change.
18607         (rs6000_macro_to_expand): Likewise.
18608
18609 2009-05-10  Michael Matz  <matz@suse.de>
18610
18611         PR target/40031
18612         * config/arm/arm.c (require_pic_register): Emit on entry edge,
18613         not at entry of function.
18614
18615 2009-05-10  Richard Guenther  <rguenther@suse.de>
18616
18617         PR tree-optimization/40081
18618         Revert
18619         * tree-sra.c (instantiate_element): Instantiate scalar replacements
18620         using the main variant of the element type.  Do not fiddle with
18621         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
18622
18623         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
18624         structs with volatile fields.
18625
18626 2009-05-10  Jan Hubicka  <jh@suse.cz>
18627
18628         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
18629         (estimate_move_cost): Assert that it does not get called for
18630         VOID_TYPE_P.
18631         (estimate_num_insns): Skip VOID types in argument handling.
18632         (optimize_inline_calls): Delete unreachable blocks and verify that
18633         callgraph is valid.
18634
18635 2009-05-10  Jan Hubicka  <jh@suse.cz>
18636
18637         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
18638         * cgraph.c (cgraph_mark_address_taken_node): New function.
18639         (dump_cgraph_node): Dump new flag.
18640         * cgraph.h (struct cgraph_node): Add address_taken.
18641         (cgraph_mark_address_taken_node): New function.
18642         * ipa.c (cgraph_postorder): Prioritize functions with address taken
18643         since new direct calls can be born.
18644
18645 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
18646
18647         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
18648         tok->val.node.node.
18649
18650 2009-05-10  Jan Hubicka  <jh@suse.cz>
18651
18652         PR middle-end/40084
18653         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
18654         argument; rewrite.
18655         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
18656         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
18657         * tree-inline.c (copy_bb): Set frequency correctly.
18658         (fold_marked_statements): Update call to
18659         cgraph_update_edges_for_call_stmt.
18660
18661 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
18662
18663         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
18664         identifiers in diagnostics.
18665         * config/arm/arm.c (arm_handle_fndecl_attribute,
18666         arm_handle_isr_attribute): Likewise.
18667         * config/avr/avr.c (avr_handle_progmem_attribute,
18668         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
18669         * config/bfin/bfin.c (handle_int_attribute,
18670         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
18671         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
18672         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
18673         Likewise.
18674         * config/darwin.c (darwin_handle_kext_attribute,
18675         darwin_handle_weak_import_attribute): Likewise.
18676         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
18677         h8300_handle_eightbit_data_attribute,
18678         h8300_handle_tiny_data_attribute): Likewise.
18679         * config/i386/i386.c (ix86_handle_cconv_attribute,
18680         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
18681         * config/i386/winnt.c (ix86_handle_shared_attribute,
18682         ix86_handle_selectany_attribute): Likewise.
18683         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
18684         * config/m32c/m32c.c (function_vector_handler): Likewise.
18685         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
18686         m68hc11_handle_fntype_attribute): Likewise.
18687         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
18688         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
18689         * config/mips/mips.c (mips_insert_attributes,
18690         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
18691         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
18692         rs6000_handle_struct_attribute): Likewise.
18693         * config/sh/sh.c (sh_insert_attributes,
18694         sh_handle_resbank_handler_attribute,
18695         sh_handle_interrupt_handler_attribute,
18696         sh2a_handle_function_vector_handler_attribute,
18697         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
18698         Likewise.
18699         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
18700         * config/spu/spu.c (spu_handle_fndecl_attribute,
18701         spu_handle_vector_attribute): Likewise.
18702         * config/stormy16/stormy16.c
18703         (xstormy16_handle_interrupt_attribute): Likewise.
18704         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
18705         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
18706
18707 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
18708
18709         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
18710         (pp_translate_identifiers): New.
18711         (pp_identifier): Only conditionally translate identifier to locale
18712         character set.
18713         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
18714         (pp_base_tree_identifier): Only conditionally translate identifier
18715         to locale character set.
18716         * c-pretty-print.c (M_): Define.
18717         (pp_c_type_specifier, pp_c_primary_expression): Mark English
18718         fragments for conditional translation with M_.
18719         * tree-pretty-print.c (maybe_init_pretty_print): Disable
18720         identifier translation.
18721
18722 2009-05-10  Richard Guenther  <rguenther@suse.de>
18723
18724         PR tree-optimization/40081
18725         * tree-sra.c (instantiate_element): Instantiate scalar replacements
18726         using the main variant of the element type.  Do not fiddle with
18727         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
18728
18729 2009-05-09  Jan Hubicka  <jh@suse.cz>
18730
18731         PR middle-end/40080
18732         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
18733         indirect calls; verify cgraph afterwards.
18734
18735 2009-05-09  Jan Hubicka  <jh@suse.cz>
18736
18737         PR bootstrap/40082
18738         * ipa.c (update_inlined_to_pointer): New function.
18739         (cgraph_remove_unreachable_nodes): Use it.
18740
18741 2009-05-09  Jan Hubicka  <jh@suse.cz>
18742
18743         * tree-eh.c (struct leh_state): Remove prev_try.
18744         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
18745         not track prev_try.
18746         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
18747         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
18748         remove_eh_handler_and_replace, foreach_reachable_handler,
18749         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
18750         * except.h (struct eh_region): Remove eh_region_u_cleanup.
18751         (gen_eh_region_cleanup): Update prototype.
18752
18753 2009-05-09  Jan Hubicka  <jh@suse.cz>
18754
18755         PR middle-end/40043
18756         * except.c (copy_eh_region): Always set prev_try.
18757         (redirect_eh_edge_to_label): Find outer try.
18758         (foreach_reachable_handler): When looking for prev try
18759         handle case where previous try is not going to be taken.
18760
18761 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
18762
18763         PR tree-optimization/40049
18764         * tree-vect-stmts.c (vectorizable_operation): If the machine has
18765         only vector/vector shifts, convert the type of the constant to the
18766         appropriate type to avoid building incorrect trees, which
18767         eventually have problems with garbage collection.
18768
18769 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
18770
18771         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
18772         -1 for complex floating-point types if honoring signed zeros.
18773
18774 2009-05-08  Jan Hubicka  <jh@suse.cz>
18775
18776         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
18777         argument; handle correctly when profile is absent.
18778         (build_cgraph_edges): Update.
18779         (rebuild_cgraph_edges): Update.
18780         * cgraph.c: Do not include varray.h.
18781         (cgraph_set_call_stmt_including_clones): New function.
18782         (cgraph_create_edge_including_clones): Likewise
18783         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
18784         (cgraph_update_edges_for_call_stmt): Handle clones.
18785         (cgraph_remove_node): Handle clone tree.
18786         (cgraph_remove_node_and_inline_clones): New function.
18787         (dump_cgraph_node): Dump clone tree.
18788         (cgraph_clone_node): Handle clone tree.
18789         (clone_function_name): Bring here from tree-inline.c.
18790         (cgraph_create_virtual_clone): New function.
18791         * cgraph.h (ipa_replace_map): Move here from ipa.h.
18792         (cgraph_clone_info): New function.
18793         (strut cgraph_node): Add clone_info and new clone tree pointers.
18794         (cgraph_remove_node_and_inline_clones,
18795         cgraph_set_call_stmt_including_clones,
18796         cgraph_create_edge_including_clones,
18797         cgraph_create_virtual_clone): Declare.
18798         (cgraph_function_versioning): Use VEC argument.
18799         (compute_call_stmt_bb_frequency): Update prototype.
18800         (cgraph_materialize_all_clones): New function.
18801         * ipa-cp.c (ipcp_update_cloned_node): Remove.
18802         (ipcp_create_replace_map): Update to VECtors.
18803         (ipcp_update_callgraph): Use virtual clones.
18804         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
18805         (ipcp_update_profiling): Do not update local profiling.
18806         (ipcp_insert_stage): Use VECtors and virtual clones.
18807         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
18808         (clone_of_p): New function.
18809         (cgraph_preserve_function_body_p): Use clone tree.
18810         (cgraph_optimize): Materialize clones.
18811         (cgraph_function_versioning): Update for VECtors.
18812         (save_inline_function_body): Use clone tree.
18813         (cgraph_materialize_clone): New function.
18814         (cgraph_materialize_all_clones): Likewise.
18815         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
18816         * ipa.c: Include gimple.h.
18817         (cgraph_remove_unreachable_nodes): Use clone tree.
18818         * ipa-prop.c (ipa_note_param_call): Update call to
18819         compute_call_stmt_bb_frequencycall.
18820         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
18821         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
18822         (copy_bb): Handle updating of clone tree; add new edge when new call
18823         appears.
18824         (expand_call_inline): Be strict about every call having edge.
18825         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
18826         (delete_unreachable_blocks_update_callgraph): New function.
18827         (tree_function_versioning): Use VECtors; always remove unreachable
18828         blocks and fold conditionals.
18829         * tree-inline.h: Do not include varray.h.
18830         (tree_function_versioning): Remove.
18831         * Makefile.in (GTFILES): Remove tree-inline.c
18832         * passes.c (do_per_function): Do only functions having body.
18833         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
18834         tree.
18835
18836 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
18837             Andrew Morrow  <acm@google.com>
18838
18839         PR c/36892
18840         * c-common.c (c_common_attribute_table): Permit deprecated
18841         attribute to take an optional argument.
18842         (handle_deprecated_attribute): If the optional argument to
18843         __attribute__((deprecated)) is not a string ignore the attribute
18844         and emit a warning.
18845
18846         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
18847         * c-typeck.c (build_component_ref): Likewise.
18848         (build_external_ref): Likewise.
18849
18850         * toplev.c (warn_deprecated_use): Add an attribute argument.
18851         Emit the message associated with __attribute__((deprecated)).
18852
18853         * toplev.h (warn_deprecated_use): Updated.
18854
18855         * doc/extend.texi: Document new optional parameter to
18856         __attribute__((deprecated))
18857
18858 2009-05-08  Michael Eager <eager@eagercon.com>
18859
18860         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
18861         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
18862
18863 2009-05-08  Richard Guenther  <rguenther@suse.de>
18864
18865         PR tree-optimization/40062
18866         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
18867         Avoid exponential behavior.
18868
18869 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
18870
18871         PR rtl-optimization/33928
18872         PR 26854
18873         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
18874         process_uses, build_single_def_use_links): New.
18875         (update_df): Update use_def_ref.
18876         (forward_propagate_into): Use get_def_for_use instead of use-def
18877         chains.
18878         (fwprop_init): Call build_single_def_use_links and let it initialize
18879         dataflow.
18880         (fwprop_done): Free use_def_ref.
18881         (fwprop_addr): Eliminate duplicate call to df_set_flags.
18882         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
18883         df_rd_simulate_one_insn): New.
18884         (df_rd_bb_local_compute_process_def): Update head comment.
18885         (df_chain_create_bb): Use the new RD simulation functions.
18886         * df.h (df_rd_simulate_artificial_defs_at_top,
18887         df_rd_simulate_one_insn): New.
18888         * opts.c (decode_options): Enable fwprop at -O1.
18889         * doc/invoke.texi (-fforward-propagate): Document this.
18890
18891 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
18892
18893         PR c/24581
18894         * c-typeck.c (build_binary_op): Handle arithmetic between one real
18895         and one complex operand specially.
18896         * tree-complex.c (some_nonzerop): Do not identify a real value as
18897         zero if flag_signed_zeros.
18898
18899 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
18900
18901         PR rtl-optimization/33928
18902         * loop-invariant.c (record_use): Fix && vs. || mishap.
18903
18904 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
18905
18906         PR rtl-optimization/33928
18907         * loop-invariant.c (struct use): Add addr_use_p.
18908         (struct def): Add n_addr_uses.
18909         (struct invariant): Add cheap_address.
18910         (create_new_invariant): Set cheap_address.
18911         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
18912         (record_uses): Pass df_ref to record_use.
18913         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
18914         used only as such.
18915
18916 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
18917
18918         * config/sh/sh.c: Do not include c-pragma.h.
18919
18920 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18921
18922         * config/spu/spu.c: Remove include of c-common.h.
18923
18924 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
18925
18926         PR c/39037
18927         * c-common.h (mark_valid_location_for_stdc_pragma,
18928         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
18929         clear_float_const_decimal64, float_const_decimal64_p): New.
18930         * c.opt (Wunsuffixed-float-constants): New.
18931         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
18932         unsuffixed float constant, handle new warning.
18933         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
18934         * c-decl.c (c_scope): New flag float_const_decimal64.
18935         (set_float_const_decimal64, clear_float_const_decimal64,
18936         float_const_decimal64_p): New.
18937         (push_scope): Set new flag.
18938         * c-parser.c (c_parser_translation_unit): Mark when it's valid
18939         to use STDC pragmas.
18940         (c_parser_external_declaration): Ditto.
18941         (c_parser_compound_statement_nostart): Ditto.
18942         * c-pragma.c (valid_location_for_stdc_pragma,
18943         mark_valid_location_for_stdc_pragma,
18944         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
18945         handle_pragma_float_const_decimal64): New.
18946         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
18947         * cp/semantics.c (valid_location_for_stdc_pragma_p,
18948         set_float_const_decimal64, clear_float_const_decimal64,
18949         float_const_decimal64_p): New dummy functions.
18950         * doc/extend.texi (Decimal Float): Remove statement that the
18951         pragma, and suffix for double constants, are not supported.
18952         * doc/invoke.texi (Warning Options): List new option.
18953         (-Wunsuffixed-float-constants): New.
18954
18955 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
18956
18957         * config/i386/i386.c: Do not include c-common.h.
18958
18959 2009-05-07  Mark Heffernan  <meheff@google.com>
18960
18961         * doc/invoke.texi (Debugging Options): Document change of debugging
18962         dump location.
18963         * opts.c (decode_options): Make dump_base_name relative to
18964         aux_base_name directory.
18965
18966 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
18967
18968         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
18969         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
18970
18971 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
18972
18973         * Makefile.in (install-plugin): Simplify a bit.
18974
18975 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
18976
18977         * Makefile.in (OBJS-common): Add regcprop.o.
18978         (regcprop.o): New.
18979         * timevar.def (TV_CPROP_REGISTERS): New.
18980         * regrename.c (regrename_optimize): Return 0.
18981         (rest_of_handle_regrename): Delete.
18982         (pass_rename_registers): Point to regrename_optimize.
18983         (struct value_data_entry, struct value_data,
18984         kill_value_one_regno, kill_value_regno, kill_value,
18985         set_value_regno, init_value_data, kill_clobbered_value,
18986         kill_set_value, kill_autoinc_value, copy_value,
18987         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
18988         replace_oldest_value_reg, replace_oldest_value_addr,
18989         replace_oldest_value_mem, copyprop_hardreg_forward_1,
18990         debug_value_data, validate_value_data): Move...
18991         * regcprop.c: ... here.
18992         (rest_of_handle_cprop): Delete.
18993         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
18994
18995 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
18996
18997         PR middle-end/40057
18998         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
18999         GEN_INT for 1 << bitnum.
19000         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
19001         build_int_cst_type.
19002
19003 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
19004
19005         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
19006         Remove wrong description of "nand" operation.
19007
19008 2009-05-06  Richard Guenther  <rguenther@suse.de>
19009             Adam Nemet  <anemet@caviumnetworks.com>
19010
19011         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
19012         comment.  Add that if LHS is not a gimple register, then RHS1 has
19013         to be a single object (GIMPLE_SINGLE_RHS).
19014
19015 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
19016
19017         * expr.c (get_def_for_expr): Move it up in the file.
19018         (store_field): When expanding a bit-field store, look at the
19019         defining gimple stmt for the masking conversion.
19020
19021 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
19022
19023         PR middle-end/39986
19024         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
19025         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
19026         32-bit memcpy into long.
19027
19028 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
19029
19030         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
19031         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
19032         new_reg_loc_descr.
19033         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
19034         instead of appending DW_OP_deref*.
19035
19036 2009-05-06  Michael Matz  <matz@suse.de>
19037
19038         PR middle-end/40021
19039         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
19040         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
19041
19042 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
19043
19044         * Makefile.in (install-plugin): Fix srcdir handling.
19045
19046 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
19047
19048         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
19049         when processing for not_regs_needed bitmap.
19050         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
19051         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
19052         handling it for rhs.
19053
19054 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
19055
19056         * config/i386/i386.md (unnamed inc/dec peephole): Use
19057         optimize_insn_for_size_p instead of optimize_size.
19058         * config/i386/predicates.md (incdec_operand): Likewise.
19059         (aligned_operand): Likewise.
19060         * config/i386/sse.md (divv8sf3): Likewise.
19061         (sqrtv8sf2): Likewise.
19062
19063 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
19064
19065         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
19066
19067         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
19068
19069 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
19070
19071         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
19072         ssemodesuffixf2c with avxmodesuffixf2c.
19073
19074 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
19075
19076         PR c/40032
19077         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
19078
19079 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
19080
19081         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
19082         (struct tree_base): Adjust spacing for 8 bit boundaries.
19083         (struct tree_decl_common): Add decl_by_reference_flag bit.
19084         (DECL_BY_REFERENCE): Adjust.
19085         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
19086         print DECL_BY_REFERENCE bit.
19087         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
19088         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
19089         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
19090         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
19091         unconditionally.
19092
19093         PR middle-end/39666
19094         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
19095         range of the type, but default label is missing, add it with one
19096         of the existing labels instead of adding a new label for it.
19097
19098 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
19099
19100         * dwarf.h: Remove.
19101
19102 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
19103
19104         * Makefile.in (enable_plugin, plugin_includedir): New.
19105         (install): Depend on install-plugin.
19106         (PLUGIN_HEADERS): New.
19107         (install-plugin): New.
19108         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
19109
19110 2009-05-05  Richard Guenther  <rguenther@suse.de>
19111
19112         PR tree-optimization/40022
19113         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
19114         the only vuse.
19115         (phivn_valid_p): Fix tuplification error, simplify.
19116         (phiprop_insert_phi): Add dumps.
19117         (propagate_with_phi): Simplify.
19118
19119 2009-05-05  Richard Guenther  <rguenther@suse.de>
19120
19121         PR middle-end/40023
19122         * builtins.c (gimplify_va_arg_expr): Properly build the address.
19123
19124 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
19125
19126         * tree.h (strip_float_extensions): Remove duplicate declaration.
19127         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
19128         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
19129         block_ultimate_origin): Rearrange the declarations line to match the
19130         comment that indicates the .c file which the functions are defined.
19131         (dwarf2out_*, set_decl_rtl): Add comment.
19132         (get_base_address): Adjust comment.
19133         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
19134         declarations line and add comment.
19135         (is_builtin_name): Add blank after function name, for clarity.
19136
19137 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
19138
19139         * attribs.c (decl_attributes): Use %qE for identifiers in
19140         diagnostics.
19141         * cgraphunit.c (verify_cgraph_node): Translate function names to
19142         locale character set in diagnostics.
19143         * coverage.c (get_coverage_counts): Use %qE for identifiers in
19144         diagnostics.
19145         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
19146         Document that functions are named in UTF-8.
19147         * expr.c (expand_expr_real_1): Translate function names to locale
19148         character set in diagnostics.
19149         * gimplify.c (omp_notice_variable, omp_is_private,
19150         gimplify_scan_omp_clauses): Use %qE for identifiers in
19151         diagnostics.
19152         * langhooks.c (lhd_print_error_function): Translate function names
19153         to locale character set.
19154         * langhooks.h (decl_printable_name): Document that return value is
19155         in internal character set.
19156         * stmt.c: Include pretty-print.h
19157         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
19158         diagnostics.
19159         (resolve_operand_name_1): Translate named operand name to locale
19160         character set.
19161         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
19162         diagnostics.
19163         * toplev.c (announce_function): Translate function names to locale
19164         character set.
19165         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
19166         (default_tree_printer): Use pp_identifier or translate identifiers
19167         to locale character set.  Mark "<anonymous>" for translation.
19168         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
19169         for identifiers in diagnostics.
19170         * tree.c (handle_dll_attribute): Use %qE for identifiers in
19171         diagnostics.
19172         * varasm.c (output_constructor): Use %qE for identifiers in
19173         diagnostics.
19174
19175 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
19176
19177         * configure.ac: use ` ` instead of $()
19178         * configure: Regenerate.
19179
19180 2009-05-05  Ben Elliston  <bje@au.ibm.com>
19181
19182         * config/pa/linux-atomic.c: Eliminate conditional include of
19183         errno.h on non-LP64 systems to simplify build requirements.
19184
19185 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
19186
19187         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
19188         diagnostics.
19189         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
19190         and pass value to identifier_to_locale.
19191         (warn_variable_length_array): Make name a tree.
19192         (grokdeclarator): Separate diagnostic texts for named and unnamed
19193         declarators.  Use %qE for named declarators.
19194         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
19195         diagnostics.
19196         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
19197         identifiers in diagnostics.
19198         * c-typeck.c (push_member_name, start_init): Pass identifiers to
19199         identifier_to_locale.  Mark "anonymous" strings for translation.
19200
19201 2009-05-04  Michael Eager <eager@eagercon.com>
19202
19203         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
19204         address for DImode/DFmode only if double-precision FP regs.
19205
19206 2009-05-04  Michael Eager <eager@eagercon.com>
19207
19208         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
19209         TARGET_SINGLE_FLOAT check.
19210
19211 2009-05-04  Michael Eager <eager@eagercon.com>
19212
19213         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
19214
19215 2009-05-04  Michael Eager <eager@eagercon.com>
19216
19217         * gcc/config.gcc (powerpc-xilinx-eabi*): Add tm t-xilinx
19218         * config/rs6000/t-xilinx: New
19219
19220 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
19221
19222         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
19223         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
19224         * gcc/explow.c (memory_address): Use target hook.
19225         * gcc/targhooks.c (default_legitimize_address): New.
19226         * gcc/targhooks.h (default_legitimize_address): New.
19227         * gcc/target.h (legitimize_address): New.
19228         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
19229         (TARGET_INITIALIZER): Include it.
19230         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
19231
19232         * config/bfin/bfin-protos.h (legitimize_address): Remove.
19233         * config/bfin/bfin.c (legitimize_address): Remove.
19234         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
19235         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
19236         Remove.
19237         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
19238         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
19239
19240         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
19241         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
19242         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
19243         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
19244         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
19245         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
19246         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
19247         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
19248         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
19249         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
19250         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
19251         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
19252         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
19253         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
19254         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
19255         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
19256         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
19257         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
19258         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
19259         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
19260         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
19261         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
19262         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
19263
19264         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
19265         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
19266         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
19267         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
19268         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
19269         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
19270         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
19271         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
19272         (thumb_legitimize_address): Delete.
19273         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
19274         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
19275         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
19276         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
19277         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
19278         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
19279         Delete.
19280         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
19281         Delete.
19282
19283         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
19284         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
19285         * config/m32r/m32r.c (m32r_legitimize_address): New.
19286         * config/m68k/m68k.c (m68k_legitimize_address): New.
19287         * config/score/score.c (score_legitimize_address): Standardize.
19288         * config/score/score3.c (score3_legitimize_address): Standardize.
19289         * config/score/score3.h (score3_legitimize_address): Adjust.
19290         * config/score/score7.c (score7_legitimize_address): Standardize.
19291         * config/score/score7.h (score7_legitimize_address): Adjust.
19292         * config/sh/sh.c (sh_legitimize_address): New.
19293         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
19294
19295         * gcc/config/s390/s390.c (legitimize_address): Rename to...
19296         (s390_legitimize_address): ... this.
19297         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
19298         (sparc_legitimize_address): ... this.
19299         * gcc/config/i386/i386.c (legitimize_address): Rename to...
19300         (ix86_legitimize_address): ... this.
19301         * gcc/config/avr/avr.c (legitimize_address): Rename to...
19302         (avr_legitimize_address): ... this.
19303         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
19304         (mn10300_legitimize_address): ... this.
19305         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
19306         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
19307         (alpha_expand_mov): Adjust call.
19308
19309         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
19310         * config/spu/spu.c (spu_legitimize_address): Likewise.
19311         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
19312         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
19313
19314 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
19315
19316         * intl.c (locale_encoding, locale_utf8): New.
19317         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
19318         * intl.h (locale_encoding, locale_utf8): Declare.
19319         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
19320         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
19321         New.
19322         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
19323         argument.
19324         (pp_tree_identifier): Define to call pp_base_tree_identifier.
19325         (pp_base_tree_identifier): Declare as function.
19326         (identifier_to_locale): Declare.
19327         * Makefile.in (pretty-print.o): Update dependencies.
19328         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
19329
19330 2009-05-04  Richard Guenther  <rguenther@suse.de>
19331
19332         PR middle-end/40015
19333         * builtins.c (fold_builtin_memory_op): Do not decay to element
19334         type if the size matches the whole array.
19335
19336 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
19337
19338         * expmed.c (synth_mult): When trying out a shift, pass the result
19339         of a signed shift.
19340
19341 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
19342
19343         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
19344         (shiftsub1_cost): New.
19345         (init_expmed): Compute shiftsub1_cost.
19346         (synth_mult): Optimize multiplications by constants of the form
19347         -(2^^m-1) for some constant positive integer m.
19348
19349 2009-05-03  Richard Guenther  <rguenther@suse.de>
19350
19351         PR c/39983
19352         * c-typeck.c (array_to_pointer_conversion): Do not built
19353         ADDR_EXPRs of arrays of pointer-to-element type.
19354         * c-gimplify.c (c_gimplify_expr): Revert change fixing
19355         up wrong ADDR_EXPRs after-the-fact.
19356         * c-common.c (strict_aliasing_warning): Strip pointer
19357         conversions for obtaining the original type.
19358         * builtins.c (fold_builtin_memset): Handle array types.
19359         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
19360         and array types
19361
19362 2009-05-03  Richard Guenther  <rguenther@suse.de>
19363
19364         PR middle-end/23329
19365         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
19366         Do not lose casts from array types with unknown extent to array
19367         types with known extent.
19368         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
19369         alias set compatibility.
19370
19371 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19372
19373         * flags.h (extra_warnings): Delete.
19374         * toplev.c (process_options): Handle Wuninitialized here.
19375         * opts.c (extra_warnings): Delete.
19376         (set_Wextra): Delete.
19377         (common_handle_option): -Wextra can be handled automatically.
19378         * c-opts.c (c_common_handle_option): Delete obsolete code.
19379         (c_common_post_options): Simplify comment.
19380         * common.opt (W): Add Var.
19381         (Wextra): Add Var.
19382         (Wuninitialized): Initialize to -1.
19383
19384 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
19385             Richard Guenther  <rguenther@suse.de>
19386
19387         * expr.c (get_def_for_expr): New function.
19388         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
19389         SSA rather than trees.
19390         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
19391         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
19392
19393 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
19394
19395         * c-common.c (reswords): Add _Imaginary.
19396         * c-common.c (enum rid): Add RID_IMAGINARY.
19397
19398 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
19399
19400         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
19401         Patch by Richard Guenther.
19402
19403 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
19404
19405         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
19406         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
19407         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
19408         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
19409         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
19410         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
19411         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
19412         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
19413         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
19414         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
19415         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
19416         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
19417         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
19418         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
19419         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
19420         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
19421         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
19422         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
19423
19424 2009-05-02  Richard Guenther  <rguenther@suse.de>
19425
19426         PR tree-optimization/39940
19427         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
19428         doing so.
19429
19430 2009-05-02  Richard Guenther  <rguenther@suse.de>
19431
19432         PR middle-end/40001
19433         * tree-ssa.c (execute_update_addresses_taken): Properly check
19434         if we can mark a variable DECL_GIMPLE_REG_P.
19435         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
19436         back to the end of the function.
19437         (is_gimple_reg_type): Remove complex type special casing.
19438         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
19439         if not optimizing.
19440
19441 2009-05-02  Ben Elliston  <bje@au.ibm.com>
19442
19443         * doc/collect2.texi (Collect2): Document search path behaviour
19444         when configured with --with-ld.
19445
19446 2009-05-02  Jan Hubicka  <jh@suse.cz>
19447
19448         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
19449         parameter; update callers.
19450         (coalesce_cost_edge): EH edges are costier because they needs
19451         splitting even if not critical and even more costier when there are
19452         multiple EH predecestors.
19453
19454 2009-05-02  Jan Hubicka  <jh@suse.cz>
19455
19456         * except.c (remove_eh_handler_and_replace): Handle updating after
19457         removing TRY blocks.
19458
19459 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
19460
19461         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
19462
19463 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
19464
19465         * varasm.c: Do not include c-pragma.h.
19466         * attribs.c: Do not incude c-common.h.
19467
19468 2009-05-01  Michael Matz  <matz@suse.de>
19469
19470         * calls.c (initialize_argument_information): Handle SSA names like
19471         decls with a non MEM_P DECL_RTL.
19472
19473 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
19474
19475         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
19476         * ipa-utils.c: Likewise.
19477         * ipa-type-escape.c: Likewise.
19478         * cgraphunit.c Do not include c-common.h.
19479         * ipa-pure-const.c: Likewise.
19480         * tree-if-conv.c: Likewise.
19481         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
19482         * ipa-struct-reorg.c: Likewise.
19483         * tree-nomudflap.c: Likewise.
19484         * tree-ssa-structalias.c: Likewise.
19485
19486 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
19487
19488         * store-motion.c: Many cleanups to make this pass a first-class
19489         citizen instead of an appendix to gcse load motion.  Add TODO list
19490         to make this pass faster/cleaner/better.
19491
19492         (struct ls_expr): Post gcse.c-split cleanups.
19493         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
19494         "stores" field to "avail_stores".
19495         (pre_ldst_mems): Rename to store_motion_mems.
19496         (pre_ldst_table): Rename to store_motion_mems_table.
19497         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
19498         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
19499         (ldst_entry): Rename to st_expr_entry, update users.
19500         (free_ldst_entry): Rename to free_st_expr_entry, update users.
19501         (free_ldst_mems): Rename to free_store_motion_mems, update users.
19502         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
19503         update caller.
19504         (first_ls_expr): Rename to first_st_expr, update users.
19505         (next_ls_expr): Rename to next_st_expr, update users.
19506         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
19507         fields properly for store motion instead of names inherited from load
19508         motion in gcse.c.
19509         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
19510         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
19511         are done with it.
19512
19513         (ae_kill): Rename to st_kill, update users.
19514         (ae_gen): Rename to st_avloc, update users.
19515         (transp): Rename to st_transp, update users.
19516         (pre_insert_map): Rename to st_insert_map, update users.
19517         (pre_delete_map): Rename to st_delete_map, update users.
19518         (insert_store, build_store_vectors, free_store_memory,
19519         one_store_motion_pass): Update for abovementioned changes.
19520
19521         (gcse_subst_count, gcse_create_count): Remove.
19522         (one_store_motion_pass): New statistics counters "n_stores_deleted"
19523         and "n_stores_created", local variables.
19524
19525         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
19526         use for_each_rtx.
19527
19528         (regvec, compute_store_table_current_insn): Remove.
19529         (reg_set_info, reg_clear_last_set): Remove.
19530         (compute_store_table): Use DF caches instead of local dataflow
19531         solvers.
19532
19533 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
19534
19535         * c-objc-common.c (c_tree_printer): Print identifiers with
19536         pp_identifier, not pp_string.  Mark "({anonymous})" for
19537         translation.
19538         * c-pretty-print.c (pp_c_ws_string): New.
19539         (pp_c_cv_qualifier, pp_c_type_specifier,
19540         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
19541         pp_c_storage_class_specifier, pp_c_function_specifier,
19542         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
19543         pp_c_primary_expression, pp_c_postfix_expression,
19544         pp_c_unary_expression, pp_c_shift_expression,
19545         pp_c_relational_expression, pp_c_equality_expression,
19546         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
19547         use pp_string and pp_c_ws_string in place of pp_identifier and
19548         pp_c_identifier for non-identifiers.  Mark English strings for
19549         translation.
19550         * c-pretty-print.h (pp_c_ws_string): Declare.
19551
19552 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
19553             Roland McGrath <roland@redhat.com>
19554
19555         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
19556         (ENABLE_LD_BUILDID): New configuration option.
19557         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
19558         (LINK_BUILDID_SPEC): New macro.
19559         (init_spec): If defined, prepend it between LINK_EH_SPEC and
19560         link_spec.
19561         * doc/install.texi: Document --enable-linker-build-id option.
19562         * configure: Rebuild.
19563         * config.in: Rebuild.
19564
19565 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
19566
19567         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
19568         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
19569         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
19570         MIPS_GP_SAVE_AREA_SIZE.
19571         * config/mips/mips.c (struct mips_frame_info): Update comment
19572         before arg_pointer_offset and hard_frame_pointer_offset.
19573         (mips_compute_frame_info): Update diagram before function: to
19574         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
19575         indicate the position of frame_pointer_rtx with -fstack-protector and
19576         to show args_size.  Don't allocate cprestore area for leaf functions
19577         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
19578         cprestore_size.
19579         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
19580
19581 2009-04-30  Michael Matz  <matz@suse.de>
19582
19583         PR tree-optimization/39955
19584         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
19585
19586 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
19587
19588         * ira.c (setup_cover_and_important_classes):  Use safe macro
19589         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
19590         directly.
19591         * genpreds.c (write_tm_preds_h):  Output suitable definition of
19592         REG_CLASS_FOR_CONSTRAINT.
19593
19594 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
19595
19596         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
19597         instead of an int.
19598         * bitmap.c (bitmap_descriptor): Likewise.
19599         * ggc-common.c (loc_descriptor): Likewise.
19600         * varray.c (varray_descriptor): Likewise.
19601         * vec.c (vec_descriptor): Likewise.
19602
19603 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
19604
19605         * Makefile.in (dce.o): Add $(EXCEPT_H).
19606         * dce.c: Include except.h and delete redundant vector definitions.
19607         (deletable_insn_p): Return false for non-call insns that can throw
19608         if DF is running.
19609
19610 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
19611
19612         * gcse.c (ae_gen): Remove.
19613         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
19614         and make non-static function to make it available in store-motion.c.
19615         Update call sites with search-and-replace.
19616         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
19617         extract_mentioned_regs, extract_mentioned_regs_helper,
19618         find_moveable_store, compute_store_table, load_kills_store, find_loads,
19619         store_killed_in_insn, store_killed_after, store_killed_before,
19620         build_store_vectors, insert_insn_start_basic_block, insert-store,
19621         remove_reachable_equiv_notes, replace_store_insn, delete_store,
19622         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
19623         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
19624         * store-motion.c: ...new file.  Also copy data structures from gcse.c
19625         and clean up to remove parts not used by store motion.
19626         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
19627         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
19628
19629 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19630
19631         PR target/38571
19632         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
19633         when optimizing for size.
19634
19635 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
19636
19637         * gcse.c (gcse_constant_p): Fix typo in last change.
19638
19639 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
19640
19641         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
19642
19643 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
19644
19645         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
19646
19647 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
19648
19649         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
19650         CONST_HIGH_PART result.
19651
19652 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
19653
19654         * config/avr/avr.c (initial_elimination_offset): Rename to
19655         avr_initial_elimination_offset.
19656         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
19657         change return type to bool.
19658         (avr_can_eliminate): New function.
19659         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
19660         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
19661         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
19662         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
19663         avr_initial_elimination_offset.
19664         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
19665         (avr_initial_elimination_offset): Define.
19666
19667 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
19668             Steven Bosscher  <steven@gcc.gnu.org>
19669
19670         PR rtl-optimization/39938
19671         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
19672         * cfgrtl.c: Include insn-attr.h.
19673         (rest_of_pass_free_cfg): New function.
19674         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
19675         * resource.c (init_resource_info): Remove call to df_analyze.
19676
19677 2009-04-29  Richard Guenther  <rguenther@suse.de>
19678
19679         PR target/39943
19680         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
19681         allow conversion to signed integers.
19682
19683 2009-04-29  Richard Guenther  <rguenther@suse.de>
19684
19685         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
19686         shifts of floating point vectors if the shift amount is
19687         a constant multiple of the element size.
19688
19689 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
19690             Michael Matz  <matz@suse.de>
19691
19692         PR middle-end/39927
19693         PR bootstrap/39929
19694         * tree-outof-ssa.c (emit_partition_copy): New function.
19695         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
19696         insert_part_to_rtx_on_edge): Perform the partition base var
19697         copy using emit_partition_copy.
19698         (insert_value_copy_on_edge): Convert constants to the right mode.
19699         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
19700         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
19701
19702 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
19703
19704         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
19705         scan backwards to try to find a constant to initialize it.
19706
19707         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
19708         insn before the loop_end instruction, don't look past labels.
19709
19710 2009-04-29  Richard Guenther  <rguenther@suse.de>
19711
19712         PR middle-end/39937
19713         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
19714         loose type conversions.
19715         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
19716         stmts only if there are no uses of its definition.
19717
19718 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
19719
19720         * config/bfin/bfin.h (splitting_loops): Declare.
19721         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
19722         Reorder bit definitions to be ascending.
19723         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
19724         * config/bfin/bfin.c (splitting_loops): New variable.
19725         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
19726         (struct loop_info): Remove members INIT and LOOP_INIT.
19727         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
19728         the LSETUP sequence.  Allow LC to be loaded from any register, but
19729         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
19730         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
19731         set to 1.
19732         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
19733         of reload_completed.
19734
19735         From Jie Zhang:
19736         * config/bfin/bfin.md (movsi_insn): Refine constraints.
19737
19738 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
19739
19740         * Makefile.in (PLUGIN_VERSION_H): New.
19741         (OBJS-common): Remove plugin-version.o.
19742         (plugin.o): Depend on (PLUGIN_VERSION_H).
19743         (plugin-version.o): Remove.
19744         * configure: Regenerate
19745         * configure.ac: Create plugin-version.h.
19746         * gcc-plugin.h (plugin_gcc_version): Remove.
19747         (plugin_default_version_check): Change signature.
19748         * plugin-version.c: Remove.
19749         * plugin.c: Include plugin-version.h.
19750         (str_plugin_gcc_version_name): Remove.
19751         (try_init_one_plugin): Pass gcc version to plugin_init.
19752         (plugin_default_version_check): Both gcc and plugin versions are now
19753         arguments.
19754
19755 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
19756
19757         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
19758         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
19759         Remove special case testing for last insn of inner loops. Don't fail
19760         if the loop ends with a jump, emit an extra nop instead.
19761
19762         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
19763         DREGS rather than comparing directly.  Remove code that tries to
19764         account for latencies.
19765
19766 2009-04-29  Richard Guenther  <rguenther@suse.de>
19767
19768         PR tree-optimization/39941
19769         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
19770         eliminating an indirect call.
19771
19772 2009-04-29  Richard Guenther  <rguenther@suse.de>
19773
19774         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
19775         parameter.  Allow invariants as base if !require_lvalue.
19776         (verify_gimple_assign_single): Adjust.
19777
19778 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
19779
19780         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
19781         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
19782         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
19783         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
19784         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
19785         a VEC_SELECT.
19786         * config/bfin/bfin.c (bfin_expand_builtin,
19787         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
19788
19789 2009-04-28  Richard Guenther  <rguenther@suse.de>
19790
19791         * tree-vect-loop.c (get_initial_def_for_induction): Use
19792         correct types for pointer increment.
19793
19794 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19795
19796         * toplev.c (print_version): Update GMP version string calculation.
19797
19798 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
19799
19800         PR rtl-optimization/39938
19801         * resource.c (init_resource_info): Add call to df_analyze.
19802
19803 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
19804
19805         * config/alpha/alpha.md (usegp): Cast the result of
19806         alpha_find_lo_sum_using_gp to enum attr_usegp.
19807         * config/alpha/alpha.c (override_options): Remove end-of-structure
19808         marker element from cpu_table.  Use array size of cpu_table to handle
19809         -mcpu and -mtune options.
19810         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
19811
19812 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
19813
19814         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
19815         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
19816         tune_32 and tune_64.
19817         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
19818         support on PowerPC.
19819         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
19820         * config/rs6000/option-defaults.h: ... here.  New file.
19821         (OPT_64, OPT_32): Define.
19822         (MASK_64BIT): Define to 0 if not already defined.
19823         (OPT_ARCH64, OPT_ARCH32): Define.
19824         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
19825         and tune_64.
19826
19827 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19828
19829         * config/arm/arm.c (arm_override_options): Emit error on using
19830         fpa with AAPCS.
19831
19832 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
19833
19834         PR rtl-optimization/39914
19835         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
19836         registers for allocnos created from user-defined variables only
19837         when not optimizing.
19838
19839 2009-04-28  Richard Guenther  <rguenther@suse.de>
19840
19841         PR middle-end/39937
19842         * fold-const.c (fold_binary): Use distribute_real_division only
19843         on float types.
19844
19845 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
19846
19847         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
19848         add hpux-stdint.h to tm_file.
19849         (hppa[12]*-*-hpux11*): Ditto.
19850         (ia64*-*-hpux*): Ditto.
19851         * config/hpux-stdint.h: New.
19852         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
19853         __STDC_EXT__ for all compiles.
19854         * config/pa/pa-hpux.h: Ditto.
19855         * config/pa/pa-hpux10.h: Ditto.
19856         * config/pa/pa-hpux11.h: Ditto.
19857
19858 2009-04-28  Catherine Moore  <clm@codesourcery.com>
19859
19860         * debug.h (set_name): Add comment.
19861
19862 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
19863
19864         PR target/39929
19865         * config/darwin.c (machopic_gen_offset): Check
19866         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
19867         * config/arm/arm.c (require_pic_register): Likewise.
19868
19869 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
19870
19871         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
19872         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
19873         m32c_promote_prototypes): Delete.
19874
19875 2009-04-28  Michael Matz  <matz@suse.de>
19876
19877         PR middle-end/39922
19878         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
19879         constants.
19880
19881 2009-04-28  Richard Guenther  <rguenther@suse.de>
19882
19883         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
19884
19885 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19886
19887         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
19888         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
19889         * config/arm/arm-tune.md: Regenerate.
19890
19891 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
19892
19893         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
19894         block if there are complex incoming edges.
19895         (sel_merge_blocks): Remove useless assert.
19896         (sel_redirect_edge_and_branch): Check that edge was redirected.
19897         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
19898         (sel_find_rgns): Delete declaration.
19899         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
19900         the region when it is not a preheader.
19901
19902 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
19903
19904         PR c/39323
19905         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
19906
19907 2009-04-28  Richard Guenther  <rguenther@suse.de>
19908
19909         * tree.h (SSA_NAME_VALUE): Remove.
19910         (struct tree_ssa_name): Remove value_handle member.
19911         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
19912         array for jump threading.
19913         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
19914         SSA_NAME_VALUEs.
19915         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
19916         * tree-flow.h (threadedge_initialize_values): Declare.
19917         (threadedge_finalize_values): Likewise.
19918         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
19919         (SSA_NAME_VALUE): Define.
19920         (threadedge_initialize_values): New function.
19921         (threadedge_finalize_values): Likewise.
19922         * tree-ssa-dom.c (ssa_name_values): New global variable.
19923         (SSA_NAME_VALUE): Define.
19924         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
19925
19926 2009-04-28  Ira Rosen  <irar@il.ibm.com>
19927
19928         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
19929         Use REPORT_VECTORIZED_LOCATIONS instead
19930         REPORT_VECTORIZED_LOOPS.
19931         * tree-vectorizer.c (vect_verbosity_level): Make static.
19932         (vect_loop_location): Rename to vect_location.
19933         (vect_set_verbosity_level): Update comment.
19934         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
19935         and vect_location.
19936         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
19937         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
19938         instead REPORT_UNVECTORIZED_LOOPS.
19939         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
19940         and vect_loop_def to vect_external_def and vect_internal_def.
19941         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
19942         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
19943         REPORT_UNVECTORIZED_LOCATIONS.
19944         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
19945         and vect_used_in_loop and to vect_unused_in_scope and
19946         vect_used_in_scope.
19947         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
19948         (vect_verbosity_level): Remove declaration.
19949         (vect_analyze_operations): Likewise.
19950         (vect_analyze_stmt): Declare.
19951         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
19952         REPORT_UNVECTORIZED_LOCATIONS.
19953         (vect_get_loop_niters): Fix indentation.
19954         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
19955         (vect_analyze_loop_operations): New function.
19956         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
19957         vect_analyze_operations.
19958         (vect_is_simple_reduction): Use new names.
19959         (vectorizable_live_operation, vect_transform_loop): Likewise.
19960         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
19961         to specify whether the data references can be a part of interleaving
19962         chain.
19963         (vect_analyze_data_ref_dependence): Use new names.
19964         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
19965         (vect_create_addr_base_for_vector_ref): Remove redundant code.
19966         * tree-vect-patterns.c (widened_name_p): Use new names.
19967         (vect_recog_dot_prod_pattern): Likewise.
19968         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
19969         (process_use, vect_mark_stmts_to_be_vectorized,
19970         vect_model_simple_cost, vect_model_store_cost,
19971         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
19972         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
19973         vectorizable_operation, vectorizable_type_demotion,
19974         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
19975         vectorizable_condition): Likewise.
19976         (vect_analyze_operations): Split into vect_analyze_loop_operations
19977         and ...
19978         (vect_analyze_stmt): ... new function.
19979         (new_stmt_vec_info): Use new names.
19980         (vect_is_simple_use): Use new names and fix comment.
19981         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
19982         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
19983
19984 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
19985
19986         PR target/39911
19987         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
19988         and integer modes for x87 operands.  Do not ICE for unsupported size,
19989         generate error instead.  Generate error for unsupported operand types.
19990         ['z']: Do not handle HImode memory operands specially.  Warning
19991         for floating-point operands.  Fallthru to 'Z' for unsupported operand
19992         types.  Do not ICE for unsupported size, generate error instead.
19993         (output_387_binary_op): Use %Z to output operands.
19994         (output_fp_compare): Ditto.
19995         (output_387_reg_move): Ditto.
19996
19997 2009-04-28  Ben Elliston  <bje@au.ibm.com>
19998
19999         PR c++/35652
20000         Revert:
20001
20002         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20003
20004         * builtins.c (c_strlen): Do not warn here.
20005         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
20006         * c-common.c (pointer_int_sum): Take an explicit location.
20007         Warn about offsets out of bounds.
20008         * c-common.h (pointer_int_sum): Adjust declaration.
20009
20010 2009-04-27  Ian Lance Taylor  <iant@google.com>
20011
20012         * collect2.c (is_ctor_dtor): Change type of ret field in struct
20013         names to symkind.
20014         * dce.c (run_fast_df_dce): Change type of old_flags to int.
20015         * df-core.c (df_set_flags): Change return type to int.  Change
20016         type of old_flags to int.
20017         (df_clear_flags): Likewise.
20018         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
20019         (df_get_conditional_uses): Likewise.
20020         * df.h (df_set_flags, df_clear_flags): Update declarations.
20021         * dwarf2out.c (struct indirect_string_node): Change type of form
20022         field to enum dwarf_form.
20023         (AT_string_form): Change return type to enum dwarf_form.
20024         * fixed-value.c (fixed_compare): Add cast to enum type.
20025         * fwprop.c (update_df): Change 0 to VOIDmode.
20026         * gensupport.c: Change 0 to UNKNOWN.
20027         * gimple.h (gimple_cond_code): Add cast to enum type.
20028         * haifa-sched.c (reemit_notes): Add cast to enum type.
20029         * hooks.c (hook_int_void_no_regs): Remove function.
20030         * hooks.h (hook_int_void_no_regs): Remove declaration.
20031         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
20032         * predict.c (combine_predictions_for_insn): Add casts to enum type.
20033         * real.c (real_arithmetic): Add cast to enum type.
20034         (real_compare): Likewise.
20035         * target.h (struct gcc_target): Change return type of
20036         branch_target_register_class to enum reg_class.
20037         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
20038         default_branch_target_register_class.
20039         * targhooks.c (default_branch_target_register_class): New function.
20040         * targhooks.h (default_branch_target_register_class): Declare.
20041         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
20042         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
20043         cast to int.
20044         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
20045         ERROR_MARK.
20046         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
20047         vect_uninitialized_def.  Change 0 to ERROR_MARK.
20048         * tree-vect-stmts.c (supportable_widening_operation): Don't
20049         initialize icode1 and icode2.
20050         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
20051         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
20052         and to STD_C89.
20053         (cmn_err_flag_specs): Change 0 to STD_C89.
20054         (cmn_err_char_table): Likewise.
20055         * config/arm/arm.c (get_arm_condition_code): Change type of code
20056         to enum arm_cond_code.
20057         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
20058         (IWMMXT_BUILTIN2): Likewise.
20059         (neon_builtin_type_bits): Don't define typedef.
20060         (neon_builtin_datum): Change type of bits field to int.
20061         (arm_expand_neon_args): Add cast to enum type.
20062         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
20063         TLS_MODEL_NONE.
20064         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
20065         casts to enum type.
20066         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
20067         MIPS_FP_COND_f.
20068         * config/mips/mips.md (jal_macro): Return enum constant.
20069         (single_insn): Likewise.
20070         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
20071         CODE_FOR_nothing.
20072         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
20073         casts to enum type.
20074         * config/s390/s390.c (s390_tune_flags): Change type to int.
20075         (s390_arch_flags): Likewise.
20076         (s390_handle_arch_option): Change flags field of struct pta to int.
20077         * config/s390/s390.h (s390_tune_flags): Update declaration.
20078         (s390_arch_flags): Likewise.
20079         * config/sh/sh.c (prepare_move_operands): Compare
20080         tls_symbolic_operand result with enum constant.
20081         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
20082         (sh_expand_prologue): Add cast to enum type.
20083         (sh_expand_epilogue): Likewise.
20084         (tls_symbolic_operand): Change return type to enum tls_model.
20085         (fpscr_set_from_mem): Add cast to enum type.
20086         (legitimize_pic_address): Compare tls_symbolic_operand result with
20087         enum constant.
20088         (sh_target_reg_class): Change return type to enum reg_class.
20089         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
20090         PROCESSOR_xxx.
20091         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
20092         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
20093         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
20094         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
20095         (delayed_branch, tls_call_delay): Likewise.
20096         (eligible_for_sibcall_delay): Likewise.
20097         (eligible_for_return_delay): Likewise.
20098         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
20099         (spu_expand_builtin_1): Likewise.
20100
20101         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
20102         for all types of conversions.
20103         (output_init_element): Issue -Wc++-compat warning if needed when
20104         initializing a bitfield with enum type.
20105         * c-parser.c (c_parser_expression): Set original_type to
20106         original_type of right hand operand of comma operator.
20107
20108 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20109
20110         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
20111         grammar nits.
20112         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
20113         * doc/cpp.texi (Standard Predefined Macros)
20114         (Implementation-defined behavior): Likewise.
20115         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
20116         * doc/gimple.texi (GIMPLE Exception Handling)
20117         (@code{GIMPLE_ASSIGN}): Likewise.
20118         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
20119         * doc/invoke.texi (Warning Options, Optimize Options)
20120         (AVR Options, Darwin Options): Likewise.
20121         (Optimize Options): Reformulate -fwhole-program description.
20122         * doc/loop.texi (Lambda): Likewise.
20123         * doc/md.texi (Output Template, Define Constraints)
20124         (Standard Names, Insn Splitting): Likewise.
20125         * doc/options.texi (Option properties): Likewise.
20126         * doc/passes.texi (Tree-SSA passes): Likewise.
20127         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
20128         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
20129         (File Names and DBX): Likewise.
20130         * doc/trouble.texi (Incompatibilities): Likewise.
20131
20132 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
20133
20134         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
20135         instruction is correct.
20136
20137 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
20138
20139         Allow non-constant arguments to conversion intrinsics.
20140         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
20141         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
20142         * spu.c (print_operand): Handle 'v' and 'w'.
20143         (exp2_immediate_p, spu_gen_exp2): Define.
20144         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
20145         spu_convtf_1): Update parameter descriptions.
20146         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
20147         * constraints.md ('v', 'w'): New.
20148         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
20149         Remove.
20150         (i2f, I2F): New define_mode_attr.
20151         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
20152         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
20153         fixuns_truncv4sfv4si2):  Update to use mode attribute.
20154         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
20155         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
20156         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
20157         patterns for combine.
20158
20159 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
20160
20161         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
20162         (cprop, hoist, pre, store_motion): New debug counters.
20163         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
20164         is not an RTL pass anymore.
20165         (pass_profiling): Remove extern decl for pass removed in 2005.
20166         (pass_gcse, pass_jump_bypass): Remove.
20167         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
20168         to 0 for clean state.
20169         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
20170         * cse.c (gate_handle_cse_after_global_opts,
20171         rest_of_handle_cse_after_global_opts): New functions.
20172         (pass_cse_after_global_opts): New pass, does local CSE.
20173         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
20174         (TV_CPROP): New timevar.
20175         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
20176         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
20177         (gcse_main, recompute_all_luids): Remove.
20178         (compute_hash_table_work): Call max_reg_num instead of reading
20179         max_gcse_regno.
20180         (cprop_jump): Don't set run_jump_opt_after_gcse.
20181         (constprop_register): Always allow to alter jumps.
20182         (cprop_insn): Likewise.
20183         (do_local_cprop): Likewise.
20184         (local_cprop_pass): Likewise.  Return non-zero if something changed.
20185         (cprop): Remove function, fold interesting bits into one_cprop_pass.
20186         (find_implicit_sets): Add note about missed optimization opportunity.
20187         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
20188         pass_rtl_cprop execute function.
20189         Don't bother tracking the pass number, each pass gets its own dumpfile
20190         now anyway.
20191         Always allow to alter jumpsand bypass jumps.
20192         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
20193         will just find no suitable set.
20194         (pre_edge_insert): Fix dumping, this function is for PRE only.
20195         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
20196         pass_rtl_pre execute function.
20197         (hoist_code): Return non-zero if something changed.  Keep track of
20198         substitutions and insertions for statistics gathering similar to PRE.
20199         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
20200         called from the pass_rtl_hoist execute function.  Show pass statistics.
20201         (compute_store_table): Use max_reg_num directly instead of using the
20202         formerly global max_gcse_regno.
20203         (build_store_vectors): Likewise.
20204         (replace_store_insn): Fix dumping.
20205         (store_motion): Rename to ...
20206         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
20207         pass, called from the pass_rtl_store_motion execute function.  Keep
20208         track of substitutions and insertions for statistics gathering similar
20209         to PRE.
20210         (bypass_jumps): Remove, fold interesting bits into ...
20211         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
20212         from the pass_rtl_cprop execute function.
20213         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
20214         pass_jump_bypass): Remove.
20215         (gate_handle_gcse, rest_of_handle_gcse): Remove.
20216         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
20217         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
20218         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
20219         (gate_rtl_store_motion, execute_rtl_store_motion,
20220         pass_rtl_store_motion): New.
20221         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
20222         make it clear that -fcse-skip-blocks is a no-op for backward compat.
20223         * passes.c (init_optimization_passes): Remove pass_gcse and
20224         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
20225         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
20226         instead of pass_jump_bypass.
20227
20228 2009-04-27  Richard Guenther  <rguenther@suse.de>
20229
20230         PR middle-end/39928
20231         * gimplify.c (gimplify_expr): If we are required to create
20232         a temporary make sure it ends up as register.
20233
20234 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
20235
20236         PR target/39903
20237         * config/i386/i386.c (construct_container): Don't call
20238         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
20239         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
20240
20241 2009-04-27  Michael Matz  <matz@suse.de>
20242
20243         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
20244         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
20245         * tree-ssa-live.h (find_replaceable_exprs): Return a bitmap.
20246         (dump_replaceable_exprs): Take a bitmap.
20247         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
20248         array.
20249         (expand_gimple_basic_block): Likewise.
20250         * tree-ssa-ter.c (struct temp_expr_table_d): Make
20251         replaceable_expressions member a bitmap.
20252         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
20253         (mark_replaceable): Likewise.
20254         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
20255         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
20256
20257 2009-04-27  Richard Guenther  <rguenther@suse.de>
20258
20259         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
20260         (verify_stmts): Dispatch to gimple/type verification code.
20261         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
20262         issue with call argument types.
20263
20264 2009-04-27  Michael Matz  <matz@suse.de>
20265
20266         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
20267         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
20268         to above.
20269
20270 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
20271             Eric Botcazou  <ebotcazou@adacore.com>
20272
20273         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
20274         a label's basic block.
20275         (mark_target_live_regs): Tidy and rework obsolete comments.
20276         Change back DF problem to LIVE.  If a label starts a basic block,
20277         assume that all registers that used to be live then still are.
20278         (init_resource_info): If a label starts a basic block, set its
20279         BLOCK_FOR_INSN accordingly.
20280         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
20281
20282 2009-04-27  Richard Guenther  <rguenther@suse.de>
20283
20284         * tree-flow-inline.h (function_ann): Remove.
20285         (get_function_ann): Likewise.
20286         * tree-dfa.c (create_function_ann): Remove.
20287         * tree-flow.h (struct static_var_ann_d): Remove.
20288         (struct function_ann_d): Likewise.
20289         (union tree_ann_d): Remove fdecl member.
20290         (function_ann_t): Remove.
20291         (function_ann, get_function_ann, create_function_ann): Remove
20292         declarations.
20293
20294 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
20295
20296         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
20297
20298 2009-04-27  Jan Hubicka  <jh@suse.cz>
20299
20300         * ipa-pure-const.c (struct funct_state_d): New fields
20301         state_previously_known, looping_previously_known; remove
20302         state_set_in_source.
20303         (analyze_function): Use new fields.
20304         (propagate): Avoid assumption that state_set_in_source imply
20305         nonlooping.
20306
20307         * tree-ssa-loop-niter.c (finite_loop_p): New function.
20308         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
20309         * cfgloop.h (finite_loop_p): Declare.
20310
20311 2009-04-26  Michael Matz  <matz@suse.de>
20312
20313         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
20314
20315 2009-04-26  Michael Matz  <matz@suse.de>
20316
20317         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
20318         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
20319         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
20320         pass_mark_used_blocks): Remove.
20321         * tree-optimize.c (pass_free_datastructures,
20322         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
20323         * passes.c (init_optimization_passes): Don't call
20324         pass_mark_used_blocks, remove dead code.
20325
20326 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
20327
20328         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
20329         * tree-ssa-live.h (register_ssa_partition): Likewise.
20330
20331 2009-04-26  Michael Matz  <matz@suse.de>
20332
20333         Expand from SSA.
20334         * builtins.c (fold_builtin_next_arg): Handle SSA names.
20335         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
20336         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
20337         SSA names.
20338         (compare_pairs): Swap cost comparison.
20339         (coalesce_ssa_name): Don't use change_partition_var.
20340         * tree-nrv.c (struct nrv_data): Add modified member.
20341         (finalize_nrv_r): Set it.
20342         (tree_nrv): Use it to update statements.
20343         (pass_nrv): Require PROP_ssa.
20344         * tree-mudflap.c (mf_decl_cache_locals,
20345         mf_build_check_statement_for): Use make_rename_temp.
20346         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
20347         * alias.c (find_base_decl): Handle SSA names.
20348         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
20349         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
20350         * rtl.h (set_reg_attrs_for_parm): Declare.
20351         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
20352         to "optimized", remove unused locals at finish.
20353         (execute_free_datastructures): Make global, call
20354         delete_tree_cfg_annotations.
20355         (execute_free_cfg_annotations): Don't call
20356         delete_tree_cfg_annotations.
20357
20358         * ssaexpand.h: New file.
20359         * expr.c (toplevel): Include ssaexpand.h.
20360         (expand_assignment): Handle SSA names the same as register variables.
20361         (expand_expr_real_1): Expand SSA names.
20362         * cfgexpand.c (toplevel): Include ssaexpand.h.
20363         (SA): New global variable.
20364         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
20365         (SSAVAR): New macro.
20366         (set_rtl): New helper function.
20367         (add_stack_var): Deal with SSA names, use set_rtl.
20368         (expand_one_stack_var_at): Likewise.
20369         (expand_one_stack_var): Deal with SSA names.
20370         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
20371         before unique numbers.
20372         (expand_stack_vars): Use set_rtl.
20373         (expand_one_var): Accept SSA names, add asserts for them, feed them
20374         to above subroutines.
20375         (expand_used_vars): Expand all partitions (without default defs),
20376         then only the local decls (ignoring those expanded already).
20377         (expand_gimple_cond): Remove edges when jumpif() expands an
20378         unconditional jump.
20379         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
20380         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
20381         SSA name.
20382         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
20383         members of SA; deal with PARM_DECL partitions here; expand
20384         all PHI nodes, free tree datastructures and SA.  Commit instructions
20385         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
20386         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
20387         info and statements at start, collect garbage at finish.
20388         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
20389         (VAR_ANN_PARTITION) Remove.
20390         (change_partition_var): Don't declare.
20391         (partition_to_var): Always return SSA names.
20392         (var_to_partition): Only accept SSA names.
20393         (register_ssa_partition): Only check argument.
20394         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
20395         member.
20396         (delete_var_map): Don't free it.
20397         (var_union): Only accept SSA names, simplify.
20398         (partition_view_init): Mark only useful SSA names as used.
20399         (partition_view_fini): Only deal with SSA names.
20400         (change_partition_var): Remove.
20401         (dump_var_map): Use ssa_name instead of partition_to_var member.
20402         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
20403         basic blocks.
20404         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
20405         (struct _elim_graph): New member const_dests; nodes member vector of
20406         ints.
20407         (set_location_for_edge): New static helper.
20408         (create_temp): Remove.
20409         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
20410         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
20411         (new_elim_graph): Allocate const_dests member.
20412         (clean_elim_graph): Truncate const_dests member.
20413         (delete_elim_graph): Free const_dests member.
20414         (elim_graph_size): Adapt to new type of nodes member.
20415         (elim_graph_add_node): Likewise.
20416         (eliminate_name): Likewise.
20417         (eliminate_build): Don't take basic block argument, deal only with
20418         partition numbers, not variables.
20419         (get_temp_reg): New static helper.
20420         (elim_create): Use it, deal with RTL temporaries instead of trees.
20421         (eliminate_phi): Adjust all calls to new signature.
20422         (assign_vars, replace_use_variable, replace_def_variable): Remove.
20423         (rewrite_trees): Only do checking.
20424         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
20425         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
20426         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
20427         contains_tree_r, MAX_STMTS_IN_LATCH,
20428         process_single_block_loop_latch, analyze_edges_for_bb,
20429         perform_edge_inserts): Remove.
20430         (expand_phi_nodes): New global function.
20431         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
20432         functions, initialize new parameter, remember partitions having a
20433         default def.
20434         (finish_out_of_ssa): New global function.
20435         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
20436         don't reset in_ssa_p here, don't disable TER when mudflap.
20437         (pass_del_ssa): Remove.
20438         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
20439         partition members.
20440         (execute_free_datastructures): Declare.
20441         * Makefile.in (SSAEXPAND_H): New variable.
20442         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
20443         * basic-block.h (commit_one_edge_insertion): Declare.
20444         * passes.c (init_optimization_passes): Move pass_nrv and
20445         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
20446         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
20447         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
20448         (redirect_branch_edge): Deal with super block when expanding, split
20449         out jump patching itself into ...
20450         (patch_jump_insn): ... here, new static helper.
20451
20452 2009-04-26  Michael Matz  <matz@suse.de>
20453
20454         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
20455         beyond num_ssa_names.
20456         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
20457         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
20458
20459 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
20460
20461         PR inline-asm/39543
20462         * fwprop.c (forward_propagate_asm): New function.
20463         (forward_propagate_and_simplify): Propagate also into __asm, if it
20464         doesn't increase the number of referenced registers.
20465
20466         PR c/39889
20467         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
20468
20469 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
20470
20471         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
20472         note_nonlocal_vla_type for nonlocal VLAs.
20473         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
20474         contains_remapped_vars, remap_vla_decls): New functions.
20475         (convert_nonlocal_reference_stmt): If not optimizing, call
20476         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
20477         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
20478         if it wasn't found in var_map.
20479         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
20480         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
20481         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
20482         declare_vars.
20483         * gimplify.c (nonlocal_vlas): New variable.
20484         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
20485         referenced VLAs.
20486         (gimplify_body): Create and destroy nonlocal_vlas.
20487
20488         * dwarf2out.c (loc_descr_plus_const): New function.
20489         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
20490         mem_loc_descriptor, loc_descriptor_from_tree_1,
20491         descr_info_loc, gen_variable_die): Use it.
20492
20493         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
20494         !TREE_STATIC VAR_DECLs.
20495         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
20496         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
20497         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
20498         DECL_BY_REFERENCE is valid.
20499         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
20500         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
20501         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
20502         Copy DECL_BY_REFERENCE.
20503         (struct nesting_copy_body_data): New type.
20504         (nesting_copy_decl): New function.
20505         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
20506         if they have variable length.
20507
20508 2009-04-26  Michael Matz  <matz@suse.de>
20509
20510         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
20511         mark new temporaries for renaming.
20512
20513 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
20514
20515         PR c/39581
20516         * c-decl.c (global_bindings_p): Return negative value.
20517         (c_variable_size): New.  Based on variable_size from
20518         stor-layout.c.
20519         (grokdeclarator): Call c_variable_size not variable_size.
20520
20521 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
20522
20523         * config/i386/i386.c (print_operand) ['z']: Fix typo.
20524
20525 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
20526
20527         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
20528         Redefine it to just use mingw/include.
20529         (ASM_SPEC): Rules for -m32 and -m64.
20530         (LINK_SPEC): Use Likewise.
20531         (SPEC_32): New define.
20532         (SPEC_64): Likewise.
20533         (SUB_LINK_SPEC): Likewise.
20534         (MULTILIB_DEFAULTS): New define.
20535         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
20536         Add multilib options.
20537         (MULTILIB_DIRNAMES): Likewise.
20538         (MULTILIB_OSDIRNAMES): Likewise.
20539         (LIBGCC): Likewise.
20540         (INSTALL_LIBGCC): Likewise.
20541
20542 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
20543
20544         PR c/39556
20545         * c-tree.h (enum c_inline_static_type): New.
20546         (record_inline_static): Declare.
20547         * c-decl.c (struct c_inline_static, c_inline_statics,
20548         record_inline_static, check_inline_statics): New.
20549         (pop_file_scope): Call check_inline_statics.
20550         (start_decl): Call record_inline_static instead of pedwarning
20551         directly for static in inline function.
20552         * c-typeck.c (build_external_ref): Call record_inline_static
20553         instead of pedwarning directly for static referenced in inline
20554         function.
20555
20556 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
20557
20558         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
20559         not new but only being rescanned.
20560         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
20561         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
20562         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
20563         record_set_info, compute_set, grealloc): Remove.
20564         (recompute_all_luids): New function.
20565         (gcse_main): Don't compute sets, and don't do related memory
20566         allocations/free-ing.  If something changed before the end of the
20567         pass, update LUIDs using recompute_all_luids.
20568         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
20569         (free_gcse_mem): Don't free it either.
20570         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
20571         Use the df insn LUIDs.
20572         (load_killed_in_block): Likewise.
20573         (compute_hash_table_work): Don't compute reg_set_in_block.
20574         (compute_transp): Use DF_REG_DEF_CHAINs.
20575         (local_cprop_pass): Don't use compute_sets and related functions.
20576         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
20577         Use get_max_uid() instead of max_cuid.
20578         (insert_insn_end_basic_block, pre_insert_copy_insn,
20579         update_ld_motion_stores): Don't try to
20580         keep reg_set tables up to date.
20581         (pre_insert_copies): Use df insn LUIDs.
20582         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
20583         (reg_set_info): Don't use extra bitmap argument.
20584         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
20585         information to compute regs_set_in_block.
20586         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
20587         (bypass_jumps): Don't use compute_sets and friends.
20588
20589 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20590
20591         PR testsuite/39710
20592         * opts.c (undocumented_msg): Do not leave blank even with
20593         ENABLE_CHECKING.
20594
20595 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
20596
20597         * c-decl.c (build_enumerator): Allow values folding to integer
20598         constants but not integer constant expressions with a pedwarn if
20599         pedantic.
20600
20601 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
20602
20603         PR c/39582
20604         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
20605         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
20606         type is an integer constant.
20607
20608 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
20609
20610         PR target/39897
20611         * config/i386/i386.c (print_operand) ['z']: Revert handling of
20612         HImode operands.
20613
20614 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
20615
20616         PR c/39564
20617         * c-decl.c (grokdeclarator): Diagnose declarations of functions
20618         with variably modified return type and no storage class
20619         specifiers, except for the case of nested functions.  Distinguish
20620         extern declarations of functions with variably modified return
20621         types from those of objects with variably modified types.
20622
20623 2009-04-25  Jan Hubicka  <jh@suse.cz>
20624
20625         * tree.c (list_equal_p): New function.
20626         * tree.h (list_equal_p): Declare.
20627         * coretypes.h (edge_def, edge, const_edge, basic_block_def
20628         basic_block_def, basic_block, const_basic_block): New.
20629         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
20630         (redirect_eh_edge): New function.
20631         (make_eh_edge_update_phi): EH edges are not abnormal.
20632         * except.c: Include tree-flow.h.
20633         (list_match): New function.
20634         (eh_region_replaceable_by_p): New function.
20635         (replace_region): New function.
20636         (hash_type_list): New function.
20637         (hash_eh_region): New function.
20638         (eh_regions_equal_p): New function.
20639         (merge_peers): New function.
20640         (remove_unreachable_regions): Verify EH tree when checking;
20641         merge peers.
20642         (copy_eh_region_1): New function.
20643         (copy_eh_region): New function.
20644         (push_reachable_handler): New function.
20645         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
20646         regions without label but with live RESX.
20647         * except.h (redirect_eh_edge_to_label): New.
20648         * tree-flow.h (redirect_eh_edge): New.
20649         * coretypes.h (edge_def, edge, const_edge, basic_block_def
20650         basic_block_def, basic_block, const_basic_block): Remove.
20651         * Makefile.in (except.o): Add dependency on tree-flow.h
20652         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
20653         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
20654         Remove.
20655
20656 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
20657
20658         PR bootstrap/39645
20659         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
20660         on the destination of memcpy.
20661
20662 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
20663
20664         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
20665         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
20666         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
20667
20668 2009-04-25  Jan Hubicka  <jh@suse.cz>
20669
20670         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
20671         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
20672         to be reached by different label than left.
20673         (update_eh_edges): Update comment; remove edge_to_remove if possible
20674         and return true if suceeded.
20675         (cleanup_empty_eh): Accept sharing map; handle shared regions.
20676         (cleanup_eh): Compute sharing map.
20677         * except.c (remove_eh_handler_and_replace): Add argument if we should
20678         update regions.
20679         (remove_unreachable_regions): Update for label sharing.
20680         (label_to_region_map): Likewise.
20681         (get_next_region_sharing_label): New function.
20682         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
20683         prev_try pointers.
20684         (remove_eh_handler): Update.
20685         (remove_eh_region_and_replace_by_outer_of): New function.
20686         * except.h (struct eh_region): Add next_region_sharing_label.
20687         (remove_eh_region_and_replace_by_outer_of,
20688         get_next_region_sharing_label): Declare.
20689         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
20690
20691 2009-04-25  Jan Hubicka  <jh@suse.cz>
20692
20693         * tree-cfg.c (split_critical_edges): Split also edges where we can't
20694         insert code even if they are not critical.
20695
20696 2009-04-25  Jan Hubicka  <jh@suse.cz>
20697
20698         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
20699         (gimple_can_remove_branch_p): EH edges won't remove branch by
20700         redirection.
20701         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
20702         updating of non-abnormal EH edges.
20703         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
20704         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
20705         (split_critical_edges): Split also edges where emitting code on them
20706         will lead to splitting later.
20707
20708 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
20709             H.J. Lu  <hongjiu.lu@intel.com>
20710
20711         PR target/39590
20712         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
20713         the configured assembler supports fildq and fistpq mnemonics.
20714         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
20715         * configure: Regenerated.
20716         * config.in: Ditto.
20717
20718         * config/i386/i386.c (print_operand): Handle 'Z'.
20719         ['z']: Remove handling of special fild/fist suffixes.
20720         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
20721         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
20722         suffix of fild insn.
20723         (*floatsi<mode>2_vector_mixed): Ditto.
20724         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
20725         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
20726         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
20727         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
20728         * config/i386/gas.h (GAS_MNEMONICS): Remove.
20729
20730 2009-04-25  Ben Elliston  <bje@au.ibm.com>
20731
20732         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
20733         the source of a set operation.
20734
20735 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
20736
20737         * target.h (struct gcc_target): Add case_values_threshold field.
20738         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
20739         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
20740         * targhooks.c (default_case_values_threshold): New function.
20741         * targhooks.h (default_case_values_threshold): Declare function.
20742         * stmt.c (expand_case): Use case_values_threshold target hook.
20743         * expr.h (case_values_threshold): Remove declartation.
20744         * expr.c (case_values_threshold): Remove function.
20745         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
20746
20747         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
20748         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
20749         (avr_case_values_threshold): Declare as static.
20750         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
20751
20752         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
20753         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
20754         (mn10300_case_values_threshold): New function.
20755
20756 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
20757
20758         * ira.c (setup_cover_and_important_classes): Add enum cast.
20759
20760 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
20761
20762         * genpreds.c (write_enum_constraint_num): Output definition of
20763         CONSTRAINT_NUM_DEFINED_P macro.
20764         * ira.c (setup_cover_and_important_classes): Use
20765         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
20766
20767 2009-04-24  DJ Delorie  <dj@redhat.com>
20768
20769         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
20770         __SH2A_SINGLE_ONLY__ also.
20771
20772 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
20773
20774         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
20775         (movdf_internal): Ditto.
20776         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
20777         SFmode and DFmode constants.
20778         (ia64_print_operand): Add 'G' format for printing
20779         floating point constants.
20780
20781 2009-04-24  Richard Guenther  <rguenther@suse.de>
20782
20783         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
20784         from unsigned additions.
20785
20786 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
20787
20788         * c-typeck.c (set_init_index): Allow array designators that are
20789         not integer constant expressions with a pedwarn if pedantic.
20790
20791 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
20792
20793         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
20794         zero if no overlap in nonzero bits between the operands.
20795
20796 2009-04-24  Ian Lance Taylor  <iant@google.com>
20797
20798         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
20799         (record_dead_and_set_regs): Likewise.
20800         * df.h (struct df_mw_hardreg): Change flags field to int.
20801         (struct df_base_ref): Likewise.
20802         (struct df): Change changeable_flags field to int.
20803         * df-scan.c (df_defs_record): Change clobber_flags to int.
20804         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
20805         constants rather than #define macros.
20806         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
20807         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
20808         (enum dwarf_calling_convention): Likewise.
20809         (enum dwarf_line_number_x_ops): Likewise.
20810         (enum dwarf_call_frame_info): Likewise.
20811         (enum dwarf_source_language): Likewise.
20812         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
20813         (add_calling_convention_attribute): Likewise.
20814         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
20815         (combine_comparisons): Change compcode to int.  Add cast to enum type.
20816         * genrecog.c (maybe_both_true_2): Change c to int.
20817         (write_switch): Likewise.  Add cast to enum type.
20818         * gimplify.c (gimplify_omp_for): Handle return values from
20819         gimplify_expr using MIN rather than bitwise or.
20820         (gimplify_expr): Add cast to enum type.
20821         * ipa-prop.c (update_jump_functions_after_inlining): Change
20822         IPA_BOTTOM to IPA_JF_UNKNOWN.
20823         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
20824         Add casts to enum type.
20825         (setup_cover_and_important_classes): Change cl to int.  Add casts
20826         to enum type.
20827         (setup_class_translate): Change cl and mode to int.
20828         (ira_init_once): Change mode to int.
20829         (free_register_move_costs): Likewise.
20830         (setup_prohibited_mode_move_regs): Add casts to enum type.
20831         * langhooks.c (add_builtin_function_common): Rework assertion that
20832         value fits bitfield.
20833         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
20834         * omega.c (omega_do_elimination): Avoid math on enum types.
20835         * optabs.c (expand_vec_shift_expr): Remove casts to int.
20836         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
20837         int local to handle integral_argment value.
20838         * regmove.c (try_auto_increment): Change PUT_MODE to
20839         PUT_REG_NOTE_KIND.
20840         * reload.c (push_secondary_reload): Add casts to enum type.
20841         (secondary_reload_class, find_valid_class): Likewise.
20842         * reload1.c (emit_input_reload_insns): Likewise.
20843         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
20844         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
20845         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
20846         constant.
20847         * tree.c (build_common_builtin_nodes): Add casts to enum type.
20848         * tree-complex.c (complex_lattice_t): Typedef to int rather than
20849         enum type.
20850         (expand_complex_libcall): Add casts to enum type.
20851         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
20852         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
20853         with ERROR_MARK, not NUM_TREE_CODES.
20854         (vect_create_epilog_for_reduction): Likewise.
20855         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
20856         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
20857         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
20858         enum machine_mode.
20859         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
20860         vect_unused_in_loop.  Change 0 to loop_vect.
20861         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
20862         * var-tracking.c (get_init_value): Change return type to enum
20863         var_init_status.
20864         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
20865         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
20866         arm_fp_model.
20867         (arm_override_options): Add casts to enum type.
20868         (arm_emit_tls_decoration): Likewise.
20869         * config/i386/i386.c (ix86_function_specific_restore): Add casts
20870         to enum type.
20871         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
20872         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
20873         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
20874         enum type.
20875         * config/s390/s390.c (code_for_builtin_64): Change to array of
20876         enum insn_code.
20877         (code_for_builtin_31): Likewise.
20878         (s390_expand_builtin): Change code_for_builtin to enum insn_code
20879         const *.
20880         * config/sparc/sparc.c (sparc_override_options): Change value
20881         field in struct code_model to enum cmodel.  In initializer change
20882         0 to NULL and add cast to enum type.
20883
20884         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
20885         Change all callers.  Issue a -Wc++-compat warning using
20886         lhs_origtype if necessary.
20887         (convert_for_assignment): Issue -Wc++-compat warnings about
20888         invalid conversions to enum type on assignment.
20889         * c-common.h (build_modify_expr): Update declaration.
20890
20891 2009-04-24  Nick Clifton  <nickc@redhat.com>
20892
20893         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
20894         (function_arg_advance): Likewise.
20895         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
20896         5th alternative.
20897
20898 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
20899
20900         * config/s390/constraints.md ('I', 'J'): Fix condition.
20901
20902 2009-04-24  Diego Novillo  <dnovillo@google.com>
20903
20904         * gengtype-parse.c (parse_error): Add newline after message.
20905
20906 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
20907
20908         * config/i386/sse.md (avxmodesuffixs): Removed.
20909         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
20910         (*avx_pinsr<ssevecsize>): This.
20911
20912 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
20913
20914         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
20915         follow chains of regs with a single definition, and allow expressions
20916         that are function_invariant_p.
20917         (simple_rhs_p): Allow expressions that are function_invariant_p.
20918
20919 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
20920
20921         PR middle-end/39867
20922         * fold-const.c (fold_cond_expr_with_comparison): When folding
20923         > and >= to MAX, make sure the MAX uses the same type as the
20924         comparison's operands.
20925
20926 2009-04-24  Nick Clifton  <nickc@redhat.com>
20927
20928         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
20929         addressing for DImode accesses.
20930         (frv_print_operand_address): Handle PLUS case.
20931         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
20932
20933 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
20934
20935         PR rtl-optimization/39794
20936         * alias.c (canon_true_dependence): Add x_addr argument.
20937         * rtl.h (canon_true_dependence): Adjust prototype.
20938         * cse.c (check_dependence): Adjust canon_true_dependence callers.
20939         * cselib.c (cselib_invalidate_mem): Likewise.
20940         * gcse.c (compute_transp): Likewise.
20941         * dse.c (scan_reads_nospill): Likewise.
20942         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
20943         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
20944         canon_base_addr of the group, plus optional offset.
20945         (struct group_info): Rename canon_base_mem to
20946         canon_base_addr.
20947         (get_group_info): Set canon_base_addr to canon_rtx of base, not
20948         canon_rtx of base_mem.
20949
20950 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
20951
20952         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
20953         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
20954
20955 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
20956
20957         * config/spu/spu-builtins.h: Delete file.
20958
20959         * config/spu/spu.h (enum spu_builtin_type): Move here from
20960         spu-builtins.h.
20961         (struct spu_builtin_description): Likewise.  Add GTY marker.
20962         Do not use enum spu_function_code or enum insn_code.
20963         (spu_builtins): Add extern declaration.
20964
20965         * config/spu/spu.c: Do not include "spu-builtins.h".
20966         (enum spu_function_code, enum spu_builtin_type_index,
20967         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
20968         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
20969         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
20970         unsigned_V2DI_type_node): Move here from spu-builtins.h.
20971         (spu_builtin_types): Make static.  Add GTY marker.
20972         (spu_builtins): Add extern declaration with GTY marker.
20973         Include "gt-spu.h".
20974
20975         * config/spu/spu-c.c: Do not include "spu-builtins.h".
20976         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
20977         Check programmatically whether all parameters are scalar.
20978
20979         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
20980
20981 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
20982
20983         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
20984         assignment from the constructor either if the target is volatile.
20985
20986 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
20987
20988         * config/arm/arm.md (insv): Do not share operands[0].
20989
20990 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
20991
20992         * config/vxlib-tls.c (active_tls_threads): Delete.
20993         (delete_hook_installed): New.
20994         (tls_delete_hook): Don't delete the delete hook.
20995         (tls_destructor): Delete it here.
20996         (__gthread_set_specific): Adjust installing the delete hook.
20997         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
20998         __gthread_leave_tsd_dtor_context.
20999
21000 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
21001
21002         * c-format.c (gcc_tdiag_char_table): Add support for %E.
21003
21004 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
21005
21006         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
21007         enum type.
21008         (alpha_rtx_costs): Ditto.
21009         (emit_unlikely_jump): Use add_reg_note.
21010         (emit_frame_store_1): Ditto.
21011         (alpha_expand_prologue): Ditto.
21012         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
21013         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
21014
21015 2009-04-23  Nick Clifton  <nickc@redhat.com>
21016
21017         * config/v850/v850.md (epilogue): Remove suppressed code.
21018         (return): Rename to return_simple and remove test of frame size.
21019         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
21020         to gen_return_simple.
21021
21022 2009-04-22  Jing Yu  <jingyu@google.com>
21023
21024         PR testsuite/39781
21025         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
21026
21027 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21028
21029         PR C/31499
21030         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
21031         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
21032         value is a VECTOR_CST, the element type is the element type of the
21033         vector.
21034
21035 2009-04-22  DJ Delorie  <dj@redhat.com>
21036
21037         * config/m32c/m32c.h: Update GTY annotations to new syntax.
21038
21039 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
21040
21041         * alias.c (find_base_term): Move around LO_SUM case, so that
21042         CONST falls through into PLUS/MINUS handling.
21043
21044         PR c/39855
21045         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
21046         into 0, use omit_one_operand.
21047
21048 2009-04-23  Ben Elliston  <bje@au.ibm.com>
21049
21050         * config/rs6000/linux-unwind.h (get_regs): Remove type
21051         puns. Change the type of `pc' to an array of unsigned ints and
21052         update all users.  Constify frame24.
21053
21054 2009-04-22  DJ Delorie  <dj@redhat.com>
21055
21056         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
21057         declarations before code.
21058         (current_function_special_page_vector): Likewise.
21059         (m32c_expand_insv): Silence a warning.
21060
21061 2009-04-21  Taras Glek  <tglek@mozilla.com>
21062
21063         * alias.c: Update GTY annotations to new syntax.
21064         * basic-block.h: Likewise.
21065         * bitmap.h: Likewise.
21066         * c-common.h: Likewise.
21067         * c-decl.c: Likewise.
21068         * c-parser.c: Likewise.
21069         * c-pragma.c: Likewise.
21070         * c-tree.h: Likewise.
21071         * cfgloop.h: Likewise.
21072         * cgraph.h: Likewise.
21073         * config/alpha/alpha.c: Likewise.
21074         * config/arm/arm.h: Likewise.
21075         * config/avr/avr.h: Likewise.
21076         * config/bfin/bfin.c: Likewise.
21077         * config/cris/cris.c: Likewise.
21078         * config/darwin.c: Likewise.
21079         * config/frv/frv.c: Likewise.
21080         * config/i386/i386.c: Likewise.
21081         * config/i386/i386.h: Likewise.
21082         * config/i386/winnt.c: Likewise.
21083         * config/ia64/ia64.h: Likewise.
21084         * config/iq2000/iq2000.c: Likewise.
21085         * config/mips/mips.c: Likewise.
21086         * config/mmix/mmix.h: Likewise.
21087         * config/pa/pa.c: Likewise.
21088         * config/pa/pa.h: Likewise.
21089         * config/rs6000/rs6000.c: Likewise.
21090         * config/s390/s390.c: Likewise.
21091         * config/sparc/sparc.c: Likewise.
21092         * config/xtensa/xtensa.c: Likewise.
21093         * cselib.h: Likewise.
21094         * dbxout.c: Likewise.
21095         * dwarf2out.c: Likewise.
21096         * except.c: Likewise.
21097         * except.h: Likewise.
21098         * fixed-value.h: Likewise.
21099         * function.c: Likewise.
21100         * function.h: Likewise.
21101         * gimple.h: Likewise.
21102         * integrate.c: Likewise.
21103         * optabs.c: Likewise.
21104         * output.h: Likewise.
21105         * real.h: Likewise.
21106         * rtl.h: Likewise.
21107         * stringpool.c: Likewise.
21108         * tree-data-ref.c: Likewise.
21109         * tree-flow.h: Likewise.
21110         * tree-scalar-evolution.c: Likewise.
21111         * tree-ssa-address.c: Likewise.
21112         * tree-ssa-alias.h: Likewise.
21113         * tree-ssa-operands.h: Likewise.
21114         * tree.c: Likewise.
21115         * tree.h: Likewise.
21116         * varasm.c: Likewise.
21117         * varray.h: Likewise.
21118         * vec.h: Likewise.
21119         * coretypes.h: Do not define GTY macro if it is already defined.
21120         * doc/gty.texi: Update GTY documentation to new syntax.
21121         * gengtype-lex.l: Enforce attribute-like syntax for GTY
21122         annotations on structs.
21123         * gengtype-parse.c: Likewise.
21124
21125 2009-04-22  Mark Heffernan  <meheff@google.com>
21126
21127         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
21128
21129 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
21130
21131         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
21132         where appropriate.
21133
21134 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
21135
21136         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
21137         the same as a PLUS without a shift.  Increase the cost of a
21138         CONST_INT in MULT.
21139
21140 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21141
21142         * Makefile.in: Update dependencies.
21143         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
21144         * errors.h: Remove bogus comment about compatibility.
21145         (warning): Update declaration.
21146         * genautomata.c: Update all calls to warning.
21147         * gimple.c: Do not include errors.h. Include toplev.h.
21148         * tree-ssa-structalias.c: Do not include errors.h.
21149         * omega.c: Likewise.
21150         * tree-ssa-reassoc.c: Likewise.
21151         * config/spu/spu-c.c: Likewise.
21152         * config/spu/t-spu-elf: Update dependencies.
21153
21154 2009-04-22  Richard Guenther  <rguenther@suse.de>
21155
21156         PR tree-optimization/39824
21157         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
21158         make sure the types are compatible.
21159
21160 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21161
21162         PR c++/14875
21163         * c-common.c (c_parse_error): Take a token_flags parameter.
21164         Use token_type for the token type instead.
21165         Pass token_flags to cpp_type2name.
21166         * c-common.h (c_parse_error): Update declaration.
21167         * c-parser.c (c_parser_error): Pass 0 as token flags.
21168
21169 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
21170
21171         PR rtl-optimization/39580
21172         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
21173
21174 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
21175
21176         * function.c (expand_function_end): Do not emit a jump to the "naked"
21177         return label for fall-through returns.
21178         * except.c (sjlj_emit_function_exit): Always place the call to the
21179         unregister function at the location installed by expand_function_end.
21180
21181 2009-04-22  Richard Guenther  <rguenther@suse.de>
21182
21183         PR tree-optimization/39845
21184         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
21185         (gen_inbound_check): Likewise.
21186
21187 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
21188
21189         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
21190         padding for PPC.
21191         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
21192         * config/vxlib.c (__gthread_once): Add race guard for PPC.
21193
21194 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
21195
21196         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
21197         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
21198         shift counts to avoid out-of-bounds array accesses.
21199
21200 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
21201
21202         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
21203         (Pmode): Move above.
21204
21205 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
21206
21207         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
21208         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
21209         GET_CODE macro.  Use IN_RANGE macro where appropriate.
21210         * config/alpha/alpha.h: Ditto.
21211         * config/alpha/alpha.md: Ditto.
21212         * config/alpha/constraints.md: Ditto.
21213         * config/alpha/predicates.md: Ditto.
21214
21215 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
21216
21217         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
21218         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21219         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21220         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21221         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21222         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21223         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21224         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21225         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21226         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21227         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21228         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21229         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21230         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21231         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21232         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21233         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21234         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21235         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21236         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21237         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21238         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21239         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21240         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21241         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21242         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21243         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21244
21245 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
21246
21247         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
21248         references from comments.
21249         * cfgbuild.c (count_basic_blocks): Delete.
21250         (find_basic_blocks_1): Delete.
21251         (find_basic_blocks): Delete.
21252         * except.c (finish_eh_generation): Make static.  Move comment from
21253         except.h here.  Remove find_basic_blocks references from comments.
21254         * except.h (finish_eh_generation): Delete.
21255         * basic-block.h (find_basic_blocks): Delete.
21256         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
21257
21258 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
21259
21260         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
21261         (sdbout_parms):  Likewise.
21262
21263 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
21264
21265         * config/sh/sh.c (prepare_cbranch_operands): Use
21266         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
21267         (expand_cbranchdi4): Likewise.
21268         (from_compare): Add cast to enum type.
21269         (expand_cbranchsi4): Use add_reg_note.
21270         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
21271         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
21272         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
21273         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
21274         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
21275         instead of CODE_FOR_nothing.
21276         (cbranchdi4): Likewise.  Fix the order of arguments for
21277         gen_rtx_fmt_ee.
21278         (push_fpscr): Use add_reg_note.
21279         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
21280         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
21281
21282 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
21283
21284         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
21285         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
21286         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
21287         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
21288         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
21289         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
21290         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
21291         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
21292         config/alpha/x-vms, config/arc/t-arc,
21293         config/arm/README-interworking, config/arm/arm-c.c,
21294         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
21295         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
21296         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
21297         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
21298         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
21299         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
21300         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
21301         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
21302         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
21303         config/cris/t-elfmulti, config/crx/t-crx,
21304         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
21305         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
21306         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
21307         config/h8300/t-h8300, config/i386/athlon.md,
21308         config/i386/darwin-libgcc.10.4.ver,
21309         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
21310         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
21311         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
21312         config/i386/t-linux64, config/i386/t-nwld,
21313         config/i386/t-rtems-i386, config/i386/t-sol2-10,
21314         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
21315         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
21316         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
21317         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
21318         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
21319         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
21320         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
21321         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
21322         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
21323         config/m68k/t-uclinux, config/mcore/t-mcore,
21324         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
21325         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
21326         config/mips/crtn.asm, config/mips/irix-crti.asm,
21327         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
21328         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
21329         config/mips/mips-fixed.md, config/mips/sb1.md,
21330         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
21331         config/mips/t-iris6, config/mips/t-isa3264,
21332         config/mips/t-libgcc-mips16, config/mips/t-linux64,
21333         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
21334         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
21335         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
21336         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
21337         config/mn10300/t-linux, config/mn10300/t-mn10300,
21338         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
21339         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
21340         config/picochip/libgccExtras/clzsi2.asm,
21341         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
21342         config/rs6000/darwin-libgcc.10.4.ver,
21343         config/rs6000/darwin-libgcc.10.5.ver,
21344         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
21345         config/rs6000/t-aix43, config/rs6000/t-aix52,
21346         config/rs6000/t-darwin, config/rs6000/t-fprules,
21347         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
21348         config/rs6000/t-lynx, config/rs6000/t-netbsd,
21349         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
21350         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
21351         config/rs6000/t-rtems, config/rs6000/t-spe,
21352         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
21353         config/score/t-score-elf, config/sh/divcost-analysis,
21354         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
21355         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
21356         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
21357         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
21358         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
21359         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
21360         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
21361         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
21362         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
21363         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
21364         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
21365         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
21366         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
21367         limitx.h, version.c, xcoff.h: Add copyright and license notices.
21368         * config/h8300/genmova.sh: Include copyright and license notices
21369         in generated output.
21370         * config/h8300/mova.md: Regenerate.
21371         * doc/install.texi2html: Include word "Copyright" in copyright
21372         notice and use name "Free Software Foundation, Inc.".
21373         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
21374         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
21375         ChangeLog-2007, ChangeLog-2008: Correct dates.
21376
21377 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
21378
21379         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
21380         NE_EXPR operations as well.
21381         * c-parser.c (c_parser_condition): Do not set location information on
21382         the condition.
21383         (c_parser_conditional_expression): Likewise.
21384         (c_parser_binary_expression): Set location information on operators.
21385         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
21386         TRUTH_NOT_EXPR has been folded.
21387         * fold-const.c (fold_truth_not_expr): Copy location information from
21388         the incoming expression to the outgoing one.
21389         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
21390         recursive calls on the LHS of the operator but pass that of the
21391         operator to recursive calls on the RHS of the operator.  Set it
21392         on the COND_EXPR.
21393         (shortcut_cond_expr): Set the locus of the operator on the second
21394         COND_EXPR and that of the expression on the first in degenerate cases.
21395         Pass the locus of the expression to calls to shortcut_cond_r.
21396         Set the locus of the 'then' block on the associated jump, if any.
21397         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
21398         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
21399         expression to call to gimplify_boolean_expr.
21400
21401 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
21402
21403         * config.gcc: Add additional configuration for
21404         i686-w64-mingw* and x86_64-w64-mingw* triplet.
21405         * config/i386/mingw-w64.h: New mingw-w64 specific header.
21406         (CPP_SPEC): Redefine for allowing -municode option.
21407         (STARTFILE_SPEC): Likewise.
21408         * config/i386/t-mingw-w64: New.
21409         * config/i386/mingw-w64.opt: New.
21410         (municode): Add new target option.
21411         * doc/invoke.texi (municode): Add documentation for new option.
21412
21413 2009-04-21  Ian Lance Taylor  <iant@google.com>
21414
21415         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
21416         Correct test for number of arguments.
21417         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
21418
21419 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
21420
21421         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
21422         argument of emit_library_call.
21423
21424 2009-04-21  Richard Guenther  <rguenther@suse.de>
21425
21426         PR middle-end/39829
21427         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
21428         inside VIEW_CONVERT_EXPRs.
21429
21430 2009-04-21  Martin Jambor  <mjambor@suse.cz>
21431
21432         * tree-switch-conversion.c (build_constructors): Split a long line.
21433         (constructor_contains_same_values_p): New function.
21434         (build_one_array): Create assigns of constants if possible, do not
21435         call mark_sym_for_renaming, call update_stmt.
21436         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
21437         make_rename_temp.  Do not call mark_symbols_for_renaming, call
21438         update_stmt.
21439         (gen_def_assigns): Do not call mark_symbols_for_renaming or
21440         find_new_referenced_vars, call update_stmt.
21441         (gen_inbound_check): Use create_tmp_var and create ssa names manually
21442         instead of calling make_rename_temp.  Do not call
21443         find_new_referenced_vars or mark_symbols_for_renaming, call
21444         update_stmt.
21445
21446 2009-04-21  Richard Guenther  <rguenther@suse.de>
21447
21448         PR tree-optimization/39827
21449         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
21450         (tree_ssa_phiprop): Pass the correct array size.
21451
21452 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
21453
21454         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
21455
21456 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21457
21458         PR 16202
21459         * c-typeck.c (lvalue_p): Move declaration ...
21460         * c-common.h (lvalue_p): ... to here.
21461         * c-common.c (candidate_equal_p): New.
21462         (add_tlist): Use it.
21463         (merge_tlist): Use it.
21464         (warn_for_collisions_1): Likewise.
21465         (warning_candidate_p): Accept more candidates.
21466         (verify_tree): A warning candidate can be an expression. Use
21467         candidate_equal_p.
21468
21469 2009-04-21  Ben Elliston  <bje@au.ibm.com>
21470
21471         PR target/5267
21472         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
21473         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
21474         options.  Remove -mcall-solaris documentation.
21475
21476 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21477
21478         PR c++/13358
21479         * doc/invoke.texi (-Wlong-long): Update description.
21480         * c-lex (interpret_integer): Only warn if there was no previous
21481         overflow and -Wlong-long is enabled.
21482         * c-decl.c (declspecs_add_type): Drop redundant flags.
21483         * c.opt (Wlong-long): Init to -1.
21484         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
21485         and front-end warn_long_long. Wlong-long only depends on other
21486         flags if it is uninitialized.
21487         * c-parser.c (disable_extension_diagnostics): warn_long_long is
21488         the same for CPP and FE.
21489         (restore_extension_diagnostics): Likewise.
21490
21491 2009-04-20  Ian Lance Taylor  <iant@google.com>
21492
21493         Fix enum conversions which are invalid in C++:
21494         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
21495         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
21496         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
21497         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
21498         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
21499         (dbxout_parms): Likewise.
21500         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
21501         (df_clear_flags): Likewise.
21502         * df-problems.c (df_rd_bb_local_compute_process_def): Change
21503         top_flag parameter to int.
21504         (df_chain_create_bb_process_use): Likewise.
21505         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
21506         Remove cast.
21507         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
21508         (df_ref_create_structure, df_def_record_1): Likewise.
21509         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
21510         (df_notes_rescan): Change 0 to VOIDmode in function call.
21511         (df_get_call_refs, df_insn_refs_collect): Likewise.
21512         (df_bb_regs_collect): Likewise.
21513         (df_entry_block_defs_collect): Likewise.
21514         (df_exit_block_uses_collect): Likewise.
21515         * df.h: Update declarations.
21516         * double-int.c (double_int_divmod): Add cast to enum type.
21517         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
21518         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
21519         (based_loc_descr): Likewise.
21520         (loc_descriptor_from_tree_1): Change first_op and second_op to
21521         enum dwarf_location_atom.  Add cast to enum type.
21522         * expmed.c (init_expmed): Change 0 to SET in function call.
21523         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
21524         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
21525         (do_store_flag): Likewise.
21526         * fixed-value.h (struct fixed_value): Change mode to enum
21527         machine_mode.
21528         * function.c (assign_parms): Change 0 to VOIDmode in function call.
21529         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
21530         function call.
21531         (insert_insn_decl, insert_decl, insert_state): Likewise.
21532         (automata_list_finish): Likewise.
21533         * genrecog.c (process_define_predicate): Add cast to enum type.
21534         * gensupport.c (init_predicate_table): Add cast to enum type.
21535         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
21536         function call.
21537         (gimple_build_call_1, gimple_build_label): Likewise.
21538         (gimple_build_goto, gimple_build_asm_1): Likewise.
21539         (gimple_build_switch_1, gimple_build_cdt): Likewise.
21540         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
21541         (enum fallback): Rename from enum fallback_t.
21542         (fallback_t): Typedef as int.
21543         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
21544         GSI_SAME_STMT in function call.
21545         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
21546         enum type.
21547         (setup_reg_class_relations): Likewise.
21548         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
21549         (setup_prohibited_class_mode_regs): Add cast to enum type.
21550         (setup_prohibited_mode_move_regs): Likewise.
21551         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
21552         (record_address_regs): Change i to enum reg_class.
21553         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
21554         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
21555         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
21556         (GET_MODE_2XWIDER_MODE): Likewise.
21557         (GET_CLASS_NARROWEST_MODE): Likewise.
21558         * omp-low.c (expand_omp_for): Add cast to enum type.
21559         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
21560         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
21561         * postreload.c (reload_cse_simplify_operands): Change rclass local
21562         to enum reg_class.
21563         * predict.c (combine_predictions_for_insn): Change best_predictor
21564         and predictor to enum br_predictor.
21565         (combine_predictions_for_bb): Likewise.
21566         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
21567         use SET_PREDICT_EXPR_OUTCOME.
21568         * real.c (real_arithmetic): Change icode to code in function call.
21569         * reginfo.c (init_move_cost): Add casts to enum type.
21570         (init_reg_sets_1, init_fake_stack_mems): Likewise.
21571         * regmove.c (regclass_compatible_p): Change class0 and class1 to
21572         enum reg_class.
21573         * reload.c (find_valid_class): Add casts to enum type.
21574         (push_reload): Change 0 to NO_REGS in function call.
21575         (find_reloads): Change this_alternative to array of enum
21576         reg_class.  Remove some now-unnecessary casts.
21577         (make_memloc): Change 0 to VOIDmode in function call.
21578         * reload1.c (reload): Change 0 to VOIDmode in function call.
21579         (eliminate_regs_1, elimination_effects): Likewise.
21580         (eliminate_regs_in_insn): Likewise.
21581         (emit_input_reload_insns): Add cast to enum type.
21582         (delete_output_reload): Change 0 to VOIDmode in function call.
21583         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
21584         to enum type in function call.
21585         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
21586         (SET_PREDICT_EXPR_OUTCOME): Define.
21587         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
21588         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
21589         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
21590         (dump_function): Likewise.
21591         * tree-dump.h: Update declarations.
21592         * tree-pass.h: Update declarations.
21593         * varasm.c (assemble_integer): Change mclass to enum mode_class.
21594         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
21595         enum type.
21596         (arm_rtx_costs_1): Correct parenthesization.
21597         (arm_rtx_costs): Add casts to enum type.
21598         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
21599         (vfp_emit_fstmd): Use add_rg_note.
21600         (emit_multi_reg_push, emit_sfm): Likewise.
21601         (thumb_set_frame_pointer): Likewise.
21602         (arm_expand_prologue): Likewise.
21603         (arm_regno_class): Change return type to enum reg_class.
21604         (thumb1_expand_prologue): Use add_reg_note.
21605         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
21606         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
21607         in function call.
21608         * config/arm/gentune.sh: Add cast to enum type.
21609         * config/arm/arm-tune.md: Rebuild.
21610         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
21611         (ix86_split_fp_branch, predict_jump): Likewise.
21612         (ix86_expand_multi_arg_builtin): Change sub_code from enum
21613         insn_code to enum rtx_code.
21614         (ix86_builtin_vectorized_function): Add cast to enum type.
21615         * config/i386/i386.md (truncdfsf2): Change slot to enum
21616         ix86_stack_slot.
21617         (truncxf<mode>2, isinf<mode>2): Likewise.
21618         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
21619         enum type.
21620         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
21621         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
21622         (insert_bundle_state): Change 1 to INSERT in function call.
21623         (ia64_add_bundle_selector_before): Likewise.
21624         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
21625         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
21626         (restore_stack_nonlocal): Likewise.
21627         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
21628         function call.
21629         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
21630         function call.
21631         (mips_rtx_costs): Likewise.
21632         (mips_override_options): Add casts to enum type.
21633         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
21634         in function call.
21635         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
21636         (store_reg, set_reg_plus_d): Likewise.
21637         (hppa_expand_prologue, hppa_profile_hook): Likewise.
21638         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
21639         cast to enum type.
21640         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
21641         function call.
21642         (emit_unlikely_jump): Use add_reg_note.
21643         (rs6000_emit_allocate_stack): Likewise.
21644         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
21645         (output_toc): Change 1 to INSERT in function call.
21646         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
21647         (rs6000_initialize_trampoline): Likewise.
21648         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
21649         function call.
21650         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
21651         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
21652         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
21653         (save_gprs): Use add_reg_note.
21654         (s390_emit_prologue): Likewise.
21655         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
21656         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
21657         (sparc_fold_builtin): Add cast to enum type.
21658         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
21659         enum insn_code.
21660         (spu_expand_prologue): Use add_reg_note.
21661         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
21662
21663 2009-04-20  Ian Lance Taylor  <iant@google.com>
21664
21665         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
21666         (c_parser_postfix_expression_after_primary): Get VEC for list of
21667         arguments.  Get original types of arguments.  Call
21668         build_function_call_vec.
21669         (cached_expr_list_1, cached_expr_list_2): New static variables.
21670         (c_parser_expr_list): Change return type to VEC *.  Add
21671         p_orig_types parameter.  Change all callers.
21672         (c_parser_release_expr): New static function.
21673         (c_parser_vec_to_tree_list): New static function.
21674         * c-typeck.c (build_function_call): Rewrite to build a VEC and
21675         call build_function_call_vec.
21676         (build_function_call_vec): New function, based on old
21677         build_function_call.
21678         (convert_arguments): Remove nargs and argarray parameters.  Change
21679         values to a VEC.  Add origtypes parameter.
21680         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
21681         (convert_for_assignment): Add origtype parameter.  Change all
21682         callers.  If warn_cxx_compat, check for conversion to an enum
21683         type when calling a function.
21684         (store_init_value): Add origtype parameter.  Change all callers.
21685         (digest_init): Likewise.
21686         (struct init_node): Add origtype field.
21687         (add_pending_init): Add origtype parameter.  Change all callers.
21688         (output_init_element): Likewise.
21689         (output_pending_init_elements): Pass origtype from init_node to
21690         output_init_element.
21691         (process_init_element): Pass origtype from c_expr to
21692         output_init_element.
21693         (c_finish_return): Add origtype parameter.  Change all callers.
21694         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
21695         caller.
21696         (sync_resolve_params): Likewise.
21697         (sync_resolve_return): Change params to first_param.  Change caller.
21698         (resolve_overloaded_builtins): Change params to VEC *.  Change
21699         callers.  Save first parameter around call to build_function_call_vec.
21700         * c-decl.c (finish_decl): Add origtype parameter.  Change all
21701         callers.  Call build_function_call_vec rather than
21702         build_function_call for cleanup.
21703         * c-tree.h: Update declarations.
21704         * c-common.h: Update declarations.
21705         * stub-objc.c (objc_rewrite_function_call): Change parameter from
21706         params to first_param.
21707         * target.h (struct gcc_target): Change resolve_overloaded_builtin
21708         params parameter from tree to void *.
21709         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
21710         Change arglist parameter to have type void *, and to be a pointer
21711         to a VEC.
21712         * config/rs6000/rs6000-protos.h
21713         (altivec_resolve_overloaded_builtin): Update declaration.
21714         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
21715         fnargs parameter to have type void *, and to be a pointer to a
21716         VEC.  Call build_function_call_vec instead of
21717         build_function_call.
21718         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
21719
21720 2009-04-20  Joey Ye  <joey.ye@intel.com>
21721             Xuepeng Guo  <xuepeng.guo@intel.com>
21722             H.J. Lu  <hongjiu.lu@intel.com>
21723
21724         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
21725
21726         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
21727         (IX86_LEA_PRIORITY): Likewise.
21728         (distance_non_agu_define): New function.
21729         (distance_agu_use): Likewise.
21730         (ix86_lea_for_add_ok): Likewise.
21731         (ix86_dep_by_shift_count): Likewise.
21732
21733         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
21734         should split for LEA.
21735
21736         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
21737         function.
21738         (ix86_dep_by_shift_count): Likewise.
21739
21740 2009-04-20  Richard Guenther  <rguenther@suse.de>
21741
21742         * expr.c (handled_component_p): Move ...
21743         * tree.h (handled_component_p): ... here.
21744         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
21745         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
21746         and REALPART_EXPR to be in one group.
21747
21748 2009-04-20  Richard Guenther  <rguenther@suse.de>
21749
21750         * basic-block.h (get_all_dominated_blocks): Declare.
21751         * dominance.c (get_all_dominated_blocks): New function.
21752         * tree-cfg.c (get_all_dominated_blocks): Remove.
21753         (remove_edge_and_dominated_blocks): Adjust.
21754         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
21755         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
21756         instead of recursing.
21757
21758 2009-04-20  Doug Kwan  <dougkwan@google.com>
21759
21760         * cgraph.h (cgraph_node_ptr): New type for vector functions.
21761         (struct cgraph_node_set_def): New type.
21762         (cgraph_node_set) New type. Also declare vector functions.
21763         (struct cgraph_node_set_element_def): New type.
21764         (cgraph_node_set_element): Ditto.
21765         (cgraph_node_set_iterator): New iterator type.
21766         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
21767         cgraph_node_set_remove, dump_cgraph_node_set,
21768         debug_cgraph_node_set): New prototypes.
21769         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
21770         cgraph_node_set_size): New inlines.
21771         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
21772         including cgraph.h.
21773         (struct ipa_opt_pass): Add struct cgraph_node_set_def
21774         argument to function 'write_summary'.
21775         * ipa.c: Include ggc.h.
21776         (hash_cgraph_node_set_element,
21777         eq_cgraph_node_set_element, cgraph_node_set_new,
21778         cgraph_node_set_add, cgraph_node_set_remove,
21779         cgraph_node_set_find, dump_cgraph_node_set,
21780         debug_cgraph_node_set): New functions.
21781         * Makefile.in (ipa.o): Add dependency on GGC_H.
21782
21783 2009-04-20  Ira Rosen  <irar@il.ibm.com>
21784
21785         PR tree-optimization/39675
21786         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
21787         check of the return code of vect_schedule_slp. Check that
21788         stmt_vec_info still exists for the statement, before checking its
21789         vectorization type.
21790
21791 2009-04-20  Michael Matz  <matz@suse.de>
21792
21793         * Makefile.in (generated_files): Take out $(simple_generated_c).
21794
21795 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
21796
21797         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
21798         (UINTPTR_TYPE):  Likewise.
21799
21800 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
21801
21802         PR c/37481
21803         * c-typeck.c (digest_init): Check for initializing an array with a
21804         string literal.
21805
21806 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
21807
21808         PR c/19771
21809         * c-semantics.c (pop_stmt_list): Propagate
21810         STATEMENT_LIST_HAS_LABEL to parent statement list.
21811
21812 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
21813
21814         * config/mips/mips.h (mips_tune_attr): New macro.
21815         * config/mips/mips.md (cpu): Use it.
21816
21817 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
21818
21819         PR c/38243
21820         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
21821         declaring a tag.
21822
21823 2009-04-19  Diego Novillo  <dnovillo@google.com>
21824
21825         * toplev.c (compile_file): Move call to coverage_finish ...
21826         * cgraphunit.c (ipa_passes): ... here.
21827         Call cgraph_process_new_functions.
21828         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
21829         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
21830
21831 2009-04-19  Jan Hubicka  <jh@suse.cz>
21832
21833         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
21834         cfun.
21835         (dump_cgraph_node): Dump can throw external flag.
21836         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
21837
21838 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21839
21840         PR c/32061
21841         PR c++/36954
21842         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
21843         * common.opt (Wlogical-op): Move from here...
21844         * c.opt (Wlogical-op): ... to here.
21845         * c-typeck.c (parser_build_binary_op): Update call to
21846         warn_logical_operator.
21847         * c-opts.c (c_common_post_options): Enable warn_logical_op with
21848         extra_warnings.
21849         * c-common.c (warn_logical_op): Update.
21850         * c-common.h (warn_logical_op): Update declaration.
21851
21852 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
21853
21854         * tree.c (protected_set_expr_location): Fix formatting.
21855
21856 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
21857
21858         PR c/27676
21859         * c-typeck.c (readonly_warning): new.
21860         (build_unary_op, build_modify_expr): Use readonly_warning for
21861         storing into something readonly but not const-qualified.
21862
21863 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
21864
21865         PR c/22367
21866         * c-typeck.c (build_unary_op): Check for taking address of
21867         expression of type void.
21868
21869 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
21870
21871         PR c/35210
21872         * c-typeck.c (build_function_call): Check for calling a function
21873         with qualified void return types.  Call require_complete_type when
21874         generating a trap.
21875
21876 2009-04-18  Jan Hubicka  <jh@suse.cz>
21877
21878         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
21879         Set nothrow flag.
21880         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
21881         can_throw_external flag.
21882         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
21883         * ipa-pure-const.c (ignore_edge): New function.
21884         (propagate): Compute order for NOTHROW computation; set NOTHROWs
21885         only over can_throw_external edges.
21886         (local_pure_const): Add nothrow flag.
21887         * ipa-utils.c (searchc): Add ignore_edge callback.
21888         (ipa_utils_reduced_inorder): Add ignore_edge callback.
21889         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
21890         (set_nothrow_function_flags): Update cgraph.
21891         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
21892
21893 2009-04-18  Richard Guenther  <rguenther@suse.de>
21894
21895         PR middle-end/39804
21896         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
21897         (fold_stmt): ... this and ...
21898         (fold_stmt_inplace): ... this.
21899         (fold_stmt_1): Fold references in calls and asms.
21900         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
21901
21902 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
21903
21904         * tree-vrp.c (ssa_name_nonzero_p): Remove.
21905         * tree.h: Remove the prototype for ssa_name_nonzero_p.
21906
21907 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
21908
21909         * tree.c (function_args_count): Remove.
21910         * tree.h: Remove the prototype for function_args_count.
21911
21912 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
21913
21914         * tree-iterator.c (expr_only): Remove.
21915         * tree.h: Remove the prototype for expr_only.
21916
21917 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
21918
21919         * reginfo.c (cannot_change_mode_set_regs): Remove.
21920         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
21921
21922 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
21923
21924         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
21925         whether operands 0 and 1 overlaps.
21926
21927 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21928
21929         PR middle-end/36902
21930         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
21931         pointer. Use warning_at instead of warning.
21932         (search_for_addr_array): Likewise.
21933         (check_array_bounds): Likewise.
21934         (check_all_array_refs): Check that the incoming edge is not in the
21935         list of edges to be removed.
21936         (check_all_array_refs): Avoid the temporal pointer.
21937         (vrp_visit_cond_stmt): Fix typo.
21938         (simplify_switch_using_ranges): Handle the case where the switch
21939         index is an integer constant.
21940
21941 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
21942
21943         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
21944
21945 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
21946
21947         * doc/extend.texi, doc/invoke.texi: Fix typos.
21948
21949 2009-04-17  Cary Coutant  <ccoutant@google.com>
21950
21951         * tree-flow-inline.h (get_lineno): Fix inverted test.
21952
21953 2009-04-17  Diego Novillo  <dnovillo@google.com>
21954
21955         * tree-ssa-pre.c (create_expression_by_pieces): Remove
21956         assertion for AVAIL_OUT.
21957
21958 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
21959
21960         PR target/38627
21961         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
21962         * config/sh/linux-atomic.asm: Likewise.
21963
21964 2009-04-17  Diego Novillo  <dnovillo@google.com>
21965
21966         * except.c (debug_eh_tree): New.
21967         (struct eh_region, struct eh_status): Move ...
21968         * except.h: ... here.
21969         (add_type_for_runtime): Declare extern.
21970         (lookup_type_for_runtime): Likewise.
21971         (debug_eh_tree): Declare.
21972         * Makefile.in (GTFILES): List except.h before except.c
21973
21974 2009-04-17  Diego Novillo  <dnovillo@google.com>
21975
21976         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
21977         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
21978         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
21979         (find_vars_r): ... here.
21980         * tree-flow.h (find_referenced_vars_in): Declare.
21981         * tree-ssa-pre.c (create_expression_by_pieces): Assert
21982         that AVAIL_OUT exists for BLOCK.
21983         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
21984         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
21985         (tree-parloops.o): Likewise.
21986
21987 2009-04-17  Simon Baldwin  <simonb@google.com>
21988
21989         * toplev.c (default_tree_printer): Add handling for %E format.
21990
21991 2009-04-17  Diego Novillo  <dnovillo@google.com>
21992
21993         * tree-pretty-print.c (dump_generic_node): Add break after
21994         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
21995         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
21996         FUNCTION_TYPE together.  Call print_struct_decl when printing
21997         structures and TDF_SLIM is not given.
21998         (print_struct_decl): Fix logic for detecting recursion.
21999
22000 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
22001
22002         PR 31567
22003         * gcc.c (create_at_file): New.
22004         (compile_input_file_p): New.
22005         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
22006         * main.c (main): Update call to toplev_main.
22007         * toplev.c (toplev_main): Change signature. Call expandargv.
22008         * toplev.h (toplev_main): Change signature.
22009
22010 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
22011
22012         * dwarf2out.c (field_byte_offset): Use the type size as the field size
22013         if the latter is not constant.
22014
22015 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
22016
22017         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
22018
22019 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
22020
22021         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
22022         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
22023
22024 2009-04-17  Richard Guenther  <rguenther@suse.de>
22025
22026         * tree-ssa-structalias.c (get_constraint_for_component_ref):
22027         Handle component references view-converting an invariant address.
22028
22029 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
22030
22031         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
22032         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
22033         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
22034         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
22035         Use @deftypevr rather than @deftypevar.
22036
22037 2009-04-17  Richard Guenther  <rguenther@suse.de>
22038
22039         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
22040         (get_prop_source_stmt): Likewise.
22041         (can_propagate_from): Likewise.
22042
22043 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
22044
22045         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
22046         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
22047         (--with-multilib-list): Add default value.
22048         * configure: Regenerate.
22049         * Makefile.in (TM_ENDIAN_CONFIG): Define.
22050         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
22051         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
22052         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
22053         Don't add default cpu to multilib list unnecessarily, but do enable
22054         the relevant compiler option..
22055         Add support for --with-multilib-list=<blank> and
22056         --with-multilib-list=!<somelib> to supress unwanted multilibs.
22057         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
22058         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
22059         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
22060         TM_MULTILIB_CONFIG.
22061         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
22062         (MULTILIB_OSDIRNAMES): New variable.
22063         * config/sh/t-1e: Delete file.
22064         * config/sh/t-mlib-sh1: Delete file.
22065         * config/sh/t-mlib-sh2: Delete file.
22066         * config/sh/t-mlib-sh2a: Delete file.
22067         * config/sh/t-mlib-sh2a-nofpu: Delete file.
22068         * config/sh/t-mlib-sh2a-single: Delete file.
22069         * config/sh/t-mlib-sh2a-single-only: Delete file.
22070         * config/sh/t-mlib-sh2e: Delete file.
22071         * config/sh/t-mlib-sh3e: Delete file.
22072         * config/sh/t-mlib-sh4: Delete file.
22073         * config/sh/t-mlib-sh4-nofpu: Delete file.
22074         * config/sh/t-mlib-sh4-single: Delete file.
22075         * config/sh/t-mlib-sh4-single-only: Delete file.
22076         * config/sh/t-mlib-sh4a: Delete file.
22077         * config/sh/t-mlib-sh4a-nofpu: Delete file.
22078         * config/sh/t-mlib-sh4a-single: Delete file.
22079         * config/sh/t-mlib-sh4a-single-only: Delete file.
22080         * config/sh/t-mlib-sh4al: Delete file.
22081         * config/sh/t-mlib-sh5-32media: Delete file.
22082         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
22083         * config/sh/t-mlib-sh5-64media: Delete file.
22084         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
22085         * config/sh/t-mlib-sh5-compact: Delete file.
22086         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
22087         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
22088         * doc/install.texi (Options specification): Add
22089         --with-multilib-list and --with-endian.
22090
22091 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
22092
22093         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
22094         REVISION_c.
22095         (OBJS-common): Add plugin-version.o.
22096         (plugin-version.o): New.
22097         * gcc-plugin.h (plugin_gcc_version): New.
22098         (plugin_default_version_check): New.
22099         (plugin_init_func, plugin_init): Add version argument.
22100         * plugin-version.c: New.
22101         * plugin.c (str_plugin_gcc_version_name): New.
22102         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
22103         pass it to the init function.
22104         (plugin_default_version_check): New.
22105
22106 2009-04-17  Richard Guenther  <rguenther@suse.de>
22107
22108         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
22109         for decl-vs-decl disambiguation.
22110
22111 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
22112
22113         * config/s390/s390.h (s390_tune_attr): New macro definition.
22114         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
22115
22116 2009-04-17  Richard Guenther  <rguenther@suse.de>
22117
22118         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
22119         (fold_stmt_r): Likewise.
22120         (maybe_fold_reference): New function.
22121         (fold_gimple_assign): Handle cases fold_stmt_r did.
22122         (fold_stmt): Do not use fold_stmt_r.
22123         (fold_stmt_inplace): Likewise.
22124
22125 2009-04-17  Richard Guenther  <rguenther@suse.de>
22126
22127         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
22128         (record_equivalences_from_stmt): Remove useless checks and
22129         simplifications.
22130         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
22131         the type is already suitable.
22132
22133 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
22134
22135         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
22136
22137 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
22138
22139         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
22140         (CMPtype): Define as __gcc_CMPtype.
22141
22142 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
22143
22144         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
22145         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
22146
22147 2009-04-17  Richard Guenther  <rguenther@suse.de>
22148
22149         PR tree-optimization/39746
22150         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
22151         special-casing for builtins and static variable use/def.
22152         (call_may_clobber_ref_p_1): Likewise.
22153
22154 2009-04-16  Ian Lance Taylor  <iant@google.com>
22155
22156         * df.h: Include "timevar.h".
22157         (struct df_problem): Change tv_id field to timevar_id_t.
22158         * tree-pass.h: Include "timevar.h".
22159         (struct opt_pass): Change tv_id field to timevar_id_t.
22160         * timevar.h (timevar_id_t): Define TV_NONE.
22161         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
22162         TV_NONE rather than tv_id != 0.
22163         (execute_one_pass): Likewise.
22164         * Makefile.in (DF_H): Add $(TIMEVAR_H).
22165         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
22166         dependencies to $(TREE_PASS_H).
22167         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
22168         to TV_NONE.
22169         (pass_branch_target_load_optimize2): Likewise.
22170         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
22171         (pass_outof_cfg_layout_mode): Likewise.
22172         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
22173         (pass_rebuild_cgraph_edges): Likewise.
22174         (pass_remove_cgraph_callee_edges): Likewise.
22175         * df-core.c (pass_df_initialize_opt): Likewise.
22176         (pass_df_initialize_no_opt): Likewise.
22177         (pass_df_finish): Likewise.
22178         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
22179         * except.c (pass_set_nothrow_function_flags): Likewise.
22180         (pass_convert_to_eh_region_ranges): Likewise.
22181         * final.c (pass_compute_alignments): Likewise.
22182         * function.c (pass_instantiate_virtual_regs): Likewise.
22183         (pass_init_function): Likewise.
22184         (pass_leaf_regs): Likewise.
22185         (pass_match_asm_constraints): Likewise.
22186         * gimple-low.c (pass_lower_cf): Likewise.
22187         (pass_mark_used_blocks): Likewise.
22188         * init-regs.c (pass_initialize_regs): Likewise.
22189         * integrate.c (pass_initial_value_sets): Likewise.
22190         * ira.c (pass_ira): Likewise.
22191         * jump.c (pass_cleanup_barriers): Likewise.
22192         * omp-low.c (pass_expand_omp): Likewise.
22193         (pass_lower_omp): Likewise.
22194         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
22195         * recog.c (pass_split_all_insns): Likewise.
22196         (pass_split_after_reload): Likewise.
22197         (pass_split_before_regstack): Likewise.
22198         (pass_split_before_sched2): Likewise.
22199         (pass_split_for_shorten_branches): Likewise.
22200         * reginfo.c (pass_reginfo_init): Likewise.
22201         (pass_subregs_of_mode_init): Likewise.
22202         (pass_subregs_of_mode_finish): Likewise.
22203         * passes.c (pass_postreload): Likewise.
22204         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
22205         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
22206         (pass_warn_function_return): Likewise.
22207         (pass_warn_function_noreturn): Likewise.
22208         * tree-complex.c (pass_lower_complex): Likewise.
22209         (pass_lower_complex_O0): Likewise.
22210         * tree-if-conv.c (pass_if_conversion): Likewise.
22211         * tree-into-ssa.c (pass_build_ssa): Likewise.
22212         * tree-mudflap.c (pass_mudflap_1): Likewise.
22213         (pass_mudflap_2): Likewise.
22214         * tree-nomudflap.c (pass_mudflap_1): Likewise.
22215         (pass_mudflap_2): Likewise.
22216         * tree-nrv.c (pass_return_slot): Likewise.
22217         * tree-object-size.c (pass_object_sizes): Likewise.
22218         * tree-optimize.c (pass_all_optimizations): Likewise.
22219         (pass_early_local_passes): Likewise.
22220         (pass_all_early_optimizations): Likewise.
22221         (pass_cleanup_cfg): Likewise.
22222         (pass_cleanup_cfg_post_optimizing): Likewise.
22223         (pass_free_datastructures): Likewise.
22224         (pass_free_cfg_annotations): Likewise.
22225         (pass_fixup_cfg): Likewise.
22226         (pass_init_datastructures): Likewise.
22227         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
22228         (pass_late_warn_uninitialized): Likewise.
22229         (pass_update_address_taken): Likewise.
22230         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
22231         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
22232         (pass_cse_sincos): Likewise.
22233         (pass_convert_to_rsqrt): Likewise.
22234         * tree-ssa-structalias.c (pass_build_alias): Likewise.
22235         * tree-stdarg.c (pass_stdarg): Likewise.
22236         * tree-tailcall.c (pass_tail_recursion): Likewise.
22237         (pass_tail_calls): Likewise.
22238         * tree-vect-generic.c (pass_lower_vector): Likewise.
22239         (pass_lower_vector_ssa): Likewise.
22240         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
22241
22242 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
22243
22244         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
22245         XLR entry.
22246         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
22247         Handle -march=xlr.
22248         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
22249         logical and signext.
22250
22251 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
22252
22253         PR target/39767
22254         * config/sh/predicates.md (arith_operand): Check if the operand
22255         of TRUNCATE is a REG.
22256
22257 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22258
22259         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
22260         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
22261
22262 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22263
22264         * tree-iterator.c (tsi_split_statement_list_after,
22265         tsi_split_statement_list_before): Remove.
22266         * tree-iterator.h: Remove the prototypes for
22267         tsi_split_statement_list_after and tsi_split_statement_list_before.
22268
22269 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22270
22271         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
22272         * tree-ssa-propagate.h: Remove the prototype for
22273         stmt_makes_single_load.
22274
22275 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22276
22277         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
22278         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
22279
22280 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22281
22282         * tree-iterator.c (EXPR_LAST_BODY): Remove.
22283
22284 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22285
22286         * except.c (eh_region_outer_p): Remove.
22287         * except.h: Remove the prototype for eh_region_outer_p.
22288
22289 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22290
22291         * function.c (current_function_assembler_name): Remove.
22292         * function.h: Remove the prototype for
22293         current_function_assembler_name.
22294
22295 2009-04-16  Ian Lance Taylor  <iant@google.com>
22296
22297         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
22298         (add_reg_note): Call alloc_reg_note.
22299         * rtl.h (alloc_reg_note): Declare.
22300         * combine.c (try_combine): Use alloc_reg_note.
22301         (recog_for_combine, move_deaths): Likewise.
22302         (distribute_notes): Use alloc_reg_note and add_reg_note.
22303         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
22304         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
22305         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
22306
22307 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
22308
22309         PR rtl-optimization/39762
22310         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
22311         ira_may_move_out_cost): Add comments about way of their usage.
22312         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
22313
22314         * ira-conflicts.c (process_regs_for_copy): Use function
22315         ira_get_register_move_cost instead of global
22316         ira_register_move_cost.
22317
22318         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
22319         color_pass, move_spill_restore, update_curr_costs): Ditto.
22320
22321         * ira-lives.c (process_single_reg_class_operands): Ditto.
22322
22323         * ira-emit.c (emit_move_list): Ditto.
22324
22325         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
22326         (record_reg_classes): Ditto.  Use functions
22327         ira_get_register_move_cost and ira_get_may_move_cost instead of
22328         global vars ira_register_move_cost, ira_may_move_out_cost and
22329         ira_may_move_in_cost.
22330         (record_address_regs): Don't call ira_init_register_move_cost.
22331         Use function ira_get_may_move_cost instead of global
22332         ira_may_move_in_cost.
22333         (process_bb_node_for_hard_reg_moves): Use function
22334         ira_get_register_move_cost instead of global ira_register_move_cost.
22335         (ira_costs): Don't call ira_init_register_move_cost.
22336
22337 2009-04-16  Richard Guenther  <rguenther@suse.de>
22338
22339         * tree-cfg.c (verify_gimple_assign_binary):
22340         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
22341         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
22342         (create_general_new_stmt): Note that this function is broken.
22343
22344 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
22345
22346         * common.opt (fhelp): Add Var(help_flag).
22347         * gcc-plugin.h (plugin_info): Add help.
22348         * plugin.c (plugin_name_args): Add help.
22349         (register_plugin_info): Set plugin->help.
22350         (print_help_one_plugin): New.
22351         (print_plugins_help): New.
22352         * plugin.h (print_plugins_help): New.
22353         * toplev.c (toplev_main): Call print_plugins_help if needed.
22354
22355 2009-04-16  Richard Guenther  <rguenther@suse.de>
22356
22357         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
22358         (gimple_ior_addresses_taken_1): New function.
22359         (gimple_ior_addresses_taken): Likewise.
22360         * gimple.h (struct gimple_statement_with_ops_base): Remove
22361         addresses_taken member.
22362         (gimple_ior_addresses_taken): Declare.
22363         (gimple_addresses_taken, gimple_addresses_taken_ptr,
22364         gimple_set_addresses_taken): Remove.
22365         * ipa-reference.c (mark_address): New function.
22366         (scan_stmt_for_static_refs): Use it for marking addresses taken.
22367         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
22368         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
22369         (gimple_add_to_addresses_taken): Remove.
22370         (get_tmr_operands): Call mark_address_taken.
22371         (get_asm_expr_operands): Likewise.
22372         (get_expr_operands): Likewise.
22373         (build_ssa_operands): Do not clear the addresses_taken bitmap.
22374         (free_stmt_operands): Do not free it.
22375         * tree-ssa.c (delete_tree_ssa): Likewise.
22376         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
22377
22378 2009-04-16  Richard Guenther  <rguenther@suse.de>
22379
22380         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
22381         (walk_stmt_load_store_ops): Likewise.
22382         * gimple.c (get_base_loadstore): New function.
22383         (walk_stmt_load_store_addr_ops): Likewise.
22384         (walk_stmt_load_store_ops): Likewise.
22385         * ipa-pure-const.c (check_op): Simplify.
22386         (check_load, check_store): New functions.
22387         (check_stmt): Use walk_stmt_load_store_ops.
22388         * ipa-reference.c (mark_load): Adjust signature.
22389         (mark_store): Likewise.
22390         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
22391
22392 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
22393
22394         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
22395         (plugin_info): New.
22396         * opts.c (common_handle_option): Don't call print_version.
22397         * plugin.c (plugin_name_args): Add version.
22398         (register_plugin_info): New.
22399         (register_callback): Handle PLUGIN_INFO.
22400         (try_init_one_plugin): New.
22401         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
22402         if failed to init.
22403         (finalize_one_plugin): New.
22404         (finalize_plugins): New.
22405         (print_one_plugin): New.
22406         (print_plugins_versions): New.
22407         * plugin.h (print_plugins_versions): New.
22408         (finalize_plugins): New.
22409         * toplev.c (compile_file): Don't call initialize_plugins.
22410         (print_version): Call print_plugins_versions.
22411         (toplev_main): Call initialize_plugins. Print version if needed.
22412         Call finalize_plugins.
22413
22414 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
22415
22416         * common.opt (fversion): New.
22417         * gcc.c (print_version): New.
22418         (process_command): Don't print the version. Just set print_version.
22419         (main): Print version. Call subprocesses if print_version and
22420         verbose_flag are set.
22421         * opts.c (common_handle_option): Handle OPT_fversion.
22422
22423 2009-04-16  Richard Guenther  <rguenther@suse.de>
22424             Ira Rosen  <irar@il.ibm.com>
22425
22426         PR tree-optimization/39698
22427         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
22428         type of the reduction variable.  Only generate the def if
22429         it is needed.
22430
22431         * omp-low.c (expand_omp_for_generic): When converting to a pointer
22432         make sure to first convert to an integer of the same precision.
22433         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
22434         the type of the evolution correctly in computing the new
22435         induction variable base.
22436
22437 2009-04-16  Richard Guenther  <rguenther@suse.de>
22438
22439         PR middle-end/39625
22440         * tree-cfg.c (make_blocks): Split statements with to-be
22441         abnormal SSA names on the lhs.
22442
22443 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
22444
22445         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
22446         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
22447         * c-typeck.c (really_start_incremental_init): Likewise.
22448         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
22449         (TARGET_INITIALIZER): Remove it.
22450         * target.h (struct target): Remove vector_opaque_p.
22451         * tree.c (build_opaque_vector_type): New.
22452         * tree.h (TYPE_VECTOR_OPAQUE): New.
22453         (build_opaque_vector_type): Declare.
22454         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
22455         * config/rs6000/rs6000.c (build_opaque_vector_type,
22456         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
22457         (rs6000_init_builtins): Use build_opaque_vector_type for
22458         opaque_V4SI_type_node.
22459
22460 2009-04-15  Catherine Moore  <clm@codesourcery.com>
22461
22462         * debug.h (set_name):  Declare.
22463         * dwarf2out.c (dwarf2out_set_name): Declare.
22464         (dwarf2_debug_hooks): Add set_name.
22465         (find_AT_string): New.
22466         (add_AT_string): Call find_AT_string.
22467         (dwarf2out_set_name): New.
22468         * cp/decl.c (grokdeclarator): Call set_name.
22469         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
22470         * debug.c (do_nothing_debug_hooks):  Likewise.
22471         * dbxout.c (dbx_debug_hooks): Likewise.
22472         * sdbout.c (sdb_debug_hooks): Likewise.
22473
22474 2009-04-15  Michael Eager  <eager@eagercon.com>
22475
22476         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
22477         reg for single-precision FPU.
22478         * config/rs6000/rs6000.md (movsi_internal1): Only for
22479         !TARGET_SINGLE_FPU.
22480         (movsi_internal1_single): New. Add pattern to move SI values to/from
22481         single-precision FP regs.
22482
22483 2009-04-15  Richard Guenther  <rguenther@suse.de>
22484
22485         * omp-low.c (lower_rec_input_clauses): Build correct address
22486         expressions.
22487         (expand_omp_for_generic): Fix multiplication type.
22488         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
22489         (generate_memset_zero): Fix types.
22490         * tree-profile.c (prepare_instrumented_value): Correctly
22491         widen a pointer.
22492
22493 2009-04-15  Ian Lance Taylor  <iant@google.com>
22494
22495         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
22496         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
22497         for -Wall and for -Wc++-compat.
22498         (c_common_post_options): For C++, set warn_enum_compare if not
22499         already set.
22500         * c-tree.h (struct c_expr): Add field original_type.
22501         (build_external_ref): Update declaration.
22502         * c-parser.c (c_parser_braced_init): Set original_type.
22503         (c_parser_initelt): Likewise.
22504         (c_parser_expr_no_commas): Likewise.
22505         (c_parser_conditional_expression): Likewise.
22506         (c_parser_cast_expression): Likewise.
22507         (c_parser_unary_expression): Likewise.  Pull setting of
22508         original_code to top of function.
22509         (c_parser_sizeof_expression): Set original_type.
22510         (c_parser_alignof_expression): Likewise.
22511         (c_parser_postfix_expression): Likewise.  Pull setting of
22512         original_code to top of function.
22513         (c_parser_postfix_expression_after_paren_type): Set original_type.
22514         (c_parser_postfix_expression_after_primary): Likewise.
22515         (c_parser_expression): Likewise.
22516         * c-typeck.c (build_external_ref): Add type parameter.  Change all
22517         callers.
22518         (c_expr_sizeof_expr): Set original_type field.
22519         (parser_build_unary_op): Likewise.
22520         (parser_build_binary_op): Likewise.  Optionally warn about
22521         comparisons of enums of different types.
22522         (digest_init): Set original_type field.
22523         (really_start_incremental_init): Likewise.
22524         (push_init_level, pop_init_level): Likewise.
22525         * doc/invoke.texi (Warning Options): -Wenum-compare now
22526         supported in C.
22527
22528 2009-04-15  Richard Guenther  <rguenther@suse.de>
22529
22530         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
22531         out a necessary conversion.
22532         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
22533         names we didn't value number.
22534         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
22535
22536 2009-04-15  Richard Guenther  <rguenther@suse.de>
22537
22538         PR tree-optimization/39764
22539         * tree-ssa-ccp.c (get_value): Canonicalize value with
22540         canonicalize_float_value.
22541
22542 2009-04-15  Jan Hubicka  <jh@suse.cz>
22543
22544         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
22545         Wrong version of patch.
22546
22547 2009-04-15  Jan Hubicka  <jh@suse.cz>
22548
22549         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
22550
22551 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
22552
22553         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
22554         our distinct integral and vector types.
22555
22556 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
22557
22558         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
22559         * init.c (build_vtbl_address): Remove call to assemble_external.
22560
22561 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
22562
22563         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
22564         output for other floating point modes.
22565
22566 2009-04-14  Diego Novillo  <dnovillo@google.com>
22567
22568         * diagnostic.c (diagnostic_report_diagnostic): Do not
22569         warn about loaded plugins for DK_ERROR and DK_WARNING.
22570         * c-decl.c (declspecs_add_type): Move call to
22571         invoke_plugin_callbacks ...
22572         * c-parser.c (c_parser_declspecs): ... here.
22573         * plugin.c (dump_active_plugins): Tidy output.
22574
22575 2009-04-14  Diego Novillo  <dnovillo@google.com>
22576             Le-Chun Wu  <lcwu@google.com>
22577
22578         * configure.ac: Add --enable-plugin support.
22579         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
22580         * Makefile.in (PLUGIN_H): Define.
22581         Export ENABLE_PLUGIN and GMPINC to site.exp.
22582         Add PLUGINLIBS to link command.
22583         Add/modify dependencies for plugin.o and files including plugin.h.
22584         (plugin.o): New.
22585         * config.in: Regenerate.
22586
22587         * opts.c (common_handle_option): Handle OPT_fplugin_ and
22588         OPT_fplugin_arg_.
22589
22590 2009-04-14  Le-Chun Wu  <lcwu@google.com>
22591
22592         * tree-pass.h (register_one_dump_file): Add a prototype for
22593         register_one_dump_file.
22594         * toplev.c (compile_file): Call initialize_plugins.
22595         (do_compile): Call invoke_plugin_callbacks.
22596         (toplev_main): Call invoke_plugin_callbacks.
22597         * common.opt: Add -fplugin= and -fplugin-arg-.
22598         * gcc-plugin.h: New public header file for plugins to include.
22599         * plugin.c: New source file.
22600         * plugin.h: New internal header file.
22601         * passes.c (register_one_dump_file): Make it external.
22602
22603         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
22604
22605 2009-04-14  Diego Novillo  <dnovillo@google.com>
22606
22607         * doc/plugins.texi: New.
22608         * doc/gccint.texi: Add reference to Plugins chapter.
22609         * doc/invoke.texi: Document -fplugin and -fplugin-arg
22610         * diagnostic.c (diagnostic_report_diagnostic): Warn about
22611         loaded plugins, if any.
22612         * timevar.def (TV_PLUGIN_INIT): Define.
22613         (TV_PLUGIN_RUN): Define.
22614         * plugin.c: Include timevar.h
22615         (plugins_active_p): New.
22616         (dump_active_plugins): New.
22617         (debug_active_plugins): New.
22618
22619 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
22620
22621         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
22622         library paths.
22623         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
22624
22625 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
22626
22627         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
22628         the same as a minus without a shift.
22629
22630 2009-04-14  Nick Clifton  <nickc@redhat.com>
22631
22632         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
22633         comparisons with small integers will always produce a short
22634         branch.
22635
22636 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
22637
22638         Merge:
22639         2008-12-19  Diego Novillo  <dnovillo@google.com>
22640
22641         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
22642
22643 2009-04-14  Richard Guenther  <rguenther@suse.de>
22644
22645         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
22646         verification.
22647         (verify_gimple_assign_binary): Likewise.  Handle shifts and
22648         rotates correctly.
22649         (verify_gimple_phi): Print the mismatched argument position.
22650         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
22651         Fix types.
22652         (vect_update_init_of_dr): Likewise.
22653         * matrix-reorg.c (transform_access_sites): Do what the
22654         comment suggests.
22655         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
22656
22657 2009-04-13  Michael Eager  <eager@eagercon.com>
22658
22659         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
22660         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
22661         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
22662         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
22663         remove duplicate config
22664
22665 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
22666
22667         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
22668         file_name:line_number type locator of the call site.
22669
22670 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
22671
22672         * genautomata.c: Put blank after comma.
22673         (automaton_decls): New.
22674         (struct unit_usage): Add comments to member next.
22675         (store_alt_unit_usage): Keep the list ordered.
22676         (unit_present_on_list_p, equal_alternatives_p): New.
22677         (check_regexp_units_distribution): Check units distribution
22678         correctness correctly.
22679         (main): Don't write automata if error is found.  Return correct
22680         exit code.
22681
22682         * config/m68k/cf.md (cfv4_ds): Remove.
22683         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
22684         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
22685
22686         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
22687         power4-load-ext, power4-store, power4-store-update,
22688         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
22689         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
22690         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
22691         power4-sqrt, power4-isync): Modify reservation to make correct
22692         unit distribution to automata.
22693
22694         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
22695         power5-store-update, power5-two, power5-three, power5-lmul,
22696         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
22697
22698 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
22699
22700         * except.c (pass_set_nothrow_function_flags): Set name and add
22701         TODO_dump_func.
22702         (set_nothrow_function_flags): Mention in the dump file when
22703         changing a function to nothrow.
22704
22705 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
22706
22707         PR/39066
22708         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
22709         instead of unsigned long.
22710
22711 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22712
22713         * config/arm/arm.c (return_used_this_function): Remove.
22714         (arm_output_function_prologue): Remove use of
22715         return_used_this_function.
22716         (output_return_instruction): Replace use of
22717         return_used_this_function
22718         by cfun->machine->return_used_this_function.
22719         (arm_output_epilogue): Likewise.
22720         (arm_output_function_epilogue): Likewise.
22721         (thumb_unexpanded_epilogue): Likewise.
22722         * config/arm/arm.h (struct machine_function):
22723         New member return_used_this_function.
22724
22725 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
22726
22727         * doc/install.texi: Correct description of default directory for
22728         --with-gxx-include-dir.
22729
22730 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
22731
22732         * fold-const.c (build_range_check): Properly deal with enumeral and
22733         boolean base types.
22734
22735 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
22736
22737         * doc/invoke.texi (max_gcse_passes): Remove documentation.
22738         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
22739         * params.h (MAX_GCSE_PASSES): Remove.
22740         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
22741         in sequence.  Remove ability to run multiple passes.
22742         (bypass_jumps): Report run as third CPROP pass.
22743
22744 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
22745
22746         PR middle-end/39651
22747         * except.c (can_throw_external): Look at each insn in a SEQUENCE
22748         when deciding whether the whole SEQUENCE can throw.
22749
22750 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
22751
22752         PR target/39740
22753         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
22754         offseted label references.
22755
22756 2009-04-11  Jan Hubicka  <jh@suse.cz>
22757
22758         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
22759
22760 2009-04-11  Richard Guenther  <rguenther@suse.de>
22761
22762         PR middle-end/39732
22763         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
22764         return variables as TREE_ADDRESSABLE.
22765
22766 2009-04-11  Richard Guenther  <rguenther@suse.de>
22767
22768         PR tree-optimization/39713
22769         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
22770         reference trees have SSA_NAME operands.
22771
22772 2009-04-11  Richard Guenther  <rguenther@suse.de>
22773
22774         PR c/39712
22775         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
22776         address expressions.
22777
22778 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
22779
22780         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
22781         match changes in Cygwin 1.7
22782         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
22783         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
22784
22785 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
22786
22787         PR tree-optimization/39701
22788         * doc/invoke.texi (Optimization Options): Document change in
22789         meaning and initialization of -fdelete-null-pointer-checks.
22790
22791 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
22792
22793         PR middle-end/39701
22794         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
22795
22796         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
22797         here.
22798
22799         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
22800
22801 2009-04-10  Chao-ying Fu  <fu@mips.com>
22802
22803         * doc/tm.texi (Instruction Output): Document
22804         TARGET_ASM_FINAL_POSTSCAN_INSN.
22805         * target.h (final_postscan_insn): New field in asm_out.
22806         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
22807         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
22808         * final.c (final_scan_insn): Call
22809         targetm.asm_out.final_postscan_insn after outputting
22810         an asm macro and a normal instruction.
22811
22812         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
22813         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
22814         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
22815         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
22816         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
22817
22818 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
22819
22820         PR middle-end/39701
22821         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
22822         variables as non-NULL even with -fdelete-null-pointer-checks.
22823
22824 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
22825
22826         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
22827
22828 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
22829
22830         PR target/39678
22831         * config/i386/i386.c (classify_argument): Handle SCmode with
22832         (bit_offset % 64) != 0.
22833
22834 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
22835
22836         * doc/invoke.texi (Optimize Options): Add cross-reference to
22837         -Q --help=optimizers examples.
22838
22839 2009-04-10  Ben Elliston  <bje@au.ibm.com>
22840
22841         PR target/36800
22842         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
22843         regalign for the reg == fpr and TDmode case.
22844
22845 2009-04-09  David Ayers  <ayers@fsfe.org>
22846
22847         PR objc/29200
22848         * objc/objc-act.c (warn_with_method): Remove helper function.
22849         (check_duplicates): Call warning and inform directly.
22850         (really_start_method): Likewise.
22851
22852 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
22853
22854         * expmed.c (expand_divmod): Always use a comparison for a division
22855         by a large unsigned integer.
22856
22857         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
22858         for things others than variables or functions as nonzero.
22859
22860 2009-04-09  Nick Clifton  <nickc@redhat.com>
22861
22862         * unwind-compat.c: Change copyright header to refer to version
22863         3 of the GNU General Public License with version 3.1 of the
22864         GCC Runtime Library Exception and to point readers at the
22865         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
22866         * config/alpha/crtfastmath.c: Likewise.
22867         * config/alpha/linux-unwind.h: Likewise.
22868         * config/alpha/qrnnd.asm: Likewise.
22869         * config/alpha/vms-crt0-64.c: Likewise.
22870         * config/alpha/vms-crt0.c: Likewise.
22871         * config/alpha/vms-dwarf2.asm: Likewise.
22872         * config/alpha/vms-dwarf2eh.asm: Likewise.
22873         * config/alpha/vms-psxcrt0-64.c: Likewise.
22874         * config/alpha/vms-psxcrt0.c: Likewise.
22875         * config/alpha/vms_tramp.asm: Likewise.
22876         * config/arc/initfini.c: Likewise.
22877         * config/arc/lib1funcs.asm: Likewise.
22878         * config/arm/bpabi-v6m.S: Likewise.
22879         * config/arm/bpabi.S: Likewise.
22880         * config/arm/bpabi.c: Likewise.
22881         * config/arm/crti.asm: Likewise.
22882         * config/arm/crtn.asm: Likewise.
22883         * config/arm/ieee754-df.S: Likewise.
22884         * config/arm/ieee754-sf.S: Likewise.
22885         * config/arm/lib1funcs.asm: Likewise.
22886         * config/arm/libunwind.S: Likewise.
22887         * config/arm/linux-atomic.c: Likewise.
22888         * config/arm/mmintrin.h: Likewise.
22889         * config/arm/pr-support.c: Likewise.
22890         * config/arm/unaligned-funcs.c: Likewise.
22891         * config/arm/unwind-arm.c: Likewise.
22892         * config/arm/unwind-arm.h: Likewise.
22893         * config/avr/libgcc.S: Likewise.
22894         * config/bfin/crti.s: Likewise.
22895         * config/bfin/crtlibid.s: Likewise.
22896         * config/bfin/crtn.s: Likewise.
22897         * config/bfin/lib1funcs.asm: Likewise.
22898         * config/bfin/linux-unwind.h: Likewise.
22899         * config/cris/arit.c: Likewise.
22900         * config/cris/cris_abi_symbol.c: Likewise.
22901         * config/darwin-64.c: Likewise.
22902         * config/darwin-crt2.c: Likewise.
22903         * config/darwin-crt3.c: Likewise.
22904         * config/darwin.h: Likewise.
22905         * config/dbxelf.h: Likewise.
22906         * config/dfp-bit.c: Likewise.
22907         * config/dfp-bit.h: Likewise.
22908         * config/elfos.h: Likewise.
22909         * config/fixed-bit.c: Likewise.
22910         * config/fixed-bit.h: Likewise.
22911         * config/fp-bit.c: Likewise.
22912         * config/fp-bit.h: Likewise.
22913         * config/fr30/crti.asm: Likewise.
22914         * config/fr30/crtn.asm: Likewise.
22915         * config/fr30/lib1funcs.asm: Likewise.
22916         * config/freebsd-spec.h: Likewise.
22917         * config/frv/cmovd.c: Likewise.
22918         * config/frv/cmovh.c: Likewise.
22919         * config/frv/cmovw.c: Likewise.
22920         * config/frv/frvbegin.c: Likewise.
22921         * config/frv/frvend.c: Likewise.
22922         * config/frv/lib1funcs.asm: Likewise.
22923         * config/glibc-stdint.h: Likewise.
22924         * config/h8300/clzhi2.c: Likewise.
22925         * config/h8300/crti.asm: Likewise.
22926         * config/h8300/crtn.asm: Likewise.
22927         * config/h8300/ctzhi2.c: Likewise.
22928         * config/h8300/fixunssfsi.c: Likewise.
22929         * config/h8300/lib1funcs.asm: Likewise.
22930         * config/h8300/parityhi2.c: Likewise.
22931         * config/h8300/popcounthi2.c: Likewise.
22932         * config/i386/ammintrin.h: Likewise.
22933         * config/i386/att.h: Likewise.
22934         * config/i386/avxintrin.h: Likewise.
22935         * config/i386/biarch64.h: Likewise.
22936         * config/i386/bmmintrin.h: Likewise.
22937         * config/i386/cpuid.h: Likewise.
22938         * config/i386/cross-stdarg.h: Likewise.
22939         * config/i386/crtfastmath.c: Likewise.
22940         * config/i386/crtprec.c: Likewise.
22941         * config/i386/cygming-crtbegin.c: Likewise.
22942         * config/i386/cygming-crtend.c: Likewise.
22943         * config/i386/cygwin.asm: Likewise.
22944         * config/i386/emmintrin.h: Likewise.
22945         * config/i386/gmm_malloc.h: Likewise.
22946         * config/i386/gthr-win32.c: Likewise.
22947         * config/i386/i386.h: Likewise.
22948         * config/i386/immintrin.h: Likewise.
22949         * config/i386/linux-unwind.h: Likewise.
22950         * config/i386/linux64.h: Likewise.
22951         * config/i386/mm3dnow.h: Likewise.
22952         * config/i386/mmintrin-common.h: Likewise.
22953         * config/i386/mmintrin.h: Likewise.
22954         * config/i386/nmmintrin.h: Likewise.
22955         * config/i386/pmm_malloc.h: Likewise.
22956         * config/i386/pmmintrin.h: Likewise.
22957         * config/i386/smmintrin.h: Likewise.
22958         * config/i386/sol2-c1.asm: Likewise.
22959         * config/i386/sol2-ci.asm: Likewise.
22960         * config/i386/sol2-cn.asm: Likewise.
22961         * config/i386/sol2-gc1.asm: Likewise.
22962         * config/i386/tmmintrin.h: Likewise.
22963         * config/i386/unix.h: Likewise.
22964         * config/i386/w32-unwind.h: Likewise.
22965         * config/i386/wmmintrin.h: Likewise.
22966         * config/i386/x86-64.h: Likewise.
22967         * config/i386/x86intrin.h: Likewise.
22968         * config/i386/xmmintrin.h: Likewise.
22969         * config/ia64/crtbegin.asm: Likewise.
22970         * config/ia64/crtend.asm: Likewise.
22971         * config/ia64/crtfastmath.c: Likewise.
22972         * config/ia64/crti.asm: Likewise.
22973         * config/ia64/crtn.asm: Likewise.
22974         * config/ia64/fde-glibc.c: Likewise.
22975         * config/ia64/lib1funcs.asm: Likewise.
22976         * config/ia64/linux-unwind.h: Likewise.
22977         * config/ia64/quadlib.c: Likewise.
22978         * config/ia64/unwind-ia64.c: Likewise.
22979         * config/linux.h: Likewise.
22980         * config/m32c/m32c-lib1.S: Likewise.
22981         * config/m32c/m32c-lib2-trapv.c: Likewise.
22982         * config/m32c/m32c-lib2.c: Likewise.
22983         * config/m32r/initfini.c: Likewise.
22984         * config/m68hc11/larith.asm: Likewise.
22985         * config/m68hc11/m68hc11-crt0.S: Likewise.
22986         * config/m68k/cf.md: Likewise.
22987         * config/m68k/crti.s: Likewise.
22988         * config/m68k/crtn.s: Likewise.
22989         * config/m68k/lb1sf68.asm: Likewise.
22990         * config/m68k/linux-unwind.h: Likewise.
22991         * config/mcore/crti.asm: Likewise.
22992         * config/mcore/crtn.asm: Likewise.
22993         * config/mcore/lib1.asm: Likewise.
22994         * config/mips/linux-unwind.h: Likewise.
22995         * config/mips/loongson.h: Likewise.
22996         * config/mips/mips16.S: Likewise.
22997         * config/mmix/crti.asm: Likewise.
22998         * config/mmix/crtn.asm: Likewise.
22999         * config/pa/fptr.c: Likewise.
23000         * config/pa/hpux-unwind.h: Likewise.
23001         * config/pa/lib2funcs.asm: Likewise.
23002         * config/pa/linux-atomic.c: Likewise.
23003         * config/pa/linux-unwind.h: Likewise.
23004         * config/pa/milli64.S: Likewise.
23005         * config/pa/quadlib.c: Likewise.
23006         * config/pa/stublib.c: Likewise.
23007         * config/picochip/libgccExtras/adddi3.asm: Likewise.
23008         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
23009         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
23010         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
23011         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
23012         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
23013         * config/picochip/libgccExtras/divmod15.asm: Likewise.
23014         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
23015         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
23016         * config/picochip/libgccExtras/longjmp.asm: Likewise.
23017         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
23018         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
23019         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
23020         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
23021         * config/picochip/libgccExtras/setjmp.asm: Likewise.
23022         * config/picochip/libgccExtras/subdi3.asm: Likewise.
23023         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
23024         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
23025         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
23026         * config/rs6000/750cl.h: Likewise.
23027         * config/rs6000/altivec.h: Likewise.
23028         * config/rs6000/biarch64.h: Likewise.
23029         * config/rs6000/crtresfpr.asm: Likewise.
23030         * config/rs6000/crtresgpr.asm: Likewise.
23031         * config/rs6000/crtresxfpr.asm: Likewise.
23032         * config/rs6000/crtresxgpr.asm: Likewise.
23033         * config/rs6000/crtsavfpr.asm: Likewise.
23034         * config/rs6000/crtsavgpr.asm: Likewise.
23035         * config/rs6000/darwin-asm.h: Likewise.
23036         * config/rs6000/darwin-fallback.c: Likewise.
23037         * config/rs6000/darwin-fpsave.asm: Likewise.
23038         * config/rs6000/darwin-ldouble.c: Likewise.
23039         * config/rs6000/darwin-tramp.asm: Likewise.
23040         * config/rs6000/darwin-unwind.h: Likewise.
23041         * config/rs6000/darwin-vecsave.asm: Likewise.
23042         * config/rs6000/darwin-world.asm: Likewise.
23043         * config/rs6000/e500crtres32gpr.asm: Likewise.
23044         * config/rs6000/e500crtres64gpr.asm: Likewise.
23045         * config/rs6000/e500crtres64gprctr.asm: Likewise.
23046         * config/rs6000/e500crtrest32gpr.asm: Likewise.
23047         * config/rs6000/e500crtrest64gpr.asm: Likewise.
23048         * config/rs6000/e500crtresx32gpr.asm: Likewise.
23049         * config/rs6000/e500crtresx64gpr.asm: Likewise.
23050         * config/rs6000/e500crtsav32gpr.asm: Likewise.
23051         * config/rs6000/e500crtsav64gpr.asm: Likewise.
23052         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
23053         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
23054         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
23055         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
23056         * config/rs6000/eabi-ci.asm: Likewise.
23057         * config/rs6000/eabi-cn.asm: Likewise.
23058         * config/rs6000/eabi.asm: Likewise.
23059         * config/rs6000/linux-unwind.h: Likewise.
23060         * config/rs6000/linux64.h: Likewise.
23061         * config/rs6000/paired.h: Likewise.
23062         * config/rs6000/paired.md: Likewise.
23063         * config/rs6000/ppc64-fp.c: Likewise.
23064         * config/rs6000/ppu_intrinsics.h: Likewise.
23065         * config/rs6000/rs6000.h: Likewise.
23066         * config/rs6000/si2vmx.h: Likewise.
23067         * config/rs6000/sol-ci.asm: Likewise.
23068         * config/rs6000/sol-cn.asm: Likewise.
23069         * config/rs6000/spe.h: Likewise.
23070         * config/rs6000/spu2vmx.h: Likewise.
23071         * config/rs6000/sysv4.h: Likewise.
23072         * config/rs6000/tramp.asm: Likewise.
23073         * config/rs6000/vec_types.h: Likewise.
23074         * config/s390/linux-unwind.h: Likewise.
23075         * config/s390/tpf-unwind.h: Likewise.
23076         * config/score/crti.asm: Likewise.
23077         * config/score/crtn.asm: Likewise.
23078         * config/sh/crt1.asm: Likewise.
23079         * config/sh/crti.asm: Likewise.
23080         * config/sh/crtn.asm: Likewise.
23081         * config/sh/divtab-sh4-300.c: Likewise.
23082         * config/sh/divtab-sh4.c: Likewise.
23083         * config/sh/divtab.c: Likewise.
23084         * config/sh/lib1funcs-4-300.asm: Likewise.
23085         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
23086         * config/sh/lib1funcs.asm: Likewise.
23087         * config/sh/lib1funcs.h: Likewise.
23088         * config/sh/linux-atomic.asm: Likewise.
23089         * config/sh/linux-unwind.h: Likewise.
23090         * config/sh/shmedia.h: Likewise.
23091         * config/sh/sshmedia.h: Likewise.
23092         * config/sh/ushmedia.h: Likewise.
23093         * config/sparc/crtfastmath.c: Likewise.
23094         * config/sparc/linux-unwind.h: Likewise.
23095         * config/sparc/sol2-c1.asm: Likewise.
23096         * config/sparc/sol2-ci.asm: Likewise.
23097         * config/sparc/sol2-cn.asm: Likewise.
23098         * config/spu/divmodti4.c: Likewise.
23099         * config/spu/divv2df3.c: Likewise.
23100         * config/spu/float_disf.c: Likewise.
23101         * config/spu/float_unsdidf.c: Likewise.
23102         * config/spu/float_unsdisf.c: Likewise.
23103         * config/spu/float_unssidf.c: Likewise.
23104         * config/spu/mfc_multi_tag_release.c: Likewise.
23105         * config/spu/mfc_multi_tag_reserve.c: Likewise.
23106         * config/spu/mfc_tag_release.c: Likewise.
23107         * config/spu/mfc_tag_reserve.c: Likewise.
23108         * config/spu/mfc_tag_table.c: Likewise.
23109         * config/spu/multi3.c: Likewise.
23110         * config/spu/spu_internals.h: Likewise.
23111         * config/spu/spu_intrinsics.h: Likewise.
23112         * config/spu/spu_mfcio.h: Likewise.
23113         * config/spu/vec_types.h: Likewise.
23114         * config/spu/vmx2spu.h: Likewise.
23115         * config/stormy16/stormy16-lib2.c: Likewise.
23116         * config/svr4.h: Likewise.
23117         * config/sync.c: Likewise.
23118         * config/v850/lib1funcs.asm: Likewise.
23119         * config/vxlib-tls.c: Likewise.
23120         * config/vxlib.c: Likewise.
23121         * config/vxworks-dummy.h: Likewise.
23122         * config/xtensa/crti.asm: Likewise.
23123         * config/xtensa/crtn.asm: Likewise.
23124         * config/xtensa/ieee754-df.S: Likewise.
23125         * config/xtensa/ieee754-sf.S: Likewise.
23126         * config/xtensa/lib1funcs.asm: Likewise.
23127         * config/xtensa/lib2funcs.S: Likewise.
23128         * config/xtensa/linux-unwind.h: Likewise.
23129         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
23130         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
23131         * coretypes.h: Likewise.
23132         * crtstuff.c: Likewise.
23133         * defaults.h: Likewise.
23134         * dwarf2.h: Likewise.
23135         * emutls.c: Likewise.
23136         * gbl-ctors.h: Likewise.
23137         * gcov-io.h: Likewise.
23138         * ginclude/float.h: Likewise.
23139         * ginclude/iso646.h: Likewise.
23140         * ginclude/stdarg.h: Likewise.
23141         * ginclude/stdbool.h: Likewise.
23142         * ginclude/stddef.h: Likewise.
23143         * ginclude/stdfix.h: Likewise.
23144         * ginclude/stdint-gcc.h: Likewise.
23145         * ginclude/tgmath.h: Likewise.
23146         * gthr-aix.h: Likewise.
23147         * gthr-dce.h: Likewise.
23148         * gthr-gnat.c: Likewise.
23149         * gthr-gnat.h: Likewise.
23150         * gthr-lynx.h: Likewise.
23151         * gthr-mipssde.h: Likewise.
23152         * gthr-nks.h: Likewise.
23153         * gthr-posix.c: Likewise.
23154         * gthr-posix.h: Likewise.
23155         * gthr-posix95.h: Likewise.
23156         * gthr-rtems.h: Likewise.
23157         * gthr-single.h: Likewise.
23158         * gthr-solaris.h: Likewise.
23159         * gthr-tpf.h: Likewise.
23160         * gthr-vxworks.h: Likewise.
23161         * gthr-win32.h: Likewise.
23162         * gthr.h: Likewise.
23163         * libgcc2.c: Likewise.
23164         * libgcc2.h: Likewise.
23165         * libgcov.c: Likewise.
23166         * tsystem.h: Likewise.
23167         * typeclass.h: Likewise.
23168         * unwind-c.c: Likewise.
23169         * unwind-compat.h: Likewise.
23170         * unwind-dw2-fde-compat.c: Likewise.
23171         * unwind-dw2-fde-darwin.c: Likewise.
23172         * unwind-dw2-fde-glibc.c: Likewise.
23173         * unwind-dw2-fde.c: Likewise.
23174         * unwind-dw2-fde.h: Likewise.
23175         * unwind-dw2.c: Likewise.
23176         * unwind-dw2.h: Likewise.
23177         * unwind-generic.h: Likewise.
23178         * unwind-pe.h: Likewise.
23179         * unwind-sjlj.c: Likewise.
23180         * unwind.inc: Likewise.
23181         * config/arm/neon-gen.ml: Change generated copyright header to
23182         refer to version 3 of the GNU General Public License with
23183         version 3.1 of the GCC Runtime Library Exception and to point
23184         readers at the COPYING3 and COPYING3.RUNTIME files and the
23185         FSF's license web page.
23186         * config/arm/arm_neon.h: Regenerate.
23187
23188 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
23189
23190         * config/cris/cris.md: Change copyright header to refer to version
23191         3 of the GNU General Public License.
23192         * doc/install.texi2html: Change copyright header to refer to version
23193         3 of the GNU General Public License and to point readers at the
23194         COPYING3 file and the FSF's license web page.
23195         * config/vax/linux.h: Likewise.
23196
23197 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
23198
23199         * config/i386/i386.md (cmpcc): New.
23200         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
23201         (sync_compare_and_swap_cc*): Delete.
23202
23203         * config/s390/s390.c (s390_compare_emitted): Remove.
23204         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
23205         s390_compare_emitted used to be handled.  Assert that modes match.
23206         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
23207         refer to sync_compare_and_swap_ccsi.
23208         * config/s390/s390.h (s390_compare_emitted): Remove.
23209         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
23210         instead of s390_compare_emitted.
23211         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
23212         instead of s390_compare_emitted.
23213         * config/s390/s390.md (cmpcc): New.
23214         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
23215         CC_REGNUM, do not pretend it's set.
23216         (sync_compare_and_swap_cc*): Delete.
23217         * config/s390/predicates.md (cc_reg_operand): New.
23218
23219         * expr.c (sync_compare_and_swap_cc): Delete.
23220         * optabs.h (sync_compare_and_swap_cc): Delete.
23221         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
23222         is being used with can_compare_p.
23223         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
23224         (find_cc_set): New.
23225         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
23226         look for a MODE_CC set instead.  Use emit_store_flag.
23227         (expand_compare_and_swap_loop): Likewise, with some additional
23228         complication to avoid a force_reg when useless.  Use
23229         emit_cmp_and_jump_insns.
23230         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
23231         * doc/md.texi (sync_compare_and_swap_cc): Merge with
23232         sync_compare_and_swap documentation.
23233
23234 2009-04-09  Jan Hubicka  <jh@suse.cz>
23235
23236         * except.c (find_prev_try): Break out from ....
23237         (duplicate_eh_regions): ... here; properly update prev_try pointers
23238         when duplication part of tree.
23239         (dump_eh_tree): Improve dumping.
23240         (verify_eh_region): New.
23241         (verify_eh_tree): Use it.
23242
23243 2009-04-06  Richard Guenther  <rguenther@suse.de>
23244
23245         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
23246         &ARRAY addresses by adjusting their types and prepending
23247         a conversion.
23248         * tree-cfg.c (verify_gimple_assign_single): Verify that
23249         addresses are correct.
23250
23251 2009-04-09  Richard Guenther  <rguenther@suse.de>
23252
23253         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
23254         indices into an array reference if possible.
23255         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
23256         Fold POINTER_PLUS_EXPR statements with invariant address.
23257
23258 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
23259
23260         PR target/39634
23261         * config.gcc (powerpc64-*-linux*): Always build biarch.
23262
23263 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
23264
23265         PR c/39613
23266         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
23267         it and pedwarn if this results in an INTEGER_CST.
23268
23269 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23270
23271         * doc/install.texi: Update minimum GMP version.  Remove obsolete
23272         text in MPFR section.
23273
23274 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
23275
23276         * dwarf2out.c (class_scope_p): New static inline.
23277         (class_or_namespace_scope_p): Use it.
23278         (gen_variable_die): Use DW_TAG_member tag for static data member
23279         declarations instead of DW_TAG_variable.
23280
23281         PR middle-end/39573
23282         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
23283         variables.
23284
23285 2009-04-08  Richard Guenther  <rguenther@suse.de>
23286
23287         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
23288         valueize random data.
23289
23290 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
23291
23292         * config.gcc (aix tm_file):  Add aix-stdint.h.
23293         (aix tm clause use_gcc_stdint):  Set to wrap.
23294         * config/rs6000/aix-stdint.h:  New file.
23295
23296 2009-04-08  Richard Guenther  <rguenther@suse.de>
23297
23298         PR middle-end/36291
23299         * tree-dfa.c (add_referenced_var): Do not recurse into
23300         global initializers.
23301         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
23302         exposed variables.
23303         (fold_const_aggregate_ref): Likewise.
23304
23305 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
23306
23307         * recog.c (ordered_comparison_operator): New.
23308         * gensupport.c (std_preds): Add it.
23309         * doc/md.texi (Machine-Independent Predicates): Document it.
23310
23311 2009-04-08  Jan Hubicka  <jh@suse.cz>
23312
23313         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
23314         * function.h (rtl_eh): Remove exception_handler_label_map.
23315         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
23316         remove_exception_handler_label, for_each_eh_label_1): Remove.
23317         (rtl_remove_unreachable_regions): Remove.
23318         (convert_from_eh_region_ranges): Do not remove unreachable regions.
23319         (find_exception_handler_labels): Don't build the hashtable.
23320         (maybe_remove_eh_handler): Remove.
23321         (for_each_eh_label): Rewrite to walk the tree.
23322         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
23323         * except.h (maybe_remove_eh_handler): Remove.
23324         * passes.c (init_optimization_passes): Schedule second EH cleanup
23325         before out-of-ssa.
23326         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
23327         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
23328
23329 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
23330
23331         * genoutput.c (validate_optab_operands): New.
23332         (gen_insn, gen_expand): Call it.
23333
23334         * genflags.c (gen_insn): Detect misused iterators.
23335         (main): Pass line_no to gen_insn, exit with status 1 on error.
23336
23337         * genextract.c (line_no): Make global.
23338         (VEC_safe_set_locstr): Change assertion to error message.
23339         (main): Exit with status 1 on error.
23340
23341 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
23342
23343         PR c/39614
23344         PR c/39673
23345         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
23346         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
23347         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
23348         * c-convert.c (convert): Do not call fold on results of conversion
23349         functions when the result is a C_MAYBE_CONST_EXPR.
23350         * c-parser.c (c_parser_postfix_expression): Do not fold condition
23351         of __builtin_choose_expr.
23352         * c-typeck.c (remove_c_maybe_const_expr): New.
23353         (build_unary_op, build_conditional_expr, build_compound_expr,
23354         build_binary_op, c_objc_common_truthvalue_conversion): Call
23355         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
23356         integer operands.
23357
23358 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
23359
23360         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
23361         CODE to produce a new one. Add a prototype to use fold_convert_const
23362
23363 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
23364
23365         PR bootstrap/39660
23366         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
23367         mix declarations and code.
23368
23369 2009-04-08  Ben Elliston  <bje@au.ibm.com>
23370
23371         * gcc.c: Replace `CC' with `GCC' throughout.
23372
23373 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
23374
23375         * doc/invoke.texi: Document Atom support.
23376
23377 2009-04-07  Jason Merrill  <jason@redhat.com>
23378
23379         PR c++/25185
23380         * c-common.h, c-common.c: Add flag_pretty_templates.
23381         * c-opts.c (c_common_handle_option): Set it.
23382         * c.opt: Add -fno-pretty-templates.
23383         * doc/invoke.texi (C++ Dialect Options): Likewise.
23384
23385 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
23386
23387         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
23388         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
23389         (ia64_expand_builtin): Likewise.
23390
23391 2009-04-07  Martin Jambor  <mjambor@suse.cz>
23392
23393         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
23394         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
23395         ADDR_EXPRS are include too.
23396
23397 2009-04-07  Richard Guenther  <rguenther@suse.de>
23398
23399         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
23400         decls are only used if passes as parameters or if they are
23401         local statics and the call is not to a builtin.
23402         (call_may_clobber_ref_p_1): Likewise.
23403
23404 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
23405
23406         * expr.c (do_store_flag): Remove last argument.  Simplify code
23407         to avoid duplication of tests already done by can_compare_p.
23408         (expand_expr_real_1): Adjust caller.
23409
23410 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
23411
23412         * optabs.c (can_compare_p): Test the predicate of a
23413         cbranch and cstore pattern.
23414
23415 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
23416
23417         * expr.c (convert_move): Use emit_store_flag instead of
23418         "emulating" it.
23419
23420 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
23421
23422         * config/i386/i386.c (ix86_compare_emitted): Remove.
23423         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
23424         ix86_compare_op0 like ix86_compare_emitted used to be handled.
23425         * config/i386/i386.h (ix86_compare_emitted): Remove.
23426         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
23427         instead of ix86_compare_emitted.
23428         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
23429
23430 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
23431
23432         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
23433         Add t-sysroot-suffix to tmake_file.
23434         * config/print-sysroot-suffix.sh: New file.
23435         * config/t-sysroot-suffix: New file.
23436
23437 2009-04-07  Ben Elliston  <bje@au.ibm.com>
23438
23439         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
23440         as the latter produces a warning when the target does not support
23441         infinity.
23442
23443 2009-04-07  Ben Elliston  <bje@au.ibm.com>
23444
23445         * dfp.c: Replace type punning assignments with memcpy throughout.
23446         * Makefile.in (dfp.o-warn): Remove.
23447
23448 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
23449
23450         PR target/39634
23451         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
23452         Include soft-fp/t-softfp after rs6000/t-linux64.
23453
23454 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
23455
23456         * stor-layout.c (set_sizetype): Use the full precision of their
23457         machine mode for bitsize types.
23458
23459 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
23460
23461         * config/i386/i386.md: Revert 2 accidental checkins.
23462
23463 2009-04-06  Joey Ye  <joey.ye@intel.com>
23464             Xuepeng Guo  <xuepeng.guo@intel.com>
23465             H.J. Lu  <hongjiu.lu@intel.com>
23466
23467         Atom pipeline model, tuning and insn selection.
23468         * config.gcc (atom): Add atom config options and target.
23469
23470         * config/i386/atom.md: New.
23471
23472         * config/i386/i386.c (atom_cost): New cost.
23473         (m_ATOM): New macro flag.
23474         (initial_ix86_tune_features): Set m_ATOM.
23475         (x86_accumulate_outgoing_args): Likewise.
23476         (x86_arch_always_fancy_math_387): Likewise.
23477         (processor_target): Add Atom cost.
23478         (cpu_names): Add Atom cpu name.
23479         (override_options): Set Atom ISA.
23480         (ix86_issue_rate): New case PROCESSOR_ATOM.
23481         (ix86_adjust_cost): Likewise.
23482
23483         * config/i386/i386.h (TARGET_ATOM): New target macro.
23484         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
23485         (TARGET_OPT_AGU): New target option.
23486         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
23487         (processor_type): Add PROCESSOR_ATOM.
23488
23489         * config/i386/i386.md (cpu): Add new value "atom".
23490         (use_carry, movu): New attr.
23491         (atom.md): Include atom.md.
23492         (adddi3_carry_rex64): Set attr "use_carry".
23493         (addqi3_carry): Likewise.
23494         (addhi3_carry): Likewise.
23495         (addsi3_carry): Likewise.
23496         (*addsi3_carry_zext): Likewise.
23497         (subdi3_carry_rex64): Likewise.
23498         (subqi3_carry): Likewise.
23499         (subhi3_carry): Likewise.
23500         (subsi3_carry): Likewise.
23501         (x86_movdicc_0_m1_rex64): Likewise.
23502         (*x86_movdicc_0_m1_se): Likewise.
23503         (x86_movsicc_0_m1): Likewise.
23504         (*x86_movsicc_0_m1_se): Likewise.
23505         (*adddi_1_rex64): Emit add insn as much as possible.
23506         (*addsi_1): Likewise.
23507         (return_internal): Set atom_unit.
23508         (return_internal_long): Likewise.
23509         (return_pop_internal): Likewise.
23510         (*rcpsf2_sse): Set atom_sse_attr attr.
23511         (*qrt<mode>2_sse): Likewise.
23512         (*prefetch_sse): Likewise.
23513
23514         * config/i386/i386-c.c (ix86_target_macros_internal): New case
23515         PROCESSOR_ATOM.
23516         (ix86_target_macros_internal): Likewise.
23517
23518         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
23519         (*prefetch_sse_rex): Likewise.
23520         (sse_rcpv4sf2): Likewise.
23521         (sse_vmrcpv4sf2): Likewise.
23522         (sse_sqrtv4sf2): Likewise.
23523         (<sse>_vmsqrt<mode>2): Likewise.
23524         (sse_ldmxcsr): Likewise.
23525         (sse_stmxcsr): Likewise.
23526         (*sse_sfence): Likewise.
23527         (sse2_clflush): Likewise.
23528         (*sse2_mfence): Likewise.
23529         (*sse2_lfence): Likewise.
23530         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
23531         (<sse>_movup<ssemodesuffixf2c>): Likewise.
23532         (avx_movdqu<avxmodesuffix>): Likewise.
23533         (avx_lddqu<avxmodesuffix>): Likewise.
23534         (sse2_movntv2di): Change attr "type" to "ssemov".
23535         (sse2_movntsi): Likewise.
23536         (rsqrtv8sf2): Change attr "type" to "sseadd".
23537         (sse3_addsubv2df3): Set attr "atom_unit".
23538         (sse3_h<plusminus_insn>v4sf3): Likewise.
23539         (*sse2_pmaddwd): Likewise.
23540         (*vec_extractv2di_1_rex64): Likewise.
23541         (*vec_extractv2di_1_avx): Likewise.
23542         (sse2_psadbw): Likewise.
23543         (ssse3_phaddwv8hi3): Likewise.
23544         (ssse3_phaddwv4hi3): Likewise.
23545         (ssse3_phadddv4si3): Likewise.
23546         (ssse3_phadddv2si3): Likewise.
23547         (ssse3_phaddswv8hi3): Likewise.
23548         (ssse3_phaddswv4hi3): Likewise.
23549         (ssse3_phsubwv8hi3): Likewise.
23550         (ssse3_phsubwv4hi3): Likewise.
23551         (ssse3_phsubdv4si3): Likewise.
23552         (ssse3_phsubdv2si3): Likewise.
23553         (ssse3_phsubswv8hi3): Likewise.
23554         (ssse3_phsubswv4hi3): Likewise.
23555         (ssse3_pmaddubsw128): Likewise.
23556         (sse3_pmaddubsw: Likewise.
23557         (ssse3_palignrti): Likewise.
23558         (ssse3_palignrdi): Likewise.
23559
23560 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
23561
23562         * doc/install.texi (Specific): Fix two cross-references to MinGW.
23563
23564 2009-04-06  Richard Guenther  <rguenther@suse.de>
23565
23566         PR tree-optimization/28868
23567         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
23568         of which PHI results we inserted.
23569         (insert_into_preds_of_block): Record inserted PHIs.
23570         (eliminate): Eliminate redundant PHI nodes.
23571         (init_pre): Init inserted_phi_names.
23572
23573 2009-04-06  Richard Guenther  <rguenther@suse.de>
23574
23575         PR tree-optimization/39643
23576         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
23577         IMAGPART_EXPRs of complex constants.
23578         (execute_fold_all_builtins): If we folded a call queue
23579         TODO_update_address_taken.
23580
23581 2009-04-06  Jan Hubicka  <jh@suse.cz>
23582
23583         PR middle-end/39659
23584         * except.c (remove_unreachable_regions): Propagate may_contain_throw
23585         flag.
23586
23587 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
23588
23589         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
23590         delay slot.
23591         (ic_invalidate_array): Likewise.
23592
23593 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
23594
23595         * calls.c (emit_library_call_value_1): Fix a problem with parameter
23596         alignment for library calls.
23597
23598 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
23599
23600         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
23601         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
23602         * config/i386/mingw-stdint.h:  New file.
23603
23604 2009-04-05  Richard Guenther  <rguenther@suse.de>
23605
23606         PR tree-optimization/39648
23607         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
23608         our &A vs. &A[0] IL deficiencies.
23609
23610 2009-04-04  Jan Hubicka  <jh@suse.cz>
23611
23612         * except.c (sjlj_find_directly_reachable_regions): Be ready for
23613         removed toplevel regions.
23614         (sjlj_mark_call_sites): Likewise.
23615
23616 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
23617
23618         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
23619         (cygwin tm clause use_gcc_stdint):  Set to wrap.
23620         * config/i386/cygwin-stdint.h:  New file.
23621
23622 2009-04-04  Richard Guenther  <rguenther@suse.de>
23623
23624         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
23625         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
23626         single-argument PHIs if we are in loop-closed SSA form.
23627         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
23628         for the pre-condition.
23629         (slpeel_tree_peel_loop_to_edge): Likewise.
23630         (vect_build_loop_niters): Take an optional sequence to append stmts.
23631         (vect_generate_tmps_on_preheader): Likewise.
23632         (vect_do_peeling_for_loop_bound): Take extra guards for the
23633         pre-condition.
23634         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
23635         the cost model check.
23636         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
23637         guards if we are going to peel.  Do not apply versioning in that case.
23638         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
23639         (vect_do_peeling_for_loop_bound): Likewise.
23640         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
23641         loop bound only record extra pre-conditions, do not apply loop
23642         versioning.
23643
23644 2009-04-04  Richard Guenther  <rguenther@suse.de>
23645
23646         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
23647         renaming code.
23648
23649 2009-04-04  Jan Hubicka  <jh@suse.cz>
23650
23651         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
23652         last_basic_block for size of bb->index indexed array.
23653         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
23654         compute_out, link_btr_uses, build_btr_def_use_webs,
23655         build_btr_def_use_webs, migrate_btr_defs): Likewise.
23656
23657 2009-04-04  Jan Hubicka  <jh@suse.cz>
23658
23659         * except.c (remove_eh_handler_and_replace): Break out from ...
23660         (remove_eh_handler): ... here.
23661         (bring_to_root): New function.
23662         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
23663         handled ones, bring others to root of tree.
23664
23665 2009-04-04  Jan Hubicka  <jh@suse.cz>
23666
23667         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
23668         (all_phis_safe_to_merge): New function.
23669         (update_info): New structure.
23670         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
23671         (cleanup_empty_eh): Update SSA if possible.
23672
23673 2009-04-04  Richard Guenther  <rguenther@suse.de>
23674
23675         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
23676         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
23677         (append_vuse): Likewise.
23678
23679 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
23680
23681         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
23682         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
23683         instead of REG_UNSAVED for DW_CFA_undefined.
23684         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
23685         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
23686         outermost frame.
23687
23688 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
23689
23690         PR target/39501
23691         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
23692
23693 2009-04-04  Richard Guenther  <rguenther@suse.de>
23694
23695         PR tree-optimization/8781
23696         PR tree-optimization/37892
23697         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
23698         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
23699         (valueize_refs): Call it for *& valueizations.
23700         (shared_reference_ops_from_ref): Rename to ...
23701         (valueize_shared_reference_ops_from_ref): ... this and valueize.
23702         (shared_reference_ops_from_call): Rename to ...
23703         (valueize_shared_reference_ops_from_call): ... this and valueize.
23704         (vn_reference_lookup): Update.
23705         (visit_reference_op_call): Likewise.
23706         * tree-ssa-pre.c (phi_translate_1): Fold *&.
23707         (eliminate): Value-replace the call address in call statements.
23708
23709 2009-04-04  Richard Guenther  <rguenther@suse.de>
23710
23711         PR tree-optimization/39636
23712         * tree-ssa-forwprop.c
23713         (forward_propagate_addr_into_variable_array_index): Check for
23714         GIMPLE_ASSIGN before accessing the rhs code.
23715
23716 2009-04-03  Jason Merrill  <jason@redhat.com>
23717
23718         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
23719
23720 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
23721
23722         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
23723         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
23724         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
23725         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
23726         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
23727         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
23728         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
23729         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
23730         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
23731         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
23732         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
23733         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
23734         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
23735         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
23736         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
23737         Use fr_reg_or_fp01_operand instead of fr_register_operand
23738
23739         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
23740         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
23741         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
23742
23743 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
23744
23745         PR rtl-optimization/39607
23746         PR rtl-optimization/39631
23747
23748         Revert:
23749
23750         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
23751         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
23752         instead of DF_LR_OUT.
23753         * ira-lives.c (process_bb_node_lives): Ditto.
23754         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
23755         instead of DF_LR_{OUT,IN}.
23756         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
23757         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
23758
23759 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
23760
23761         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
23762         (execute_lower_omp): Always run but take the short way out if -fopenmp
23763         is not given.
23764         (gate_lower_omp): Remove, forcing the pass manager to always run the
23765         pass and always set PROP_gimple_lomp.
23766         (pass_lower_omp): Remove gate function.
23767         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
23768         PROP_trees.  Instead, require it.
23769         * ipa-cp.c (pass_ipa_cp): Likewise.
23770         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
23771         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
23772         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
23773         and PROP_gimple_leh.
23774
23775 2009-04-03  Richard Guenther  <rguenther@suse.de>
23776
23777         PR middle-end/13146
23778         PR tree-optimization/23940
23779         PR tree-optimization/33237
23780         PR middle-end/33974
23781         PR middle-end/34093
23782         PR tree-optimization/36201
23783         PR tree-optimization/36230
23784         PR tree-optimization/38049
23785         PR tree-optimization/38207
23786         PR tree-optimization/38230
23787         PR tree-optimization/38301
23788         PR tree-optimization/38585
23789         PR middle-end/38895
23790         PR tree-optimization/38985
23791         PR tree-optimization/39299
23792         * tree-ssa-structalias.h: Remove.
23793         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
23794         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
23795         (struct vuse_element_d): Remove.
23796         (struct vuse_vec_d): Likewise.
23797         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
23798         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
23799         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
23800         VUSE_ELEMENT_VAR): Likewise.
23801         (struct voptype_d): Likewise.
23802         (NUM_VOP_FREE_BUCKETS): Likewise.
23803         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
23804         (struct stmt_operands_d): Remove.
23805         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
23806         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
23807         VDEF_NUM, VDEF_VECT): Likewise.
23808         (copy_virtual_operands): Remove.
23809         (operand_build_cmp): Likewise.
23810         (create_ssa_artificial_load_stmt): Likewise.
23811         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
23812         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
23813         vuse_index and mayuse_index members.  Pack and move done and iter_type
23814         members to the front.
23815         (SSA_OP_VMAYUSE): Remove.
23816         (SSA_OP_VIRTUAL_USES): Adjust.
23817         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
23818         (unlink_stmt_vdef): Declare.
23819         (add_to_addressable_set): Remove.
23820         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
23821         (vrp_visit_stmt): Likewise.
23822         * doc/tree-ssa.texi (Alias analysis): Update.
23823         * doc/invoke.texi (max-aliased-vops): Remove docs.
23824         (avg-aliased-vops): Likewise.
23825         * tree-into-ssa.c (syms_to_rename): Remove.
23826         (need_to_update_vops_p): Likewise.
23827         (need_to_initialize_update_ssa_p): Rename to ...
23828         (update_ssa_initialized_fn): ... this.  Track function we are
23829         initialized for.
23830         (symbol_marked_for_renaming): Simplify.
23831         (add_new_name_mapping): Do not set need_to_update_vops_p.
23832         (dump_currdefs): Use SYMS_TO_RENAME.
23833         (rewrite_update_stmt): Always walk all uses/defs.
23834         (dump_update_ssa): Adjust.
23835         (init_update_ssa): Take function argument.  Track what we are
23836         initialized for.
23837         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
23838         (create_new_def_for): Initialize for cfun, assert we are initialized
23839         for cfun.
23840         (mark_sym_for_renaming): Simplify.
23841         (mark_set_for_renaming): Do not initialize update-ssa.
23842         (need_ssa_update_p): Simplify.  Take function argument.
23843         (name_mappings_registered_p): Assert we ask for the correct function.
23844         (name_registered_for_update_p): Likewise.
23845         (ssa_names_to_replace): Likewise.
23846         (release_ssa_name_after_update_ssa): Likewise.
23847         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
23848         (dump_decl_set): Do not print a newline.
23849         (debug_decl_set): Do it here.
23850         (dump_update_ssa): And here.
23851         * tree-ssa-loop-im.c (move_computations): Adjust.
23852         (movement_possibility): Likewise.
23853         (determine_max_movement): Likewise.
23854         (gather_mem_refs_stmt): Likewise.
23855         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
23856         or NAME_MEMORY_TAG.
23857         * tree-complex.c (update_all_vops): Remove.
23858         (expand_complex_move): Adjust.
23859         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
23860         Simplify test for memory referencing statement.  Exclude
23861         non-invariant ADDR_EXPRs.
23862         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
23863         * tree-loop-distribution.c (generate_memset_zero): Adjust.
23864         (rdg_flag_uses): Likewise.
23865         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
23866         related code.
23867         (tree_optimize_tail_calls_1): Also split the
23868         edge from the entry block if we have degenerate PHI nodes in
23869         the first basic block.
23870         * tree.c (init_ttree): Remove memory-tag related code.
23871         (tree_code_size): Likewise.
23872         (tree_node_structure): Likewise.
23873         (build7_stat): Re-write to be build6_stat.
23874         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
23875         (SSA_VAR_P): Adjust.
23876         (struct tree_memory_tag): Remove.
23877         (struct tree_memory_partition_tag): Likewise.
23878         (union tree_node): Adjust.
23879         (build7): Re-write to be build6.
23880         * tree-pass.h (pass_reset_cc_flags): Remove.
23881         (TODO_update_address_taken): New flag.
23882         (pass_simple_dse): Remove.
23883         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
23884         * params.h (MAX_ALIASED_VOPS): Remove.
23885         (AVG_ALIASED_VOPS): Likewise.
23886         * omp-low.c (expand_omp_taskreg): Update SSA form.
23887         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
23888         aliases the lhs in a copy stmt.
23889         * tree-ssa-dse.c (struct address_walk_data): Remove.
23890         (memory_ssa_name_same): Likewise.
23891         (memory_address_same): Likewise.
23892         (get_kill_of_stmt_lhs): Likewise.
23893         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
23894         unused stores.  Look through PHI nodes into post-dominated regions.
23895         (dse_optimize_stmt): Simplify.  Properly remove stores.
23896         (tree_ssa_dse): Compute dominators.
23897         (execute_simple_dse): Remove.
23898         (pass_simple_dse): Likewise.
23899         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
23900         gimple_loaded_syms and gimple_stored_syms computation.
23901         * toplev.c (dump_memory_report): Dump alias and pta stats.
23902         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
23903         (vn_reference_eq): Likewise.
23904         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
23905         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
23906         valueize_vuses): Remove.
23907         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
23908         (get_def_ref_stmt_vuse): ... this.
23909         (vn_reference_lookup_2): New function.
23910         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
23911         walking equivalent vuses.  Simplify.
23912         (vn_reference_lookup): Likewise.
23913         (vn_reference_insert): Likewise.
23914         (vn_reference_insert_pieces): Likewise.
23915         (visit_reference_op_call): Simplify.
23916         (visit_reference_op_load): Likewise.
23917         (visit_reference_op_store): Likewise.
23918         (init_scc_vn): Remove shared_lookup_vuses initialization.
23919         (free_scc_vn): Remove shared_lookup_vuses freeing.
23920         (sort_vuses, sort_vuses_heap): Remove.
23921         (get_ref_from_reference_ops): Export.
23922         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
23923         vector with single vuse pointer.
23924         (vn_reference_lookup_pieces, vn_reference_lookup,
23925         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
23926         (shared_vuses_from_stmt): Remove.
23927         (get_ref_from_reference_ops): Declare.
23928         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
23929         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
23930         memory-tag related code.
23931         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
23932         (likely_value): Add comment, skip static-chain of call statements.
23933         (surely_varying_stmt_p): Adjust.
23934         (gimplify_and_update_call_from_tree): Likewise.
23935         (execute_fold_all_builtins): Do not rebuild alias info.
23936         (gimplify_and_update_call_from_tree): Properly update VOPs.
23937         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
23938         (copy_ref_info): Remove memory-tag related code.
23939         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
23940         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
23941         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
23942         computation.
23943         * tree-ssa-dom.c (gimple_p): Remove typedef.
23944         (eliminate_redundant_computations): Adjust.
23945         (record_equivalences_from_stmt): Likewise.
23946         (avail_expr_hash): Likewise.
23947         (avail_expr_eq): Likewise.
23948         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
23949         (stmt_makes_single_load): Likewise.
23950         (stmt_makes_single_store): Likewise.
23951         * tree-ssa-alias.c: Rewrite completely.
23952         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
23953         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
23954         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
23955         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
23956         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
23957         Remove public functions.
23958         (pass_reset_cc_flags): Remove.
23959         (pass_build_alias): Move ...
23960         * tree-ssa-structalias.c (pass_build_alias): ... here.
23961         * tree-ssa-alias.c (may_be_aliased): Move ...
23962         * tree-flow-inline.h (may_be_aliased): ... here.
23963         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
23964         count_uses_and_derefs): Move ...
23965         * gimple.c: ... here.
23966         * gimple.h (count_uses_and_derefs): Declare.
23967         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
23968         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
23969         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
23970         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
23971         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
23972         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
23973         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
23974         New functions.
23975         * tree-dfa.c (refs_may_alias_p): Move ...
23976         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
23977         * tree-ssa-alias.h: New file.
23978         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
23979         (statement_sink_location): Likewise.
23980         * opts.c (decode_options): Do not adjust max-aliased-vops or
23981         avg-aliased-vops values.
23982         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
23983         (TV_CALL_CLOBBER): Likewise.
23984         (TV_FLOW_SENSITIVE): Likewise.
23985         (TV_FLOW_INSENSITIVE): Likewise.
23986         (TV_MEMORY_PARTITIONING): Likewise.
23987         (TV_ALIAS_STMT_WALK): New timevar.
23988         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
23989         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
23990         (get_address_description): Remove memory-tag related code.
23991         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
23992         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
23993         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
23994         and immediate uses in statements.  Document.
23995         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
23996         (dump_symbols): Remove.
23997         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
23998         * alias.c (get_deref_alias_set): New function split out from ...
23999         (get_alias_set): ... here.
24000         * alias.h (get_deref_alias_set): Declare.
24001         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
24002         type parameter.  Remove restrict pointer handling.  Create a
24003         ref-all pointer in case type-based alias sets do not conflict.
24004         (vect_analyze_data_refs): Remove SMT related code.
24005         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
24006         (vectorizable_load): Likewise.
24007         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
24008         (DR_SYMBOL_TAG, DR_VOPS): Remove.
24009         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
24010         Ignore vops and SMTs.
24011         (dr_analyze_alias): Likewise..
24012         (free_data_ref): Likewise.
24013         (create_data_ref): Likewise.
24014         (analyze_all_data_dependences): Likewise.
24015         (get_references_in_stmt): Adjust.
24016         * tree-flow-inline.h (gimple_aliases_computed_p,
24017         gimple_addressable_vars, gimple_call_clobbered_vars,
24018         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
24019         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
24020         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
24021         gimple_mem_ref_stats): Remove.
24022         (gimple_vop): New function.
24023         (op_iter_next_use): Remove vuses and mayuses cases.
24024         (op_iter_next_def): Remove vdefs case.
24025         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
24026         (clear_and_done_ssa_iter): Do not set removed fields.
24027         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
24028         Assert we are not iterating over vuses or vdefs if not also
24029         iterating over uses or defs.
24030         (op_iter_init_use): Likewise.
24031         (op_iter_init_def): Likewise.
24032         (op_iter_next_vdef): Remove.
24033         (op_iter_next_mustdef): Likewise.
24034         (op_iter_init_vdef): Likewise.
24035         (compare_ssa_operands_equal): Likewise.
24036         (link_use_stmts_after): Handle vuse operand.
24037         (is_call_used): Use is_call_clobbered.
24038         (is_call_clobbered): Global variables are always call clobbered,
24039         query the call-clobbers bitmap.
24040         (mark_call_clobbered): Ignore global variables.
24041         (clear_call_clobbered): Likewise.
24042         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
24043         virtual operands sanity check.
24044         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
24045         Remove.
24046         (TARGET_MEM_REF): Remove TMR_TAG operand.
24047         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
24048         Remove call-clobber related code.
24049         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
24050         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
24051         partitions or escape reason.
24052         (get_single_def_stmt, get_single_def_stmt_from_phi,
24053         get_single_def_stmt_with_phi): Remove.
24054         (dump_referenced_vars): Tidy.
24055         (get_ref_base_and_extent): Allow bare decls.
24056         (collect_dfa_stats): Adjust.
24057         * graphite.c (rename_variables_in_stmt): Adjust.
24058         (graphite_copy_stmts_from_block): Likewise.
24059         (translate_clast): Likewise.
24060         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
24061         (EXPR_DIES): New.
24062         (translate_vuse_through_block): Use the oracle.
24063         (phi_translate_1): Adjust.
24064         (value_dies_in_block_x): Use the oracle.  Cache the outcome
24065         in EXPR_DIES.
24066         (valid_in_sets): Check if the VUSE for
24067         a REFERENCE is available.
24068         (eliminate): Do not remove stmts during elimination,
24069         instead queue and remove them afterwards.
24070         (do_pre): Do not rebuild alias info.
24071         (pass_pre): Run TODO_rebuild_alias before PRE.
24072         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
24073         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
24074         (mark_all_v_defs_stmt): Remove.
24075         (mark_all_v_defs_seq): Adjust.
24076         (sra_replace): Likewise.
24077         (scalarize_use): Likewise.
24078         (scalarize_copy): Likewise.
24079         (scalarize_init): Likewise.
24080         (scalarize_ldst): Likewise.
24081         (todoflags): Remove.
24082         (tree_sra): Do not rebuild alias info.
24083         (tree_sra_early): Adjust.
24084         (pass_sra): Run TODO_update_address_taken before SRA.
24085         * tree-predcom.c (set_alias_info): Remove.
24086         (prepare_initializers_chain): Do not call it.
24087         (mark_virtual_ops_for_renaming): Adjust.
24088         (mark_virtual_ops_for_renaming_list): Remove.
24089         (initialize_root_vars): Adjust.
24090         (initialize_root_vars_lm): Likewise.
24091         (prepare_initializers_chain): Likewise.
24092         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
24093         (may_propagate_copy_into_stmt): Likewise.
24094         (merge_alias_info): Do nothing for now.
24095         (propagate_tree_value_into_stmt): Adjust.
24096         (stmt_may_generate_copy): Likewise.
24097         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
24098         not mark symbols for renaming.
24099         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
24100         with the same statement, make sure to update the new pointed-to one.
24101         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
24102         call statements, do not mark symbols for renaming.
24103         (mark_operand_necessary): Dump something.
24104         (ref_may_be_aliased): New function.
24105         (mark_aliased_reaching_defs_necessary_1): New helper function.
24106         (mark_aliased_reaching_defs_necessary): Likewise.
24107         (mark_all_reaching_defs_necessary_1): Likewise.
24108         (mark_all_reaching_defs_necessary): Likewise.
24109         (propagate_necessity): Do not process virtual PHIs.  For
24110         non-aliased loads mark all reaching definitions as necessary.
24111         For aliased loads and stores mark the immediate dominating
24112         aliased clobbers as necessary.
24113         (visited): New global static.
24114         (perform_tree_ssa_dce): Free visited bitmap after propagating
24115         necessity.
24116         (remove_dead_phis): Perform simple dead virtual PHI removal.
24117         (remove_dead_stmt): Properly unlink virtual operands when
24118         removing stores.
24119         (eliminate_unnecessary_stmts): Schedule PHI removal after
24120         stmt removal.
24121         * tree-ssa-ter.c (is_replaceable_p): Adjust.
24122         (process_replaceable): Likewise.
24123         (find_replaceable_in_bb): Likewise.
24124         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
24125         based on the single gimple vop.
24126         (verify_flow_insensitive_alias_info): Remove.
24127         (verify_flow_sensitive_alias_info): Likewise.
24128         (verify_call_clobbering): Likewise.
24129         (verify_memory_partitions): Likewise.
24130         (verify_alias_info): Likewise.
24131         (verify_ssa): Adjust..
24132         (execute_update_addresses_taken): Export.  Update SSA
24133         manually.  Optimize only when optimizing.  Use a local bitmap.
24134         (pass_update_address_taken): Remove TODO_update_ssa, add
24135         TODO_dump_func.
24136         (pass_update_address_taken): Just use TODO_update_address_taken.
24137         (init_tree_ssa): Do not initialize addressable_vars.
24138         (verify_ssa): Verify new VUSE / VDEF properties.
24139         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
24140         Do not call verify_alias_info.
24141         (delete_tree_ssa): Clear the VUSE, VDEF operands.
24142         Do not free the loaded and stored syms bitmaps.  Reset the escaped
24143         and callused solutions.  Do not free addressable_vars.
24144         Remove memory-tag related code.
24145         (warn_uninitialized_var): Aliases are always available.
24146         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
24147         * lambda-code.c (can_put_in_inner_loop): Adjust.
24148         (can_put_after_inner_loop): Likewise.
24149         (perfect_nestify): Likewise.
24150         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
24151         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
24152         (vectorizable_conversion): Do not mark symbols for renaming.
24153         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
24154         (expand_call_inline): Unlink the calls virtual operands before
24155         replacing it.
24156         (tree_function_versioning): Do not call update_ssa if we are not
24157         updating clones.  Simplify.
24158         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
24159         (propagate_with_phi): Likewise..
24160         * tree-outof-ssa.c (create_temp): Remove memory tag and call
24161         clobber code.  Assert we are not aliased or global.
24162         * tree-flow.h: Include tree-ssa-alias.h
24163         (enum escape_type): Remove.
24164         (struct mem_sym_stats_d): Likewise.
24165         (struct mem_ref_stats_d): Likewise.
24166         (struct gimple_df): Add vop member.  Remove global_var,
24167         call_clobbered_vars, call_used_vars, addressable_vars,
24168         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
24169         escaped and callused members.
24170         (struct ptr_info_def): Remove all members, add points-to solution
24171         member pt.
24172         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
24173         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
24174         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
24175         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
24176         (tree-ssa-alias.o): Likewise.
24177         (toplev.o): Add tree-ssa-alias.h
24178         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
24179         * gimple.c (gimple_set_bb): Fix off-by-one error.
24180         (is_gimple_reg): Do not handle memory tags.
24181         (gimple_copy): Also copy virtual operands.
24182         Delay updating the statement.  Do not reset loaded and stored syms.
24183         (gimple_set_stored_syms): Remove.
24184         (gimple_set_loaded_syms): Likewise.
24185         (gimple_call_copy_skip_args): Copy the virtual operands
24186         and mark the new statement modified.
24187         * tree-ssa-structalias.c (may_alias_p): Remove.
24188         (set_uids_in_ptset): Take the alias set to prune with as
24189         parameter.  Fold in the alias test of may_alias_p.
24190         (compute_points_to_sets): Compute whether a ptr is dereferenced
24191         in a local sbitmap.
24192         (process_constraint): Deal with &ANYTHING on the lhs, reject all
24193         other ADDRESSOF constraints on the lhs.
24194         (get_constraint_for_component_ref): Assert that we don't get
24195         ADDRESSOF constraints from the base of the reference.
24196         Properly generate UNKNOWN_OFFSET for DEREF if needed.
24197         (struct variable_info): Remove collapsed_to member.
24198         (get_varinfo_fc): Remove.
24199         (new_var_info): Do not set collapsed_to.
24200         (dump_constraint): Do not follow cycles.
24201         (dump_constraint_graph): Likewise.
24202         (build_pred_graph): Likewise.
24203         (build_succ_graph): Likewise.
24204         (rewrite_constraints): Likewise.
24205         (do_simple_structure_copy): Remove.
24206         (do_rhs_deref_structure_copy): Remove.
24207         (do_lhs_deref_structure_copy): Remove.
24208         (collapse_rest_of_var): Remove.
24209         (do_structure_copy): Re-implement.
24210         (pta_stats): New global variable.
24211         (dump_pta_stats): New function.
24212         (struct constraint_expr): Make offset signed.
24213         (UNKNOWN_OFFSET): Define special value.
24214         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
24215         (solution_set_expand): New helper function split out from ...
24216         (do_sd_constraint): ... here.
24217         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
24218         (do_ds_constraint): Likewise.
24219         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
24220         and CALLUSED = *CALLUSED.
24221         (set_union_with_increment): Make inc argument signed.
24222         (type_safe): Remove.
24223         (get_constraint_for_ptr_offset): Handle unknown and negative
24224         constant offsets.
24225         (first_vi_for_offset): Handle offsets before start.  Bail
24226         out early for offsets beyond the variable extent.
24227         (first_or_preceding_vi_for_offset): New function.
24228         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
24229         Together with ESCAPED = *ESCAPED this properly computes reachability.
24230         (find_what_var_points_to): New function.
24231         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
24232         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
24233         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
24234         pt_solutions_intersect): New functions.
24235         (compute_call_used_vars): Remove.
24236         (compute_may_aliases): New main entry into PTA computation.
24237         * gimple.h (gimple_p): New typedef.
24238         (struct gimple_statement_base): Remove references_memory_p.
24239         (struct gimple_statement_with_memory_ops_base): Remove
24240         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
24241         members.
24242         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
24243         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
24244         gimple_set_references_memory): Remove.
24245         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
24246         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
24247         New functions.
24248         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
24249         (verify_expr): Allow RESULT_DECL.
24250         (gimple_duplicate_bb): Do not copy virtual operands.
24251         (gimple_duplicate_sese_region): Adjust.
24252         (gimple_duplicate_sese_tail): Likewise.
24253         (mark_virtual_ops_in_region): Remove.
24254         (move_sese_region_to_fn): Do not call it.
24255         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
24256         and pass_simple_dse.
24257         (execute_function_todo): Handle TODO_update_address_taken,
24258         call execute_update_addresses_taken for TODO_rebuild_alias.
24259         (execute_todo): Adjust.
24260         (execute_one_pass): Init dump files early.
24261         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
24262         call-clobbered.
24263         (create_general_new_stmt): Clear vops.
24264         * tree-ssa-reassoc.c (get_rank): Adjust.
24265         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
24266         symbols for renaming.
24267         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
24268         (PARAM_AVG_ALIASED_VOPS): Likewise.
24269         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
24270         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
24271         * tree-ssa-operands.c: Simplify for new virtual operand representation.
24272         (operand_build_cmp, copy_virtual_operands,
24273         create_ssa_artificial_load_stmt, add_to_addressable_set,
24274         gimple_add_to_addresses_taken): Remove public functions.
24275         (unlink_stmt_vdef): New function.
24276
24277 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
24278
24279         * config.gcc (powerpc-*-linux*): Merge variants.
24280
24281 2009-04-02  Chao-ying Fu  <fu@mips.com>
24282             James Grosbach  <james.grosbach@microchip.com>
24283
24284         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
24285         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
24286         cop0_sp_offset.
24287         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
24288         keep_interrupts_masked_p, use_debug_exception_return_p.
24289         (mips_attribute_table): Add interrupt, use_shadow_register_set,
24290         keep_interrupts_masked, use_debug_exception_return.
24291         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
24292         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
24293         New functions.
24294         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
24295         (mips_print_operand): Process COP0 registers to print $0 .. $31
24296         correctly for GAS to process.
24297         (mips_interrupt_extra_call_saved_reg_p): New function.
24298         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
24299         extra registers.
24300         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
24301         (mips_compute_frame_info): Add supports for interrupt context that
24302         includes doubleword accumulators and COP0 registers.
24303         (mips_for_each_saved_acc): New function.
24304         (mips_for_each_saved_gpr_and_fpr): Change the function name from
24305         mips_for_each_saved_reg.
24306         (mips_save_reg): Save accumulators.
24307         (mips_kernel_reg_p): A new for_each_rtx callback.
24308         (mips_expand_prologue): Support interrupt handlers.
24309         (mips_restore_reg): Restore accumulators.
24310         (mips_expand_epilogue): Support interrupt handlers.
24311         (mips_can_use_return_insn): Return false for interrupt handlers.
24312         (mips_epilogue_uses): New function.
24313         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
24314         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
24315         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
24316         cop0_move): New instructions.
24317         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
24318         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
24319         defines.
24320         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
24321         New defines.
24322         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
24323         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
24324         interrupt handlers, we use K0 as the temporary register.
24325         (EPILOGUE_USES): Change to a function call.
24326         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
24327         handlers, we use K0 as the temporary register.
24328
24329         * doc/extend.texi (Function Attributes): Document interrupt,
24330         use_shadow_register_set, keep_interrupts_masked,
24331         use_debug_exception_return for MIPS attributes.
24332
24333 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
24334
24335         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
24336         Remove a number of t-files from tmake_file.
24337         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
24338         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
24339         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
24340         target_prototype, not TARGET_PROTOTYPE.
24341         (LINK_OS_GNU_SPEC): Define.
24342         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
24343         and darwin-ldoubdle.c.
24344
24345 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
24346
24347         PR driver/39293
24348         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
24349         (cpp_options): Ditto.
24350         (default_compilers): Ditto.
24351         (display_help): Ditto.
24352         (process_command): Ditto.
24353         (do_spec_1): Ditto.
24354         (set_input): Use lbasename instead of duplicate code.
24355         (save_temps_prefix): New static for -save-temps=obj.
24356         (save_temps_length): Ditto.
24357
24358         * doc/invoke.texi (-save-temps=obj): Document new variant to
24359         -save-temps switch.
24360
24361 2009-04-02  Jeff Law  <law@redhat.com>
24362
24363         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
24364         variable.
24365
24366 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
24367
24368         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
24369         * configure: Regenerated.
24370
24371 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
24372
24373         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
24374         share the argument list.
24375
24376 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
24377
24378         Merge
24379
24380         2009-02-12  Diego Novillo  <dnovillo@google.com>
24381
24382         * varpool.c (debug_varpool): New.
24383         * cgraph.h (debug_varpool): Declare.
24384
24385 2009-04-02  Jan Hubicka  <jh@suse.cz>
24386
24387         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
24388         pass.
24389
24390 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
24391
24392         * config/i386/i386.c (ix86_abi): Move initialization to ...
24393         (override_options): Here.
24394
24395 2009-04-02  Christian Bruel  <christian.bruel@st.com>
24396
24397         * config/sh/sh.c (sh_dwarf_register_span): New function.
24398         (TARGET_DWARF_REGISTER_SPAN): Define.
24399         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
24400
24401 2009-04-02  Ira Rosen  <irar@il.ibm.com>
24402
24403         PR tree-optimization/39595
24404         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
24405         interleaved loads group is not  greater than the SLP group size.
24406
24407 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
24408
24409         * builtins.c (is_builtin_name): New.
24410         (called_as_built_in): Use is_builtin_name.
24411         * tree.h (is_builtin_name): New.
24412         * varasm.c (incorporeal_function_p): Use is_builtin_name
24413
24414 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
24415
24416         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
24417
24418 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
24419
24420         PR c++/26693
24421         * c-decl.c (clone_underlying_type): Move this ...
24422         * c-common.c (set_underlying_type): ... here.
24423         Also, make sure the function properly sets TYPE_STUB_DECL() on
24424         the newly created typedef variant type.
24425         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
24426         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
24427         points.
24428
24429 2009-04-02  Richard Guenther  <rguenther@suse.de>
24430
24431         PR tree-optimization/37221
24432         * tree-flow.h (degenerate_phi_result): Declare.
24433         * tree-ssa-dom.c (degenerate_phi_result): Export.
24434         * tree-scalar-evolution.c (analyze_initial_condition): If
24435         the initial condition is defined by a degenerate PHI node
24436         use the degenerate value.
24437
24438 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
24439
24440         PR rtl-optimization/39588
24441         * combine.c (merge_outer_ops): Do not set the constant when this
24442         is not necessary.
24443         (simplify_shift_const_1): Do not modify it either in this case.
24444
24445 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
24446
24447         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
24448         tuning is deprecated if -mtune value is set to an Itanium1 variant.
24449
24450 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
24451
24452         PR c/29027
24453         * c-lex.c (interpret_float): Default (no suffix) is double.
24454
24455 2009-04-1  Xinliang David Li  <davidxl@google.com>
24456
24457         * config/i386/i386.c (legitimate_constant_p): Recognize
24458         all one vector constant.
24459
24460 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24461
24462         * config/vax/vax.c: Add #includes to silence warnings.
24463         Change #include order to silence two warnings.
24464
24465 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24466
24467         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
24468         (ASM_SPEC): Pass -k to the assembler for PIC code.
24469
24470 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24471
24472         * config.gcc: Add vax-*-linux* to the switch.
24473         * config/vax/linux.h: New file. (TARGET_VERSION,
24474         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
24475
24476 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24477
24478         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
24479         Use predicate macros instead of GET_CODE() == foo.
24480         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
24481         ashlsi3, rotrsi3, <unnamed>): Likewise.
24482
24483 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24484
24485         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
24486         jbbccihi, jbbccisi): Remova trailing whitespace.
24487         * config/vax/constraints.md: Likewise.
24488         * config/vax/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
24489         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
24490         * config/vax/predicates.md: Likewise.
24491         * config/vax/vax.c (print_operand_address, vax_output_int_move,
24492         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
24493         * config/vax/vax.h: Likewise.
24494         * config/vax/vax.md (nonlocal_goto): Likewise.
24495
24496 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24497
24498         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
24499         (indirectable_address_p, adjacent_operands_p): Add spaces around
24500         braces.
24501         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
24502
24503 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24504
24505         * config/vax/vax.c (legitimate_constant_address_p,
24506         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
24507         index_term_p, reg_plus_index_p, legitimate_address_p,
24508         vax_mode_dependent_address_p): Update comments to match functions
24509         modified by the recent int->bool conversion.
24510
24511 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24512
24513         * config/vax/builtins.md: Update copyright message.
24514         * config/vax/constraints.md: Likewise.
24515         * config/vax/netbsd-elf.h: Likewise.
24516         * config/vax/predicates.md: Likewise.
24517         * config/vax/vax-protos.h: Likewise.
24518         * config/vax/vax.c: Likewise.
24519         * config/vax/vax.h: Likewise.
24520         * config/vax/vax.md: Likewise.
24521         * config/vax/vax.opt: Likewise.
24522
24523 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24524
24525         * config/vax/builtins.md (ffssi2, ffssi2_internal,
24526         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
24527         * config/vax/constraints.md (B, R): Likewise.
24528         * config/vax/predicates.md (external_memory_operand,
24529         nonimmediate_addsub_di_operand): Likewise.
24530         * config/vax/vax.c (vax_output_int_add): Likewise.
24531         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
24532         untyped_call): Likewise.
24533
24534 2009-04-01  Matt Thomas  <matt@3am-software.com>
24535
24536         * config/vax/predicates.md: New file.
24537         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
24538         external_const_operand, nonsymbolic_operand, external_memory_operand,
24539         indirect_memory_operand, indexed_memory_operand,
24540         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
24541         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
24542         predicate.
24543         * config/vax/constraints.md: New file.
24544         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
24545         New constraint.
24546         * config/vax/builtins.md: New file.
24547         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
24548         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
24549         jbbccisi): Define.
24550         * config/vax/vax.opt (mqmath): Add option.
24551         * config/vax/vax.md (isfx): Extend with DI.
24552         (VAXintQH, VAXintQHSD): Define.
24553         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
24554         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
24555         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
24556         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
24557         (movdi): Update constraints and use vax_output_int_move().
24558         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
24559         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
24560         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
24561         nonlocal_goto): New.
24562         (mov<mode>): Extend accepted operand types.
24563         (subdi3_old): Rename from subdi3, change update constraints and use
24564         a new implementation.
24565         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
24566         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
24567         MOVE_RATIO, CLEAR_RATIO): Define.
24568         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
24569         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
24570         (PRINT_OPERAND): Redefine using a function instead of inlined code.
24571         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
24572         (split_quadword_operands): Make static and really allow variable
24573         splitting.
24574         (print_operand_address): Update for PIC generation.
24575         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
24576         indexable_address_p, fixup_mathdi_operand,
24577         vax_expand_addsub_di_operands, adjacent_operands_p): New.
24578         (vax_float_literal, legitimate_constant_p,
24579         indirectable_constant_address_p, index_term_p,
24580         reg_plus_index_p): Return bool instead of int.
24581         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
24582         where needed.
24583         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
24584         generation.
24585         (vax_output_conditional_branch): Indent.
24586         (legitimate_constant_address_p, indirectable_constant_address_p,
24587         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
24588         vax_mode_dependent_address_p): Return bool instead of int, update for
24589         PIC generation.
24590         * config/vax/vax-protos.h (legitimate_constant_address_p,
24591         legitimate_constant_p, legitimate_address_p,
24592         vax_mode_dependent_address_p): Change declaration to bool.
24593         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
24594         vax_expand_addsub_di_operands, vax_output_int_subtract,
24595         vax_output_movmemsi): Declare.
24596         (split_quadword_operands, vax_float_literal): Delete declaration.
24597         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
24598         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
24599         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
24600         ASM_OUTPUT_DWARF_PCREL): Define.
24601         (ASM_SPEC): Change definition to allow PIC generation.
24602
24603 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
24604
24605         * doc/sourcebuild.texi: Update front-end requirements.
24606
24607 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
24608
24609         PR target/39226
24610         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
24611         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
24612         (booldi3_internal3): Use boolean_or_operator instead of
24613         boolean_operator.
24614
24615 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
24616
24617         PR c/39605
24618         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
24619         declarator whose size is not an integer constant expression but
24620         folds to an integer constant, then treat it as a constant
24621         subsequently.
24622
24623 2009-04-01  Richard Guenther  <rguenther@suse.de>
24624
24625         * fold-const.c (fold_plusminus_mult_expr): Do not fold
24626         i * 4 + 2 to (i * 2 + 1) * 2.
24627
24628 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
24629
24630         PR c/37772
24631         * c-parser.c (c_parser_asm_statement): Skip until close paren and
24632         return if c_parser_asm_string_literal returned NULL.
24633
24634 2009-04-01  Nick Clifton  <nickc@redhat.com>
24635
24636         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
24637         already defined.
24638         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
24639         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
24640         other typedefs to avoid conflicts with libgcc2.c.  Define labels
24641         to gain 16-bit bit-manipulation functions from libgcc2.c and then
24642         include it.
24643         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
24644         to gain 16-bit trapping arithmetic functions from libgcc2.c and
24645         then include it.
24646
24647 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
24648
24649         * varasm.c (default_function_rodata_section): Declare DOT as
24650         const char*.
24651
24652 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
24653             Andrey Galkin  <agalkin@hypercom.com>
24654
24655         PR/39492
24656         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
24657         Make object_name unique for each process.
24658
24659 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
24660
24661         PR other/39591
24662         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
24663         addressable variables in the parallel that could go out of scope while
24664         running queued tasks.
24665
24666 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
24667
24668         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
24669         (CASE_VALUES_THRESHOLD): Redefine.
24670         * config/avr/avr.c (avr_override_options): Remove initialization of
24671         avr_case_values_threshold variable.
24672         (avr_case_values_threshold): Remove variable. Add new function.
24673         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
24674         * config/avr/avr.opt (mno-tablejump): Remove option.
24675         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
24676
24677 2009-04-01  DJ Delorie  <dj@redhat.com>
24678
24679         * varasm.c (default_function_rodata_section): Don't assume
24680         anything about where the first '.' in the section name is.
24681
24682 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
24683
24684         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
24685         rs6000_emit_stack_tie.
24686
24687 2009-03-31  Ian Lance Taylor  <iant@google.com>
24688
24689         * tree-eh.c (tree_remove_unreachable_handlers): Compare
24690         gimple_code with GIMPLE_RESX, not RESX.
24691
24692 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
24693
24694         * c-common.c (c_get_ident): New.
24695         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
24696
24697 2009-04-01  Ben Elliston  <bje@au.ibm.com>
24698
24699         * config/rs6000/sysv4.opt (msdata): Improve option description.
24700
24701 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
24702
24703         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
24704         (divdf3_internal_lat): Remove.
24705         (divxf3_internal_lat): Remove.
24706         (divxf3_internal_thr): Remove.
24707         (divxf): Use divxf3_internal.
24708         * config/ia64/div.md (divsf3_internal_lat): New.
24709         (divdf3_internal_lat): New.
24710         (divxf3_internal): New.
24711
24712 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
24713
24714         PR c/448
24715         * Makefile.in (USE_GCC_STDINT): Define.
24716         (stmp-int-hdrs): Install stdint.h if applicable.
24717         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
24718         if known.
24719         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
24720         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
24721         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
24722         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
24723         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
24724         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
24725         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
24726         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
24727         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
24728         (c_common_nodes_and_builtins): Initialize
24729         underlying_wchar_type_node.  Do not initialize
24730         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
24731         nodes for new types.
24732         (c_stddef_cpp_builtins): Define macros for new types.
24733         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
24734         Remove.
24735         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
24736         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
24737         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
24738         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
24739         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
24740         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
24741         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
24742         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
24743         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
24744         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
24745         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
24746         int16_type_node, int32_type_node, int64_type_node,
24747         uint8_type_node, uint16_type_node, c_uint32_type_node,
24748         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
24749         int_least32_type_node, int_least64_type_node,
24750         uint_least8_type_node, uint_least16_type_node,
24751         uint_least32_type_node, uint_least64_type_node,
24752         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
24753         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
24754         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
24755         uintptr_type_node): Define.
24756         * c-cppbuiltin.c (builtin_define_constants,
24757         builtin_define_type_minmax): New.
24758         (builtin_define_stdint_macros): Define more macros.
24759         (c_cpp_builtins): Define more limit macros.
24760         (type_suffix): New.
24761         (builtin_define_type_max): Define in terms of
24762         builtin_define_type_minmax.  Remove is_long parameter.  All
24763         callers changed.
24764         * config.gcc (use_gcc_stdint): Define.
24765         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
24766         Add newlib-stdint.h for generic targets.
24767         * config/glibc-stdint.h, config/newlib-stdint.h,
24768         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
24769         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
24770         * config/score/score.h (UINTPTR_TYPE): Define.
24771         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
24772         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
24773         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
24774         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
24775         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
24776         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
24777         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
24778         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
24779         * config/spu/spu.h (STDINT_LONG32): Define.
24780         * configure.ac (use_gcc_stdint): Substitute.
24781         * configure: Regenerate.
24782         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
24783         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
24784         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
24785         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
24786         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
24787         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
24788         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
24789         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
24790         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
24791         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
24792         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
24793         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
24794         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
24795         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
24796         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
24797         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
24798         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
24799         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
24800         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
24801         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
24802         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
24803         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
24804         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
24805         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
24806         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
24807         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
24808         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
24809         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
24810         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
24811
24812 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
24813
24814         * loop-iv.c (suitable_set_for_replacement): Renamed from
24815         simplify_using_assignment; changed to return bool and to accept new
24816         args DEST and SRC.  Return true iff we find a source/destination pair
24817         that can be used to make a replacement, and fill SRC and DEST if so.
24818         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
24819         changed.
24820         (simplify_using_initial_values): Deal with altered regs here and track
24821         more precisely the effect they have on the validity of our expression.
24822
24823         * loop-iv.c (simplify_using_condition): A condition of the form
24824         (EQ REG CONST) can be used to simply make a substitution.
24825         (simplify_using_initial_values): Keep track of conditions we have seen
24826         and keep using them to simplify new expressions, while applying the
24827         same substitutions to them as to the expression.
24828
24829         * simplify-rtx.c (simplify_relational_operation_1): Simplify
24830         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
24831         GEU/LTU reversed.
24832
24833         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
24834         changed.  Use this when trying to improve the upper bound.
24835         Generate the comparison by using simplify_gen_relational.
24836
24837         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
24838
24839         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
24840         functions.
24841         (simplify_using_assignment, simplify_using_initial_values): Call
24842         replace_in_expr to make replacements.  Call replace_single_def_regs
24843         once on the initial version of the expression.
24844
24845 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24846
24847         PR target/27237
24848         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
24849
24850 2009-03-31  Richard Guenther  <rguenther@suse.de>
24851
24852         PR middle-end/31029
24853         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
24854         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
24855
24856 2009-03-31  Richard Guenther  <rguenther@suse.de>
24857
24858         * tree.h (div_if_zero_remainder): Declare.
24859         * fold-const.c (div_if_zero_remainder): Export.
24860         * tree-ssa-forwprop.c
24861         (forward_propagate_addr_into_variable_array_index): Handle
24862         constant array index addition outside of the variable index.
24863
24864 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
24865
24866         PR target/39592
24867         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
24868         define_splits, floatunssi<mode>2): Require x87 conversions from
24869         DImode to be permitted.
24870
24871 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
24872
24873         PR preprocessor/15638
24874         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
24875
24876 2009-03-31  Richard Guenther  <rguenther@suse.de>
24877
24878         PR middle-end/23401
24879         PR middle-end/27810
24880         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
24881         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
24882         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
24883         a separate statement.
24884         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
24885         (lookup_tmp_var): Likewise.
24886         (is_gimple_formal_tmp_or_call_rhs): Remove.
24887         (is_gimple_reg_or_call_rhs): Rename to ...
24888         (is_gimple_reg_rhs_or_call): ... this.
24889         (is_gimple_mem_or_call_rhs): Rename to ...
24890         (is_gimple_mem_rhs_or_call): ... this.
24891         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
24892         DECL_GIMPLE_REG_P only if is_formal is true.
24893         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
24894         for non-proper post-modify expression gimplification.
24895         (gimplify_self_mod_expr): For post-modify expressions gimplify
24896         the lvalue to a minimal lvalue.
24897         (rhs_predicate_for): Remove formal temp case.
24898         (gimplify_modify_expr_rhs): Likewise.
24899         (gimplify_addr_expr): Use is_gimple_reg.
24900         (gimplify_expr): Remove formal temp cases.
24901         (gimple_regimplify_operands): Likewise.
24902         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
24903         and FILTER_EXPR like constants.
24904         * gimple.c (walk_gimple_op): Fix val_only initialization, use
24905         is_gimple_reg.
24906         (is_gimple_formal_tmp_rhs): Remove.
24907         (is_gimple_reg_rhs): Remove special casing.
24908         (is_gimple_mem_rhs): Fix.
24909         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
24910         (is_gimple_formal_tmp_var): Remove.
24911         (is_gimple_formal_tmp_reg): Likewise.
24912         (is_gimple_min_lval): Allow invariant component ref parts.
24913         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
24914         is_gimple_formal_tmp_reg): Remove declarations.
24915         * tree-cfg.c (verify_expr): Verify that variables with address
24916         taken do not have DECL_GIMPLE_REG_P set.
24917         * tree-mudflap.c (mf_build_check_statement_for): Use
24918         force_gimple_operand instead of gimplify_expr.
24919
24920 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
24921
24922         * modulo-sched.c (sms_schedule_by_order): Pass the actual
24923         schedulable rows to compute_split_row.
24924
24925 2009-03-31  Ben Elliston  <bje@au.ibm.com>
24926
24927         PR target/31635
24928         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
24929         OPT_mvrsave.
24930
24931 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
24932
24933         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
24934         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
24935         * configure: Regenerate.
24936         * config.in: Regenerate.
24937         * config/rs6000/rs6000.opt (mtls-markers): Add.
24938         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
24939         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
24940         (tls_ld_aix, tls_ld_sysv): Likewise.
24941         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
24942         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
24943
24944 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
24945
24946         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
24947
24948 2009-03-30  Jan Hubicka  <jh@suse.cz>
24949
24950         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
24951         out of RESX.
24952         (tree_remove_unreachable_handlers): Cleanup EH predecestor
24953         detection and label handling.
24954
24955 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
24956
24957         * ira-int.h (ira_allocno): Rename left_conflicts_num to
24958         left_conflicts_size.
24959         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
24960         ALLOCNO_LEFT_CONFLICTS_SIZE.
24961
24962         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
24963         remove_allocno_from_bucket_and_push,
24964         allocno_spill_priority_compare, push_allocnos_to_stack,
24965         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
24966         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
24967         (setup_allocno_left_conflicts_num): Ditto.  Rename to
24968         setup_allocno_left_conflicts_size.
24969         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
24970         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
24971         setup_allocno_left_conflicts_size instead of
24972         setup_allocno_left_conflicts_num.
24973
24974         * ira-build.c (ira_create_allocno): Use
24975         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
24976         ALLOCNO_LEFT_CONFLICTS_NUM.
24977
24978 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
24979
24980         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
24981         instead of DF_LR_OUT.
24982
24983         * ira-lives.c (process_bb_node_lives): Ditto.
24984
24985         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
24986         instead of DF_LR_{OUT,IN}.
24987
24988         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
24989
24990         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
24991
24992 2009-03-30  Jan Hubicka  <jh@suse.cz>
24993
24994         * except.c (label_to_region_map): Fix thinko.
24995
24996 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
24997
24998         PR middle-end/38237
24999         * tree.h (tree_find_value): New declaration.
25000         * tree.c (tree_find_value): New function.
25001         * varasm.c (assemble_external): Avoid duplicate entries on lists.
25002
25003 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
25004
25005         PR debug/39563
25006         * c-decl.c (struct c_binding): Add locus field.
25007         (bind): Add locus argument, set locus field from it.
25008         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
25009         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
25010         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
25011         implicitly_declare, undeclared_variable, lookup_label,
25012         declare_label, c_make_fname_decl, c_builtin_function,
25013         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
25014         bind callers.
25015
25016 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
25017
25018         PR target/38781
25019         * config/i386/i386.c (classify_argument): Check total size of
25020         structure.
25021
25022 2009-03-30  Martin Jambor  <mjambor@suse.cz>
25023
25024         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
25025         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
25026         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
25027         respectively.
25028
25029         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
25030         seen_variable_array_ref while also traversing a union.
25031
25032         * tree-inline.c (optimize_inline_calls): Do not call
25033         cgraph_node_remove_callees.
25034         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
25035         (pass_remove_cgraph_callee_edges): New variable.
25036         * passes.c (init_optimization_passes): Add
25037         pass_remove_cgraph_callee_edges after early inlining and before all
25038         late intraprocedural passes.
25039
25040         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
25041
25042 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
25043
25044         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
25045         Fix typos in names.
25046
25047 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
25048
25049         * combine.c (simplify_comparison): Use have_insn_for.
25050         * dojump.c (do_jump): Likewise.
25051
25052 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
25053
25054         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
25055         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
25056         sparc_compare_op0 like sparc_compare_emitted used to be handled.
25057         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
25058         instead of sparc_compare_emitted.
25059         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
25060         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
25061         instead of sparc_compare_emitted.
25062
25063 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
25064
25065         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
25066         enter/exit cfglayout mode.
25067         (pass_partition_block): Require it.
25068         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
25069         (combine_instructions): Track basic blocks instead of labels.
25070         (update_cfg_for_uncondjump): New.
25071         (try_combine): Use it.  Update jumps after rescanning.
25072         (pass_combine): Require PROP_cfglayout.
25073         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
25074
25075 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
25076
25077         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
25078         Provide/destroy PROP_cfglayout respectively.
25079         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
25080         * tree-pass.h (PROP_cfglayout): New.
25081
25082 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
25083
25084         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
25085         fold_convert_const_fixed_from_fixed,
25086         fold_convert_const_fixed_from_int,
25087         fold_convert_const_fixed_from_real, fold_negate_const): Do not
25088         set TREE_CONSTANT_OVERFLOW.
25089         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
25090         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
25091
25092 2009-03-30  Ira Rosen  <irar@il.ibm.com>
25093
25094         * tree-vect-loop-manip.c: New file.
25095         * tree-vectorizer.c: Update documentation and included files.
25096         (vect_loop_location): Make extern.
25097         (rename_use_op): Move to tree-vect-loop-manip.c
25098         (rename_variables_in_bb, rename_variables_in_loop,
25099         slpeel_update_phis_for_duplicate_loop,
25100         slpeel_update_phi_nodes_for_guard1,
25101         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
25102         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
25103         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
25104         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
25105         find_loop_location): Likewise.
25106         (new_stmt_vec_info): Move to tree-vect-stmts.c.
25107         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
25108         get_vectype_for_scalar_type, vect_is_simple_use,
25109         supportable_widening_operation, supportable_narrowing_operation):
25110         Likewise.
25111         (bb_in_loop_p): Move to tree-vect-loop.c.
25112         (new_loop_vec_info, destroy_loop_vec_info,
25113         reduction_code_for_scalar_code, report_vect_op,
25114         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
25115         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
25116         (vect_supportable_dr_alignment): Likewise.
25117         * tree-vectorizer.h (tree-data-ref.h): Include.
25118         (vect_loop_location): Declare.
25119         Reorganize function declarations according to the new file structure.
25120         * tree-vect-loop.c: New file.
25121         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
25122         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
25123         * tree-vect-data-refs.c: New file.
25124         * tree-vect-patterns.c (timevar.h): Don't include.
25125         * tree-vect-stmts.c: New file.
25126         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
25127         tree-vect-slp.c, tree-vect-loop.c.
25128         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
25129         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
25130         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
25131         (tree-vect-analyze.o): Remove.
25132         (tree-vect-transform.o): Likewise.
25133         (tree-vect-data-refs.o): Add rule.
25134         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
25135         tree-vect-slp.o): Likewise.
25136         (tree-vect-patterns.o): Remove redundant dependencies.
25137         (tree-vectorizer.o): Likewise.
25138         * tree-vect-slp.c: New file.
25139
25140 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25141
25142         * optc-gen.awk: Warn if an option flag has multiple different
25143         help strings.
25144
25145 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
25146
25147         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
25148         -floop-block): Document dependences on PPL, CLooG and Graphite.
25149
25150 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
25151
25152         PR rtl-optimization/323
25153         * c-common.c (c_fully_fold, convert_and_check,
25154         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
25155         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
25156         * c-common.def (EXCESS_PRECISION_EXPR): New.
25157         * c-cppbuiltin.c (builtin_define_float_constants): Define
25158         constants with enough digits for long double.
25159         * c-lex.c (interpret_float): Interpret constant with excess
25160         precision where appropriate.
25161         * c-opts.c (c_common_post_options): Set
25162         flag_excess_precision_cmdline.  Give an error for
25163         -fexcess-precision=standard for C++ for processors where the
25164         option is significant.
25165         * c-parser.c (c_parser_conditional_expression): Handle excess
25166         precision in condition.
25167         * c-typeck.c (convert_arguments): Handle arguments with excess
25168         precision.
25169         (build_unary_op): Move excess precision outside operation.
25170         (build_conditional_expr): Likewise.
25171         (build_compound_expr): Likewise.
25172         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
25173         (build_modify_expr): Handle excess precision in RHS.
25174         (convert_for_assignment): Handle excess precision in converted
25175         value.
25176         (digest_init, output_init_element, process_init_element): Handle
25177         excess precision in initializer.
25178         (c_finish_return): Handle excess precision in return value.
25179         (build_binary_op): Handle excess precision in operands and add
25180         excess precision as needed for operation.
25181         * common.opt (-fexcess-precision=): New option.
25182         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
25183         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
25184         For standard excess precision, output explicit conversion to and
25185         truncation from XFmode.
25186         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
25187         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
25188         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
25189         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
25190         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
25191         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
25192         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
25193         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
25194         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
25195         define_splits, sqrt<mode>2): Disable where appropriate for
25196         standard excess precision.
25197         * convert.c (convert_to_real): Do not shorten arithmetic to type
25198         for which excess precision would be used.
25199         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
25200         * doc/invoke.texi (-fexcess-precision=): Document option.
25201         (-mfpmath=): Correct index entry.
25202         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
25203         flag_excess_precision): New.
25204         * langhooks.c (lhd_post_options): Set
25205         flag_excess_precision_cmdline.
25206         * opts.c (common_handle_option): Handle -fexcess-precision=.
25207         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
25208         init_excess_precision): New.
25209         (lang_dependent_init_target): Call init_excess_precision.
25210         * tree.c (excess_precision_type): New.
25211         * tree.h (excess_precision_type): Declare.
25212
25213 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
25214
25215         PR c/35235
25216         * c-typeck.c (build_component_ref): Do not copy qualifiers from
25217         non-lvalue to component.
25218
25219 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
25220
25221         PR preprocessor/34695
25222         * Makefile.in (c-opts.o): Depend on c-tree.h.
25223         * c-common.c: Move down include of diagnostic.h.
25224         (done_lexing, c_cpp_error): New.
25225         * c-common.h (done_lexing): Declare.
25226         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
25227         (parse_in).
25228         * c-opts.c: Include c-tree.h.
25229         (c_common_init_options): Set preprocessor error callback.
25230         (c_common_handle_option): Do not set preprocessor
25231         inhibit_warnings, warnings_are_errors, warn_system_headers,
25232         pedantic_errors or inhibit_warnings flags.
25233         (c_common_post_options): Do not check cpp_errors (parse_in).
25234         (c_common_finish): Do not output dependencies if there were
25235         errors.  Do not check return value of cpp_finish.
25236         * c-ppoutput.c (pp_file_change): Set input_location.
25237         * c-tree.h (c_cpp_error): Declare.
25238         * diagnostic.c (diagnostic_set_info_translated): Also initialize
25239         override_column.
25240         (diagnostic_build_prefix): Check override_column.
25241         * diagnostic.h (diagnostic_info): Add override_column field.
25242         (diagnostic_override_column): Define.
25243
25244 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
25245
25246         * c-common.c (c_expand_expr, c_staticp): Remove.
25247         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
25248         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
25249         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
25250         * c-gimplify.c (gimplify_compound_literal_expr,
25251         optimize_compound_literals_in_ctor): Remove.
25252         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
25253         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
25254         * c-semantics.c (emit_local_var): Remove.
25255
25256         * langhooks-def.h (lhd_expand_expr): Remove.
25257         * langhooks.c (lhd_expand_expr): Remove.
25258         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
25259
25260         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
25261         handling from c-semantics.c; don't call into langhook.
25262         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
25263         * gimplify.c (gimplify_compound_literal_expr,
25264         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
25265         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
25266         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
25267         as was done in c-gimplify.c.
25268         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
25269         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
25270         Move from c-common.h.
25271         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
25272
25273         * tree.c (staticp): Do not call langhook.
25274         * langhooks.c (lhd_staticp): Delete.
25275         * langhooks-def.h (lhd_staticp): Delete prototype.
25276         (LANG_HOOKS_STATICP): Delete.
25277         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
25278
25279         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
25280         instead of DECL_STMTs.
25281
25282 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
25283
25284         PR c/456
25285         PR c/5675
25286         PR c/19976
25287         PR c/29116
25288         PR c/31871
25289         PR c/35198
25290         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
25291         void_type_node.
25292         (fold_call_expr): Return a NOP_EXPR from folding rather than the
25293         contained expression.
25294         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
25295         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
25296         conditional expressions for C.
25297         (decl_constant_value_for_optimization): Move from
25298         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
25299         whether optimizing and that the expression is a VAR_DECL not of
25300         array type instead of doing such checks in the caller.  Do not
25301         check pedantic.  Call gcc_unreachable for C++.
25302         * c-common.def (C_MAYBE_CONST_EXPR): New.
25303         * c-common.h (c_fully_fold, c_save_expr,
25304         decl_constant_value_for_optimization): New prototypes.
25305         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
25306         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
25307         EXPR_INT_CONST_OPERANDS): Define.
25308         * c-convert.c (convert): Strip nops from expression.
25309         * c-decl.c (groktypename): Take extra parameters expr and
25310         expr_const_operands.  Update call to grokdeclarator.
25311         (start_decl): Update call to grokdeclarator.  Add statement for
25312         expressions used in type of decl.
25313         (grokparm): Update call to grokdeclarator.
25314         (push_parm_decl): Update call to grokdeclarator.
25315         (build_compound_literal): Add parameter non_const and build a
25316         C_MAYBE_COSNT_EXPR if applicable.
25317         (grokdeclarator): Take extra parameters expr and
25318         expr_const_operands.  Track expressions used in declaration
25319         specifiers and declarators.  Fold array sizes and track whether
25320         they are constant expressions and whether they are integer
25321         constant expressions.
25322         (parser_xref_tag): Set expr and expr_const_operands fields in
25323         return value.
25324         (grokfield): Update call to grokdeclarator.
25325         (start_function): Update call to grokdeclarator.
25326         (build_null_declspecs): Set expr and expr_const_operands fields in
25327         return value.
25328         (declspecs_add_type): Handle expressions in typeof specifiers.
25329         * c-parser.c (c_parser_declspecs): Set expr and
25330         expr_const_operands fields for declaration specifiers.
25331         (c_parser_enum_specifier): Likewise.
25332         (c_parser_struct_or_union_specifier): Likewise.
25333         (c_parser_typeof_specifier): Likewise.  Update call to
25334         groktypename.  Fold expression as needed.  Return expressions with
25335         type instead of adding statements.
25336         (c_parser_attributes): Update calls to c_parser_expr_list.
25337         (c_parser_statement_after_labels): Fold expression before passing
25338         to objc_build_throw_stmt.
25339         (c_parser_condition): Fold expression.
25340         (c_parser_asm_operands): Fold expression.
25341         (c_parser_conditional_expression): Use c_save_expr.  Update call
25342         to build_conditional_expr.
25343         (c_parser_alignof_expression): Update call to groktypename.
25344         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
25345         original_code.  Fold expression argument of va_arg.  Create
25346         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
25347         argument to va_arg.  Update calls to groktypename.  Fold array
25348         index for offsetof.  Verify that first argument to
25349         __builtin_choose_expr has integer type.
25350         (c_parser_postfix_expression_after_paren_type): Update calls to
25351         groktypename and build_compound_literal.  Handle expressions with
25352         side effects in type name.
25353         (c_parser_postfix_expression_after_primary): Update call to
25354         c_parser_expr_list.  Set original_code for calls to
25355         __builtin_constant_p.
25356         (c_parser_expr_list): Take extra parameter fold_p.  Fold
25357         expressions if requested.
25358         (c_parser_objc_type_name): Update call to groktypename.
25359         (c_parser_objc_synchronized_statement): Fold expression.
25360         (c_parser_objc_receiver): Fold expression.
25361         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
25362         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
25363         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
25364         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
25365         (struct c_typespec): Add elements expr and expr_const_operands.
25366         (struct c_declspecs): Add elements expr and expr_const_operands.
25367         (groktypename, build_conditional_expr, build_compound_literal):
25368         Update prototypes.
25369         (in_late_binary_op): Declare.
25370         * c-typeck.c (note_integer_operands): New function.
25371         (in_late_binary_op): New variable.
25372         (decl_constant_value_for_broken_optimization): Move to c-common.c
25373         and rename to decl_constant_value_for_optimization.
25374         (default_function_array_conversion): Do not strip nops.
25375         (default_conversion): Do not call
25376         decl_constant_value_for_broken_optimization.
25377         (build_array_ref): Do not fold result.
25378         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
25379         result when operand is a VLA.
25380         (c_expr_sizeof_type): Update call to groktypename.  Handle
25381         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
25382         result when operand names a VLA type.
25383         (build_function_call): Update call to build_compound_literal.
25384         Only fold result for calls to __builtin_* functions.  Strip
25385         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
25386         the function designator.
25387         (convert_arguments): Fold arguments.  Update call to
25388         convert_for_assignment.
25389         (build_unary_op): Handle increment and decrement of
25390         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
25391         decrement earlier.  Fold operand of increment and decrement.
25392         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
25393         built for integer operand.  Wrap returns that are INTEGER_CSTs
25394         without being integer constant expressions or that have integer
25395         constant operands without being INTEGER_CSTs.
25396         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
25397         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
25398         result is an integer constant expression or can be used in
25399         unevaluated parts of one and avoid folding and wrap as
25400         appropriate.  Fold operands before possibly doing -Wsign-compare
25401         warnings.
25402         (build_compound_expr): Wrap result for C99 if operands can be used
25403         in integer constant expressions.
25404         (build_c_cast): Update call to digest_init.  Do not ignore
25405         overflow from casting floating-point constants to integers.  Wrap
25406         results that could be confused with integer constant expressions,
25407         null pointer constants or floating-point constants.
25408         (c_cast_expr): Update call to groktypename.  Handle expressions
25409         included in type name.
25410         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
25411         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
25412         Update calls to convert_for_assignment.
25413         (convert_for_assignment): Take new parameter
25414         null_pointer_constant.  Do not strip nops or call
25415         decl_constant_value_for_broken_optimization.  Set
25416         in_late_binary_op for conversions to boolean.
25417         (store_init_value): Update call to digest_init.
25418         (digest_init): Take new parameter null_pointer_constant.  Do not
25419         call decl_constant_value_for_broken_optimization.  pedwarn for
25420         initializers not constant expressions.  Update calls to
25421         convert_for_assignment.
25422         (constructor_nonconst): New.
25423         (struct constructor_stack): Add nonconst element.
25424         (really_start_incremental_init, push_init_level, pop_init_level):
25425         Handle constructor_nonconst and nonconst element.
25426         (set_init_index): Call constant_expression_warning for array
25427         designators.
25428         (output_init_element): Fold value.  Set constructor_nonconst as
25429         applicable.  pedwarn for initializers not constant expressions.
25430         Update call to digest_init.  Call constant_expression_warning
25431         where constant initializers are required.
25432         (process_init_element): Use c_save_expr.
25433         (c_finish_goto_ptr): Fold expression.
25434         (c_finish_return): Fold return value.  Update call to
25435         convert_for_assignment.
25436         (c_start_case): Fold switch expression.
25437         (c_process_expr_stmt): Fold expression.
25438         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
25439         ensure statement expression is not evaluated in constant expression.
25440         (build_binary_op): Track whether results are integer constant
25441         expressions or may occur in such, disable folding and wrap results
25442         as applicable.  Fold operands for -Wsign-compare warnings unless
25443         in_late_binary_op.
25444         (c_objc_common_truthvalue_conversion): Handle results folded to
25445         integer constants that are not integer constant expressions.
25446         * doc/extend.texi: Document when typeof operands are evaluated,
25447         that condition of __builtin_choose_expr is an integer constant
25448         expression, and more about use of __builtin_constant_p in
25449         initializers.
25450
25451 2009-03-29  Richard Guenther  <rguenther@suse.de>
25452
25453         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
25454         propagate addresses of array references.
25455
25456 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
25457
25458         * regmove.c (perhaps_ends_bb_p): Remove.
25459         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
25460         from INSN and check that the main loop stays within that basic block.
25461         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
25462         (regmove_forward_pass): Split out from regmove_optimize.  Use
25463         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
25464         (regmove_backward_pass): Split out from regmove_optimize.  Use
25465         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
25466         (regmove_optimize): Simplify.
25467
25468 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
25469
25470         PR target/39545
25471         * config/i386/i386.c (classify_argument): Ignore flexible array
25472         member in struct and warn ABI change.
25473
25474 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
25475
25476         * config/i386/i386-protos.h (ix86_agi_dependent): New.
25477
25478         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
25479         (ix86_adjust_cost): Updated.
25480
25481 2009-03-29  Jan Hubicka  <jh@suse.cz>
25482
25483         PR middle-end/28850
25484         * tree-pass.h (pass_cleanup_eh): New function.
25485         (remove_unreachable_regions): Break code handling RTL
25486         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
25487         that can not be reached by runtime.
25488         (can_be_reached_by_runtime): New function.
25489         (label_to_region_map): New function.
25490         (num_eh_regions): New function.
25491         (rtl_remove_unreachable_regions): New function.
25492         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
25493         (remove_eh_region): New function.
25494         * except.h: Include sbitmap and vecprim.
25495         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
25496         num_eh_regions): Declare.
25497         * passes.c (init_optimization_passes): Schedule cleanup_eh.
25498         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
25499         * tree-eh.c (tree_remove_unreachable_handlers): New function.
25500         (tree_empty_eh_handler_p): New function.
25501         (cleanup_empty_eh): New function.
25502         (cleanup_eh): New function.
25503         (pass_cleanup_eh): New function.
25504
25505 2009-03-29  Jan Hubicka  <jh@suse.cz>
25506
25507         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
25508         for removed regions.
25509
25510 2009-03-29  Jan Hubicka  <jh@suse.cz>
25511
25512         * except.c (dump_eh_tree): Dump all datastructures.
25513
25514 2009-03-29  Jan Hubicka  <jh@suse.cz>
25515
25516         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
25517         (duplicate_eh_regions_1): Likewise.
25518         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
25519         vector; call EH verification.
25520         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
25521         Be ready for region being removed.
25522
25523 2009-03-29  Jan Hubicka  <jh@suse.cz>
25524
25525         * bitmap.c (bitmap_last_set_bit): New function.
25526         * bitmap.h (bitmap_last_set_bit): Declare.
25527
25528 2009-03-29  David Ayers  <ayers@fsfe.org>
25529
25530         PR objc/27377
25531         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
25532         by calling objc_compare_types and surpress warnings about
25533         incompatible C pointers that are compatible ObjC pointers.
25534
25535 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
25536
25537         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
25538         call initialize_inline_failed.
25539         (initialize_inline_failed): Move it from here ...
25540         * cgraph.c (initialize_inline_failed): ... to here.
25541         (cgraph_create_edge): Call initialize_inline_failed rather than
25542         setting inline_failed directly.
25543
25544 2009-03-29  Ben Elliston  <bje@au.ibm.com>
25545
25546         PR target/32542
25547         * sysv4.opt (msdata): Improve comment.
25548         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
25549         * sysv4.h (SVR4_ASM_SPEC): Likewise.
25550
25551 2009-03-29  Ben Elliston  <bje@au.ibm.com>
25552
25553         PR target/30451
25554         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
25555         load and store attributes.
25556
25557 2009-03-29  Ben Elliston  <bje@au.ibm.com>
25558
25559         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
25560         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
25561         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
25562         * doc/extend.texi (X86 Built-in Functions): Add index entries for
25563         __builtin_infq and __builtin_huge_valq.
25564
25565 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
25566
25567         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
25568         atmega8m1 devices.
25569         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
25570         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
25571
25572 2009-03-28  Xinliang David Li  <davidxl@google.com>
25573
25574         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
25575         (do_dbg_cnt): New function.
25576
25577 2009-03-28  Jan Hubicka  <jh@suse.cz>
25578
25579         Merge from pretty-ipa:
25580
25581         2009-03-27  Jan Hubicka  <jh@suse.cz>
25582
25583         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
25584         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
25585         * passes.c (function_called_by_processed_nodes_p): New.
25586         * ipa-pure-const.c (check_call): Fix handling of operands.
25587         (analyze_function): Dump debug output for skipped bodies.
25588         (local_pure_const): Use function_called_by_processed_nodes_p.
25589         * dwarf2out.c (reference_to_unused): Use output.
25590         * passes.c (do_per_function_toporder): Likewise.
25591
25592         2008-11-12  Jan Hubicka  <jh@suse.cz>
25593
25594         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
25595         * ipa-pure-const.c (funct_state_d): Add can throw field; make
25596         state_set_in_source enum
25597         (check_decl): Ignore memory tags; do not set fake looping flags;
25598         dump diagnostics.
25599         (check_operand, check_tree, check_rhs_var, check_lhs_var,
25600         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
25601         (check_call, analyze_function): Rewrite.
25602         (check_stmt): New.
25603         (add_new_function): Update call of analyze_function.
25604         (generate_summary): Add call of analyze_function.
25605         (propagate): Propagate can_throw; handle state_set_in_source correctly.
25606         (local_pure_const): New function.
25607         (pass_local_pure_const): New pass.
25608         * ipa-inline.c (inline_transform): Set after_inlining.
25609         * tree-eh.c (stmt_can_throw_external): New.
25610         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
25611         work with aliasing built.
25612         * tree-flow.h (stmt_can_throw_external): New.
25613         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
25614         and local pure/const pass in early and late optimization queue.
25615
25616 2009-03-28  Martin Jambor  <mjambor@suse.cz>
25617
25618         * fold-const.c (get_pointer_modulus_and_residue): New parameter
25619         allow_func_align.
25620         (fold_binary): Allow function decl aligment consideration is the
25621         second argument is integer constant one.
25622         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
25623         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
25624         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
25625
25626 2009-03-28  Jan Hubicka  <jh@suse.cz>
25627
25628         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
25629         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
25630         * function.h (rtl_data): Add nothrow flag.
25631         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
25632         set DECL_NOTHROW for AVAILABLE functions.
25633
25634 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
25635
25636         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
25637         following vector keyword has expansion starting with pixel or bool
25638         keyword, expand vector to __vector and pixel or bool to __pixel or
25639         __bool.
25640
25641         PR c++/39554
25642         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
25643         warn_if_disallowed_function_p): Removed.
25644         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
25645         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
25646         warning_if_disallowed_function_p.
25647         * flags.h (warn_if_disallowed_function_p,
25648         warn_disallowed_functions): Removed.
25649         * common.opt (Wdisallowed-function-list=): Removed.
25650         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
25651
25652 2009-03-28  Richard Guenther  <rguenther@suse.de>
25653
25654         PR tree-optimization/38723
25655         * tree-ssa-pre.c (compute_avail): Add all default definitions to
25656         the entry block.
25657
25658 2009-03-28  Jan Hubicka  <jh@suse.cz>
25659
25660         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
25661         test introduced by my previous patch.
25662
25663 2009-03-28  Richard Guenther  <rguenther@suse.de>
25664
25665         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
25666         the PHIs value undefined.
25667
25668 2009-03-28  Jan Hubicka  <jh@suse.cz>
25669
25670         * tree-pass.h (pass_fixup_cfg): New pass.
25671         * ipa-inline.c (inline_transform): Set
25672         always_inline_functions_inlined/after_inlining.
25673         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
25674         (pass_fixup_cfg): New pass.
25675         * passes.c (init_optimization_passes): Add fixup_cfg.
25676
25677 2009-03-28  Richard Guenther  <rguenther@suse.de>
25678
25679         PR tree-optimization/38458
25680         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
25681         argument use the arguments copy-of value.
25682
25683 2009-03-28  Richard Guenther  <rguenther@suse.de>
25684
25685         PR tree-optimization/38180
25686         * tree-ssa-ccp.c (get_default_value): Simplify.
25687         (likely_value): Likewise.
25688         (surely_varying_stmt_p): Properly handle VOP case.
25689         (ccp_initialize): Likewise.
25690         (ccp_fold): Handle propagating through *&.
25691         (fold_const_aggregate_ref): Also handle decls.
25692
25693 2009-03-28  Jan Hubicka  <jh@suse.cz>
25694
25695         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
25696         * cgraph.h (cgraph_node): Likewise.
25697         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
25698         (cgraph_reset_node): Use process flag.
25699         (cgraph_mark_functions_to_output): Likewise.
25700         (cgraph_expand_function): Likewise.
25701         (cgraph_expand_all_functions): Likewise.
25702         (cgraph_output_in_order): Likewise.
25703         * dwarf2out.c (reference_to_unused): Likewise.
25704         * passes.c do_per_function_toporder): Likewise.
25705
25706 2009-03-28  Jan Hubicka  <jh@suse.cz>
25707
25708         Bring from lto-branch:
25709
25710         2008-09-03  Doug Kwan  <dougkwan@google.com>
25711
25712         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
25713         enums instead of reason strings.
25714         * cgraph.c (cgraph_create_edge): Same.
25715         (cgraph_inline_failed_string): New function.
25716         * cgraph.h (cgraph_inline_failed_t): New enum type.
25717         (cgraph_inline_failed_string): New prototype.
25718         (struct cgraph_edge): Change type of INLINED_FAILED from constant
25719         char pointer to cgraph_inline_failed_t.
25720         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
25721         (cgraph_default_inline_p): Ditto.
25722         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
25723         to cgraph_inline_failed_t pointer.
25724         * cif-code.def: New file.
25725         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
25726         reason string.
25727         (cgraph_check_inline_limits): Change type of REASON to pointer to
25728         cgraph_inline_failed_t.  Replace reason strings with enums.
25729         (cgraph_default_inline_p): Ditto.
25730         (cgraph_recursive_inlining_p): Ditto.
25731         (update_caller_keys): Change type of FAILED_REASON to
25732         cgraph_inline_failed_t.
25733         (cgraph_set_inline_failed): Change type of REASON to pointer to
25734         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
25735         convert enums to strings for text output.
25736         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
25737         to be of type cgraph_inline_failed_t.  Replace reason strings with
25738         enums.  Call cgraph_inline_failed_string to covert enums
25739         to strings for text output.
25740         (cgraph_decide_inlining): Replace reason strings with enums.
25741         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
25742         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
25743         for text output.
25744         * tree-inline.c (expand_call_inline): Change type of REASON
25745         to cgraph_inline_failed_t.  Replace reason strings with enums.
25746         Call cgraph_inline_failed_string for text output.
25747         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
25748         (cgraph.o): Ditto.
25749
25750 2009-03-28  Jan Hubicka  <jh@suse.cz>
25751
25752         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
25753         cgraph_clone_node): Remove master clone handling.
25754         (cgraph_is_master_clone, cgraph_master_clone): Remove.
25755         * cgraph.h (master_clone): Remove.
25756         (cgraph_is_master_clone, cgraph_master_clone): Remove.
25757         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
25758         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
25759
25760 2009-03-28  Jan Hubicka  <jh@suse.cz>
25761
25762         * cgraph.c (cgraph_function_body_availability): Functions declared
25763         inline are always safe to assume that it is not going to be replaced.
25764
25765 2009-03-28  Richard Guenther  <rguenther@suse.de>
25766
25767         PR tree-optimization/38513
25768         * tree-ssa-pre.c (eliminate): Remove redundant stores.
25769         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
25770         EXC_PTR_EXPR and FILTER_EXPR.
25771         (get_ref_from_reference_ops): Likewise.
25772
25773 2009-03-28  Richard Guenther  <rguenther@suse.de>
25774
25775         PR tree-optimization/38968
25776         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
25777         Use FLOOR_MOD_EXPR to compute misalignment.
25778
25779 2009-03-28  Richard Guenther  <rguenther@suse.de>
25780
25781         PR tree-optimization/37795
25782         * tree.h (combine_comparisons): Declare.
25783         * fold-const.c (combine_comparisons): Export.
25784         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
25785         comparisons.
25786         (ifcombine_iforif): Use combine_comparisons.
25787
25788 2009-03-28  Jan Hubicka  <jh@suse.cz>
25789
25790         * tree-eh.c (inlinable_call_p): New function.
25791         (make_eh_edges): Use it.
25792         (verify_eh_edges): Use it.
25793         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
25794         * except.c (reachable_next_level): Add inlinable_function argument
25795         (sjlj_find_directly_reachable_regions): Update.
25796         (add_reachable_handler): Do not set saw_any_handlers.
25797         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
25798         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
25799         Add new inlinable call parameter.
25800         (can_throw_internal, can_throw_external): Update.
25801         * except.h (can_throw_internal_1, can_throw_external_1,
25802         foreach_reachable_handler): Update declaration.
25803
25804 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
25805
25806         * config/arm/t-arm-coff, config/h8300/coff.h,
25807         config/i386/i386-aout.h, config/i386/i386-coff.h,
25808         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
25809         config/pdp11/2bsd.h, config/rs6000/aix41.h,
25810         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
25811         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
25812         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
25813         sys-types.h: Remove.
25814         * Makefile.in: Remove protoize and fixproto support and references
25815         in comments.
25816         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
25817         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
25818         Remove.
25819         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
25820         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
25821         unprotoize$(exeext).
25822         (rest.encap): Don't depend on $(STMP_FIXPROTO)
25823         (.PHONY): Don't depend on proto.
25824         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
25825         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
25826         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
25827         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
25828         build/gen-protos.o, build/scan.o, xsys-protos.h,
25829         build/fix-header$(build_exeext), build/fix-header.o,
25830         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
25831         stmp-install-fixproto): Remove.
25832         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
25833         SYSCALLS.c or fixproto files.
25834         (install-common): Don't install protoize.
25835         (install-headers-tar, install-headers-cpio, install-headers-cp):
25836         Don't depend on $(STMP_FIXPROTO).
25837         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
25838         install fixproto files or write out fixproto settings.
25839         (uninstall): Don't uninstall protoize.
25840         * config.gcc (use_fixproto): Remove.
25841         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
25842         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
25843         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
25844         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
25845         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
25846         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
25847         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
25848         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
25849         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
25850         * config/t-vxworks (STMP_FIXPROTO): Remove.
25851         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
25852         STMP_FIXPROTO): Remove.
25853         * config.in, configure: Regenerate.
25854         * crtstuff.c (gid_t, uid_t): Don't undefine.
25855         * doc/install.texi: Change m68k-coff to m68k-elf in example.
25856         (arm-*-coff, arm-*-aout: Remove target entries.
25857         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
25858         Remove mention of AIX 4.1.
25859         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
25860         * doc/invoke.texi (Running Protoize): Remove.
25861         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
25862         (Protoize Caveats): Remove.
25863         * tsystem.h: Update comments on headers assumed to exist.
25864
25865 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
25866
25867         * genautomata.c: Add a new year to the copyright.  Add a new
25868         reference.
25869         (struct insn_reserv_decl): Add comments for member bypass_list.
25870         (find_bypass): Remove.
25871         (insert_bypass): New.
25872         (process_decls): Use insert_bypass.
25873         (output_internal_insn_latency_func): Output all bypasses with the
25874         same input insn in one switch case.
25875
25876         * rtl.def (define_bypass): Describe bypass choice.
25877         * doc/md.texi (define_bypass): Ditto.
25878
25879 2009-03-27  Richard Guenther  <rguenther@suse.de>
25880
25881         * gimplify.c (mark_addressable): Export.
25882         * tree-flow.h (mark_addressable): Declare.
25883         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
25884         * tree-ssa.c (verify_phi_args): Verify that address taken
25885         variables have TREE_ADDRESSABLE set.
25886
25887 2009-03-27  Richard Guenther  <rguenther@suse.de>
25888
25889         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
25890         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
25891         Do not mark decls TREE_ADDRESSABLE.
25892         (build_fold_addr_expr): Adjust.
25893         (fold_addr_expr): Remove.
25894         (fold_unary): Use build_fold_addr_expr.
25895         (fold_comparison): Likewise.
25896         (split_address_to_core_and_offset): Likewise.
25897         * coverage.c (tree_coverage_counter_addr): Mark the array decl
25898         TREE_ADDRESSABLE.
25899         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
25900         (gimplify_modify_expr_to_memcpy): Mark source and destination
25901         addressable.
25902         * omp-low.c (create_omp_child_function): Mark the object decl
25903         TREE_ADDRESSABLE.
25904         (lower_rec_input_clauses): Mark the var we take the address of
25905         TREE_ADDRESSABLE.
25906         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
25907
25908 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
25909
25910         PR middle-end/39315
25911         * cfgexpand.c (expand_one_stack_var_at): Change alignment
25912         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
25913
25914 2009-03-27  Richard Guenther  <rguenther@suse.de>
25915
25916         PR tree-optimization/39120
25917         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
25918         constraints.
25919         (handle_lhs_call): Process return constraints.  Add escape
25920         constraints if necessary.
25921         (handle_const_call): Fill out return constraints.  Make nested
25922         case more precise.  Avoid consttmp if possible.
25923         (handle_pure_call): Fill out return constraints.  Avoid
25924         callused if possible.
25925         (find_func_aliases): Simplify call handling.
25926
25927 2009-03-27  Richard Guenther  <rguenther@suse.de>
25928
25929         PR tree-optimization/39120
25930         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
25931         as a representative.
25932         (solve_graph): Do propagate CALLUSED.
25933         (handle_pure_call): Use a scalar constraint from CALLUSED for
25934         the return value.
25935         (find_what_p_points_to): CALLUSED shall not appear in poins-to
25936         solutions.
25937
25938 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
25939
25940         PR c/39323
25941         * c-common.c (handle_aligned_attribute): Properly check alignment
25942         overflow.  Use (1U << i) instead of (1 << i).
25943
25944         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
25945
25946         * expr.h (get_mem_align_offset): Updated.
25947
25948         * tree.h (tree_decl_common): Change align to "unsigned int" and
25949         move it before pointer_alias_set.
25950
25951 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
25952             Jakub Jelinek  <jakub@redhat.com>
25953
25954         PR target/38034
25955         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
25956         gr_register_operand with gr_reg_or_0_operand.
25957         (cmpxchg_rel_di): Likewise.
25958         (sync_lock_test_and_set<mode>): Likewise.
25959
25960 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
25961
25962         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
25963         (true_regnum): Likewise.
25964
25965         * rtlanal.c (subreg_info): Moved to ...
25966         * rtl.h (subreg_info): Here.  New.
25967         (subreg_get_info): New.
25968
25969         * rtlanal.c (subreg_get_info): Make it extern.
25970
25971 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
25972
25973         PR target/39472
25974         * config/i386/i386.c (ix86_abi): New.
25975         (override_options): Handle -mabi=.
25976         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
25977         (ix86_call_abi_override): Likewise.
25978         (init_cumulative_args): Likewise.
25979         (function_arg_advance): Likewise.
25980         (function_arg_64): Likewise.
25981         (function_arg): Likewise.
25982         (ix86_pass_by_reference): Likewise.
25983         (ix86_function_value_regno_p): Likewise.
25984         (ix86_build_builtin_va_list_abi): Likewise.
25985         (setup_incoming_varargs_64): Likewise.
25986         (is_va_list_char_pointer): Likewise.
25987         (ix86_init_machine_status): Likewise.
25988         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
25989         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
25990         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
25991         (ix86_function_abi): Make it static and return enum calling_abi.
25992         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
25993         with ix86_abi.
25994         (ix86_fn_abi_va_list): Updated.
25995
25996         * config/i386/i386.h (ix86_abi): New.
25997         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
25998         (CONDITIONAL_REGISTER_USAGE): Likewise.
25999         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
26000         (machine_function): Likewise.
26001
26002         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
26003         with ix86_abi.
26004         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
26005         (STACK_BOUNDARY): Likewise.
26006         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
26007
26008         * config/i386/i386.opt (mabi=): New.
26009
26010         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
26011         return enum calling_abi.
26012         (ix86_function_type_abi): Likewise.
26013         (ix86_function_abi): Removed.
26014
26015         * doc/invoke.texi: Document -mabi= option for x86.
26016
26017 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26018
26019         * builtins.c (real_dconstp): Delete.
26020         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
26021
26022 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
26023             Jakub Jelinek  <jakub@redhat.com>
26024
26025         PR debug/37959
26026         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
26027         (gen_subprogram_die): When a function is explicit, generate the
26028         DW_AT_explicit attribute.
26029         * langhooks.h (struct lang_hooks_for_decls): Add
26030         function_decl_explicit_p langhook.
26031         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
26032         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
26033
26034 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
26035
26036         * builtins.c (fold_builtin_memory_op): Optimize memmove
26037         into memcpy if we can prove source and destination don't overlap.
26038
26039         * tree-inline.c: Include gt-tree-inline.h.
26040         (clone_fn_id_num): New variable.
26041         (clone_function_name): New function.
26042         (tree_function_versioning): Use it.
26043         * Makefile.in (GTFILES): Add tree-inline.c.
26044
26045 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
26046
26047         * BASE-VER: Change to 4.5.0.
26048
26049 2009-03-27  Xinliang David Li  <davidxl@google.com>
26050
26051         PR tree-optimization/39557
26052         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
26053
26054 2009-03-27  Xinliang David Li  <davidxl@google.com>
26055
26056         PR tree-optimization/39548
26057         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
26058         candidate check.
26059
26060 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
26061
26062         * c-common.c (pointer_int_sum): Use %wd on return from
26063         tree_low_cst.
26064
26065 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
26066
26067         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
26068         on return from tree_low_cst.
26069
26070 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26071
26072         PR c++/36799
26073         * ginclude/stdarg.h (va_copy): Define also for
26074         __GXX_EXPERIMENTAL_CXX0X__.
26075
26076 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26077
26078         PR c++/35652
26079         * builtins.h (c_strlen): Do not warn here.
26080         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
26081         * c-common.c (pointer_int_sum): Take an explicit location.
26082         Warn about offsets out of bounds.
26083         * c-common.h (pointer_int_sum): Adjust declaration.
26084
26085 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26086
26087         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
26088         markup glitch.
26089
26090 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
26091
26092         PR c++/39554
26093         * opts.c (warn_if_disallowed_function_p): Don't assume
26094         get_callee_fndecl must return non-NULL.
26095
26096 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
26097
26098         PR rtl-optimization/39522
26099         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
26100         when reg_reloaded_valid is set.
26101
26102 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
26103
26104         * config/spu/divv2df3.c: New file.
26105         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
26106         (DPBIT_FUNCS): Filter out _div_df.
26107
26108 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
26109
26110         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
26111         a jump insn, count that jump in the distance to the loop start.
26112
26113 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
26114
26115         PR target/39523
26116         * config/sh/sh.c (calc_live_regs): Fix condition for global
26117         registers except PIC_OFFSET_TABLE_REGNUM.
26118
26119 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
26120
26121         PR/39518
26122         * doc/invoke.texi (-mconsole): New.
26123         (-mcygwin): New.
26124         (-mno-cygwin): New.
26125         (-mdll): New.
26126         (-mnop-fun-dllimport): New.
26127         (-mthread): New.
26128         (-mwin32): New.
26129         (-mwindows): New.
26130         (sub section "i386 and x86-64 Windows Options"): New.
26131
26132 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
26133
26134         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
26135         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
26136
26137 2009-03-25  Richard Guenther  <rguenther@suse.de>
26138
26139         PR middle-end/39497
26140         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
26141         of -Wno-error.
26142
26143 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
26144
26145         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
26146         neither of haifa/selective schedulers are working.
26147
26148 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26149
26150         * doc/invoke.texi (Debugging Options): Fix description of
26151         -fno-merge-debug-strings.
26152
26153 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
26154
26155         * config/cris/libgcc.ver: New version-script.
26156         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
26157
26158         * configure.ac <GAS features, nop mnemonic>: Add pattern
26159         crisv32-*-* for "nop".
26160         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
26161         * configure: Regenerate.
26162
26163 2009-03-24  Ira Rosen  <irar@il.ibm.com>
26164
26165         PR tree-optimization/39529
26166         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
26167         mark_sym_for_renaming for the tag copied to the new vector
26168         pointer.
26169
26170 2009-03-24  Arthur Loiret  <aloiret@debian.org>
26171
26172         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
26173         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
26174         EXTRA_SPEC_FUNCTIONS.
26175         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
26176         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
26177         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
26178         -march and -mtune options.
26179
26180 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
26181
26182         * config/m68k/t-rtems: Add m5329 multilib.
26183
26184 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
26185             Jakub Jelinek  <jakub@redhat.com>
26186
26187         PR debug/39524
26188         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
26189         nodes.
26190
26191 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
26192
26193         PR c/39495
26194         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
26195         instead of c_parser_expression_conv, if original_code isn't one of the
26196         4 allowed comparison codes, fail.
26197
26198 2009-03-23  Richard Guenther  <rguenther@suse.de>
26199
26200         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
26201         * tree.h (struct tree_type): Likewise.
26202         * reload.h (struct insn_chain): Likewise.
26203         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
26204         * function.h (struct function): Likewise.
26205         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
26206
26207 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
26208
26209         PR tree-optimization/39516
26210         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
26211
26212 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
26213
26214         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
26215         should be set true if BITS_PER_WORD of target is bigger than 32
26216
26217 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
26218
26219         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
26220         Translate -B-options to -rpath-link.  Correct existing
26221         rpath-link and conditionalize on !nostdlib.
26222
26223 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26224
26225         * doc/extend.texi (Function Attributes, Variable Attributes):
26226         Fix typos.
26227         * doc/invoke.texi (Debugging Options, Optimize Options)
26228         (i386 and x86-64 Options, MCore Options): Likewise.
26229
26230 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
26231
26232         PR debug/37890
26233         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
26234         it for block local namespace aliases.
26235         (gen_decl_die): Pass context_die to gen_namespace_die.
26236
26237 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
26238
26239         PR c/39495
26240         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
26241         minimum or maximum value.
26242
26243 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
26244
26245         * reginfo.c (globalize_reg): Recompute derived reg sets.
26246
26247 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
26248
26249         PR target/39063
26250         * libgcc2.c (mprotect): Do not use signed arguments for
26251         VirtualProtect, use DWORD arguments.  Also fix the 'may
26252         be used uninitialized' warning for the np variable.
26253
26254 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
26255
26256         PR target/39496
26257         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
26258         functions using regparm calling conventions when not optimizing.
26259         (ix86_function_sseregparm): Similarly for sseregparm calling
26260         conventions.
26261
26262 2009-03-19  Li Feng  <nemokingdom@gmail.com>
26263
26264         PR middle-end/39500
26265         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
26266         dependence if the first conflict is after niter iterations.
26267
26268 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
26269
26270         PR middle-end/38609
26271         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
26272         functions with dynamic stack-pointer adjustments.
26273
26274 2009-03-19  Ben Elliston  <bje@au.ibm.com>
26275
26276         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
26277         option; change to -msdata=data.
26278
26279 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26280
26281         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
26282         and -fopenmp.
26283
26284 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
26285
26286         PR target/35180
26287         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
26288
26289 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
26290
26291         * doc/invoke.texi (Code Gen Options): Expand discussion of
26292         -fno-common.
26293
26294 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
26295
26296         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
26297         * matrix-reorg.c (struct matrix_info): Likewise.
26298         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
26299         * rtl.h (struct mem_attrs): Likewise.
26300         * df.h (struct df): Likewise.
26301         * tree-data-ref.h (struct data_dependence_relation): Likewise.
26302         * ira-int.h (struct ira_allocno): Likewise.
26303         * df-scan.c (struct df_collection_rec): Likewise.
26304         * ira.c (struct equivalence): Likewise.
26305         * function.c (struct temp_slot): Likewise.
26306         * cfgloop.h (struct loop): Likewise.
26307
26308         PR debug/39485
26309         * function.c (use_register_for_decl): When not optimizing, disregard
26310         register keyword for variables with types containing methods.
26311
26312 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
26313
26314         PR middle-end/39447
26315         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
26316         (is_simple_operand): Call contains_component_ref_p before calling data
26317         reference analysis that would fail on COMPONENT_REFs.
26318
26319         * tree-vrp.c (search_for_addr_array): Fix formatting.
26320
26321 2009-03-18  Richard Guenther  <rguenther@suse.de>
26322
26323         * tree-vect-transform.c (vect_loop_versioning): Fold the
26324         generated comparisons.
26325         * tree-vectorizer.c (set_prologue_iterations): Likewise.
26326         (slpeel_tree_peel_loop_to_edge): Likewise.
26327
26328 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26329
26330         PR middle-end/37805
26331         * opts.c (print_specific_help): In addition to `undocumented',
26332         accept `separate' and `joined' flags if passed alone.  Describe
26333         output by the first matched one of those.
26334         (common_handle_option): Skip over empty strings.
26335         * gcc.c (display_help): Fix help string for `--help='.
26336         * doc/invoke.texi (Option Summary, Overall Options): With
26337         `--help=', classes and qualifiers can both be repeated, but
26338         only the latter can be negated.  One should not pass only
26339         negated qualifiers.  Fix markup and examples.
26340
26341         Revert
26342         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
26343         PR middle-end/37805
26344         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
26345         and -fhelp=separate.
26346
26347 2009-03-17  Jing Yu  <jingyu@google.com>
26348
26349         PR middle-end/39378
26350         * function.h (struct rtl_data): Move is_thunk from here...
26351         (struct function): ...to here.
26352         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
26353         * varasm.c (assemble_start_function): Change is_thunk from crtl to
26354         cfun.
26355         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
26356         cfun.
26357         (alpha_does_function_need_gp, alpha_start_function): Likewise.
26358         (alpha_output_function_end_prologue): Likewise.
26359         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
26360         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
26361         (rs6000_output_function_epilogue): Likewise.
26362         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
26363
26364 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
26365
26366         PR target/39482
26367         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
26368         from different units in a single alternative.
26369         (*truncdfsf_i387): Ditto.
26370         (*truncxfsf2_mixed): Ditto.
26371         (*truncxfdf2_mixed): Ditto.
26372
26373 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
26374
26375         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
26376         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
26377
26378         PR debug/39474
26379         * tree-ssa-live.c (remove_unused_locals): Don't remove local
26380         unused non-artificial variables when not optimizing.
26381
26382         PR debug/39471
26383         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
26384         DW_TAG_imported_module even if decl is IMPORTED_DECL with
26385         NAMESPACE_DECL in its DECL_INITIAL.
26386
26387         PR middle-end/39443
26388         * optabs.c (set_user_assembler_libfunc): New function.
26389         * expr.h (set_user_assembler_libfunc): New prototype.
26390         * c-common.c: Include libfuncs.h.
26391         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
26392         for memcmp, memset, memcpy, memmove and abort.
26393         * Makefile.in (c-common.o): Depend on libfuncs.h.
26394
26395         PR debug/39412
26396         * dwarf2out.c (gen_inlined_enumeration_type_die,
26397         gen_inlined_structure_type_die, gen_inlined_union_type_die,
26398         gen_tagged_type_instantiation_die): Removed.
26399         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
26400         do nothing.
26401
26402 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
26403
26404         PR testsuite/38526
26405         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
26406         its use.
26407         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
26408         (check-parallel-%): Ditto.
26409         (check-consistency): Ditto.
26410
26411 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
26412
26413         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
26414         local variable rhs by NULL_TREE.
26415
26416 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
26417
26418         PR target/39477
26419         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
26420
26421 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
26422
26423         PR target/39476
26424         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
26425
26426 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
26427
26428         PR target/39473
26429         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
26430         for ms->sysv ABI calls only in 64bit mode.
26431
26432         * config/i386/i386.md (untyped_call): Support 32bit.
26433
26434 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
26435
26436         * doc/extend.texi: Replace x86_65 with x86_64.
26437
26438 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
26439
26440         PR tree-optimization/39455
26441         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
26442         mismatches for POINTER_TYPE_P (type).
26443         (number_of_iterations_le): Likewise.
26444
26445 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
26446
26447         * config/picochip/picochip.c: Removed profiling support.
26448         * config/picochip/picochip.md: Removed profiling instruction.
26449         * config/picochip/picochip.h: Removed profiling builtin.
26450
26451 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
26452
26453         * doc/install.texi (--with-host-libstdcxx): Document.
26454
26455 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
26456
26457         PR target/34299
26458         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
26459         generate a warning if the function name does not begin with
26460         "__vector" and the function has either the 'signal' or 'interrupt'
26461         attribute, from here to ...
26462         (avr_declare_function_name): ...here. New function.
26463         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
26464         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
26465
26466 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
26467
26468         PR bootstrap/39454
26469         * cse.c (fold_rtx): Don't modify original const_arg1 when
26470         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
26471         separate variable instead.
26472         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
26473         from out of range shift counts.
26474         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
26475
26476 2009-03-13  Catherine Moore  <clm@codesourcery.com>
26477
26478         * config/i386/x-mingw32 (host-mingw32.o): Replace
26479         diagnostic.h with $(DIAGNOSTIC_H).
26480
26481 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
26482
26483         PR target/39431
26484         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
26485         predicate.
26486         * config/i386/sync.md (sync_compare_and_swap<mode>,
26487         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
26488         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
26489         into a register.
26490         (sync_double_compare_and_swapdi_pic,
26491         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
26492         cmpxchg8b_pic_memory_operand instead of just memory_operand.
26493
26494 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
26495
26496         PR target/39445
26497         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
26498
26499 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
26500
26501         PR target/39327
26502         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
26503         (avx_addsubv4df3): Likewise.
26504         (*avx_addsubv4sf3): Likewise.
26505         (sse3_addsubv4sf3): Likewise.
26506
26507 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
26508
26509         PR target/38824
26510         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
26511
26512 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
26513
26514         PR debug/39432
26515         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
26516         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
26517         registers for allocnos created from user-defined variables.
26518
26519 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
26520
26521         PR target/39181
26522         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
26523         of non-integer mode as well.
26524
26525 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
26526
26527         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
26528         for functions for which the parameter types are unknown.
26529
26530 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
26531
26532         PR target/39137
26533         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
26534         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
26535         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
26536         * config/i386/i386.c (ix86_local_alignment): For
26537         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
26538         long long variables on the stack to avoid dynamic realignment.
26539         Allow the first argument to be a decl rather than type.
26540         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
26541
26542 2009-03-11  Nick Clifton  <nickc@redhat.com>
26543
26544         PR target/5362
26545         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
26546         options.
26547         Add description to mno-lsim option.
26548         * config/mcore/mcore.h: Remove comment about deprecated m4align
26549         option.
26550         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
26551         * doc/invoke.texi: Add description of mno-lsim and
26552         mstack-increment options.
26553
26554         * config/fr30/fr30.opt: Document the -mno-lsim option.
26555         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
26556         and -mno-lsim options.
26557
26558 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
26559
26560         * fold-const.c (fold_comparison): Only call fold_inf_compare
26561         if the mode supports infinities.
26562
26563 2009-03-11  Jason Merrill  <jason@redhat.com>
26564
26565         PR debug/39086
26566         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
26567         end already did.  Notice GIMPLE_CALL modifications of the result.
26568         Don't copy debug information from an ignored decl or a decl from
26569         another function.
26570
26571 2009-03-10  Richard Guenther  <rguenther@suse.de>
26572             Nathan Froyd  <froydnj@codesourcery.com>
26573
26574         PR middle-end/37850
26575         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
26576         (__divMODE3): Likewise.
26577
26578 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
26579
26580         PR tree-optimization/39394
26581         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
26582         DECL_SIZE_UNIT of variable length FIELD_DECLs.
26583
26584 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
26585
26586         * recog.c (verfiy_changes): Disallow renaming of hard regs in
26587         inline asms for register asm ("") declarations.
26588
26589 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
26590
26591         * fold-const.c (fold_unary): Fix comment.
26592
26593 2009-03-07  Jan Hubicka  <jh@suse.cz>
26594
26595         PR target/39361
26596         * tree-inline.c (setup_one_parameter): Do replacement of const
26597         argument by constant in SSA form.
26598
26599 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
26600
26601         PR middle-end/38028
26602         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
26603         determine alignment passed to assign_stack_local.
26604         (assign_parms_unsplit_complex): Likewise.
26605         * except.c (sjlj_build_landing_pads): Likewise.
26606
26607 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
26608
26609         PR middle-end/39360
26610         * tree-flow.h (add_referenced_var): Return bool instead of void.
26611         * tree-dfa.c (add_referenced_var): Return result of
26612         referenced_var_check_and_insert call.
26613         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
26614         of referenced_var_check_and_insert.
26615
26616         PR debug/39372
26617         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
26618         (gen_variable_die): Emit DW_AT_location on abstract static variable's
26619         DIE, don't emit it if abstract origin already has it.
26620         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
26621         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
26622
26623 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
26624
26625         * genpreds.c (needs_variable): Fix parentheses at variable name
26626         detection.
26627         (write_tm_constrs_h): Indent generated code.
26628
26629 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
26630
26631         * doc/extend.texi (Function Attributes): Add documentation
26632         for isr attributes.
26633
26634 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
26635
26636         PR debug/39387
26637         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
26638         take locus from its DECL_SOURCE_LOCATION instead of input_location.
26639
26640 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
26641
26642         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
26643         the loop as bad.
26644
26645 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
26646
26647         PR debug/39379
26648         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
26649         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
26650
26651 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
26652
26653         * config/i386/i386.md (R8_REG, R9_REG): New constants.
26654         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
26655         constants instead of magic numbers.
26656         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
26657         (QI_REG_P): Ditto.
26658         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
26659         (x86_64_ms_abi_int_parameter_registers): Ditto.
26660         (x86_64_int_return_registers): Ditto.
26661         (ix86_maybe_switch_abi): Ditto.
26662         (ix86_expand_call): Ditto for clobbered_registers array.
26663         (ix86_hard_regno_mode_ok): Ditto.
26664         (x86_extended_QIreg_mentioned_p): Ditto.
26665
26666 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
26667
26668         PR tree-optimization/39349
26669         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
26670
26671         * combine.c (gen_lowpart_for_combine): Use omode when generating
26672         clobber.
26673
26674 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
26675
26676         PR rtl-optimization/39235
26677         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
26678
26679 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
26680
26681         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
26682
26683 2009-03-04  Richard Guenther  <rguenther@suse.de>
26684
26685         PR tree-optimization/39362
26686         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
26687         that occur in abnormal PHIs should be varying.
26688
26689 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
26690
26691         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
26692         Extend comments.
26693         (simple_iv):  Take loop as an argument instead of statement.
26694         * tree-scalar-evolution.h (simple_iv): Declaration changed.
26695         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
26696         to simple_iv.
26697         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
26698         Ditto.
26699         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
26700         * matrix-reorg.c (analyze_transpose): Ditto.
26701         * tree-data-ref.c (dr_analyze_innermost): Ditto.
26702         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
26703         * tree-predcom.c (ref_at_iteration): Ditto.
26704         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
26705
26706 2009-03-04  Richard Guenther  <rguenther@suse.de>
26707
26708         PR tree-optimization/39358
26709         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
26710         escaped_id and callused_id.
26711         (solve_graph): Likewise.
26712
26713 2009-03-04  Richard Guenther  <rguenther@suse.de>
26714
26715         PR tree-optimization/39339
26716         * tree-sra.c (try_instantiate_multiple_fields): Make it
26717         no longer ICE on the above.
26718
26719 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
26720
26721         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
26722         that fits within Pmode.
26723
26724 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
26725
26726         PR middle-end/10109
26727         * tm.texi (LIBCALL_VALUE): Update description.
26728
26729 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
26730
26731         PR middle-end/34443
26732         * doc/extend.texi (section): Update description.
26733
26734 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
26735
26736         PR middle-end/39345
26737         * tree-inline.c (remapped_type): New.
26738         (can_be_nonlocal): Call remapped_type instead of remap_type.
26739
26740 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
26741
26742         PR fortran/39354
26743         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
26744         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
26745
26746 2009-03-03  Richard Guenther  <rguenther@suse.de>
26747
26748         PR middle-end/39272
26749         * tree.c (tree_nonartificial_location): New function.
26750         * tree.h (tree_nonartificial_location): Declare.
26751         * builtins.c (expand_builtin_memory_chk): Provide location
26752         of the call location for artificial function pieces.
26753         (maybe_emit_chk_warning): Likewise.
26754         (maybe_emit_sprintf_chk_warning): Likewise.
26755         (maybe_emit_free_warning): Likewise.
26756         * expr.c (expand_expr_real_1): Likewise.
26757
26758 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
26759
26760         PR tree-optimization/39343
26761         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
26762         COMPONENT_REF t has ARRAY_TYPE.
26763
26764 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
26765
26766         PR middle-end/39335
26767         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
26768         when the type precision of the induction variable should be
26769         larger than the type precision of nit.
26770         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
26771         * graphite.c (graphite_loop_normal_form): Same.
26772         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
26773
26774 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
26775
26776         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
26777         (*call_1_rex64_ms_sysv): Use named constants instead of magic
26778         numbers to describe clobbered registers.
26779         (*call_value_0_rex64_ms_sysv): Ditto.
26780         * config/i386/mmx.md (mmx_emms): Ditto.
26781         (mmx_femms): Ditto.
26782
26783 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
26784
26785         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
26786         of ABI_64.
26787
26788 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
26789
26790         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
26791         (spu_section_type_flags): New function.
26792
26793 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
26794
26795         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
26796         reg_class_contents of FLOAT_REGS into a temporary.
26797
26798 2009-03-02  Richard Guenther  <rguenther@suse.de>
26799             Ira Rosen  <irar@il.ibm.com>
26800
26801         PR tree-optimization/39318
26802         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
26803         information to the vectorized statement.
26804
26805 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
26806
26807         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
26808         variable.  Use defined names instead of magic constants for REX SSE
26809         registers.
26810
26811 2009-03-01  Richard Guenther  <rguenther@suse.de>
26812
26813         PR tree-optimization/39331
26814         * omp-low.c (lower_send_shared_vars): Do not receive new
26815         values for the reference of DECL_BY_REFERENCE parms or results.
26816
26817 2009-03-01  Jan Hubicka  <jh@suse.cz>
26818
26819         PR debug/39267
26820         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
26821         BLOCK_NONLOCALIZED_VAR): New macros.
26822         (tree_block): Add nonlocalized_vars.
26823         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
26824         gen_decl_die): Add origin argument.  Allow generation of die with
26825         origin at hand only.
26826         (gen_member_die, gen_type_die_with_usage, force_decl_die,
26827         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
26828         of gen_*.
26829         (gen_block_die): Fix checking for unused blocks.
26830         (process_scope_var): Break out from .... ; work with origins only.
26831         (decls_for_scope) ... here; process nonlocalized list.
26832         (dwarf2out_ignore_block): Look for nonlocalized vars.
26833         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
26834         vars.
26835         (dump_scope_block): Dump them.
26836         * tree-inline.c (remap_decls): Handle nonlocalized vars.
26837         (remap_block): Likewise.
26838         (can_be_nonlocal): New predicate.
26839         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
26840
26841 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26842
26843         * configure: Regenerate.
26844
26845 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26846
26847         * optc-gen.awk: No need to duplicate option flags twice.
26848         Reuse help texts for duplicate options which do not have any.
26849
26850         * gcc.c (display_help): Document --version.
26851
26852         * gcc.c (main): If print_help_list and verbose_flag, ensure
26853         driver output comes before subprocess output.
26854
26855         * optc-gen.awk: Assign all remaining fields to help string,
26856         space-separated, for multi-line help in *.opt.
26857
26858         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
26859         -Wno-pedantic-ms-format is for MinGW targets only.
26860
26861         * doc/options.texi (Option file format): Fix bad indentation,
26862         restoring dropped sentence.
26863
26864 2009-02-28  Jan Hubicka  <jh@suse.cz>
26865
26866         * tree-inline.c (tree_function_versioning): Output debug info.
26867
26868 2009-02-28  Jan Hubicka  <jh@suse.cz>
26869
26870         PR debug/39267
26871         * tree-inline.c (setup_one_parameter): Do not copy propagate
26872         arguments when not optimizing.
26873
26874 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
26875
26876         PR target/39327
26877         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
26878         (avx_addsubv4df3): Likewise.
26879         (*avx_addsubv4sf3): Likewise.
26880         (sse3_addsubv4sf3): Likewise.
26881         (*avx_addsubv2df3): Likewise.
26882         (sse3_addsubv2df3): Likewise.
26883         (avx_unpckhps256): Correct item selectors.
26884         (avx_unpcklps256): Likewise.
26885         (avx_unpckhpd256): Likewise.
26886         (avx_unpcklpd256): Likewise.
26887
26888 2009-02-28  Jan Hubicka  <jh@suse.cz>
26889
26890         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
26891         static vars.
26892         (copy_arguments_for_versioning): If var is declared don't declare it.
26893         (tree_function_versioning): First setup substitutions and then copy
26894         args.
26895
26896 2009-02-27  Jan Hubicka  <jh@suse.cz>
26897
26898         PR debug/39267
26899         * cgraph.h (varpool_output_debug_info): Remove.
26900         * cgraphunit.c (varpool_output_debug_info): Remove.
26901         * dwarf2out.c (deferred_locations_struct): New struct
26902         (deferred_locations): New type.
26903         (deferred_locations_list): New static var.
26904         (deffer_location): New function.
26905         (gen_variable_die): Use it.
26906         (decls_for_scope): Output info on local static vars.
26907         (dwarf2out_finish): Process deferred locations.
26908         * varpool.c (varpool_output_debug_info): Remove.
26909
26910 2009-02-27  Jan Hubicka  <jh@suse.cz>
26911
26912         PR debug/39267
26913         * tree.h (TREE_PROTECTED): Fix comment.
26914         (BLOCK_HANDLER_BLOCK): Remove.
26915         (struct tree_block): Remove handler_block add body_block.
26916         (inlined_function_outer_scope_p): New.
26917         (is_body_block): Remove.
26918         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
26919         * dwarf2out.c (is_inlined_entry_point): Remove.
26920         (add_high_low_attributes): Use inlined_function_outer_scope_p.
26921         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
26922         code.
26923         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
26924         * gimplify.c (gimplify_expr): Gimplify body blocks.
26925         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
26926         block with multiple subblocks.
26927         (dump_scope_block): Prettier output; dump more flags and info.
26928         (dump_scope_blocks): New.
26929         (remove_unused_locals): Use dump_scope_blocks.
26930         * tree-flow.h (dump_scope_blocks): Declare.
26931         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
26932         * stmt.c (is_body_block): Remove.
26933         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
26934         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
26935
26936 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
26937
26938         PR middle-end/39308
26939         * graphite.c (graphite_loop_normal_form): Do not call
26940         number_of_iterations_exit from a gcc_assert.
26941
26942 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
26943
26944         * config/s390/s390.c (s390_swap_cmp): Look for conditional
26945         jumps if COND is NULL.
26946         (find_cond_jump): New function.
26947         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
26948         * config/s390/s390.md: Remove z10_cobra attribute value.
26949
26950 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
26951
26952         * config/alpha/alpha.h (alpha_expand_mov): Return false if
26953         force_const_mem returns NULL_RTX.
26954
26955 2009-02-26  Jan Hubicka  <jh@suse.cz>
26956
26957         PR debug/39267
26958         * cgraph.h (varpool_output_debug_info): Remove.
26959         * cgraphunit.c (varpool_output_debug_info): Remove.
26960         * dwarf2out.c (deferred_locations_struct): New struct
26961         (deferred_locations): New type.
26962         (deferred_locations_list): New static var.
26963         (deffer_location): New function.
26964         (gen_variable_die): Use it.
26965         (decls_for_scope): Output info on local static vars.
26966         (dwarf2out_finish): Process deferred locations.
26967         * varpool.c (varpool_output_debug_info): Remove.
26968
26969 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
26970
26971         PR rtl-optimization/39241
26972         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
26973         to subreg_offset_representable_p.
26974
26975 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
26976
26977         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
26978         execute function prototype.  Get f and nregs from max_reg_num
26979         and get_insns.  Remove the first backward pass as it's dead,
26980         guard the forward pass by flag_expensive_optimizations.
26981         (rest_of_handle_regmove): Delete.
26982         (pass_regmove): Replace it with regmove_optimize.
26983
26984 2009-02-25  Martin Jambor  <mjambor@suse.cz>
26985
26986         PR tree-optimization/39259
26987         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
26988         calls_alloca function flags.
26989         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
26990         calls are detected.
26991
26992 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
26993
26994         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
26995         flags_set_1_rtx, flags_set_1_set): Delete.
26996         (regmove_optimize): Do not call mark_flags_life_zones.
26997
26998 2009-02-24  Julian Brown  <julian@codesourcery.com>
26999
27000         PR target/35965
27001         * config/arm/arm.c (require_pic_register): Only set
27002         cfun->machine->pic_reg once per function.
27003
27004 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
27005
27006         * doc/invoke.texi (Link Options): Document an easier way to pass
27007         options that take arguments to the GNU linker using -Xlinker and -Wl.
27008
27009 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
27010
27011         PR target/33785
27012         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
27013
27014 2009-02-24  Richard Guenther  <rguenther@suse.de>
27015
27016         PR debug/39285
27017         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
27018
27019 2009-02-24  Richard Guenther  <rguenther@suse.de>
27020             Zdenek Dvorak  <ook@ucw.cz>
27021
27022         PR tree-optimization/39233
27023         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
27024         from converting them to a generic type.
27025
27026 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
27027
27028         PR tree-optimization/39260
27029         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
27030         contains a condition with a real type.
27031         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
27032
27033 2009-02-23  Jason Merrill  <jason@redhat.com>
27034
27035         PR c++/38880
27036         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
27037         narrowing_initializer_constant_valid_p.
27038         (narrowing_initializer_constant_valid_p): Don't return
27039         null_pointer_node for adding a pointer to itself.
27040
27041 2009-02-23  Jan Hubicka  <jh@suse.cz>
27042
27043         PR c/12245
27044         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
27045         resizing.
27046
27047 2009-02-23  Jan Hubicka  <jh@suse.cz>
27048
27049         PR tree-optimization/37709
27050         * tree.c (block_ultimate_origin): Move here from dwarf2out.
27051         * tree.h (block_ultimate_origin): Declare.
27052         * dwarf2out.c (block_ultimate_origin): Move to tree.c
27053         * tree-ssa-live.c (remove_unused_scope_block_p):
27054         Eliminate blocks containig no instructions nor live variables nor
27055         nested blocks.
27056         (dump_scope_block): New function.
27057         (remove_unused_locals): Enable removal of dead blocks by default;
27058         enable dumping at TDF_DETAILS.
27059
27060 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
27061
27062         * config/i386/i386.c (classify_argument): Don't allow COImode
27063         and OImode.
27064         (function_arg_advance_32): Don't allow OImode.
27065         (function_arg_32): Likewise.
27066         (function_value_32): Likewise.
27067         (return_in_memory_32): Likewise.
27068         (function_arg_64): Remove OImode comment.
27069
27070 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
27071
27072         PR target/39261
27073         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
27074         ix86_expand_vector_set for V4DImode in 64bit mode only.
27075         (ix86_expand_vector_init_one_var): Likewise.
27076
27077 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
27078
27079         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
27080
27081 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
27082
27083         PR bootstrap/39257
27084         * loop-iv.c: Revert last change.
27085         * emit-rtl.c: Likewise.
27086
27087 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
27088
27089         PR target/39256
27090         * config/i386/i386.c (type_natural_mode): Remove an extra
27091         space in the warning message.
27092         (function_value_32): Handle 32-byte vector modes.
27093         (return_in_memory_32): Likewise.
27094
27095 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
27096
27097         * loop-iv.c (truncate_value): New function.
27098         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
27099         of lowpart_subreg.
27100         (lowpart_subreg): Move to...
27101         * emit-rtl.c: ...here.
27102
27103 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
27104
27105         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
27106         accidental and undocumented change at revision 140860.
27107
27108 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
27109
27110         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
27111         take gimple_seq * arguments.
27112         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
27113         types_compatible_p langhook.
27114
27115 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
27116             Joseph Myers  <joseph@codesourcery.com>
27117
27118         * config/arm/arm.c (arm_builtin_va_list): New function.
27119         (arm_expand_builtin_va_start): Likewise.
27120         (arm_gimplify_va_arg_expr): Likewise.
27121         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
27122         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
27123         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
27124         (va_list_type): New variable.
27125         (arm_mangle_type): Mangle va_list_type appropriately.
27126
27127 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
27128
27129         PR middle-end/39157
27130         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
27131         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
27132         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
27133         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
27134         parameter to 1000 for -O1 by default.
27135         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
27136         parameter.
27137         * loop-invariant.c: Include params.h.
27138         (move_loop_invariants): Don't call move_single_loop_invariants on
27139         very large loops.
27140
27141 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
27142
27143         * calls.c (emit_library_call_value_1): Use slot_offset instead of
27144         offset when calculating bounds for indexing stack_usage_map.  Fixes
27145         a buffer overflow with certain target setups.
27146
27147 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
27148
27149         PR target/39240
27150         * calls.c (expand_call): Clear try_tail_call if caller and callee
27151         disagree in promotion of function return value.
27152
27153 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
27154
27155         PR target/39175
27156         * c-common.c (c_determine_visibility): If visibility changed and
27157         DECL_RTL has been already set, call make_decl_rtl to update symbol
27158         flags.
27159
27160 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
27161
27162         PR c++/39188
27163         * varasm.c (assemble_variable): Don't check DECL_NAME when
27164         globalizing a variable.
27165
27166 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
27167
27168         PR c/38483
27169         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
27170         expression before any __builtin_trap call.
27171         * c-typeck.c (build_function_call): Convert and check function
27172         arguments before generating a call to a trap.  Evaluate the
27173         function arguments before the trap.
27174
27175 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
27176
27177         PR target/39228
27178         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
27179         (UNSPEC_FXAM_MEM): New unspec.
27180         (fxam<mode>2_i387_with_temp): New insn and split pattern.
27181         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
27182         memory using fxam<mode>2_i387_with_temp to remove excess precision.
27183
27184 2009-02-19  Richard Guenther  <rguenther@suse.de>
27185
27186         PR tree-optimization/39207
27187         PR tree-optimization/39074
27188         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
27189         storedanything_tree): New.
27190         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
27191         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
27192         (build_succ_graph): Add edges from STOREDANYTHING to all
27193         non-direct nodes.
27194         (init_base_vars): Initialize STOREDANYTHING.
27195         (compute_points_to_sets): Free substitution info after
27196         building the succ graph.
27197         (ipa_pta_execute): Likewise.
27198
27199         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
27200         field.
27201         (do_ds_constraint): Do not add to special var or non-pointer
27202         field solutions.
27203         (type_could_have_pointers): Split out from ...
27204         (could_have_pointers): ... here.  For arrays use the element type.
27205         (create_variable_info_for): Initialize may_have_pointers.
27206         (new_var_info): Likewise.
27207         (handle_lhs_call): Make the HEAP variable unknown-sized.
27208         (intra_create_variable_infos): Use a type with pointers for
27209         PARM_NOALIAS, make it unknown-sized.
27210
27211 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
27212
27213         PR target/39224
27214         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
27215
27216 2009-02-18  Jason Merrill  <jason@redhat.com>
27217
27218         PR target/39179
27219         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
27220         value if DECL_EXTERNAL.
27221         * tree-sra.c (sra_walk_gimple_assign): Likewise.
27222         * target.h (gcc_target::binds_local_p): Clarify "module".
27223         * tree.h (TREE_PUBLIC): Clarify "module".
27224
27225 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
27226
27227         PR target/38891
27228         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
27229         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
27230
27231 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
27232
27233         PR target/39082
27234         * c.opt (Wabi): Support C and ObjC.
27235         (Wpsabi): New.
27236
27237         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
27238
27239         * config/i386/i386.c (classify_argument): Warn once about the ABI
27240         change when passing union with long double.
27241
27242         * doc/invoke.texi: Update -Wabi for warning psABI changes.
27243
27244 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
27245
27246         PR c/35447
27247         * c-parser.c (c_parser_compound_statement): Always enter and leave
27248         a scope.
27249
27250 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27251
27252         PR target/34587
27253         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
27254
27255 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
27256
27257         PR tree-optimization/36922
27258         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
27259         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
27260         Likewise.
27261
27262 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
27263
27264         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
27265         to 0 for EABI64.
27266
27267 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
27268
27269         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
27270
27271 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
27272
27273         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
27274         tree sharing.
27275
27276 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
27277             Richard Sandiford  <rdsandiford@googlemail.com>
27278
27279         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
27280         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
27281         (loongson_biadd): ...this.
27282
27283 2009-02-17  Richard Guenther  <rguenther@suse.de>
27284
27285         PR tree-optimization/39202
27286         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
27287         a var make sure to follow existing collapses.
27288
27289 2009-02-17  Richard Guenther  <rguenther@suse.de>
27290
27291         PR middle-end/39214
27292         * langhooks.c (lhd_print_error_function): Check for NULL block.
27293
27294 2009-02-17  Richard Guenther  <rguenther@suse.de>
27295
27296         PR tree-optimization/39204
27297         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
27298         of the PHI arg.
27299
27300 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
27301
27302         * config/soft-fp/double.h: Update from glibc CVS.
27303
27304 2009-02-17  Richard Guenther  <rguenther@suse.de>
27305
27306         PR tree-optimization/39207
27307         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
27308         strict-aliasing warnings for pointers pointing to NULL.
27309
27310 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
27311
27312         PR c/35446
27313         * c-parser.c (c_parser_braced_init): Call pop_init_level when
27314         skipping until next close brace.
27315
27316 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
27317
27318         PR target/37049
27319         * config/i386/i386.c (ix86_expand_push): Set memory alignment
27320         to function argument boundary.
27321
27322 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
27323
27324         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
27325         in the lea_add. Reload eventually constraints it properly.
27326         * config/picochip/constraints.md: Remove the target constraint
27327         "b", since it is not needed anymore.
27328
27329 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
27330
27331         * gthr-dce.h: Uglify function parameter and local variable names.
27332         * gthr-gnat.h: Likewise.
27333         * gthr-mipssde.h: Likewise.
27334         * gthr-nks.h: Likewise.
27335         * gthr-posix95.h: Likewise.
27336         * gthr-posix.h: Likewise.
27337         * gthr-rtems.h: Likewise.
27338         * gthr-single.h: Likewise.
27339         * gthr-solaris.h: Likewise.
27340         * gthr-tpf.h: Likewise.
27341         * gthr-vxworks.h: Likewise.
27342         * gthr-win32.h: Likewise.
27343
27344 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
27345
27346         PR target/39196
27347         * config/i386/i386.md: Restrict the new peephole2 to move
27348         between MMX/SSE registers.
27349
27350 2009-02-15  Richard Guenther  <rguenther@suse.de>
27351
27352         Revert
27353         2009-02-13  Richard Guenther  <rguenther@suse.de>
27354
27355         * configure.ac: Enable LFS.
27356         * configure: Re-generate.
27357         * config.in: Likewise.
27358
27359 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
27360
27361         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
27362         spu_srqwbyte, spu_srqwbytebc): Define.
27363         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
27364         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
27365         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
27366         "shrqby_<mode>"): New insn-and-split patterns.
27367         * config/spu/spu.c (expand_builtin_args): Determine and return
27368         number of operands using spu_builtin_description data.
27369         (spu_expand_builtin_1): Use it.
27370
27371 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
27372
27373         PR target/38056
27374         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
27375         TARGET_CONST_GP.
27376
27377 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
27378
27379         PR target/39149
27380         * config/i386/i386.c (override_options): Correct warning
27381         messages for -malign-loops, -malign-jumps and -malign-functions.
27382
27383 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
27384
27385         PR target/39152
27386         * config/i386/i386.md: Restrict the new peephole2 to move
27387         between the general purpose registers.
27388
27389 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
27390
27391         PR target/39162
27392         * config/i386/i386.c (type_natural_mode): Add a new argument.
27393         Return the original mode and warn ABI change if vector size is 32byte.
27394         (function_arg_advance): Updated.
27395         (function_arg): Likewise.
27396         (ix86_function_value): Likewise.
27397         (ix86_return_in_memory): Likewise.
27398         (ix86_sol10_return_in_memory): Likewise.
27399         (ix86_gimplify_va_arg): Likewise.
27400         (function_arg_32): Don't warn ABX ABI change here.
27401         (function_arg_64): Likewise.
27402
27403 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
27404
27405         * loop-iv.c (implies_p): In the final case, test that operands 0
27406         of the two comparisons match.
27407
27408         * config/bfin/bfin.c (find_prev_insn_start): New function.
27409         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
27410         (find_next_insn_start): Move.
27411
27412 2009-02-13  Richard Guenther  <rguenther@suse.de>
27413
27414         * configure.ac: Enable LFS.
27415         * configure: Re-generate.
27416         * config.in: Likewise.
27417
27418 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
27419
27420         PR c/35444
27421         * c-parser.c (c_parser_parms_list_declarator): Discard pending
27422         sizes on syntax error after some arguments have been parsed.
27423
27424 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
27425
27426         * doc/invoke.texi (-fira): Remove.
27427
27428 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
27429
27430         * caller-save.c: Replace regclass.c with reginfo.c in comments.
27431         * recog.c: Likewise.
27432         * rtl.h: Likewise.
27433
27434 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
27435
27436         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
27437         (umul_ppmm): Likewise.
27438         (count_leading_zeros): Likewise.
27439         (count_trailing_zeros): Likewise.
27440         (UMUL_TIME): Likewise.
27441
27442 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
27443
27444         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
27445         soft-fp/t-softfp to tmake_file.
27446
27447         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
27448         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
27449         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
27450         IA64_BUILTIN_INFQ]: New.
27451         (ia64_init_builtins): Initialize __builtin_infq,
27452         __builtin_fabsq and __builtin_copysignq if not HPUX.
27453         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
27454         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
27455
27456         * config/ia64/lib1funcs.asm (__divtf3): Define only if
27457         SHARED is defined.
27458         (__fixtfti): Likewise.
27459         (__fixunstfti): Likewise.
27460         (__floattitf): Likewise.
27461
27462         * config/ia64/libgcc-glibc.ver: New.
27463         * config/ia64/t-fprules-softfp: Likewise.
27464         * config/ia64/sfp-machine.h: Likewise.
27465
27466         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
27467         (LIBGCC2_TF_CEXT): Likewise.
27468         (TF_SIZE): Likewise.
27469         (TARGET_INIT_LIBFUNCS): Likewise.
27470
27471         * config/ia64/t-glibc (SHLINB_MAPFILES):
27472         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
27473
27474 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
27475
27476         * config/i386/i386.c (construct_container): Rewrite processing
27477         BLKmode with X86_64_SSE_CLASS.
27478
27479 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
27480
27481         PR target/39152
27482         * config/i386/i386.md: Replace simplify_replace_rtx with
27483         replace_rtx in the new peephole2.
27484
27485 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
27486
27487         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
27488         loop unrolling do not happen at -O2.
27489
27490 2009-02-12  Michael Matz  <matz@suse.de>
27491
27492         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
27493
27494 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
27495
27496         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
27497         for -g3.
27498
27499 2009-02-12  Ben Elliston  <bje@au.ibm.com>
27500
27501         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
27502         patterns when updating the back chain.  Missed in the 2009-02-10
27503         change.
27504
27505 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
27506
27507         * doc/extend.texi (Decimal Floating Types): Update identifier of
27508         draft TR and list of missing support.
27509
27510 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
27511
27512         PR middle-end/39154
27513         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
27514         bit to variable length decl's flags, add it also to its
27515         pointer replacement variable.
27516
27517 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
27518             Jakub Jelinek  <jakub@redhat.com>
27519
27520         PR target/39118
27521         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
27522         (memory_blockage): New expander.
27523         (*memory_blockage): New insn pattern.
27524         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
27525         instead of general blockage at the end of function prologue when
27526         frame pointer is used to access red zone area.  Do not emit blockage
27527         when profiling, it is emitted in generic code.
27528         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
27529         function epilogue when frame pointer is used to access red zone area.
27530
27531 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
27532
27533         PR target/38824
27534         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
27535         by arithmetic with memory operands.
27536         * config/i386/predicates.md (commutative_operator): New.
27537
27538 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
27539
27540         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
27541         bulleted lists.
27542
27543 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
27544
27545         * alias.h (record_alias_subset): Declare.
27546         * alias.c (record_alias_subset): Make global.
27547
27548 2009-02-10  Nick Clifton  <nickc@redhat.com>
27549
27550         * tree-parloops.c: Change license to GPLv3.
27551         * ipa-struct-reorg.c: Change license to GPLv3.
27552         * ipa-struct-reorg.h: Change license to GPLv3.
27553
27554 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
27555
27556         PR c/39084
27557         * c-decl.c (start_struct): Return NULL on error.
27558
27559 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
27560
27561         PR middle-end/39124
27562         * cfgloopmanip.c (remove_path): Call remove_bbs after
27563         cancel_loop_tree, not before it.
27564
27565         PR target/39139
27566         * function.h (struct function): Add has_local_explicit_reg_vars bit.
27567         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
27568         VAR_DECLs were seen.
27569         * tree-ssa-live.c (remove_unused_locals): Recompute
27570         cfun->has_local_explicit_reg_vars.
27571         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
27572         copies or clearings if cfun->has_local_explicit_reg_vars.
27573
27574 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
27575
27576         PR target/39118
27577         * config/i386/i386.c (expand_prologue): Emit blockage at the end
27578         of function prologue when frame pointer is used to access
27579         red zone area.
27580
27581 2009-02-10  Richard Guenther  <rguenther@suse.de>
27582
27583         PR middle-end/39127
27584         * gimplify.c (gimple_regimplify_operands): Always look if
27585         we need to create a temporary.
27586
27587 2009-02-10  Richard Guenther  <rguenther@suse.de>
27588
27589         PR tree-optimization/39132
27590         * tree-loop-distribution.c (todo): New global var.
27591         (generate_memset_zero): Trigger TODO_rebuild_alias.
27592         (tree_loop_distribution): Return todo.
27593
27594 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
27595
27596         PR target/39119
27597         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
27598         (x86_64_reg_class_name): Removed.
27599         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
27600         first one isn't X86_64_SSE_CLASS or any other ones aren't
27601         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
27602         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
27603         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
27604         and 3 X86_64_SSEUP_CLASS.
27605         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
27606         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
27607
27608 2009-02-10  Ben Elliston  <bje@au.ibm.com>
27609
27610         * config/rs6000/rs6000.md (allocate_stack): Always use an update
27611         form instruction to update the stack back chain word, even if the
27612         user has disabled the generation of update instructions.
27613         (movdi_<mode>_update_stack): New.
27614         (movsi_update_stack): Likewise.
27615         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
27616         always use an update form instruction to update the stack back
27617         chain word.
27618
27619 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
27620
27621         PR middle-end/38953
27622         * graphite.c (if_region_set_false_region): After moving a region in
27623         the false branch of a condition, remove the empty dummy basic block.
27624         (gloog): Remove wrong fix for PR38953.
27625
27626 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
27627
27628         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
27629         generation due to implicit sign extension.
27630
27631 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
27632
27633         PR middle-end/38981
27634         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
27635         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
27636
27637 2009-02-09  Richard Guenther  <rguenther@suse.de>
27638
27639         PR middle-end/35202
27640         * convert.c (convert_to_real): Disable (float)fn((double)x)
27641         to fnf(x) conversion if errno differences may occur and
27642         -fmath-errno is set.
27643
27644 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
27645
27646         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
27647         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
27648         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
27649
27650 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
27651
27652         PR c/35434
27653         * c-common.c (handle_alias_attribute): Disallow attribute for
27654         anything not a FUNCTION_DECL or VAR_DECL.
27655
27656 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
27657
27658         PR c/39035
27659         * real.c (do_compare): Special-case compare of zero against
27660         decimal float value.
27661
27662 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
27663
27664         PR c/36432
27665         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
27666         as indicating flexible array members unless the field itself is
27667         being declarared as the incomplete array.
27668
27669 2009-02-06  Jan Hubicka  <jh@suse.cz>
27670
27671         PR tree-optimization/38844
27672         * ipa-inline.c (try_inline): Stop inlining recursion when edge
27673         is already inlined.
27674
27675 2009-02-06  Richard Guenther  <rguenther@suse.de>
27676
27677         PR middle-end/38977
27678         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
27679         fork because we may expand it as __gcov_fork.
27680
27681 2009-02-06  Nick Clifton  <nickc@redhat.com>
27682
27683         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
27684
27685 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
27686
27687         PR tree-optimization/35659
27688         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
27689         vn_phi_eq): Shortcut if hashcode does not match.
27690         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
27691         NULL operands.
27692         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
27693         and avoid iterative_hash_expr.
27694         (FOR_EACH_VALUE_ID_IN_SET): New.
27695         (value_id_compare): Remove.
27696         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
27697         sort expressions by value id.
27698
27699 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
27700
27701         PR target/38991
27702         * config/sh/predicates.md (general_movsrc_operand): Don't check
27703         the subreg of system registers here.
27704
27705 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
27706
27707         PR c++/39106
27708         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
27709         on the copied decl.
27710
27711 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
27712
27713         PR rtl-optimization/39110
27714         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
27715         addresses, not aligned ones.
27716
27717 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
27718             Richard Guenther  <rguenther@suse.de>
27719
27720         PR tree-optimization/39100
27721         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
27722         comment says and add edges.
27723
27724 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
27725
27726         PR c/35435
27727         * c-common.c (handle_tls_model_attribute): Ignore attribute for
27728         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
27729
27730 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
27731
27732         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
27733         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
27734         register_bb_in_sese, new_sese, free_sese): Moved.
27735         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
27736         outermost_loop_in_scop, build_scop_iteration_domain,
27737         expand_scalar_variables_ssa_name, get_vdef_before_scop,
27738         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
27739         Use loop_in_sese_p instead of loop_in_scop_p.
27740         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
27741         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
27742         (scopdet_basic_block_info): Fix bug in scop detection.
27743         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
27744         eq_loop_to_cloog_loop): Remove.
27745         (nb_loops_around_loop_in_scop, nb_loop
27746         ref_nb_loops): Moved here...
27747         * graphite.h (ref_nb_loops): ... from here.
27748         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
27749         (loop_domain_dim, loop_iteration_vector_dim): Remove.
27750         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
27751
27752 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
27753             Hans-Peter Nilsson  <hp@axis.com>
27754
27755         PR rtl-optimization/37889
27756         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
27757         Move offset handling from PLUS to before the switch.  Use new
27758         arguments when considering SYMBOL_REFs too.
27759         (rtx_addr_can_trap_p): Pass dummy offset and size.
27760         (enum may_trap_p_flags): Remove.
27761         (may_trap_p_1): Pass size from MEM_SIZE.
27762
27763         PR rtl-optimization/38921
27764         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
27765         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
27766         * rtlanal.c (may_trap_after_code_motion_p): Delete.
27767         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
27768
27769 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
27770
27771         AVX Programming Reference (January, 2009)
27772         * config/i386/sse.md (*vpclmulqdq): New.
27773
27774 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
27775
27776         PR tree-optimization/38977
27777         PR gcov-profile/38292
27778         * calls.c (special_function_p): Disregard __builtin_ prefix.
27779
27780 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
27781
27782         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
27783         non-indexable addresses even before reload.
27784
27785 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
27786
27787         PR c/29129
27788         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
27789         as having variable size.  Do not give an error for unnamed
27790         parameters with [*] declarators.  Give a warning for type names
27791         with [*] declarators and mark them as variable size.
27792         * c-parser.c (c_parser_sizeof_expression): Do not give an error
27793         for sizeof applied to [*] type names.
27794
27795 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
27796
27797         PR C++/36607
27798         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
27799
27800 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
27801
27802         * gcc.c (process_command): Update copyright notice dates.
27803         * gcov.c (print_version): Likewise.
27804         * gcov-dump.c (print_version): Likewise.
27805         * mips-tfile.c (main): Likewise.
27806         * mips-tdump.c (main): Likewise.
27807
27808 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
27809
27810         PR c/35433
27811         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
27812         for composite type involving a zero-length array type.
27813
27814 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
27815
27816         PR target/35318
27817         * function.c (match_asm_constraints_1): Skip over
27818         initial optional % in the constraint.
27819
27820         PR inline-asm/39059
27821         * c-parser.c (c_parser_postfix_expression): If fixed point is not
27822         supported, don't accept FIXED_CSTs.
27823         * c-decl.c (finish_declspecs): Error if fixed point is not supported
27824         and _Sat is used without _Fract/_Accum.  Set specs->type to
27825         integer_type_node for cts_fract/cts_accum if fixed point is not
27826         supported.
27827
27828 2009-02-02  Catherine Moore  <clm@codesourcery.com>
27829
27830         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
27831
27832 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
27833
27834         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
27835         (ABI_HAS_64BIT_SYMBOLS): Use it.
27836         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
27837
27838 2009-02-02  Paul Brook  <paul@codesourcery.com>
27839
27840         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
27841
27842 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
27843
27844         PR inline-asm/39058
27845         * recog.h (asm_operand_ok): Add constraints argument.
27846         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
27847         recurse on matching constraint.
27848         (check_asm_operands): Pass constraints as 3rd argument to
27849         asm_operand_ok.  Don't look up matching constraint here.
27850         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
27851         to asm_operand_ok.
27852
27853 2009-02-02  Ben Elliston  <bje@au.ibm.com>
27854
27855         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
27856         TARGET_NARROW_VOLATILE_BITFIELD macro names.
27857
27858 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27859
27860         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
27861         information.  Remove some obsolete information.  Reorganize.
27862
27863         * config/pa/fptr.c: Revert license to GPL 2.
27864         * config/pa/milli64.S: Likewise.
27865
27866 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
27867
27868         PR target/38904
27869         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
27870         LIBRARY name in, instead of hard-coding it.
27871         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
27872         extra target make frag to tmake_files according to EH model.
27873         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
27874         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
27875         frags that define makefile variable EH_MODEL appropriately.
27876         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
27877         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
27878         to "-sjlj" according to type of EH configured.
27879         (LIBGCC_SONAME):  Concatenate it to shared library base name.
27880         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
27881         to "_sjlj" according to type of EH configured.
27882         (LIBGCC_SONAME):  Concatenate it to shared library base name.
27883         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
27884         (SHLIB_LINK):  Add missing semicolon to if-else construct.
27885         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
27886         string value of "pe_dll" command-line option.
27887         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
27888         (SHLIB_SONAME):  Use it when overriding t-cygming default.
27889         (SHLIB_IMPLIB):  Override t-cygming default.
27890         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
27891         string value of "pe_dll" command-line option.
27892
27893 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
27894
27895         PR target/38952
27896         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
27897         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
27898
27899 2009-01-31  Richard Guenther  <rguenther@suse.de>
27900
27901         PR tree-optimization/38937
27902         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
27903         computing the transitive closure.
27904
27905 2009-01-30  Richard Guenther  <rguenther@suse.de>
27906
27907         PR tree-optimization/39041
27908         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
27909         Propagate variable indices only if the types match for this stmt.
27910
27911 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
27912
27913         PR target/39013
27914         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
27915         inline but never defined.
27916
27917 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
27918
27919         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
27920         (*insv_h_di_reg_extimm): New insn.
27921         (*insv_l<mode>_reg_extimm): New insn.
27922
27923 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
27924
27925         * config/picochip/picochip.c (flag_conserve_stack): set
27926         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
27927         fconserve-stack. Reduce call-overhead used by inliner.
27928
27929 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
27930
27931         PR/38157
27932         * common.opt (flag_conserve_stack): Initialised to zero.
27933
27934 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
27935
27936         PR/39002
27937         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
27938         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
27939         method.
27940
27941 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
27942
27943         * ira-color.c (allocno_reload_assign): Update comments.
27944         * regmove.c (regmove_optimize): Likewise.
27945
27946         * ra.h: Removed.
27947
27948 2009-01-29  Robert Millan  <rmh@aybabtu.com>
27949
27950         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
27951         * config/i386/kopensolaris-gnu.h: New file.  Undefine
27952         `MD_UNWIND_SUPPORT'.
27953         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
27954
27955 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
27956
27957         PR tree-optimization/39007
27958         * tree-loop-distribution.c (generate_builtin): Use
27959         recompute_dominator to compute the immediate dominator of the
27960         basic block just after the loop.
27961
27962 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
27963
27964         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
27965         (ASM_OUTPUT_DWARF_PCREL): Define.
27966
27967 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
27968
27969         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
27970         * doc/passes.texi: Remove entries about regclass, local-alloc, and
27971         global.  Modify entries about regmove and IRA.
27972
27973         * ra-conflict.c: Remove the file.
27974
27975         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
27976
27977         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
27978         (pass_regclass_init): Rename to pass_reginfo_init.
27979
27980         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
27981
27982         * toplev.h (flag_ira): Remove.
27983
27984         * caller-save.c (setup_save_areas): Remove flag_ira.
27985
27986         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
27987
27988         * global.c: Remove the file.
27989
27990         * opts.c (decode_options): Remove flag_ira.
27991
27992         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
27993
27994         * regmove.c: Modify file description.
27995         (find_use_as_address, try_auto_increment): Define them only if
27996         AUTO_INC_DEC is defined.
27997         (replacement_quality, replace_in_call_usage, fixup_match_1,
27998         stable_and_no_regs_but_for_p): Remove.
27999         (reg_set_in_bb): Make it static.
28000         (regmove_optimize): Remove flag_ira and code which worked for
28001         !flag_ira.
28002
28003         * local-alloc.c: Remove the file.
28004
28005         * common.opt (fira): Remove.
28006
28007         * ira.c: Include except.h.
28008         (eliminable_regset): Move from global.c.
28009         (mark_elimination): Ditto.  Remove flag_ira.
28010         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
28011         equiv_mem_modified, validate_equiv_mem_from_store,
28012         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
28013         contains_replace_regs, memref_referenced_p, memref_used_between_p,
28014         no_equiv, recorded_label_ref): Move from local-alloc.c.
28015         (update_equiv_regs): Ditto.  Make it static.
28016         (print_insn_chain, print_insn_chains): Move it from global.c.
28017         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
28018         (build_insn_chain): Ditto.  Make it static.
28019         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
28020         Rename to init_live_subregs.
28021         (gate_ira): Remove flag_ira.
28022
28023         * regclass.c: Rename reginfo.c.  Change file description.
28024         (FORBIDDEN_INC_DEC_CLASSES): Remove.
28025         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
28026         (init_reg_sets_1): Remove code for evaluation of
28027         reg_class_superclasses and losing_caller_save_reg_set.
28028         (init_regs): Remove init_reg_autoinc.
28029         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
28030         ok_for_base_p_nonstrict): Remove.
28031         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
28032         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
28033         corresponding entries.
28034         (dump_regclass, record_operand_costs, scan_one_insn,
28035         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
28036         record_address_regs, auto_inc_dec_reg_p): Remove.
28037         (gt-regclass.h): Rename to gt-reginfo.h.
28038
28039         * rtl.h (dump_global_regs, retry_global_alloc,
28040         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
28041
28042         * Makefile.in (RA_H): Remove.
28043         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
28044         Rename regclass.o to reginfo.o.
28045         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
28046         gt-reginfo.h.
28047         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
28048         (GTFILES): Rename regclass.c to reginfo.c.
28049
28050         * passes.c (init_optimization_passes): Remove pass_local_alloc and
28051         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
28052
28053         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
28054         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
28055         Remove flag_ira.
28056         (finish_spills): Ditto.  Remove code for !flag_ira.
28057
28058 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
28059
28060         PR middle-end/35854
28061         * doc/invoke.texi (rtl debug options): Complete rewrite.
28062         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
28063         to auto_inc_dec".
28064         * mode-switching.c (pass_mode_switching): Rename pass from
28065         "mode-sw" to "mode_sw".
28066         * except.c (pass_convert_to_eh_ranges): Rename pass from
28067         "eh-ranges" to "eh_ranges".
28068         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
28069         to "subreg1".
28070
28071
28072 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
28073             Alexander Monakov  <amonakov@ispras.ru>
28074
28075         PR middle-end/38857
28076         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
28077         register.
28078         (move_exprs_to_boundary): Change return type and pass through
28079         should_move from move_op.  Relax assert.  Update usage ...
28080         (schedule_expr_on_boundary): ... here.  Use should_move instead of
28081         cant_move.
28082         (move_op_orig_expr_found): Indicate that insn was disconnected from
28083         stream.
28084         (code_motion_process_successors): Do not call after_merge_succs
28085         callback if original expression was not found when traversing any of
28086         the branches.
28087         (code_motion_path_driver): Change return type.  Update prototype.
28088         (move_op): Update comment.  Add a new parameter (should_move).  Update
28089         prototype.  Set *should_move based on indication provided by
28090         move_op_orig_expr_found.
28091
28092 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
28093
28094         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
28095         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
28096         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
28097         * config/rs6000/rs6000.c (rs6000_override_options): Default
28098         avoid-indexed-addresses on for Power6, off for everything else.
28099         (avoiding_indexed_address_p): New function.
28100         (rs6000_legitimize_address): Use it.
28101         (rs6000_legitimate_address): Likewise.
28102         * config/rs6000/rs6000.md (movXX_updateX): Likewise
28103
28104 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
28105
28106         PR tree-optimization/38997
28107         * tree-loop-distribution.c (generate_memset_zero): Use
28108         POINTER_PLUS_EXPR for a pointer addition.
28109
28110 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
28111
28112         * config/s390/s390.md (bswap<mode>2): New pattern added.
28113
28114 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
28115
28116         * config/s390/s390.md (*tls_load_31): Added type attribute.
28117
28118 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
28119
28120         * config/s390/s390.md: Fix a few comments.
28121
28122 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
28123
28124         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
28125         (*tm<mode>_full): Fixed z10prop attribute.
28126         (*tst<mode>_extimm): Fixed z10prop attribute.
28127         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
28128         (*tstqiCCT_cconly): Fixed z10prop attribute.
28129         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
28130         (*movsi_larl): Fixed z10prop attribute.
28131         (*movsi_zarch): Fixed z10prop attribute.
28132         (*movsi_eas): Fixed z10prop attribute.
28133         (*movhi): Fixed z10prop attribute.
28134         (*movqi): Fixed z10prop attribute.
28135         (*movstrictqi): Fixed z10prop attribute.
28136         (*mov<mode>): Fixed z10prop attribute.
28137         (*movcc): Fixed z10prop attribute.
28138         (*sethighpartdi_64): Fixed z10prop attribute.
28139         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
28140         (*negdi2_sign_cc): Fixed z10prop attribute.
28141         (*negdi2_sign): Fixed z10prop attribute.
28142         (*absdi2_sign_cc): Fixed z10prop attribute.
28143         (*absdi2_sign): Fixed z10prop attribute.
28144         (*negabsdi2_sign_cc): Fixed z10prop attribute.
28145         (*negabsdi2_sign): Fixed z10prop attribute.
28146         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
28147         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
28148         (doloop_si64): Fixed z10prop attribute.
28149         (doloop_si31): Fixed z10prop attribute.
28150         (doloop_long): Fixed z10prop attribute.
28151         (indirect_jump): Fixed z10prop attribute.
28152         (nop): Fixed z10prop attribute.
28153         (main_base_64): Fixed z10prop attribute.
28154         (reload_base_64): Fixed z10prop attribute.
28155
28156 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
28157
28158         PR rtl-optimization/38740
28159         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
28160         if !optimize.
28161         * config/mips/mips.c (mips_reorg): Likewise.
28162
28163 2009-01-28  Richard Guenther  <rguenther@suse.de>
28164
28165         PR tree-optimization/38926
28166         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
28167         with the correct value id to a value.
28168         (do_regular_insertion): Use the value number of edoubleprime
28169         for the value number of the expr.
28170
28171         Revert
28172         2008-08-21  Richard Guenther  <rguenther@suse.de>
28173
28174         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
28175         a PHI ask VN if it is already available.
28176         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
28177         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
28178
28179 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
28180
28181         PR middle-end/38934
28182         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
28183         set to varying whenever max has TREE_OVERFLOW set, similarly
28184         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
28185
28186 2009-01-28  Richard Guenther  <rguenther@suse.de>
28187
28188         PR middle-end/38908
28189         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
28190         uninitialized aggregate uses in call arguments.
28191
28192 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
28193
28194         PR tree-optimization/38984
28195         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
28196         the nothing_id variable if -fno-delete-null-pointer-checks.
28197
28198 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
28199
28200         PR target/38988
28201         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
28202         (set_got_offset_rex64): Ditto.
28203
28204 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
28205
28206         PR target/38941
28207         * doc/extend.texi: Improve local variable with asm reg.
28208
28209 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
28210
28211         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
28212         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
28213         was not supplied then set warn_packed_bitfield_compat to the
28214         default value of 1.
28215         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
28216         against 1.
28217
28218 2009-01-27  Richard Guenther  <rguenther@suse.de>
28219
28220         PR tree-optimization/38503
28221         * cfgexpand.c (expand_gimple_basic_block): Ignore
28222         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
28223         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
28224         variables that cannot have TBAA applied.
28225         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
28226         statements.
28227
28228 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
28229
28230         PR middle-end/38969
28231         * calls.c (initialize_argument_information): Do not wrap complex
28232         arguments in SAVE_EXPR.
28233
28234 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
28235
28236         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
28237         (INSTALL_LIBGCC): Revert typo commit.
28238
28239 2009-01-26  Richard Guenther  <rguenther@suse.de>
28240
28241         PR tree-optimization/38745
28242         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
28243         from special handling.
28244
28245 2009-01-26  Richard Guenther  <rguenther@suse.de>
28246
28247         PR tree-optimization/38745
28248         * tree-ssa.c (execute_update_addresses_taken): Do not include
28249         variables that cannot possibly be a register in not_reg_needs.
28250         Do not clear TREE_ADDRESSABLE on vars that may not become
28251         registers.
28252         * tree-ssa.c (update_alias_info_1): Include those in the set
28253         of addressable vars.
28254
28255 2009-01-26  Richard Guenther  <rguenther@suse.de>
28256
28257         PR middle-end/38851
28258         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
28259         * tree-ssa-dse.c: Include langhooks.h
28260         (execute_simple_dse): Remove stores with zero size.
28261
28262 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
28263
28264         PR c/38957
28265         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
28266         as PLUS_EXPR.
28267
28268 2009-01-24  Julian Brown  <julian@codesourcery.com>
28269
28270         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
28271         config/arm/linux-atomic.c.
28272         * config/arm/linux-atomic.c: New.
28273
28274 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
28275
28276         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
28277         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
28278         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
28279
28280 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
28281
28282         PR c/38938
28283         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
28284         properly.
28285
28286 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
28287
28288         PR tree-optimization/38953
28289         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
28290         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
28291         (gloog): Split the exit of the scop when the scop exit is a loop exit.
28292         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
28293         changed the CFG.
28294
28295 2009-01-24  Paul Brook  <paul@codesourcery.com>
28296
28297         * config/arm/neon.md (neon_type): Move to arm.md.
28298         (neon_mov<VSTRUCT>): Add neon_type attribute.
28299         * config/arm/arm.md (neon_type): Move to here.
28300         (conds): Add "unconditioal" and use as default for NEON insns.
28301
28302 2009-01-24  Ben Elliston  <bje@au.ibm.com>
28303
28304         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
28305         void *' warning from -Wc++-compat.
28306         * Makefile.in (dominance.o-warn): Remove.
28307
28308 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
28309
28310         PR tree-optimization/38932
28311         * fold-const.c (fold_unary_ignore_overflow): New.
28312         * tree.h (fold_unary_ignore_overflow): Declare.
28313         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
28314         * tree-ssa-sccvn.c (visit_reference_op_load,
28315         simplify_unary_expression): Likewise.
28316
28317 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
28318
28319         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
28320         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
28321         regardless of their type.
28322         * c-common.c (handle_packed_attribute): Don't ignore packed on
28323         bitfields.
28324         * c.opt (Wpacked-bitfield-compat): New warning option.
28325         * stor-layout.c (place_field): Warn if offset of a field changed.
28326         * doc/extend.texi (packed): Mention the ABI change.
28327         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
28328         (Warning Options): Add it to the list.
28329
28330 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
28331
28332         * c-opts.c (c_common_post_options): Fix a typo in comments.
28333
28334 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
28335
28336         PR middle-end/38615
28337         * gimplify.c (gimplify_init_constructor): Fix promotion of const
28338         variables to static.
28339         * doc/invoke.texi (-fmerge-all-constants): Update description.
28340
28341 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
28342
28343         PR target/38931
28344         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
28345         (*movdi_1_rex64): Use type "mmx" for alternative 5.
28346
28347 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
28348
28349         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
28350         a word boundary.
28351         (LOCAL_ALIGNMENT): Similarly.
28352
28353 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
28354             Joseph Myers  <joseph@codesourcery.com>
28355
28356         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
28357         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
28358         * config/arm/arm-tune.md: Regenerate.
28359         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
28360         -march=iwmmxt2.
28361
28362 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
28363
28364         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
28365         version number to five.
28366
28367 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
28368
28369         PR c++/38930
28370         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
28371         * c-common.c (set_underlying_type): Likewise.
28372         (is_typedef_decl ): Likewise
28373         * tree.h: Likewise
28374         (set_underlying_type): Likewise.
28375         (is_typedef_type): Likewise.
28376
28377 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
28378
28379         PR middle-end/38587
28380         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
28381         crossing setjmps.
28382
28383 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
28384
28385         PR bootstrap/37660
28386         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
28387         (LIBGCC_SPEC):  Don't define.
28388         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
28389
28390 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
28391
28392         PR rtl-optimization/38879
28393         * alias.c (base_alias_check): Unaligned access via AND address can
28394         alias all surrounding object types except those with sizes equal
28395         or wider than the size of unaligned access.
28396
28397 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
28398
28399         PR c++/26693
28400         * c-decl.c (clone_underlying_type): Move this ...
28401         * c-common.c (set_underlying_type): ... here.
28402         Also, make sure the function properly sets TYPE_STUB_DECL() on
28403         the newly created typedef variant type.
28404         (is_typedef_decl ): New entry point.
28405         * tree.h: Added a new member member_types_needing_access_check to
28406         struct tree_decl_non_common.
28407         (set_underlying_type): New entry point.
28408         (is_typedef_type): Likewise.
28409
28410 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
28411
28412         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
28413         Check whether two instructions have memory references that
28414         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
28415         are helper functions for traversing.
28416         * alias.h (insn_alias_sets_confilict_p): New prototypes.
28417         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
28418         not to draw dependency edge for instructions with non-conflicting
28419         alias sets.
28420
28421 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
28422
28423         PR other/38758
28424         * longlong.h: Update copyright years.  Use soft-fp license notice.
28425         Sync __clz_tab declaration with glibc.
28426
28427 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
28428
28429         PR target/30687
28430         * doc/extend.texi (syscall_linkage): New.
28431         (version_id): Modify.
28432
28433 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
28434             Richard Guenther  <rguenther@suse.de>
28435
28436         PR tree-optimization/38747
28437         PR tree-optimization/38748
28438         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
28439         conversion if the base address is an indirect reference and the
28440         aliasing sets could cause issues.
28441
28442 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
28443
28444         * common.opt (fgraphite, fgraphite-identity): Add comment for
28445         explaining why these options are not documented.
28446
28447 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
28448
28449         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
28450         gimple_call_lhs is NULL.
28451
28452 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
28453
28454         PR target/38868
28455         * emit-rtl.c (adjust_address_1): Make sure memref is never
28456         overwritten.
28457
28458 2009-01-20  Ben Elliston  <bje@au.ibm.com>
28459
28460         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
28461         const qualifier from arg parameter. Remove unnecessary cast to char *.
28462         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
28463         const qualifier from arg 2.
28464
28465 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
28466
28467         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
28468
28469 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
28470
28471         PR c/38869
28472         * rtl.h (reinit_regs): New prototype.
28473         * regclass.c: Include ira.h.
28474         (reinit_regs): New.
28475         * Makefile.in (regclass.o): Add ira.h.
28476         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
28477
28478 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
28479
28480         PR target/38736
28481         * c-common.c (handle_aligned_attribute): Use
28482         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
28483         default alignment value.
28484
28485         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
28486
28487         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
28488         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
28489
28490         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
28491         __BIGGEST_ALIGNMENT__.
28492
28493         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
28494
28495 2009-01-18  Richard Guenther  <rguenther@suse.de>
28496
28497         PR tree-optimization/38819
28498         * tree-flow.h (operation_could_trap_helper_p): Declare.
28499         * tree-eh.c (operation_could_trap_helper_p): Export.
28500         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
28501         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
28502         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
28503         are about to insert a possibly trapping instruction and fail
28504         in this case.
28505
28506 2009-01-18  Andreas Schwab  <schwab@suse.de>
28507
28508         * doc/install.texi (Configuration): Remove obsolete paragraph
28509         about use of --with-gnu-ld with --with-gnu-as.
28510
28511 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
28512
28513         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
28514         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
28515         Follow spelling conventions.
28516
28517 2009-01-18  Ben Elliston  <bje@au.ibm.com>
28518
28519         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
28520         C++ warning about implicit conversion from void * to struct
28521         bitmap_head_def *.
28522         (bitmap_obstack_free): Likewise for bitmap_element *.
28523         * Makefile.in (bitmap.o-warn): Remove.
28524
28525 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
28526
28527         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
28528
28529 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
28530             Tobias Grosser  <tobi.grosser@amd.com>
28531
28532         * graphite.c (graphite_trans_scop_block): Do not block single
28533         nested loops.
28534
28535 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
28536
28537         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
28538         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
28539         test with assertion.
28540
28541 2009-01-16  Richard Guenther  <rguenther@suse.de>
28542
28543         PR tree-optimization/38835
28544         PR middle-end/36227
28545         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
28546         and INT + PTR -> (INT)(PTR p+ INT) folding.
28547         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
28548
28549 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
28550
28551         PR target/38554
28552         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
28553         the subreg from a lowpart subreg if it is also casting the value.
28554
28555 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
28556             Tobias Grosser  <tobi.grosser@amd.com>
28557
28558         * graphite.c (compare_prefix_loops): New.
28559         (build_scop_canonical_schedules): Rewritten.
28560         (graphite_transform_loops): Move build_scop_canonical_schedules
28561         after build_scop_iteration_domain.
28562
28563 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
28564             Tobias Grosser  <tobi.grosser@amd.com>
28565
28566         * graphite.c (add_conditions_to_domain): Add the loops to
28567         the dimension of the iteration domain.  Do copy the domain
28568         only when it exists.
28569         (build_scop_conditions_1): Do not call add_conditions_to_domain.
28570         (add_conditions_to_constraints): New.
28571         (can_generate_code_stmt, can_generate_code): Removed.
28572         (gloog): Do not call can_generate_code.
28573         (graphite_transform_loops): Call add_conditions_to_constraints
28574         after building the iteration domain.
28575
28576 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
28577
28578         PR tree-optimization/38789
28579         * tree-ssa-threadedge.c
28580         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
28581         __builtin_constant_p.
28582
28583 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
28584
28585         * dce.c (delete_unmarked_insns): Reversed the order that insns are
28586         examined before deleting them.
28587
28588 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
28589
28590         * function.c (aggregate_value_p): Correctly extract the function
28591         type from CALL_EXPR_FN lookup.
28592
28593 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
28594
28595         * config/picochip/picochip.c (picochip_override_options): Revert
28596         CFI asm flag disable commited previously.
28597
28598 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
28599             Tobias Grosser  <tobi.grosser@amd.com>
28600             Jan Sjodin  <jan.sjodin@amd.com>
28601
28602         * graphite.c (scan_tree_for_params): On substractions negate
28603         all the coefficients of the term.
28604         (clast_to_gcc_expression_red): New.  Handle reduction expressions
28605         of more than two operands.
28606         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
28607         (get_vdef_before_scop): Handle also the case of default definitions.
28608
28609 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
28610
28611         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
28612         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
28613         Also use them when walking CALL_INSN_FUNCTION_USAGE.
28614
28615 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
28616             Joey Ye  <joey.ye@intel.com>
28617
28618         PR middle-end/37843
28619         * cfgexpand.c (expand_stack_alignment): Don't update stack
28620         boundary nor check incoming stack boundary here.
28621         (gimple_expand_cfg): Update stack boundary and check incoming
28622         stack boundary here.
28623
28624 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
28625
28626         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
28627
28628 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
28629
28630         PR rtl-optimization/38245
28631         * calls.c (expand_call): Add stack arguments to
28632         CALL_INSN_FUNCTION_USAGE even for pure calls (when
28633         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
28634         in regs and partially in memory or BLKmode arguments.
28635         (emit_library_call_value_1): Add stack arguments to
28636         CALL_INSN_FUNCTION_USAGE even for pure calls (when
28637         ACCUMULATE_OUTGOING_ARGS).
28638         * dce.c: Include tm_p.h.
28639         (find_call_stack_args): New function.
28640         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
28641         argument.
28642         (mark_insn): Call find_call_stack_args for CALL_Ps.
28643         (prescan_insns_for_dce): Walk insns backwards in bb rather than
28644         forwards.  Allocate and free arg_stores bitmap if needed, pass it
28645         down to deletable_insn_p, don't mark stores set in arg_stores
28646         bitmap, clear the bitmap at the beginning of each bb.
28647         * Makefile.in (dce.o): Depend on $(TM_P_H).
28648
28649 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
28650
28651         PR target/22599
28652         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
28653         to make sure the insn is a conditional test (bug 22599).  Reformat a
28654         few long lines.
28655
28656 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
28657
28658         PR middle-end/38431
28659         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
28660         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
28661         (gloog): Do not call cleanup_tree_cfg.
28662         (graphite_transform_loops): Call cleanup_tree_cfg after all
28663         scops have been code generated.
28664
28665 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
28666         * doc/gty.texi (Invoking the garbage collector): Added new node
28667         and section documenting ggc_collect.
28668
28669 2009-01-14  Richard Guenther  <rguenther@suse.de>
28670
28671         PR tree-optimization/38826
28672         PR middle-end/38477
28673         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
28674         initialization notes only if we actually emitted a warning.
28675         (intra_create_variable_infos): Add constraints for a result decl
28676         that is passed by hidden reference.
28677         (build_pred_graph): Mark all related variables non-direct on
28678         address-taking.
28679
28680 2009-01-14  Nick Clifton  <nickc@redhat.com>
28681
28682         * ira-conflicts.c: Include addresses.h for the definition of
28683         base_reg_class.
28684         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
28685         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
28686
28687 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
28688
28689         PR target/38811
28690         * Makefile.in (ira-lives.o): Add except.h.
28691
28692         * ira-lives.c: Include except.h.
28693         (process_bb_node_lives): Process can_throw_internal.
28694
28695 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
28696
28697         PR rtl-optimization/38774
28698         * combine.c (simplify_set): When undoing cc_use change, don't do
28699         PUT_CODE on the newly created comparison, but instead put back the
28700         old comparison.
28701
28702 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
28703
28704         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
28705         values.  Remove duplicate arm8 entry.
28706
28707 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
28708
28709         PR tree-optimization/38786
28710         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
28711         the SSA_NAME case of expand_scalar_variables_expr.
28712         Set the type of an expression to the type of its assign statement.
28713         (expand_scalar_variables_expr): Also gather the scalar computation
28714         used to index the memory access.  Do not pass loop_p.
28715         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
28716         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
28717         the gimple_stmt_iterator where it inserts new code.
28718         Do not pass loop_p.
28719         (copy_bb_and_scalar_dependences): Do not pass loop_p.
28720         (translate_clast): Update call to copy_bb_and_scalar_dependences.
28721
28722 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
28723
28724         * graphite.h (debug_value): Removed.
28725         * graphite.c (debug_value): Removed.
28726
28727 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
28728
28729         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
28730         ldrd/strd with two 32-bit instructions.
28731
28732 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
28733
28734         * config/arm/arm.c (struct processors): Pass for speed down into
28735         cost helper functions.
28736         (const_ok_for_op): Handle COMPARE and inequality nodes.
28737         (arm_rtx_costs_1): Rewrite.
28738         (arm_size_rtx_costs): Update prototype.
28739         (arm_rtx_costs): Pass speed down to helper functions.
28740         (arm_slowmul_rtx_costs): Rework cost calculations.
28741         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
28742         (arm_9e_rtx_costs): Likewise.
28743
28744 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
28745
28746         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
28747         relocations of local symbols wider than UNITS_PER_WORD are not valid.
28748         (alpha_legitimize_address): Do not split local symbols wider than
28749         UNITS_PER_WORD into HIGH/LO_SUM parts.
28750
28751 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
28752
28753         PR bootstrap/38580
28754         * gcc.c (process_command): Replace call to execvp with calls
28755         to pex_one and exit.
28756
28757 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
28758
28759         PR target/29141
28760         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
28761         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
28762         variant for devices with 3-byte PC.
28763         (__tablejump_elpm__): New.
28764
28765 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
28766
28767         PR c/32041
28768         * c-parser.c (c_parser_postfix_expression): Allow `->' in
28769         offsetof member-designator, handle it as `[0].'.
28770
28771 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
28772
28773         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
28774         function when not using named sections on targets with named sections
28775         if branch distance is less than 262132.
28776
28777 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
28778
28779         * combine.c (combine_instructions):  Recompute
28780         optimize_this_for_speed_p  for each BB in the main combine loop.
28781
28782 2009-01-12  Tomas Bily  <tbily@suse.cz>
28783
28784         PR middlend/38385
28785         * tree-loop-distribution.c (prop_phis): New function.
28786         (generate_builtin): Call prop_phis.
28787
28788 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
28789
28790         PR tree-optimization/38807
28791         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
28792         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
28793
28794 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
28795
28796         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
28797         subreg of op0 to the original op0.
28798
28799 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
28800
28801         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
28802
28803 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
28804
28805         PR debug/7055
28806         * mips-tfile.c (parse_def): Fix parsing of def strings
28807         starting with digits.
28808
28809 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
28810
28811         PR target/38695
28812         * config/arm/arm.c (arm_is_long_call_p): Don't call
28813         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
28814
28815 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
28816
28817         * regrename.c (regrename_optimize): Fix dumping.
28818         (find_oldest_value_reg): Preserve REG_POINTER.
28819         (copy_hardreg_forward_1): Likewise.
28820
28821 2009-01-09  Diego Novillo  <dnovillo@google.com>
28822
28823         * gimple.h (struct gimple_statement_base) <uid>: Document
28824         the restrictions on its use.
28825         (gimple_uid): Tidy.
28826         (gimple_set_uid): Tidy.
28827
28828 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
28829
28830         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
28831         zero guard even if align_bytes != 0 and count is smaller than
28832         size_needed.
28833
28834 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
28835
28836         PR rtl-optimization/38495
28837         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
28838         (add_range_and_copies_from_move_list): Print all added ranges.
28839         Add ranges to memory optimized destination.
28840
28841 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
28842
28843         PR target/38686
28844         PR target/38708
28845         * config/i386/i386.c (override_options): Reject
28846         -mstringop-strategy=rep_8byte with -m32.
28847         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
28848         to 1.  Do count comparison against epilogue_size_needed at compile
28849         time even when count_exp was constant forced into register.  For
28850         size_needed don't jump to epilogue, instead just avoid aligning
28851         and invoke the body algorithm.  If need_zero_guard, add zero guard
28852         even if count is non-zero, but smaller than size_needed + number of
28853         bytes that could be stored for alignment.
28854         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
28855         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
28856         but smaller than size_needed + number of bytes that could be stored
28857         for alignment.  Compare size_needed with epilogue_size_needed instead
28858         of desired_align - align, don't adjust size_needed, pass
28859         epilogue_size_needed to the epilogue expanders.
28860
28861         PR c/35742
28862         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
28863
28864 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
28865
28866         * pa.c (last_address): Change to unsigned.
28867         (update_total_code_bytes): Change argument to unsigned.  Don't
28868         check if insn addresses are set.
28869         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
28870         addresses are not set.
28871         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
28872
28873 2009-01-09  Nick Clifton  <nickc@redhat.com>
28874
28875         * config/sh/symbian.c: Replace uses of DECL_INLINE with
28876         DECL_DECLARED_INLINE_P.
28877
28878 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
28879
28880         PR middle-end/38347
28881         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
28882         GET_MODE (op0) in operand_subword_force calls.
28883
28884         PR middle-end/38771
28885         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
28886         fold_convert arg0 operands to TREE_TYPE (op0) first.
28887
28888 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
28889
28890         * params.def (ira-max-conflict-table-size): Decrease default value
28891         to 1000.
28892
28893 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
28894
28895         PR tree-optimization/37031
28896         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
28897         on parameter_set.
28898         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
28899         allocate it using gc instead of heap, use VEC_quick_push instead of
28900         VEC_safe_push.
28901         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
28902         instead of heap, use VEC_quick_push instead of VEC_safe_push.
28903         * tree-data-ref.h (struct access_matrix): Change matrix to gc
28904         allocated vector from heap allocated.
28905         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
28906         * tree-loop-linear.c (linear_transform_loops): Allocate nest
28907         vector only after perfect_loop_nest_depth call.
28908
28909 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
28910             Jan Sjodin  <jan.sjodin@amd.com>
28911
28912         PR tree-optimization/38559
28913         * graphite.c (debug_value, copy_constraint,
28914         swap_constraint_variables, scale_constraint_variable, ): New.
28915         (get_lower_bound, get_upper_bound): Removed.
28916         (graphite_trans_bb_strip_mine): Clean up this code that works
28917         only for constant number of iterations.  Fully copy upper and
28918         lower bound constraints, not only the constant part of them.
28919         * graphite.h (debug_value): Declared.
28920
28921 2009-01-08  Ira Rosen  <irar@il.ibm.com>
28922
28923         PR tree-optimization/37194
28924         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
28925         Don't add the cost of cost model guard in prologue to scalar
28926         outside cost in case of known number of iterations.
28927
28928 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
28929             Alan Modra  <amodra@bigpond.net.au>
28930
28931         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
28932         non-word-aligned REG+CONST addressing.
28933
28934 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
28935
28936         PR target/38706
28937         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
28938         free_after_compilation when outputting a thunk.
28939         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
28940         Do not call free_after_compilation here.
28941
28942 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
28943
28944         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
28945         (ix86_valid_target_attribute_inner_p): Ditto.
28946
28947 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
28948
28949         PR tree-optimization/38492
28950         PR tree-optimization/38498
28951         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
28952         * tree-chrec.h (scev_is_linear_expression): Declared.
28953         * graphite.c (graphite_cannot_represent_loop_niter): New.
28954         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
28955         (graphite_loop_normal_form): Use gcc_assert.
28956         (scan_tree_for_params): Use CASE_CONVERT.
28957         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
28958         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
28959         Use gcc_assert.  Discard scops that contain unhandled cases.
28960         (build_scop_conditions): Return a boolean status for unhandled cases.
28961         (strip_mine_profitable_p): Print the loop number, not its depth.
28962         (is_interchange_valid): Pass the depth of the loop nest, don't
28963         recompute it wrongly.
28964         (graphite_trans_bb_block): Same.
28965         (graphite_trans_bb_block): Print tentative of loop blocking.
28966         (graphite_trans_scop_block): Do not print that the loop has been
28967         blocked.
28968         (graphite_transform_loops): Do not handle scops that contain condition
28969         scalar phi nodes.
28970
28971 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
28972
28973         AVX Programming Reference (December, 2008)
28974         * config/i386/avxintrin.h (_mm256_stream_si256): New.
28975         (_mm256_stream_pd): Likewise.
28976         (_mm256_stream_ps): Likewise.
28977
28978         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
28979         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
28980         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
28981         (bdesc_special_args): Add __builtin_ia32_movntdq256,
28982         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
28983         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
28984         (ix86_expand_special_args_builtin): Likewise.
28985
28986         * config/i386/sse.md (AVXMODEDI): New.
28987         (avx_movnt<mode>): Likewise.
28988         (avx_movnt<mode>): Likewise.
28989         (<sse>_movnt<mode>): Remove AVX support.
28990         (sse2_movntv2di): Likewise.
28991
28992 2009-01-07  Richard Guenther  <rguenther@suse.de>
28993
28994         PR middle-end/38751
28995         * fold-const.c (extract_muldiv): Remove obsolete comment.
28996         (fold_plusminus_mult_expr): Undo MINUS_EXPR
28997         to PLUS_EXPR canonicalization for the canonicalization.
28998
28999 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
29000
29001         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
29002         hosted cross-compilers generating less efficient code.
29003
29004 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
29005
29006         * function.h (rtl_data): Add a dbr_scheduled_p field.
29007         * reorg.c (dbr_schedule): Set it.
29008         (gate_handle_delay_slots): Check it.
29009         * config/mips/mips.c (mips_base_delayed_branch): Delete.
29010         (mips_reorg): Check flag_delayed_branch instead of
29011         mips_base_delayed_branch.
29012         (mips_override_options): Don't set mips_base_delayed_branch
29013         or flag_delayed_branch.
29014
29015 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
29016
29017         PR rtl-optimization/38426.
29018         * ira.c (ira): Set current_function_is_leaf earlier.
29019
29020 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
29021
29022         PR rtl-optimization/38722
29023         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
29024         too early, only set a flag and modify after last possible
29025         undo_all point.
29026
29027 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
29028
29029         PR c/34252
29030         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
29031         * real.c (decimal_single_format): Correct values of emin and emax.
29032         (decimal_double_format): Ditto.
29033         (decimal_quad_format): Ditto.
29034         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
29035         computation of DECnn_MIN and DECnn_MAX for corrected values of
29036         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
29037         __DECnn_MIN__, and adjust its computation for the corrected value
29038         of emin.
29039
29040 2009-01-06  Jan Hubicka  <jh@suse.cz>
29041
29042         PR target/38744
29043         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
29044
29045 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
29046
29047         * doc/contrib.texi (Contributors): Slightly adjust the end note.
29048         Add Robert Clark to the list of testers.
29049
29050 2009-01-06  Jan Hubicka  <jh@suse.cz>
29051             Kai Tietz  <kai.tietz@onevision.com>
29052
29053         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
29054         * config/i386/i386.c (ix86_expand_call): Add clobbers.
29055
29056 2009-01-06  Jan Hubicka  <jh@suse.cz>
29057             Kai Tietz  <kai.tietz@onevision.com>
29058
29059         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
29060         for w64 ABI.
29061         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
29062         (ix86_nsaved_regs): Count only general purpose regs.
29063         (ix86_nsaved_sseregs): New.
29064         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
29065         to 16 for w64; compute padding and size of sse reg save area.
29066         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
29067         general purpose regs.
29068         (ix86_emit_save_sse_regs_using_mov): New.
29069         (ix86_expand_prologue): Save SSE regs if needed.
29070         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
29071         (ix86_emit_restore_sse_regs_using_mov): New.
29072         (ix86_expand_epilogue): Save SSE regs if needed.
29073
29074 2009-01-06  Jan Hubicka  <jh@suse.cz>
29075             Kai Tietz  <kai.tietz@onevision.com>
29076
29077         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
29078         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
29079         functions when accumulate outgoing args is off.
29080
29081 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
29082
29083         PR bootstrap/38742
29084         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
29085         before using pseudos_have_intersected_live_ranges_p.
29086
29087         * ira-int.h (ira_assert): Always define.
29088
29089 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
29090
29091         AVX Programming Reference (December, 2008)
29092         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
29093         (_mm256_permute2_pd): Likewise.
29094         (_mm_permute2_ps): Likewise.
29095         (_mm256_permute2_ps): Likewise.
29096         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
29097         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
29098
29099         * config/i386/i386.c (ix86_builtins): Remove
29100         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
29101         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
29102         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
29103         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
29104         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
29105         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
29106         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
29107         __builtin_ia32_vpermil2ps256.
29108         (ix86_init_mmx_sse_builtins): Updated.
29109         (ix86_expand_args_builtin): Likewise.
29110
29111 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
29112
29113         * pa.c (output_call): Relocate non-jump insns in the delay slot of
29114         long absolute calls when generating PA 2.0 code.
29115
29116 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
29117
29118         PR rtl-optimization/38583
29119         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
29120
29121         * params.def (ira-max-conflict-table-size): New.
29122
29123         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
29124
29125         * ira.h (ira_conflicts_p): New external definition.
29126
29127         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
29128         table.  Report this.  Return result of building.
29129         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
29130         building conflict table.
29131
29132         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
29133         (ira_color): Use ira_conflicts_p.
29134
29135         * global.c: Include ira.h.
29136         (pseudo_for_reload_consideration_p, build_insn_chain): Use
29137         ira_conflicts_p.
29138
29139         * Makefile.in (global.o): Add ira.h.
29140
29141         * ira-build.c (mark_all_loops_for_removal,
29142         propagate_some_info_from_allocno): New.
29143         (remove_unnecessary_allocnos): Call
29144         propagate_some_info_from_allocno.
29145         (remove_low_level_allocnos): New.
29146         (remove_unnecessary_regions): Add parameter.  Call
29147         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
29148         parameter to remove_unnecessary_regions.
29149         (ira_build): Remove all regions but root if the conflict table was
29150         not built.  Update conflict hard regs for allocnos crossing calls.
29151
29152         * ira.c (ira_conflicts_p): New global.
29153         (ira): Define and use ira_conflicts_p.
29154
29155         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
29156         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
29157         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
29158
29159 2009-01-06  Ben Elliston  <bje@au.ibm.com>
29160
29161         * gengtype-lex.l (YY_NO_INPUT): Define.
29162
29163 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
29164
29165         PR c/34911
29166         * c-common.c (handle_vector_size_attribute): Also reject
29167         BOOLEAN_TYPE types.
29168
29169 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
29170
29171         PR tree-optimization/38492
29172         * graphite.c (rename_map_elt, debug_rename_elt,
29173         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
29174         rename_map_elt_info, eq_rename_map_elts,
29175         get_new_name_from_old_name, bb_in_sese_p): Moved around.
29176         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
29177         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
29178         (sese_build_livein_liveouts): New.
29179         (new_sese, free_sese): New.
29180         (new_scop): Call new_sese.
29181         (free_scop): Call free_sese.
29182         (rename_variables_from_edge, rename_phis_end_scop): Removed.
29183         (register_old_new_names): Renamed register_old_and_new_names.
29184         (register_scop_liveout_renames, add_loop_exit_phis,
29185         insert_loop_close_phis, struct igp,
29186         default_liveout_before_guard, add_guard_exit_phis,
29187         insert_guard_phis, copy_renames): New.
29188         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
29189         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
29190         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
29191         (scop_adjust_phis_for_liveouts): New.
29192         (gloog): Call scop_adjust_phis_for_liveouts.
29193
29194         * graphite.h (struct sese): Documented.  Added fields liveout,
29195         num_ver and livein.
29196         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
29197         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
29198         (struct scop): Added field liveout_renames.
29199         (SCOP_LIVEOUT_RENAMES): New.
29200
29201 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
29202
29203         PR tree-optimization/38510
29204         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
29205         (translate_clast): Call recompute_all_dominators before
29206         graphite_verify.
29207         (gloog): Call recompute_all_dominators before graphite_verify.
29208
29209 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
29210             Jan Sjodin  <jan.sjodin@amd.com>
29211
29212         PR tree-optimization/38500
29213         * graphite.c (create_sese_edges): Call fix_loop_structure after
29214         splitting blocks.
29215
29216 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
29217
29218         * config.gcc: Add m32r*-*-rtems*.
29219         * config/m32r/rtems.h: New file.
29220
29221 2009-01-05  Ben Elliston  <bje@au.ibm.com>
29222
29223         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
29224         (.po.pox): Likewise.
29225         (po/gcc.pot): Likewise.
29226
29227 2009-01-04  David S. Miller  <davem@davemloft.net>
29228
29229         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
29230         (STARTING_FRAME_OFFSET): Always set to zero.
29231
29232 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
29233
29234         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
29235         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
29236         fixed-point types, and vectors of the same.
29237
29238 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
29239
29240         * config/mips/sync.md (*mb_barrier): Rename to...
29241         (*memory_barrier): ...this.
29242
29243 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
29244
29245         * doc/extend.texi (Function Attributes): Move @cindex after @item
29246         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
29247         and put in alphabetical order. Fix 'target' name and put in order.
29248         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
29249         typos.
29250
29251 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
29252
29253         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
29254         (memory_barrier): Expand as unspec instead of unspec_volatile.
29255         Remove mem:BLK from insn operands.  Use Pmode scratch register.
29256         (*memory_barrier): Define as unspec instead of unspec_volatile.
29257         Use (match_dup 0) as input operand.
29258
29259         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
29260         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
29261         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
29262         scratch register.  Remove operand 1.
29263         (*stbar): Define as unspec instead of unspec_volatile.
29264         Use (match_dup 0) as input operand, remove (const_int 8).
29265         (*membar): Define as unspec instead of unspec_volatile.
29266         Use (match_dup 0) as input operand, remove input operand 2.
29267
29268         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
29269         (memory_barrier): Expand as unspec instead of unspec_volatile.
29270         Remove mem:BLK from insn operands.  Use Pmode scratch register.
29271         (*memory_barrier): Define as unspec instead of unspec_volatile.
29272         Use (match_dup 0) as input operand.
29273
29274         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
29275         Remove mem:BLK from insn operands.  Use Pmode scratch register.
29276         Set volatile flag on operand 0.
29277         (*memory_barrier): New insn pattern.
29278
29279         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
29280         insn operands.
29281         (*memory_barrier): Use (match_dup 0) as input operand.
29282
29283         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
29284         Remove mem:BLK from insn operands.  Use Pmode scratch register.
29285         Set volatile flag on operand 0.
29286         (*mb_internal): New insn pattern.
29287
29288         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
29289
29290 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
29291
29292         PR middle-end/38586
29293         * function.c (struct temp_slot): Move to the section of the file
29294         that deals with temp slots.  Remove field 'address'.
29295         (temp_slot_address_table): New hash table of address -> temp slot.
29296         (struct temp_slot_address_entry): New struct, items for the table.
29297         (temp_slot_address_compute_hash, temp_slot_address_hash,
29298         temp_slot_address_eq, insert_temp_slot_address): Support functions
29299         for the new table.
29300         (find_temp_slot_from_address): Rewrite to use the new hash table.
29301         (remove_unused_temp_slot_addresses): Remove addresses of temp
29302         slots that have been made available.
29303         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
29304         worker function for remove_unused_temp_slot_addresses.
29305         (assign_stack_temp_for_type): Don't clear the temp slot address list.
29306         Add the temp slot address to the address -> temp slot map.
29307         (update_temp_slot_address): Update via insert_temp_slot_address.
29308         (free_temp_slots): Call remove_unused_temp_slot_addresses.
29309         (pop_temp_slots): Likewise.
29310         (init_temp_slots): Allocate the address -> temp slot map, or empty
29311         the map if it is already allocated.
29312         (prepare_function_start): Initialize temp slot processing.
29313
29314 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
29315
29316         PR middle-end/38584
29317         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
29318         Calculate the size of all stack vars assuming no packing of stack
29319         vars will happen, replacing a quadratic algorithm with a linear one.
29320
29321 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
29322
29323         PR target/38707
29324         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
29325         can't be used.
29326
29327 2009-01-03  Diego Novillo  <dnovillo@google.com>
29328
29329         * doc/contrib.texi: Update contributions.
29330
29331 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
29332
29333         PR c++/38705
29334         * builtins.c (fold_builtin_memory_op): Give up if either operand
29335         is volatile.  Set srctype or desttype to non-qualified version
29336         of the other type.
29337
29338         PR c/38700
29339         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
29340         and FUNCTION_DECLs.
29341
29342 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
29343
29344         PR rtl-optimization/35805
29345         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
29346         problem if fast dce is able to remove any instructions.
29347         * dce.c (dce_process_block): Fix dump message.
29348
29349 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
29350
29351         PR 33649
29352         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
29353
29354 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
29355
29356         PR middle-end/38690
29357         * tree-flow.h (op_code_prio, op_prio): New prototypes.
29358         * tree-pretty-print.c (op_code_prio): New function.
29359         (op_prio): No longer static.  Use op_code_prio.
29360         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
29361         Use op_prio and op_code_prio to determine if () should be
29362         printed around operand(s) or not.
29363
29364         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
29365         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
29366         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
29367         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
29368         pp_character instead of pp_string for single letter printing.
29369
29370 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
29371
29372         * doc/extend.texi: Fix '#pragma GCC option' typo.
29373
29374 2009-01-02  Richard Guenther  <rguenther@suse.de>
29375
29376         * doc/install.texi (--enable-checking): Mention different
29377         default for stage1.
29378         (--enable-stage1-checking): Document.
29379
29380 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
29381
29382         PR middle-end/30142
29383         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
29384         case to be an error.
29385
29386 2009-01-02  Ben Elliston  <bje@au.ibm.com>
29387
29388         * config/fp-bit.h (pack_d): Constify argument.
29389         * config/fp-bit.c (makenan): Constify return type. Remove casts.
29390         (isnan): Constify argument.
29391         (isinf): Likewise.
29392         (iszero): Likewise.
29393         (pack_d): Likewise.
29394         (_fpadd_parts): Constify return type.
29395         (_fpmul_parts): Likewise.
29396         (_fpdiv_parts): Likewise.
29397
29398 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
29399
29400         PR c/36489
29401         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
29402         warn about overwriting initializer with side-effects or
29403         -Woverride-init if !IMPLICIT.
29404         (output_init_element): Likewise.  Pass IMPLICIT down to
29405         add_pending_init.
29406         (process_init_element): Add IMPLICIT argument.  Pass it down
29407         to output_init_element.
29408         (push_init_element, pop_init_level, set_designator): Adjust
29409         process_init_element callers.
29410         (set_nonincremental_init, set_nonincremental_init_from_string):
29411         Adjust add_pending_init callers.
29412         (output_pending_init_elements): Adjust output_init_element callers.
29413         * c-tree.h (process_init_element): Adjust prototype.
29414         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
29415         process_init_element callers.
29416
29417 \f
29418 Copyright (C) 2009 Free Software Foundation, Inc.
29419
29420 Copying and distribution of this file, with or without modification,
29421 are permitted in any medium without royalty provided the copyright
29422 notice and this notice are preserved.