OSDN Git Service

PR tree-optimize/40556
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-10-22  Jan Hubicka  <jh@suse.cz>
2
3         PR tree-optimize/40556                                                                                                                                         
4         * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about global vars.                                                                                
5         (check_call): Handle only indirect calls.                                                                                                                      
6         (propagate_bits): Update comment.                                                                                                                              
7         (write_node_summary_p): Turn bogus check to assert.                                                                                                            
8         (ipa_reference_write_summary): Stream calls_read_all properly.                                                                                                 
9         (ipa_reference_read_summary): Stream in calls_read_all properly.                                                                                               
10         (read_write_all_from_decl): New function.                                                                                                                      
11         (propagate): Handle OVERWRITABLE nodes and external calls here.                                                                                                
12         * ipa-pre-const.c (check_call): In IPA mode handle indirect calls                                                                                              
13         only.                                                                                                                                                          
14         (analyze_function): Do not check visibility here.                                                                                                              
15         (add_new_function): We summary OVERWRITABLE too.                                                                                                               
16         (generate_summary): Stream OVERWRITABLE nodes too.                                                                                                             
17         (propagate): Handle external calls and OVERWRITABLE nodes here.                                                                                                
18         (local_pure_const): Check visibility here.                                                                                                                     
19
20 2009-10-22  Jan Hubicka  <jh@suse.cz>
21
22         * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
23         (pass_ipa_cp): Register them.
24         (ipcp_init_stage): Analyze all functions for whopr/lto.
25         (ipcp_propagate_stage): Skip external calls.
26         (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
27         * ipa-reference.c (write_node_summary_p): Fix thinko about availability.
28         * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
29         when in ltrans, skip executing of ipa passes since everything should've
30         been done.
31         * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
32         (inline_generate_summary): Likewise.
33         (inline_read_summary): New function.
34         (inline_write_summary): New function.
35         (pass_ipa_inline): Register new hooks.
36         * ipa-prop.c: Inlcude lto-streamer.h
37         (ipa_edge_args_vector): Update declaration.
38         (ipa_count_arguments, ipa_compute_jump_functions,
39         ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
40         (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
41         ipa_read_node_info): New static functions.
42         (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
43         (duplicate_array): Use xmalloc.
44         (duplicate_ggc_array): New.
45         (ipa_edge_duplication_hook): Use it.
46         (ipa_update_after_lto_read): New function.
47         * ipa-prop.h (ipa_prop_write_jump_functions,
48         ipa_prop_read_jump_functions): Declare.
49         (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
50         jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
51         (ipa_edge_args_vector): Move into GGC.
52         (ipa_check_create_edge_args): Update.
53         (ipa_update_after_lto_read): New.
54         * passes.c (ipa_write_summaries_1): When in wpa, do not write summaries.
55         (ipa_read_summaries): When in ltrans, so not read summaries.
56         * lto-streamer.c (lto_get_section_name): Add LTO_section_jump_functions.
57         * lto-streamer.h (LTO_section_jump_functions): New section.
58         (produce_asm): Declare.
59         * lto-cgraph.c (output_cgraph): Output edges in reverse order.
60         * lto-streamer-out.c (produce_asm): Export.
61         * lto-streamer-in.c: Include tree-pass.h
62         (input_function): Free dominance info when done.
63         (lto_read_body): Push ipa_inline in ltrans stage.
64         * gengtype.c (open_base_files): Add ipa-prop.h into includes.
65         * Makefile.in (GTFILES): Add ipa-prop.h
66
67 2009-10-22  Matthias Klose  <doko@ubuntu.com>
68
69         * doc/install.texi: Document --enable-browser-plugin.
70
71 2009-10-21  Vladimir Makarov  <vmakarov@redhat.com>
72
73         * doc/invoke.texi (fira-loop-pressure): Update default value.
74         * opts.c (decode_options): Remove default value setting for
75         flag_ira_loop_pressure.
76         * config/ia64/ia64.c (ia64_override_options): Set
77         flag_ira_loop_pressure up for -O3.
78         * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
79         
80 2009-10-21  Sebastian Pop  <sebastian.pop@amd.com>
81
82         PR tree-optimization/41497
83         * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
84         chrec_dont_know if the evolution function returned by follow_ssa_edge
85         is constant in the analyzed loop and is not compatible with the
86         initial value before the loop.
87         * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
88
89 2009-10-21  Joseph Myers  <joseph@codesourcery.com>
90
91         * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
92
93 2009-10-21  Jakub Jelinek  <jakub@redhat.com>
94
95         PR other/25507
96         * doc/invoke.texi: Document -print-multi-os-directory.
97
98 2009-10-21  Jack Howarth  <howarth@bromo.med.uc.edu>
99
100         PR c++/41313
101         * gcc/config/darwin10.h: Use default_emit_unwind_label.
102         * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
103         when darwin_emit_unwind_label is used.
104
105 2009-10-21  Eric Botcazou  <ebotcazou@adacore.com>
106
107         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
108         order of checks.
109
110 2009-10-20  Richard Henderson  <rth@redhat.com>
111
112         * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
113         before emit_post_landing_pad.
114
115 2009-10-20  Adam Nemet  <anemet@caviumnetworks.com>
116
117         * config/mips/mips.c (mips_binary_cost): Add new argument speed.
118         Use when calling rtx_costs.
119         (mips_rtx_costs): Fix formatting.  Use argument speed rather than the
120         global optimize_size.  Pass speed to mips_binary_cost.
121
122 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
123
124         * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
125         of TREE_CONSTANT.
126
127 2009-10-20  Richard Sandiford  <rdsandiford@googlemail.com>
128
129         * rtl.h (simplify_replace_fn_rtx): Declare.
130         (wrap_constant, unwrap_constant): Delete.
131         * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
132         (expand_debug_expr): Don't call wrap_constant.
133         * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
134         (auto_adjust_pair): Fold into...
135         (propagate_for_debug_subst): ...here.  Only define for AUTO_INC_DEC.
136         Just return a new value.
137         (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
138         otherwise use simplify_replace_rtx.
139         * cselib.c (wrap_constant): Reinstate old definition.
140         (cselib_expand_value_rtx_1): Don't wrap constants.
141         * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
142         simplify_replace_rtx.
143         (bypass_block): Fix formatting in calls to simplify_replace_rtx.
144         * reload1.c (reload): Skip all uses for an insn before adjusting it.
145         Use simplify_replace_rtx.
146         * simplify-rtx.c (simplify_replace_fn_rtx): New function,
147         adapted from...
148         (simplify_replace_rtx): ...here.  Turn into a wrapper for
149         simplify_replace_fn_rtx.
150         (simplify_unary_operation): Don't unwrap CONSTs.
151         * var-tracking.c (check_wrap_constant): Delete.
152         (vt_expand_loc_callback): Don't call it.
153         (vt_expand_loc): Likewise.
154
155 2009-10-20  Pascal Obry  <obry@adacore.com>
156             Eric Botcazou  <ebotcazou@adacore.com>
157
158         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
159
160 2009-10-20  Michael Matz  <matz@suse.de>
161
162         * loop-invariant.c (create_new_invariant): Use different magic number.
163
164 2009-10-20  Richard Earnshaw  <rearnsha@arm.com>
165
166         PR target/39247
167         * arm.c (arm_override_options): Forcibly disable hot/cold block
168         partitioning.
169
170 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
171
172         PR debug/41739
173         * haifa-sched.c (try_ready): Skip debug deps updating speculation
174         status.
175
176 2009-10-20  Richard Guenther  <rguenther@suse.de>
177
178         * ggc-page.c: Include cfgloop.h.
179         (struct max_alignment): Drop long double, add void *.
180         (extra_order_size_table): Add low non-power-of-two multiples
181         of MAX_ALIGNMENT.  Drop small type-based entries, add
182         tree_type, cgraph_node and loop.
183         * alloc-pool.c (struct allocation_object_def): Drop long double
184         aligning element.
185
186 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
187
188         PR debug/41340
189         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
190         referenced just in DEBUG_INSNs.
191
192 2009-10-20  Richard Guenther  <rguenther@suse.de>
193
194         PR lto/41761
195         * gimple.c (gimple_register_type): Make sure we register
196         the types main variant first.
197
198 2009-10-20  Richard Guenther  <rguenther@suse.de>
199
200         * gimple.c (gimple_types_compatible_p): Simplify.  Move
201         cheap checks before hashtable queries.  Add checks for
202         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
203
204 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
205
206         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
207         without size or with size that can't be represented as a host integer.
208
209 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
210
211         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
212         the removal of a debug stmt as a significant change.
213
214 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
215
216         * config/s390/s390.md: Added agen condition to operand
217         forwarding bypasses. 
218         Added bypass for early address generation use of int results.
219         Updated comments.
220
221 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
222
223         * config/i386/i386.c: Remove signal.h #include.
224
225 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
226
227         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
228         * doc/rtl.texi: Document ss_abs.
229
230 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
231
232         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
233         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
234         instead of C_LEX_RAW_STRINGS.
235         (lex_string): Handle CPP_UTF8STRING.
236         * c-parser.c (c_parser_postfix_expression): Likewise.
237         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
238         (C_LEX_STRING_NO_JOIN): ... this.
239
240 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
241
242         * config/cris/cris.c (cris_function_value, cris_libcall_value,
243         cris_function_value_regno_p): New functions.
244         (cris_promote_function_mode): Update comment.
245         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
246         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
247         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
248         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
249
250 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
251
252         * unwind-dw2.c (execute_stack_op): Fix operand order for
253         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
254
255 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
256
257         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
258         (lower_stmt) <GIMPLE_BIND>: Add comment.
259         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
260         and return.
261         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
262         Otherwise lower it and set cannot_fallthru to true.
263         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
264         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
265         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
266         to true for a noreturn call.  Do not remove statements.
267         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
268         Set cannot_fallthru to false on function exit.
269         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
270         <GIMPLE_ASSIGN>: Remove.
271
272 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
273
274         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
275
276 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
277
278         * config/s390/s390.c (s390_z10_optimize_cmp): Use
279         next/prev_active_insn to skip DEBUG_INSNs as well.
280
281 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
282
283         * config/arm/arm.c (output_move_neon): Use DImode in call to
284         adjust_address.
285
286 2009-10-19  Matthias Klose  <doko@ubuntu.com>
287
288         PR target/40134
289         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
290
291 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
292
293         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
294
295 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
296
297         PR middle-end/41738
298         * optabs.c (expand_binop): Make mode of shift count expression mode
299         of shift count not target.
300         Remove indent nit.
301
302 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
303
304         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
305         case.  Force using values to replace references within the statement.
306         (convert_local_reference_stmt): Likewise.
307
308 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
309
310         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
311         remove a subsequent GOTO or RETURN statement.
312
313 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
314
315         * config/avr.md (*movqi): Add zero as equally preferable constraint
316         as general register.
317         (*movhi): Ditto.
318
319 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
320
321         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
322
323 2009-10-17  Richard Guenther  <rguenther@suse.de>
324
325         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
326
327 2009-10-17  Richard Guenther  <rguenther@suse.de>
328
329         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
330         operands in COMPONENT_REFs.
331
332 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
333
334         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
335         if not defined. Change type of second argument to const_rtx.
336         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
337         macro not defined.
338         * targhooks.h (default_libcall_value): Update prototype.
339         * target.h (struct gcc_target): Change type of second argument of
340         libcall_value to const_rtx.
341         * config/arm/arm.c (arm_libcall_value): Change type of second argument
342         to const_rtx.
343         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
344         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
345
346 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
347
348         PR debug/40521
349         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
350         * cgraphunit.c (cgraph_optimize): Call it.
351         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
352         (dwarf2out_assembly_start): ... here.  New hook.
353         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
354         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
355         hook.
356         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
357         * sdbout.c (sdb_debug_hooks): Likewise.
358         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
359         (vmsdbgout_assembly_start): New hook.
360
361 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
362
363         * rtl.h (RTL_LOCATION): Fix typo.
364
365 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
366
367         * print-rtl.c (print_rtx): Print locators in asm_operands
368         and asm_input.
369
370 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
371
372         PR debug/41535
373         * sched-deps.c (depl_on_debug_p): New.
374         (attach_dep_link): Reject debug deps before nondebug deps.
375         (add_to_deps_list): Insert debug deps after nondebug deps.
376         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
377         deps.
378         (sd_add_dep): Do not reject debug deps.
379         (add_insn_mem_dependence): Don't count debug deps.
380         (remove_from_deps): Likewise.
381         (sched_analyze_2): Set up mem deps on debug insns.
382         (sched_analyze_insn): Record reg uses for deps on debug insns.
383         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
384         try_ready nondebug insn after debug insn.
385         * ddg.c (create_ddg_dep_from_intra_loop_link,
386         create_ddg_dep_no_link): Don't reject debug deps.
387
388 2009-10-16  Richard Guenther  <rguenther@suse.de>
389
390         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
391         (maybe_merge_incomplete_and_complete_type): Likewise.
392         (lto_symtab_merge): Do not call them.  Do not warn for
393         complete vs. incomplete compatible types.
394         (lto_symtab_merge_decls_2): Simplify.
395         * gimple.c (gimple_force_type_merge): Remove.
396         (gimple_types_compatible_p): Make it static.
397         * gimple.h (gimple_force_type_merge): Remove.
398         (gimple_types_compatible_p): Likewise.
399
400 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
401
402         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
403         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
404
405 2009-10-16  Richard Guenther  <rguenther@suse.de>
406
407         PR tree-optimization/41728
408         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
409         if fold_stmt did anything.
410
411 2009-10-16  Richard Guenther  <rguenther@suse.de>
412
413         PR lto/41715
414         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
415         (maybe_fixup_handled_component): New function.
416         (input_gimple_stmt): Fixup mismatched decl replacements.
417
418 2009-10-16  Richard Guenther  <rguenther@suse.de>
419
420         PR lto/41713
421         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
422         the same as VAR_DECL.
423
424 2009-10-16  Richard Guenther  <rguenther@suse.de>
425
426         * gimple.c (iterative_hash_gimple_type): For integer types
427         also hash their minimum and maximum values and the string flag.
428         For array types hash their domain and the string flag.
429
430 2009-10-16  Richard Guenther  <rguenther@suse.de>
431
432         * gimple.c (gimple_types_compatible_p): Restrict completing
433         types to record or unions.  Simplify completion.
434         Do not merge records or unions with different
435         TYPE_STRUCTURAL_EQUALITY_P tag.
436         (iterative_hash_gimple_type): Restrict non-recursing into
437         pointer targets for records and unions.
438
439 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
440
441         PR debug/41717
442         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
443         * dwarf2out.c (mem_loc_descriptor): Don't handle
444         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
445         punt if it is not lowpart subreg or if inner mode isn't
446         MODE_INT.
447
448 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
449
450         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
451         investigating previous or next insns.
452
453 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
454
455         * tree-sra.c (build_ref_for_offset_1): Update comment.
456
457 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
458
459         * config/s390/s390.md (atype): Added missing values.
460
461 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
462
463         PR target/41702
464         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
465         (casesi64p): Update pattern to reflect above.
466
467 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
468
469         PR rtl-optimization/41697
470         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
471
472 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
473
474         PR target/23983
475         * config/rs6000/predicates.md: Update copyright year.
476         * config/rs6000/altivec.md: Ditto.
477         
478         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
479         (MD_INCLUDES): Add a2.md.
480         
481         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
482         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
483         (builtin_classify): New static vector to classify various builtins
484         to get the tree attributes correct.
485         (def_builtin): Set the attributes of builtins based on what the
486         builtin does (i.e. memory operation, floating point, saturation
487         need special attributes, others are pure functions).
488
489         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
490         the builtins.
491         (enum rs6000_builtins): Include rs6000-builtin.def to define the
492         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
493         RS6000_BUILTIN_COUNT.
494         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
495         MAX_RS6000_BUILTINS.
496
497         * config/rs6000/rs6000-builtin.def: New file that combines the
498         builtin enumeration name and attributes.
499
500 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
501
502         * config/i386/linux.h (ASM_SPEC): Add --32.
503
504 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
505
506         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
507         and DW_TAG_template_alias.
508         (dwarf_attr_name): Handle DW_AT_main_subprogram,
509         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
510         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
511         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
512         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
513         and DW_AT_GNU_odr_signature.
514         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
515         DW_FORM_flag_present and DW_FORM_ref_sig8.
516         (output_signature): Only print name on the first byte.
517         (output_die): Likewise for dw_val_class_data8.
518
519 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
520
521         * doc/invoke.texi: Clarify that most optimizations are not enabled
522         without -O.
523
524 2009-10-15  Richard Guenther  <rguenther@suse.de>
525
526         PR lto/41668
527         * gimple.c (compare_type_names_p): Handle anonymous names
528         differently based on new mode argument.
529         (gimple_types_compatible_p): For structs also compare the tags.
530         (iterative_hash_type_name): Rename to ...
531         (iterative_hash_name): ... this.  Hash all names.
532         (iterative_hash_gimple_type): Fix hashing the struct tag of
533         pointer targets.  Hash field decl names.
534
535 2009-10-15  Richard Guenther  <rguenther@suse.de>
536
537         PR lto/41669
538         * gimple.c (gimple_get_alias_set): Avoid recursing on
539         invalid type topology.
540
541 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
542
543         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
544
545 2009-10-15  Richard Guenther  <rguenther@suse.de>
546
547         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
548
549 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
550
551         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
552         add --with-tune{,-32,-64} configured default for -mtune if explicit
553         -mcpu is used.
554
555 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
556
557         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
558
559 2009-10-14  DJ Delorie  <dj@redhat.com>
560         
561         * config/h8300/h8300.c (F): New.
562         (Fpa): New.
563         (h8300_emit_stack_adjustment): Call them.
564         (push): Likewise.
565         (h8300_push_pop): Likewise.
566         (h8300_expand_prologue): Likewise.
567         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
568         (MUST_USE_SJLJ_EXCEPTIONS): Define.
569         (INCOMING_RETURN_ADDR_RTX): Define.
570         (INCOMING_FRAME_SP_OFFSET): Define.
571         (DWARF_CIE_DATA_ALIGNMENT): Define.
572
573 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
574
575         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
576         fields in builtin structs.
577         (finalize_record_size): Likewise.
578
579 2009-10-14  Richard Guenther  <rguenther@suse.de>
580
581         * gimple.c (gtc_ob): New global.
582         (struct type_pair_d): Replace pointers with type UIDs.
583         (type_pair_hash): Adjust.
584         (type_pair_eq): Likewise.
585         (lookup_type_pair): Likewise.  Allocate from an obstack.
586         (gimple_force_type_merge): Adjust.
587         (gimple_types_compatible_p): Likewise.
588         (free_gimple_type_tables): Free the obstack.
589
590 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
591
592         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
593         stmts setting DEBUG_EXPR_DECLs.
594
595         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
596         Don't crash if mode1 is VOIDmode.
597
598 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
599
600         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
601         * params.h (IRA_LOOP_RESERVED_REGS): New.
602         * tree-pass.h (pass_subregs_of_mode_init,
603         pass_subregs_of_mode_finish): Remove.
604         * passes.c (pass_subregs_of_mode_init,
605         pass_subregs_of_mode_finish): Remove.
606         (pass_reginfo_init): Move before loop optimizations.
607         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
608         * common.opt (fira-loop-pressure): New.
609         * toplev.h (flag_ira_loop_pressure): New.
610         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
611         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
612         Make external and void type functions.
613         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
614         pass_subregs_of_mode_finish): Remove.
615         * ira-costs.c (init_costs): Call init_subregs_of_mode.
616         * regmove.c: Include ira.h.
617         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
618         register pressure calculation in loops.
619         * loop-invariant.c: Include REGS_H and ira.h.
620         (struct loop_data): New members max_reg_pressure, regs_ref, and
621         regs_live.
622         (struct invariant): New member orig_regno.
623         (curr_loop): New variable.
624         (find_exits): Initialize regs_ref and regs_live.
625         (create_new_invariant): Initialize orig_regno.
626         (get_cover_class_and_nregs): New.
627         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
628         array.  Add code for flag_ira_loop_pressure.
629         (gain_for_invariant): Make new_regs an array.  Add code for
630         flag_ira_loop_pressure.
631         (best_gain_for_invariant): Ditto.
632         (set_move_mark): New parameter gain.  Use it for debugging output.
633         (find_invariants_to_move): Make regs_needed and new_regs an array.
634         Add code for flag_ira_loop_pressure.
635         (move_invariant_reg): Set up orig_regno.
636         (move_invariants): Set up reg classes for pseudos for
637         flag_ira_loop_pressure.
638         (free_loop_data): Clear regs_ref and regs_live.
639         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
640         get_regno_cover_class, change_pressure, mark_regno_live,
641         mark_regno_death, mark_reg_store, mark_reg_clobber,
642         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
643         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
644         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
645         register pressure calculation in loops if new regs were added.
646         Call finish_subregs_of_mode.
647         * opts.c (decode_options): Set up flag_ira_loop_pressure.
648         * Makefile.in (loop-invariant.o): Add ira.h.
649         (regmove.o): Ditto.
650         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
651         Describe.
652         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
653         
654 2009-10-14  Richard Guenther  <rguenther@suse.de>
655
656         * lto-symtab.c (lto_symtab_compatible): Fold in ...
657         (lto_symtab_merge): ... here.  Rewrite both to take the
658         prevailing and a to-be-merged entry and to queue diagnostics properly.
659         (lto_symtab_resolve_replaceable_p): New predicate for
660         symbol resolution.
661         (lto_symtab_resolve_can_prevail_p): Likewise.
662         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
663         handles merging commons by choosing the largest decl.  Fold
664         in code that gives ODR errors.
665         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
666         diagnostics here.
667         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
668         case of no prevailing decl here.  Diagnose mismatches
669         in object types here.  Drop all but the prevailing decls.
670         (lto_symtab_prevailing_decl): Return the single prevailing decl.
671         * lto-streamer-in.c (lto_input_tree_ref): Deal with
672         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
673
674 2009-10-14  Richard Guenther  <rguenther@suse.de>
675
676         PR lto/41521
677         * lto-streamer-in.c (input_bb): Replace debug stmts with
678         nops instead of dropping them.
679
680 2009-10-14  Nick Clifton  <nickc@redhat.com>
681
682         * gcc/doc/extended.texi: Replace the dash character with @minus{}
683         in situations where it is being used as a minus symbol.
684         * gcc/doc/tm.texi: Likewise.
685         * gcc/doc/md.texi: Likewise.
686
687 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
688
689         PR preprocessor/41543
690         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
691         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
692         * tree.c: Include intl.h.
693         (expand_location): Handle BUILTINS_LOCATION.
694         * Makefile.in (tree.o): Depend on intl.h.
695
696         PR debug/41695
697         * dwarf2out.c (dwarf2out_var_location): Always clear
698         last_postcall_label when changing last_label.
699
700 2009-10-14  Pascal Obry  <obry@adacore.com>
701
702         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
703         (process_command): Handle -E as done with -c and -S.  Do not add
704         the target executable suffix to the output file when -E is used.
705         (main): Adjust error message accordingly.
706
707 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
708
709         PR debug/41343
710         PR debug/41447
711         PR debug/41264
712         PR debug/41338
713         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
714         decl with rtl.
715         (tree_code_size): Likewise.
716
717 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
718
719         * builtins.c (fold_builtin_1): Support complex "arc" functions.
720         * real.h (HAVE_mpc_arc): Define.
721
722 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
723
724         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
725         (struct builtin_description): Add fndecl field.
726         (bdesc): Remove const qualifier.  Update initializer.
727         (sh_media_init_builtins): Remove const qualifier for d.  Record
728         the result of add_builtin_function to the fndecl field.
729         (sh_builtin_decl): New.
730         (sh_media_builtin_decl): New.
731
732 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
733
734         PR target/38948
735         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
736         requests between special registers.
737
738 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
739
740         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
741
742 2009-10-13  Richard Henderson  <rth@redhat.com>
743
744         PR tree-optimization/41377
745         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
746         (cleanup_empty_eh_merge_phis): New change_region parameter;
747         pass it on to redirect_eh_edge_1.  Update callers.
748         (cleanup_empty_eh_unsplit): Don't require an existing EH label
749         at the destination block.
750
751 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
752
753         * passes.c (register_pass): Replaced gcc_unreachable by
754         fatal_error on failure. Mentions plugins in comments & messages.
755
756 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
757
758         PR target/41693
759         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
760         * sched-vis.c (print_value): Use it.
761         * cselib.c (cselib_hash_rtx): Likewise.
762         * print-rtl.c (print_rtx): Likewise.
763         * cfgexpand.c (expand_debug_rtx): Likewise.
764         * var-tracking.c (vt_expand_loc_callback): Likewise.
765
766 2009-10-13  Richard Guenther  <rguenther@suse.de>
767
768         PR lto/41565
769         * opts.c (handle_option): Split out code to handle setting
770         the options flag var ...
771         (set_option): ... here.
772         * opts.h (set_option): Declare.
773         * lto-opts.c (register_user_option_p): Include -fexceptions
774         and all position independent code variants.
775         (handle_common_option): Remove.
776         (lto_reissue_options): Use set_option.
777
778 2009-10-13  Martin Jambor  <mjambor@suse.cz>
779
780         PR tree-optimization/41661
781         * ipa-prop.c (compute_complex_pass_through): Allow only operations
782         that are tcc_comparisons or do not change the type in any
783         un-usleless way.
784         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
785         folding tcc_comparison operations.
786
787 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
788
789         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
790         properly.
791
792 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
793
794         PR debug/41343
795         PR debug/41447
796         PR debug/41264
797         PR debug/41338
798         * tree.def (DEBUG_EXPR_DECL): New.
799         * rtl.def (DEBUG_EXPR): New.
800         * gengtype.c (adjust_field_rtx_def): Handle it.
801         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
802         (insert_debug_temp_for_var_def): ... this.  Drop support for
803         moving.  Take iterator for def stmt; insert debug stmt before it.
804         Scan early for use count and kind in debug stmts.
805         (propagate_defs_into_debug_stmts): Rename to...
806         (insert_debug_temps_for_defs): ... this.  Likewise.
807         * tree.h (DEBUG_TEMP_UID): New.
808         * tree.c (next_debug_decl_uid): New.
809         (make_node_stat): Count debug decls separately.
810         (copy_node_stat): Likewise.
811         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
812         * var-tracking.c (dv_is_decl_p): Recognize it.
813         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
814         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
815         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
816         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
817         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
818         (cselib_hash_rtx): Likewise.
819         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
820         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
821         debug bind stmts.
822         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
823         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
824         * rtl.c (copy_rtx): Likewise.
825         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
826         * print-rtl.c (print_rtx): Likewise.
827         * sched-vis.c (print_value): Likewise.
828         (print_insn): Handle DEBUG_EXPR_DECL.
829         * tree-dump.c (dequeue_and_dump): Likewise.
830         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
831         * gimple-iterator (gsi_replace): Check for same lhs.
832         (gsi_remove): Insert debug temps.
833         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
834         (move_computations_stmt): Drop explicit propagation into debug stmts.
835         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
836         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
837         * tree-ssa-sink.c (statement_sink_location): Likewise.
838         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
839         * tree-ssanames.c (release_ssa_name): Adjust for rename.
840         * tree-flow.h: Likewise.
841         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
842         debug temps without values.
843         (eliminate_unnecessary_stmts): Don't discard just-inserted
844         debug stmts.
845
846 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
847
848         PR target/26515
849         * config/cris/cris.md (andu): Check that operand 1 is one of the
850         general registers.  Fix typo in head comment.
851
852 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
853
854         * config/i386/i386.md (vswapmov): New.
855         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
856         (ix86_function_ms_hook_prologue): New.
857         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
858         * configure.ac: Test for swap suffix support in as.
859         * configure: Rebuild.
860
861 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
862
863         PR target/41680
864         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
865         paradoxical subregs to prevent partial register stalls if the inner
866         mode is integer mode.
867
868 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
869
870         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
871
872 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
873
874         PR c++/41570
875         * gcc/dwarf2out.c (template_parameter_pack_die,
876         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
877
878 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
879
880         PR debug/41616
881         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
882         on updates too.
883         (maybe_register_def): Likewise.  Take stmt iterator.
884         (rewrite_update_stmt): Take stmt iterator and pass it on.
885         (rewrite_update_enter_block): Pass stmt iterator.
886
887 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
888
889         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
890         (spu_builtin_decl): New function.
891
892 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
893
894         * config/i386/i386.md (SWIM): New mode iterator.
895         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
896         using SWIM mode iterator.
897         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
898         patterns using SWI48 mode iterator.
899         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
900         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
901         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
902         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
903         patterns using SWI248 mode iterator.
904         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
905         gen_x86_movdicc_0_m1_rex64 for renamed function
906
907 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
908             Eric Botcazou  <ebotcazou@adacore.com>
909
910         PR target/33743
911         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
912         * config/sparc/sol2-unwind.h: New file.
913
914 2009-10-11  Olivier Hainque  <hainque@adacore.com>
915             Eric Botcazou  <ebotcazou@adacore.com>
916
917         PR target/33743
918         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
919         * config/i386/sol2-unwind.h: New file.
920
921 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
922
923         PR target/41665
924         * config/i386/i386.md (addsi_1_zext): Get the proper second
925         operand for lea.
926
927 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
928
929         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
930         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
931         replacement value.
932
933 2009-10-11  Richard Guenther  <rguenther@suse.de>
934
935         * gimple.c (iterative_hash_type_name): Do not handle special
936         anonymous names.
937
938 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
939
940         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
941         (*setcc_si_1_and): Ditto.
942         (*setcc_si_1_movzbl): Ditto.
943         (*setcc_<mode>_2): Ditto.
944         (*setcc_qi): Rename from *setcc_1.
945         (*setcc_qi_slp): Rename from *setcc_2.
946
947         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
948         (*zero_extendqisi2_movzbw_and splitter): Ditto.
949
950         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
951         "if" condition, there is already assert with reload_completed present.
952
953 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
954
955         * plugin.c (try_init_one_plugin): Improve constness of variable err.
956
957 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
958
959         * doc/install.texi (Final install): Refer to
960         http://gcc.gnu.org/bugs/ for bug reporting.
961
962 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
963
964         * configure.ac: Add test for dci instruction.
965         * configure: Regenerate.
966         * config.in: Likewise.
967         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
968         * doc/invoke.texi: Add cpu_type 476 and 476fp.
969         (-mmulhw): Add 476 to description.
970         (-mdlmzb): Likewise.
971         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
972         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
973         (processor_target_table): Add 476 and 476fp entries.
974         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
975         (rs6000_issue_rate): Add CPU_PPC476.
976         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
977         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
978         (processor_type): Add PROCESSOR_PPC476.
979         (EXTRA_SPECS): Add asm_cpu_476 string.
980         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
981         (define_attr "cpu"): Add ppc476.
982         Include 476.md.
983         Update comments for 476.
984         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
985         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
986         Update copyright year.
987         * config/rs6000/476.md: New file.
988         * config/rs6000/40x.md: Add description for "isel" attribute.
989         Update copyright year.
990         * config/rs6000/440.md: Likewise.
991         * config/rs6000/603.md: Likewise.
992         * config/rs6000/6xx.md: Likewise.
993         * config/rs6000/7450.md: Likewise.
994         * config/rs6000/7xx.md: Likewise.
995         * config/rs6000/8540.md: Likewise.
996         * config/rs6000/cell.md: Likewise.
997         * config/rs6000/e300c2c3.md: Likewise.
998         * config/rs6000/e500mc.md: Likewise.
999         * config/rs6000/mpc.md: Likewise.
1000         * config/rs6000/power4.md: Likewise.
1001         * config/rs6000/power5.md: Likewise.
1002         * config/rs6000/power6.md: Likewise.
1003         * config/rs6000/power7.md: Likewise.
1004         * config/rs6000/rios1.md: Likewise.
1005         * config/rs6000/rios2.md: Likewise.
1006         * config/rs6000/rs64.md: Likewise.
1007
1008 2009-10-10  Richard Guenther  <rguenther@suse.de>
1009
1010         PR tree-optimization/41654
1011         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
1012         a cond expr before calling gimple_cond_set_condition_from_tree.
1013         (ifcombine_iforif): Likewise.
1014
1015 2009-10-09  Ian Lance Taylor  <iant@google.com>
1016
1017         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
1018         * configure: Rebuild.
1019
1020 2009-10-09  Neil Vachharajani <nvachhar@google.com>
1021
1022         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
1023         deprecated.
1024
1025 2009-10-09  Richard Guenther  <rguenther@suse.de>
1026
1027         PR lto/41638
1028         * target-def.h (TARGET_BUILTIN_DECL): Define.
1029         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
1030         * target.h (struct gcc_target): Add builtin_decl target hook.
1031         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
1032         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
1033         target builtins.
1034         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
1035         not gcc_unreachable.
1036         (lto_output_builtin_tree): Sorry if the target does not support
1037         streaming target builtins.
1038         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
1039         (rs6000_builtin_decl): New function.
1040         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
1041         (ix86_builtin_decl): New function.
1042
1043 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
1044
1045         PR preprocessor/41445
1046         * c-ppoutput.c (do_line_change): New function.
1047         (cb_line_change): Use it.
1048         (scan_translation_unit): Call do_line_change if
1049         avoid_paste or PREV_WHITE and token location is on a different line
1050         than print.src_line.
1051
1052         PR debug/40521
1053         * dwarf2out.c (dwarf2out_init): Test whether
1054         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
1055         it is defined.
1056
1057         PR rtl-optimization/41646
1058         * calls.c (expand_call): For BLKmode types returned in registers
1059         avoid likely spilled hard regs in copy_blkmode_from_reg generated
1060         insns.
1061
1062 2009-10-09  Richard Guenther  <rguenther@suse.de>
1063
1064         PR tree-optimization/41634
1065         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
1066         we remove the correct elements.
1067         (optimize_stmt): Make sure to update stmt operands before
1068         optimizing redundancies.
1069
1070 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1071
1072         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
1073
1074 2009-10-09  Richard Guenther  <rguenther@suse.de>
1075
1076         PR driver/41637
1077         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
1078         globals.
1079         (lto_wrapper_exit): New function.
1080         (fatal): Use it.
1081         (fatal_perror): Likewise.
1082         (fork_execute): Use global args_name, do not free it.
1083         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
1084         * lto-streamer.h: Remove duplicate prototypes.
1085
1086 2009-10-09  Richard Guenther  <rguenther@suse.de>
1087
1088         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
1089         before calling stmt_can_throw_external.
1090
1091 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
1092
1093         PR tree-optimization/40071
1094         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
1095         pointer if the original data reference doesn't conflict with the
1096         created vector data reference.  Fix long line.
1097
1098 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
1099
1100         * config/i386/i386.md (any_div): New code iterator.
1101         (u): Handle div and udiv.
1102         (sgnprefix): Ditto.
1103         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
1104         code iterator.
1105         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
1106         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
1107         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
1108         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
1109
1110 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
1111
1112         * gcc.c (main): Remove trailing "." from diagnostics.
1113
1114 2009-10-08  Cary Coutant  <ccoutant@google.com>
1115
1116         Add support for debugging with ICF (Identical Code Folding).
1117         * calls.c (debug.h): New #include.
1118         (emit_call_1): Call virtual_call_token debug hook.
1119         * common.opt (-fenable-icf-debug): New option.
1120         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
1121         locations in the source).
1122         (poc_label_num): New variable.
1123         (dcall_entry, vcall_entry): New typedefs.
1124         (dcall_table, vcall_table): New variables.
1125         (struct vcall_insn): New type.
1126         (vcall_insn_table): New variable.
1127         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
1128         (size_of_dcall_table): New function.
1129         (output_dcall_table): New function.
1130         (size_of_vcall_table): New function.
1131         (output_vcall_table): New function.
1132         (dwarf2out_direct_call): New function.
1133         (vcall_insn_table_hash): New function.
1134         (vcall_insn_table_eq): New function.
1135         (dwarf2out_virtual_call_token): New function.
1136         (dwarf2out_virtual_call): New function.
1137         (dwarf2out_init): Allocate new tables and sections.
1138         (prune_unused_types): Mark DIEs referenced from direct call table.
1139         (dwarf2out_finish): Output direct and virtual call tables.
1140         * final.c (final_scan_insn): Call direct_call and virtual_call
1141         debug hooks.
1142         * debug.h (struct gcc_debug_hooks): Add direct_call,
1143         virtual_call_token, virtual_call hooks.
1144         (debug_nothing_uid): New function.
1145         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
1146         (debug_nothing_uid): New function.
1147         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
1148         (xcoff_debug_hooks): Likewise.
1149         * sdbout.c (sdb_debug_hooks): Likewise.
1150         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
1151         * doc/invoke.texi (-fenable-icf-debug): New option.
1152
1153 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
1154
1155         PR debug/41353
1156         * regmove.c (regmove_backward_pass): Replace src with dst in the
1157         debug insn, and check for dst before rather than after.
1158
1159 2009-10-08  Janis Johnson <janis187@us.ibm.com>
1160
1161         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
1162         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
1163
1164 2009-10-08  Jan Hubicka  <jh@suse.cz>
1165
1166         PR middle-end/41626
1167         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
1168         do not mark cgraph nodes as needed.
1169         (record_references_in_initializer): Add new only_vars parameter.
1170         * cgraph.h (record_references_in_initializer): New parameter.
1171         * varasm.c (assemble_variable): Update call.
1172         * varpool.c (varpool_analyze_pending_decls): Always look for
1173         referenced vars.
1174
1175 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
1176
1177         * config/avr/avr.c (last_insn_address) Remove variable.
1178         (expand_prologue): Don't initialise last_insn_address variable.
1179         (final_prescan_insn): Don't output insn size.
1180         * config/avr/avr.opt (msize): Remove switch.
1181         * doc/invoke.texi (AVR Options): Remove documentation of -msize
1182         switch.
1183
1184 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
1185
1186         * combine.c (label_tick_ebb_start): Fix comment.
1187         (combine_instructions): Set label_tick and label_tick_ebb_start before
1188         calling setup_incoming_promotions.  Start them from 1.  Increment
1189         label_tick instead of deriving it from the BB index.  Rather than
1190         comparing ticks use the block from the previous iteration to decide
1191         whether to start a new EBB.  Remove empty lines before function.
1192
1193 2009-10-08  Michael Matz  <matz@suse.de>
1194
1195         PR middle-end/41573
1196         * builtins.c (fold_builtin_isascii): Use fold_build2.
1197         (fold_builtin_isdigit): Ditto.
1198         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
1199         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
1200         remove_useless_stmts_cond, remove_useless_stmts_tf,
1201         remove_useless_stmts_tc, remove_useless_stmts_bind,
1202         remove_useless_stmts_goto, remove_useless_stmts_label,
1203         remove_useless_stmts_1, remove_useless_stmts,
1204         pass_remove_useless_stmts): Remove.
1205         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
1206         * passes.c (init_optimization_passes): Don't add
1207         pass_remove_useless_stmts.
1208         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
1209         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
1210         static constants.
1211         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
1212         for static constants.
1213         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
1214         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
1215
1216 2009-10-08  Richard Guenther  <rguenther@suse.de>
1217
1218         * gimple.c (free_gimple_type_tables): New function.
1219         * gimple.h (free_gimple_type_tables): Declare.
1220
1221 2009-10-07  Mark Heffernan  <meheff@google.com>
1222
1223         * ipa-prop.c (ipa_print_node_params) Only print
1224         names of named arguments.
1225
1226 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
1227
1228         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
1229         being statically linked.
1230
1231 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1232
1233         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
1234
1235 2009-10-08  Jan Hubicka  <jh@suse.cz>
1236
1237         PR bootstrap/41620
1238         * ipa.c (cgraph_externally_visible_p,
1239         function_and_variable_visibility,
1240         whole_program_function_and_variable_visibility): Skip non-finalized
1241         nodes.
1242
1243 2009-10-08  Nick Clifton  <nickc@redhat.com>
1244
1245         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
1246         CONST_DOUBLEs.
1247
1248 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
1249
1250         PR bootstrap/37739
1251         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
1252
1253 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
1254
1255         PR c/41182
1256         * c-common.c (c_fully_fold_internal): Strip nops from the result
1257         of recursive calls to c_fully_fold_internal.
1258         (c_wrap_maybe_const): New.
1259         (c_save_expr): Use c_wrap_maybe_const.
1260         * c-common.h (c_wrap_maybe_const): Declare.
1261         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
1262         build_binary_op): Use c_wrap_maybe_const.
1263
1264 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1265
1266         * real.c: Fix comment to reflect actual exponent size.
1267
1268 2009-10-08  Ben Elliston  <bje@au.ibm.com>
1269
1270         * config/rs6000/a2.md: Add FSF comment header.
1271
1272 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
1273
1274         * config/i386/i386.md (any_extend): New code iterator.
1275         (u, s): New code attributes.
1276         (sgnprefix): Ditto.
1277         (DWIH): Rewrite as code iterator for SI and DI modes.
1278         (DWI): Rewrite as mode attribute.
1279         (dwi): New mode attribute.
1280         (di): Depend on SI mode and DI mode.
1281         (doubleint_general_operand): Remove mode attribute.
1282
1283         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
1284         DWIH mode iterator.
1285
1286         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
1287         (*sub<mode>3_doubleword): Ditto.
1288
1289         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
1290         using SWIM248 mode iterator.
1291         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
1292         using SWI48 mode iterator.
1293         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
1294         patterns using DWIH mode iterator and any_extend code iterator.
1295         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
1296         using any_extend code iterator.
1297         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
1298         patterns using DWIH mode iterator and any_extend code iterator.
1299         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
1300         using any_extend code iterator.
1301         (<s>mul<mode>3_highpart): Macroize expander from
1302         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
1303         and any_extend code iterator.
1304         (*<s>muldi3_highpart_1): Macroize insn from
1305         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
1306         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
1307         patterns using any_extend code iterator.
1308         (*<s>mulsi3_highpart_zext): Macroize insn from
1309         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
1310
1311 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
1312
1313         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
1314         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
1315         refering to a DIE with DW_AT_const_value.
1316
1317 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
1318
1319         PR middle-end/22072
1320         * ira-lives.c (check_and_make_def_conflict): Process all operands.
1321
1322 2009-10-06  Jan Hubicka  <jh@suse.cz>
1323
1324         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
1325         correctly.
1326
1327 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
1328
1329         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
1330         *lea_2_rex64): Move before *add<mode>_1 pattern.
1331
1332 2009-10-07  Jan Hubicka  <jh@suse.cz>
1333
1334         * collect2.c (main): Add -fno-whole-program.
1335         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
1336
1337 2009-10-07  Jan Hubicka  <jh@suse.cz>
1338
1339         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
1340         has no address taken.
1341         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
1342         never needed.
1343         (cgraph_clone_node): Clear externally_visible flag for clones.
1344         * cgraph.h (cgraph_only_called_directly_p,
1345         cgraph_can_remove_if_no_direct_calls_p): New predicates.
1346         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
1347         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
1348         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
1349         ipcp_insert_stage): Likwise.
1350         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
1351         externally_visible flag.
1352         (verify_cgraph_node): Verify that inline clones look right.
1353         (process_function_and_variable_attributes): Do not set
1354         externally_visible flags.
1355         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
1356         been already run.
1357         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
1358         boundaries.
1359         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
1360         clear externally_visible when turning into inline clones
1361         (cgraph_mark_inline_edge): Use new predicates.
1362         (cgraph_estimate_growth): Likewise.
1363         (cgraph_decide_inlining): Likewise.
1364         * ipa.c (cgraph_postorder): Likewise.
1365         (cgraph_remove_unreachable_nodes): Likewise; sanity check
1366         that inline clones are not needed.
1367         (cgraph_externally_visible_p): New predicate.
1368         (function_and_variable_visibility): Add whole_program parameter;
1369         always set externally_visible flag; handle COMDAT function
1370         privatization.
1371         (local_function_and_variable_visibility): New function.
1372         (gate_whole_program_function_and_variable_visibility): New function.
1373         (whole_program_function_and_variable_visibility): New function.
1374         (pass_ipa_whole_program_visibility): New function.
1375         * passes.c  (init_optimization_passes): Add whole program visibility
1376         pass.
1377         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
1378         not care about needed/reachable flags.
1379         * varpool.c: Include flags.h
1380         (decide_is_variable_needed): When doing LTO assume whole-program mode.
1381         (varpool_finalize_decl): When we are in LTO read-back, all variables
1382         are analyzed.
1383         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
1384
1385 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1386
1387         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
1388         add MASK_HARD_DFP.
1389
1390 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1391
1392         * config.gcc: Don't include the makefile fragments intended for
1393         libgcc.
1394         * config/s390/fixdfdi.h: File removed.
1395         * config/s390/libgcc-glibc.ver: File removed.
1396         * config/s390/s390.h: Remove the fixdfdi.h hack.
1397         * config/s390/t-crtstuff: File moved to libgcc dir.
1398         * config/s390/t-linux: Likewise.
1399         * config/s390/t-tpf: libgcc specific parts removed.
1400         * config/s390/t-linux64: Likewise.
1401
1402 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
1403
1404         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
1405         (lto-compress.o): Likewise.
1406
1407 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
1408
1409         PR target/41512
1410         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
1411         dllexport to class members here.
1412         (i386_pe_determine_dllimport_p): Only check static class data for
1413         definition.
1414         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
1415         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
1416         functions for vague linkage.
1417         (i386_pe_type_dllexport_p): Fix formatting.
1418         (maybe_add_dllexport) New function.
1419         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
1420         to class members.
1421
1422 2009-10-07  Ben Elliston  <bje@au.ibm.com>
1423
1424         * config/rs6000/a2.md: Remove duplicated lines.
1425
1426 2009-10-07  Ben Elliston  <bje@au.ibm.com>
1427
1428         * config.gcc (powerpc*-*-*): Handle a2.
1429         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
1430         * config/rs6000/a2.md: New file.
1431         * config/rs6000/rs6000.opt (mno-update): New.
1432         (mupdate): Return to using a mask, not a var.
1433         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
1434         (enum processor_type): Add PROCESSOR_PPCA2.
1435         * config/rs6000/rs6000.c (ppca2_cost): New costs.
1436         (rs6000_override_options): Add "a2" to processor_target_table.
1437         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
1438         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
1439
1440 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
1441
1442         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
1443         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
1444         reference to nonexistent gen_truncxfxf2 function.
1445
1446 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
1447
1448         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
1449         (DWIH, g, di, doubleint_general_operand): New mode attributes.
1450         (general_operand): Handle TI mode.
1451         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
1452         using SDWIM mode iterator.
1453         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
1454         pattern from *add{di,ti}3_1 patterns and corresponding splitters
1455         using DWI mode iterator.
1456         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
1457         patterns using SWI mode iterator.
1458         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
1459         using SWI48 mode iterator.
1460         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
1461         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
1462         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
1463         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
1464         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
1465         using SDWIM mode iterator.
1466         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
1467         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
1468         using DWI mode iterator.
1469         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
1470         patterns using SWI mode iterator.
1471         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
1472         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
1473         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
1474         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
1475         patterns using plusminus code iterator.
1476         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
1477         sub<mode>3 patterns using plusminus code iterator.
1478         * config/i386/i386.c (override_options): Update the call to
1479         gen_subdi_carry_rex64 for renamed function.
1480         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
1481         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
1482         calls to instruction expanders.
1483
1484 2009-10-06  Martin Jambor  <mjambor@suse.cz>
1485
1486         PR bootstrap/41395
1487         * opts.c (decode_options): Run IPA-SRA at -O2.
1488
1489 2009-10-06  Richard Guenther  <rguenther@suse.de>
1490
1491         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
1492
1493 2009-10-06  Tobias Burnus  <burnus@net-b.de>
1494
1495         PR lto/41591
1496         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
1497         -flto and -fwhole-program flags can be combined.
1498
1499 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
1500
1501         PR driver/41217
1502         * gcc.c (process_command): Check that -o argument was specified.
1503
1504 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
1505
1506         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
1507
1508 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1509
1510         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
1511         * doc/invoke.texi (Warning Options): Annotate allowed languages
1512         for -Wunsuffixed-float-constants.
1513
1514 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
1515
1516         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
1517         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
1518         same name and isn't the main variant.
1519
1520         PR debug/41558
1521         * dwarf2out.c (loc_by_reference): Removed.
1522         (dw_loc_list_1): New function.
1523         (dw_loc_list): Remove toplev argument, add want_address argument.
1524         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
1525         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
1526         want_address == 2 to dw_loc_list.  For successful dw_loc_list
1527         set have_address to 1 only if want_address is not 0.
1528
1529 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
1530
1531         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
1532         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
1533         a code block followed by two pointers.
1534         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
1535         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
1536         (MIPS_MOVE): Likewise.
1537         (MIPS_LUI): Likewise.
1538         (MIPS_JR): Likewise.
1539         (MIPS_BAL): Likewise.
1540         (MIPS_NOP): Likewise.
1541         (mips_asm_trampoline_template): Delete.
1542         (mips_trampoline_code_size): New function.
1543         (mips_trampoline_init): Add shorter sequences for all cases
1544         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
1545         Calculate the opcodes directly, rather than copying from a template.
1546         Only flush the code part of the trampoline.
1547         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
1548
1549 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
1550
1551         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
1552         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
1553         (INCOMING_RETURN_ADDR_RTX): Likewise.
1554         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
1555         with AT_REGNUM.
1556         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
1557         with RETURN_ADDR_REGNUM.
1558         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
1559         * config/mips/mips.c (mips16_build_call_stub): Replace
1560         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
1561         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
1562         (mips_print_operand_punctuation): Likewise.
1563         (mips_frame_set): Likewise.
1564         (mips16e_output_save_restore): Likewise.
1565         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
1566         (mips_save_reg_p): Likewise.
1567         (mips_return_addr): Likewise.
1568         (mips_set_return_address): Likewise.
1569         (mips_direct_save_slot_move_p): Likewise.
1570         (mips_output_function_prologue): Likewise.
1571         (mips_restore_reg): Likewise.
1572         (mips_expand_epilogue): Likewise.
1573         (mips_epilogue_uses): Likewise.
1574         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
1575         (*mov<mode>_ra): Use it instead of a hard-coded 31.
1576         (clear_hazard_<mode>): Likewise.
1577         (call_internal): Likewise.
1578         (call_internal_direct): Likewise.
1579         (call_direct_split): Likewise.
1580         (call_value_internal): Likewise.
1581         (call_value_split): Likewise.
1582         (call_value_internal_direct): Likewise.
1583         (call_value_direct_split): Likewise.
1584         (call_value_multiple_internal): Likewise.
1585         (call_value_multiple_split): Likewise.
1586
1587 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
1588             Jakub Jelinek  <jakub@redhat.com>
1589
1590         PR rtl-optimization/41511
1591         * combine.c (record_value_for_reg): Pass explicit values as argument
1592         to get_last_value_validate.
1593         (get_last_value_validate): Document INSN parameter.
1594         For non-readonly MEMs, assume they might have been modified if INSN
1595         was in another basic block.
1596         (get_last_value): Minor reformatting.
1597
1598 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1599
1600         PR tree-opt/40992
1601         * final.c (asm_str_count): Split out from asm_insn_count.
1602         * rtl.h (asm_str_count): New prototype.
1603         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
1604         asm_str_count.
1605
1606 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
1607
1608         * doc/plugins.texi: Change plugin_pass to register_pass_info.
1609
1610 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
1611             Rafael Espindola  <espindola@google.com>
1612
1613         * gengtype.c (write_types): Moved call to write_func_for_structure
1614         into seperate loops.
1615
1616 2009-10-05  Richard Guenther  <rguenther@suse.de>
1617
1618         PR lto/41281
1619         * lto-cgraph.c (output_cgraph): Output toplevel asms.
1620         (input_cgraph_1): Input toplevel asms.
1621
1622 2009-10-05  Richard Guenther  <rguenther@suse.de>
1623
1624         PR lto/40902
1625         * lto-symtab.c (lto_compatible_attributes_p): Remove.
1626         (external_aggregate_decl_p): Likewise.
1627         (lto_symtab_compatible): Re-structure.  Remove dead code.
1628         For variables ignore toplevel qualifiers when comparing types.
1629         Issue warnings, not errors for mismatched user-alignment.
1630
1631 2009-10-05  Richard Guenther  <rguenther@suse.de>
1632
1633         PR lto/41552
1634         PR lto/41487
1635         * lto-symtab.c (struct lto_symtab_base_def): Remove.
1636         (struct lto_symtab_identifier_def): Likewise.
1637         (struct lto_symtab_decl_def): Likewise.
1638         (struct lto_symtab_entry_def): New.
1639         (lto_symtab_identifier_t): Rename to ...
1640         (lto_symtab_entry_t): ... this.
1641         (lto_symtab_decls): Remove.
1642         (lto_symtab_base_hash): Rename to ...
1643         (lto_symtab_entry_hash): ... this.
1644         (lto_symtab_base_eq): Rename to ...
1645         (lto_symtab_entry_eq): ... this.
1646         (lto_symtab_base_marked_p): Rename to ...
1647         (lto_symtab_entry_marked_p): ... this.
1648         (lto_symtab_identifier_marked_p): Remove.
1649         (lto_symtab_decl_marked_p): Likewise.
1650         (lto_symtab_maybe_init_hash_tables): Rename to ...
1651         (lto_symtab_maybe_init_hash_table): ... this.
1652         (lto_symtab_set_resolution_and_file_data): Remove.
1653         (lto_symtab_register_decl): New function.
1654         (lto_symtab_get_identifier): Remove.
1655         (lto_symtab_get): New function.
1656         (lto_symtab_get_resolution): Adjust.
1657         (lto_symtab_get_identifier_decl): Remove.
1658         (lto_symtab_set_identifier_decl): Likewise.
1659         (lto_symtab_merge_decl): Rename to ...
1660         (lto_symtab_merge): ... this.  Rewrite.
1661         (lto_symtab_merge_var): Remove.
1662         (lto_symtab_merge_fn): Likewise.
1663         (lto_symtab_prevailing_decl): Adjust.
1664         (lto_cgraph_replace_node): New function.
1665         (lto_symtab_merge_decls_2): Likewise.
1666         (lto_symtab_merge_decls_1): Likewise.
1667         (lto_symtab_fixup_var_decls): Likewise.
1668         (lto_symtab_resolve_symbols): Likewise.
1669         (lto_symtab_merge_decls): Likewise.
1670         (lto_symtab_prevailing_decl): Adjust.
1671         (lto_symtab_get_symtab_def): Remove.
1672         (lto_symtab_get_file_data): Likewise.
1673         (lto_symtab_clear_resolution): Adjust.
1674         (lto_symtab_clear_resolution): Likewise.
1675         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
1676         (input_cgraph_1): Likewise.
1677         * lto-streamer-in.c (get_resolution): Do not provide fake
1678         symbol resolutions here.
1679         (deferred_global_decls): Remove.
1680         (lto_register_deferred_decls_in_symtab): Likewise.
1681         (lto_register_var_decl_in_symtab): Change signature, register
1682         variable via lto_symtab_register_decl.
1683         (lto_register_function_decl_in_symtab): Likewise.
1684         (lto_read_tree): Adjust.
1685         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
1686         (lto_symtab_merge_var): Likewise.
1687         (lto_symtab_merge_fn): Likewise.
1688         (lto_symtab_register_decl): Declare.
1689         (lto_symtab_merge_decls): Likewise.
1690
1691 2009-10-05  Richard Guenther  <rguenther@suse.de>
1692
1693         PR tree-optimization/23821
1694         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
1695         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
1696         simple IV increments.
1697
1698 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1699
1700         * config/arm/arm.c (arm_override_options): Really initialize
1701         flag_dwarf2_cfi_asm to 0.
1702
1703 2009-10-05  Doug Kwan  <dougkwan@google.com>
1704
1705         PR rtl-optimization/41574
1706         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
1707         floating point and we are not doing unsafe math optimizations.
1708
1709 2009-10-03  Simon Baldwin  <simonb@google.com>
1710             Cary Coutant  <ccoutant@google.com>
1711             Rafael Espindola  <espindola@google.com>
1712             Richard Guenther  <rguenther@suse.de>
1713             Jan Hubicka  <jh@suse.cz>
1714             Doug Kwan <dougkwan@google.com>
1715             H.J. Lu  <hongjiu.lu@intel.com>
1716             Bill Maddox  <maddox@google.com>
1717             Ryan Mansfield  <rmansfield@qnx.com>
1718             Diego Novillo  <dnovillo@google.com>
1719             Ollie Wild  <aaw@google.com>
1720             Kenneth Zadeck <zadeck@naturalbridge.com>
1721
1722         * lto-cgraph.c: New file.
1723         * lto-compress.c: New file.
1724         * lto-compress.h: New file.
1725         * lto-opts.c: New file.
1726         * lto-section-in.c: New file.
1727         * lto-section-out.c: New file.
1728         * lto-streamer-in.c: New file.
1729         * lto-streamer-out.c: New file.
1730         * lto-streamer.c: New file.
1731         * lto-streamer.h: New file.
1732         * lto-symtab.c: New file.
1733         * lto-wpa-fixup.c: New file.
1734         * lto-wrapper.c: New file.
1735
1736 2009-10-03  Simon Baldwin  <baldwin@google.com>
1737             Ben Elliston  <bje@au.ibm.com>
1738             Rafael Espindola  <espindola@google.com>
1739             Nathan Froyd  <froydnj@codesourcery.com>
1740             Jan Hubicka  <jh@suse.cz>
1741             Doug Kwan  <dougkwan@google.com>
1742             Diego Novillo  <dnovillo@google.com>
1743             Kenneth Zadeck  <zadeck@naturalbridge.com>
1744
1745         * Makefile.in (enable_lto): New.
1746         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
1747         (LINKER_PLUGIN_API_H): Define.
1748         (LTO_SYMTAB_H): Define.
1749         (LTO_STREAMER_H): Define.
1750         (TREE_VECTORIZER_H): Define.
1751         (INCLUDES): Add LIBELFINC.
1752         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
1753         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
1754         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
1755         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
1756         (native): Add lto-wrapper$(exeext)
1757         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
1758         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
1759         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
1760         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
1761         (varasm.o): Add dependency on tree-iterator.h.
1762         (cgraph.o): Add dependency on cif-code.def.
1763         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
1764         (ipa-pure-const.o): Likewise.
1765         (GTFILES): Add lto-symtab.c.
1766         (install-lto-wrapper): New.
1767         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
1768         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
1769         * config.in: Regenerate.
1770
1771 2009-10-03  Rafael Espindola  <espindola@google.com>
1772             Diego Novillo  <dnovillo@google.com>
1773
1774         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
1775         ipa_write_summaries.
1776         Call execute_ipa_summary_passes for all_regular_ipa_passes and
1777         all_lto_gen_passes.
1778         (cgraph_optimize): Make extern.
1779
1780 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
1781             Kenneth Zadeck <zadeck@naturalbridge.com>
1782
1783         * toplev.c (in_lto_p): Declare.
1784         * collect2.c (scan_prog_file): Read all the output when reading
1785         information for LTO.
1786         (enum lto_mode_d): Declare.
1787
1788 2009-10-03  Richard Guenther  <rguenther@suse.de>
1789             Diego Novillo  <dnovillo@google.com>
1790
1791         * gimple.c: Include target.h and alias.h.
1792         (gimple_types): Declare.
1793         (type_hash_cache): Declare.
1794         (gimple_alloc_stat): Make extern.
1795         (gimple_build_eh_must_not_throw): Call
1796         gimple_eh_must_not_throw_set_fndecl.
1797         (struct type_pair_d): Declare.
1798         (type_pair_t): Declare.
1799         (type_pair_hash): New.
1800         (type_pair_eq): New.
1801         (lookup_type_pair): New.
1802         (gimple_force_type_merge): New.
1803         (compare_type_names_p): New.
1804         (compare_field_offset): New.
1805         (gimple_types_compatible_p): New.
1806         (struct sccs): Declare.
1807         (next_dfs_num): Declare.
1808         (iterative_hash_gimple_type): New.
1809         (visit): New.
1810         (iterative_hash_type_name): New.
1811         (iterative_hash_gimple_type): New.
1812         (gimple_type_hash): New.
1813         (gimple_type_eq): New.
1814         (gimple_register_type): New.
1815         (print_gimple_types_stats): New.
1816         (gimple_signed_or_unsigned_type): New.
1817         (gimple_unsigned_type): New.
1818         (gimple_signed_type): New.
1819         (gimple_get_alias_set): New.
1820         (gimple_decl_printable_name): Do not use DMGL_TYPES.
1821         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
1822         (gimple_force_type_merge): Declare.
1823         (gimple_types_compatible_p): Declare.
1824         (gimple_register_type): Declare.
1825         (print_gimple_types_stats): Declare.
1826         (gimple_unsigned_type): Declare.
1827         (gimple_signed_type): Declare.
1828         (gimple_get_alias_set): Declare.
1829         (gimple_eh_must_not_throw_set_fndecl): New.
1830
1831 2009-10-03  Jan Hubicka  <jh@suse.cz>
1832             Kenneth Zadeck <zadeck@naturalbridge.com>
1833
1834         * ipa-pure-const.c: Include lto-streamer.h.
1835         (register_hooks): Factor out of ...
1836         (generate_summary): ... here.
1837         (pure_const_write_summary): New.
1838         (pure_const_read_summary): New.
1839         (pass_ipa_pure_const): Add pure_const_write_summary and
1840         pure_const_read_summary.
1841         * ipa-reference.c: Include lto-streamer.h.
1842         (add_new_function): New.
1843         (remove_node_data): New.
1844         (duplicate_node_data): New.
1845         (ipa_init): Guard against multiple calls.
1846         Move hook setup from analyze_function.
1847         (write_node_summary_p): New.
1848         (ipa_reference_write_summary): New.
1849         (ipa_reference_read_summary): New.
1850         (pass_ipa_reference): Add ipa_reference_write_summary and
1851         ipa_reference_read_summary.
1852         * cgraph.h (cgraph_local_info): Add field lto_file_data.
1853         (struct cgraph_edge): Add fields lto_stmt_uid and
1854         call_stmt_cannot_inline_p.
1855         (cgraph_optimize): Declare.
1856         (cgraph_decide_is_function_needed): Declare.
1857         (reset_inline_failed): Declare.
1858         (enum LTO_cgraph_tags): Declare.
1859         (LTO_cgraph_tag_names): Declare.
1860         (LCC_NOT_FOUND): Define.
1861
1862 2009-10-03  Doug Kwan  <dougkwan@google.com>
1863             Rafael Espindola  <espindola@google.com>
1864             Jan Hubicka  <jh@suse.cz>
1865             Diego Novillo  <dnovillo@google.com>
1866             Kenneth Zadeck  <zadeck@naturalbridge.com>
1867
1868         * passes.c (all_regular_ipa_passes): New.
1869         (all_ipa_passes): Rename to all_small_ipa_passes.
1870         (init_optimization_passes): Init all_regular_ipa_passes.
1871         * tree-pass.h (all_regular_ipa_passes): New.
1872         (all_ipa_passes): Rename to all_small_ipa_passes.
1873         * passes.c (all_lto_gen_passes): New.
1874         (init_optimization_passes): Initialize all_lto_gen_passes.
1875         (execute_ipa_summary_passes): Make non-static.
1876         (ipa_write_summaries_1): New.
1877         (ipa_write_summaries_2): New.
1878         (ipa_write_summaries): New.
1879         (ipa_write_summaries_of_cgraph_node_set): New.
1880         (ipa_read_summaries_1): New.
1881         (ipa_read_summaries): New.
1882         (execute_ipa_pass_list): Call cgraph_process_new_functions.
1883         (execute_regular_ipa_pass_list): Remove.
1884         (init_optimization_passes): Schedule
1885         pass_rebuild_cgraph_edges and pass_early_inline outside
1886         of pass_all_early_optimizations.  Document reason.
1887         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
1888         pass_ipa_lto_finish_out): New pass.
1889         (pass_ipa_summary_passes): Start and stop timers if the pass has them.
1890         (execute_all_ipa_transforms): New.
1891         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
1892         (dump_properties, debug_properties): New.
1893         * tree-optimize.c (gate_all_early_local_passes): Return
1894         false if we are in lto1.
1895         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
1896         * tree-pass.h (execute_all_ipa_transforms): Declare.
1897         (pass_ipa_function_and_variable_visibility): Declare.
1898         (pass_ipa_early_inline): Declare.
1899         (pass_ipa_lto_gimple_out): Declare.
1900         (pass_ipa_lto_wpa_fixup): Declare.
1901         (pass_ipa_lto_finish_out): Declare.
1902         (all_small_ipa_passes, all_regular_ipa_passes,
1903         all_lto_gen_passes): Declare.
1904         (execute_ipa_summary_passes): Declare.
1905         (execute_all_ipa_transforms): Declare.
1906         (ipa_write_summaries): Declare
1907         (ipa_write_summaries_of_cgraph_node_set): Declare.
1908         (ipa_read_summaries): Declare.
1909
1910 2009-10-03  Doug Kwan  <dougkwan@google.com>
1911             Ollie Wild  <aaw@google.com>
1912
1913         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
1914
1915         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
1916         (lto_mode): New variable.
1917         (maybe_run_lto_and_relink): Handle the -fwpa option.
1918         (main): Handle the -fwpa option.
1919         (maybe_unlink_list): New function.
1920         * gcc.c (link_lto_options): Replace -flto with -fwpa.
1921         * common.opt (flto): New flag.
1922         * toplev.c (flag_generate_lto): Declare.
1923
1924 2009-10-03  Simon Baldwin  <simonb@google.com>
1925
1926         * common.opt (flto-compression-level): New flag.
1927
1928         * opts.c: Include lto-opts.h.
1929         (handle_option): Call lto_register_user_option for each
1930         valid option handled.
1931         (decode_options): Clear registered options before the options
1932         handling loop.
1933
1934 2009-10-03  Cary Coutant  <ccoutant@google.com>
1935
1936         * collect2.c (is_elf): New function.
1937         (scan_prog_file): Require LTO object to be in ELF format.
1938
1939 2009-10-03  Rafael Espindola  <espindola@google.com>
1940
1941         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
1942         libgcc to the linker.
1943
1944         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
1945
1946         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
1947         (collect_execute): Add flags argument. Pass flags to pex_run. Update
1948         all callers.
1949         * collect2.h (collect_execute): Add flags argument.
1950         * tlink.c (tlink_execute): Update call to collect_execute.
1951         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
1952         (use_linker_plugin): New.
1953         (use_linker_plugin_spec_function): New.
1954         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
1955         (linker_plugin_file_spec): New.
1956         (lto_wrapper_spec): New.
1957         (lto_gcc_spec): New.
1958         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
1959         (static_spec_functions): Add use-linker-plugin.
1960         (process_command): Handle -use-linker-plugin.
1961         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
1962         linker_plugin_file_spec and lto_gcc_spec.
1963         (use_linker_plugin_spec_function): New.
1964
1965 2009-10-03  Richard Guenther  <rguenther@suse.de>
1966
1967         PR lto/41547
1968         PR lto/41548
1969         * tree.h (is_lang_specific): Include LANG_TYPE.
1970         * tree.c (find_decls_types_r): Manually add interesting parts
1971         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
1972
1973         * gimple.c (type_pair_hash): Make symmetric.
1974         (type_pair_eq): Likewise.
1975         (lookup_type_pair): Increase initial hashtable size.
1976         (gimple_force_type_merge): Rely on type-pair symmetry.
1977         (visit): Remove excessive checking code.
1978         (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
1979         (gimple_register_type): Remove getenv calls, shrink initial
1980         hashtable size.
1981
1982         PR middle-end/41502
1983         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
1984         inline functions if not generating lto output.
1985
1986         PR lto/41379
1987         * toplev.c (finalize): In WPA mode remove the asm file.
1988
1989 2009-10-03  Doug Kwan  <dougkwan@google.com>
1990
1991         * ipa-inline.c (cgraph_mark_inline): Check
1992         edge->call_stmt_cannot_inline_p instead of calling
1993         gimple_call_cannot_inline_p.
1994         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
1995         (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
1996         (inline_generate_summary): Do nothing in LTRANS.
1997         * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
1998         exists before calling gimple_call_cannot_inline_p.
1999         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
2000         (cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
2001         Update new_edge->lto_stmt_uid.
2002         * cgraphbuild.c (reset_inline_failed): New.
2003
2004         * common.opt (fwpa): New flag.
2005         (fltrans): New option.
2006         * gcc.c (gcc_lto_option_t): New type.
2007         (current_lto_option): New variable.
2008         (lto_single_spec_function): Remove and is replaced by ..
2009         (lto_option_spec_function): New function.
2010         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
2011         passing the -flto flag.
2012         (cc1_options): Separate non-LTO related parts into ..
2013         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
2014         (lto1_options): New spec for lto FE.
2015         (link_lto_options): New spec for handling LTO flags in linker.
2016         (invoke_lto_single): Re-format to fit in 80 column.  Replace
2017         lto-single with lto-option.
2018         (static_specs): Add cc1_non_lto_options, lto1_options and
2019         link_lto_options.
2020         (static_spec_function): Replace lto-single with lto-option.
2021         (process_command): Handle -flto, -fwpa and -fltran by setting
2022         current_lto_option and not passing it to subprocess unconditionally.
2023
2024 2009-10-03  Bill Maddox  <maddox@google.com>
2025
2026         Add `gcc' driver support for link-time code generation (LTO).
2027
2028         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
2029         (lto_flag, lto_objects, lto_o_file): New variables.
2030         (struct lto_object, struct lto_object_list): New structures.
2031         (collect_exit, handler): Remove LTO temporary output file on exit.
2032         (add_lto_object): New function.
2033         (maybe_run_lto_and_relink): New function. Perform link time code
2034         generation and relinking for object files containing LTO information.
2035         (main): Invoke maybe_run_lto_and_relink().
2036         (dump_argv): New function.  For debugging, currently disabled.
2037         (scan_prog_file): Add LTO information pass.
2038         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
2039         collect2.
2040         * toplev.c (compile_file): Emit assembler directive to create
2041         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
2042
2043 2009-10-03  Diego Novillo  <dnovillo@google.com>
2044
2045         * c.opt: Add LTO to warn_abi and warn_psabi.
2046
2047         * tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
2048         inline function.  Ignore language-specific nodes.  Update all users.
2049         (find_decls_types_r): Do not traverse the subtrees of
2050         language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
2051         * tree.h (is_lang_specific): New.
2052         * langhooks.h (struct lang_hooks_for_decls): Remove
2053         may_need_assembler_name_p.  Update all users.
2054
2055         * c-common.c (set_builtin_user_assembler_name): Move ...
2056         * builtins.c (set_builtin_user_assembler_name): ... here.
2057         (is_builtin_name): Add comment
2058         (is_builtin_fn): New.
2059         * except.c (output_ttype): Only call
2060         lookup_type_for_runtime if TYPE is not a runtime type.
2061
2062         * passes.c (register_pass): Call position_pass on
2063         all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
2064         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
2065         (TV_IPA_LTO_DECL_IO): Define.
2066         (TV_IPA_LTO_CGRAPH_IO): Define.
2067         (TV_LTO): Define.
2068         (TV_WHOPR_WPA): Define.
2069         (TV_WHOPR_WPA_IO): Define.
2070         (TV_WHOPR_LTRANS): Define.
2071         (TV_WHOPR_WPA_FIXUP): Define.
2072         (TV_WHOPR_WPA_LTRANS_EXEC): Define.
2073         * tree-cfg.c (tree_node_can_be_shared): Make extern.
2074         * tree-flow.h (tree_node_can_be_shared): Declare.
2075         * tree-inline.c (tree_can_inline_p): Check that E has a
2076         statement associated with it.
2077         * tree.c (free_lang_data_in_binf): Factor out of ...
2078         (free_lang_data_in_type): ... here.
2079         Call RECORD_OR_UNION_TYPE_P.
2080         (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
2081         set.  Call lang_hooks.decls.may_need_assembler_name_p if set.
2082         (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
2083         (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE.  Set
2084         write_symbols to NO_DEBUG.  Set debug_hooks to do_nothing_debug_hooks.
2085         (gate_free_lang_data): Return true if flag_generate_lto is set.
2086         (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
2087         * c-common.h (set_builtin_user_assembler_name): Move ...
2088         * tree.h (set_builtin_user_assembler_name): ... here.
2089
2090         * common.opt (flto-report): New flag.
2091         * opts.c (complain_wrong_lang): Do not complain if running lto1.
2092         * collect2.c (scan_prog_file): Send the error output of
2093         'nm' to HOST_BIT_BUCKET.
2094
2095 2009-10-03  Ollie Wild  <aaw@google.com>
2096
2097         * langhooks-def.h (lhd_begin_section): New function declaration.
2098         (lhd_write_section): New function declaration.
2099         (lhd_end_section): New function declaration.
2100         (LANG_HOOKS_BEGIN_SECTION): New macro.
2101         (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
2102         (LANG_HOOKS_END_SECTION): New macro.
2103         (LANG_HOOKS_LTO): New macro.
2104         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
2105         * langhooks.c (output.h): Add include.
2106         (saved_section): New static variable.
2107         (lhd_begin_section): New function.
2108         (lhd_write_section_data): New function.
2109         (lhd_end_section): New function.
2110         * langhooks.h (struct lang_hooks_for_lto): New structure.
2111         (struct lang_hooks): Add member lto.
2112         * Makefile.in (langhooks.o): Add dependency on output.h.
2113
2114         * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
2115
2116 2009-10-03  Richard Guenther  <rguenther@suse.de>
2117
2118         * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
2119         Handle LTO.
2120
2121 2009-10-03  Simon Baldwin  <simonb@google.com>
2122             Richard Guenther  <rguenther@suse.de>
2123             Janis Johnson  <janis187@us.ibm.com>
2124             Doug Kwan  <dougkwan@google.com>
2125             Diego Novillo  <dnovillo@google.com>
2126             Ramana Radhakrishnan  <ramana.r@gmail.com>
2127             Ollie Wild  <aaw@google.com>
2128
2129         * doc/install.texi: Add documentation for libelf and --enable-lto.
2130         * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
2131         -flto-report, -flto-compression-level and -use-linker-plugin.
2132         * doc/sourcebuild.texi: Document use of zlib.  Document lto-plugin.
2133         Add section for LTO Testing.
2134
2135 2009-10-02  Cary Coutant  <ccoutant@google.com>
2136
2137         Add support for comdat type sections for DWARF v4.
2138         Merge from dwarf4 branch.
2139
2140         * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
2141         (dw_die_ref): Define vector type.
2142         (enum dw_val_class): Add dw_val_class_data8.
2143         (struct dw_val_struct): Add v.val_data8.
2144         (comdat_type_node_ref): New type.
2145         (struct die_struct): Move die_symbol into a union; add new field
2146         die_type_node.  Change all uses.
2147         (comdat_type_node): New type.
2148         (skeleton_chain_node): New type.
2149         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
2150         (comdat_type_list): New variable.
2151         (dwarf_tag_name): Add DW_TAG_type_unit.
2152         (dwarf_attr_name): Add DW_AT_signature.
2153         (add_AT_data8): New function.
2154         (replace_child): New function.
2155         (move_all_children): New function.
2156         (print_signature): New function.
2157         (print_die): Print signature information; add dw_val_class_data8.
2158         (attr_checksum): Support dw_val_class_data8.
2159         (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
2160         (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
2161         (checksum_sleb128, checksum_uleb128): New functions.
2162         (checksum_die_context): New function.
2163         (loc_checksum_ordered): New function.
2164         (attr_checksum_ordered): New function.
2165         (struct checksum_attributes): New structure.
2166         (collect_checksum_attributes): New function.
2167         (die_checksum_ordered): New function.
2168         (generate_type_signature): New function.
2169         (same_dw_val_p): Add dw_val_class_data8.
2170         (is_symbol_die): Use new is_declaration_die function.
2171         (is_declaration_die): New function.
2172         (should_move_die_to_comdat): New function.
2173         (clone_die): New function.
2174         (clone_tree): New function.
2175         (clone_as_declaration): New function.
2176         (copy_declaration_context): New function.
2177         (generate_skeleton_ancestor_tree): New function.
2178         (generate_skeleton_bottom_up): New function.
2179         (generate_skeleton): New function.
2180         (remove_child_or_replace_with_skeleton): New function.
2181         (break_out_comdat_types): New function.
2182         (struct decl_table_entry): New type.
2183         (htab_decl_hash): New function.
2184         (htab_decl_eq): New function.
2185         (htab_decl_del): New function.
2186         (copy_ancestor_tree): New function.
2187         (copy_decls_walk): New function.
2188         (copy_decls_for_unworthy_types): New function.
2189         (build_abbrev_table): Don't assert on missing die_symbol when doing
2190         comdat type sections.
2191         (size_of_die): Use DW_FORM_sig8 for external references.  Add
2192         dw_val_class_data8.
2193         (unmark_dies): Don't assert for unmarked dies when doing comdat
2194         type sections.
2195         (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
2196         (output_signature): New function.
2197         (output_die): Likewise.
2198         (output_compilation_unit_header): Mark output as DWARF version 3
2199         even if generating DWARF 4.
2200         (output_comdat_type_unit): New function.
2201         (output_line_info): Mark output as DWARF version 3 even if generating
2202         DWARF 4.
2203         (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
2204         DWARF-4.
2205         (dwarf2out_end_source_file): Likewise.
2206         (prune_unused_types_walk_attribs): Don't follow references into
2207         comdat type sections.
2208         (prune_unused_types_mark): When generating type units, do not mark
2209         children of non-defining declarations of types; do mark children of
2210         type entries.
2211         (prune_unused_types): Process comdat type sections.
2212         (htab_ct_hash): New function.
2213         (htab_ct_eq): New function.
2214         (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
2215         Add a pointer to the line table from type unit entries so
2216         DW_AT_decl_file has meaning.
2217         * varasm.c (default_elf_asm_named_section): Use identifier name as
2218         comdat key instead of lang hook.
2219
2220 2009-10-02  Neil Vachharajani  <nvachhar@google.com>
2221
2222         * gcov-io.c (gcov_open): Open files read-only when MODE < 0.
2223
2224 2009-10-02  Uros Bizjak  <ubizjak@gmail.com>
2225
2226         * config/i386/i386.md (SWIM248): New mode iterator.
2227         (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
2228         divmodhi4 patterns using SWIM248 macro.
2229         (*divmod<mode>4): Macroize insn_and_split pattern from
2230         *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
2231         and their corresponding splitters usign SWIM248 macro.  Split SImode
2232         insn to generate cltd and DImode insn to generate cqto instead of
2233         move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
2234         (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
2235         (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
2236         *divmodsi_noext patterns using SWIM248 macro.
2237         (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
2238         udivmodhi4 patterns using SWIM248 macro.
2239         (*udivmod<mode>4): Macroize insn_and_split pattern from
2240         *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
2241         corresponding splitters using SWIM248 macro.
2242         (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
2243         *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.
2244
2245 2009-10-02  Eric Botcazou  <ebotcazou@adacore.com>
2246
2247         * stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
2248         of zero-sized element is zero-sized regardless of its extent.
2249
2250 2009-10-02  Jakub Jelinek  <jakub@redhat.com>
2251
2252         PR debug/40521
2253         * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
2254         * configure: Regenerated.
2255         * config.in: Regenerated.
2256         * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
2257         !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
2258         (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
2259         not emitting .eh_frame, emit .cfi_sections .debug_frame
2260         directive.
2261
2262         PR debug/41404
2263         PR debug/41353
2264         * cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
2265         CONST_STRING if STRING_CST contains embedded '\0's or doesn't end
2266         with '\0'.
2267         (expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
2268         vars use DECL_RTL with resetting it back to NULL afterwards.
2269         * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
2270         rtx_equal_p instead of asserting it is a SYMBOL_REF.
2271         (value_format): For dw_val_class_addr only use DW_FORM_addr if
2272         the attribute type allows it, otherwise use DW_FORM_dataN.
2273         (mem_loc_descriptor): Handle CONST_STRING.
2274         (add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
2275         Handle MEM with CONST_STRING address using add_AT_string.
2276         (rtl_for_decl_init): Return MEM with CONST_STRING address instead of
2277         CONST_STRING for const arrays initialized with a string literal.
2278         (resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
2279         (dwarf2out_finish): Call resolve_addr.
2280
2281 2009-10-02  Andreas Schwab  <schwab@linux-m68k.org>
2282             Maxim Kuvyrkov  <maxim@codesourcery.com>
2283
2284         * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.
2285
2286 2009-10-02  Nick Clifton  <nickc@redhat.com>
2287
2288         * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
2289         (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
2290
2291 2009-10-01  Jan Hubicka  <jh@suse.cz>
2292
2293         * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
2294         (cgraph_create_virtual_clone): Just pass redirect_callers
2295         around.
2296         * cgraph.h (cgraph_clone_node): Update prototype.
2297         * ipa-pure-const.c (self_recursive_p): New function.
2298         (propagate): Use it.
2299         * ipa-inline.c (cgraph_clone_inlined_nodes,
2300         cgraph_decide_recursive_inlining): Update.
2301
2302 2009-10-01  David Daney  <ddaney@caviumnetworks.com>
2303
2304         * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
2305         instructions for TARGET_OCTEON.
2306
2307 2009-10-01  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2308
2309         * config/arm/arm.c (arm_override_options): Turn off
2310         flag_dwarf2_cfi_asm for AAPCS variants.
2311
2312 2009-10-01  Martin Jambor  <mjambor@suse.cz>
2313
2314         PR middle-end/12392
2315         * tree-sra.c (convert_callers): Do not call
2316         compute_inline_parameters on one caller more than once.
2317
2318 2009-10-01  Nick Clifton  <nickc@redhat.com>
2319
2320         * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
2321         an empty string if not already defined.
2322
2323 2009-10-01  Martin Jambor  <mjambor@suse.cz>
2324
2325         PR bootstrap/41395
2326         * tree-sra.c (is_va_list_type): New function.
2327         (find_var_candidates): Call is_va_list_type.
2328         (find_param_candidates): Check that the type or the type pointed
2329         to are not va_list types.
2330
2331 2009-10-01  Martin Jambor  <mjambor@suse.cz>
2332
2333         PR c++/41503
2334         * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
2335         DECL_ARTIFICIAL (param_decl) is true.
2336
2337 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
2338
2339         * tree.h (tree_decl_common::lang_flag_8): New.
2340         * c-common.c (c_common_reswords): Include "constexpr" as C++0x
2341         keyword.
2342         * c-common.h (RID_CONSTEXPR): New.
2343
2344 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
2345
2346         * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
2347         Use ref-all pointers.
2348         (alpha_gimplify_va_arg): Ditto.
2349
2350 2009-09-30  Jakub Jelinek  <jakub@redhat.com>
2351
2352         PR target/41279
2353         * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
2354         before insn counting loop now that BB_END (bb) is counted.  Ensure
2355         the return value isn't zero.
2356
2357 2009-09-30  Nick Clifton  <nickc@redhat.com>
2358
2359         * config.gcc (sh-symbianelf): Replace definition of extra_objs
2360         with separate definitions of c_target_objs and cxx_target_objs.
2361         * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
2362         and symbian-base.o.
2363         * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
2364         sh_symbian_import_export_class.
2365         * config/sh/sh-protos.h: Fix names of exported symbian functions.
2366         * config/sh/symbian.c: Delete, moving code into...
2367         * config/sh/symbian-base.c: ... here
2368         * config/sh/symbian-c.c: ... and here
2369         * config/sh/symbian-cxx.c: ... and here.
2370
2371 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
2372
2373         PR target/22093
2374         * config/alpha/alpha.md (unaligned_storehi_be): Force operand
2375         of plus RTX into register.
2376
2377 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2378
2379         * doc/install.texi: Linguistic and markup fixes.
2380         (Configuration) <--disable-cpp>: Remove description.
2381         <--enable-maintainer-mode>: Autotools files are affected, too.
2382         <--with-sysroot>: Improve description.
2383         (Building): Bump required GNU make version.
2384
2385 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
2386
2387         * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
2388         (x86_64-*-*): Ditto.
2389
2390         * config/i386/fma4intrin.h: New file, provide common x86 compiler
2391         intrinisics for FMA4.
2392         * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
2393         * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
2394         Add FMA4 check and fma4intrin.h.
2395         * config/i386/i386-c.c(ix86_target_macros_internal): Check
2396         ISA_FLAG for FMA4.
2397         * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
2398         * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
2399         constant for FMA4 support.
2400         (UNSPEC_FMA4_FMADDSUB): Ditto.
2401         (UNSPEC_FMA4_FMSUBADD): Ditto.
2402         * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
2403         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
2404         (ix86_expand_fma4_multiple_memory): Ditto.
2405         * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
2406         (OPTION_MASK_ISA_FMA4_UNSET): New.
2407         (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
2408         (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
2409         (ix86_handle_option): Handle -mfma4.
2410         (isa_opts): Handle -mfma4.
2411         (enum pta_flags): Add PTA_FMA4.
2412         (override_options): Add FMA4 support.
2413         (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
2414         (IX86_BUILTIN_VFMADDSD): Ditto.
2415         (IX86_BUILTIN_VFMADDPS): Ditto.
2416         (IX86_BUILTIN_VFMADDPD): Ditto.
2417         (IX86_BUILTIN_VFMSUBSS): Ditto.
2418         (IX86_BUILTIN_VFMSUBSD): Ditto.
2419         (IX86_BUILTIN_VFMSUBPS): Ditto.
2420         (IX86_BUILTIN_VFMSUBPD): Ditto.
2421         (IX86_BUILTIN_VFMADDSUBPS): Ditto.
2422         (IX86_BUILTIN_VFMADDSUBPD): Ditto.
2423         (IX86_BUILTIN_VFMSUBADDPS): Ditto.
2424         (IX86_BUILTIN_VFMSUBADDPD): Ditto.
2425         (IX86_BUILTIN_VFNMADDSS): Ditto.
2426         (IX86_BUILTIN_VFNMADDSD): Ditto.
2427         (IX86_BUILTIN_VFNMADDPS): Ditto.
2428         (IX86_BUILTIN_VFNMADDPD): Ditto.
2429         (IX86_BUILTIN_VFNMSUBSS): Ditto.
2430         (IX86_BUILTIN_VFNMSUBSD): Ditto.
2431         (IX86_BUILTIN_VFNMSUBPS): Ditto.
2432         (IX86_BUILTIN_VFNMSUBPD): Ditto.
2433         (IX86_BUILTIN_VFMADDPS256): Ditto.
2434         (IX86_BUILTIN_VFMADDPD256): Ditto.
2435         (IX86_BUILTIN_VFMSUBPS256): Ditto.
2436         (IX86_BUILTIN_VFMSUBPD256): Ditto.
2437         (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
2438         (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
2439         (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
2440         (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
2441         (IX86_BUILTIN_VFNMADDPS256): Ditto.
2442         (IX86_BUILTIN_VFNMADDPD256): Ditto.
2443         (IX86_BUILTIN_VFNMSUBPS256): Ditto.
2444         (IX86_BUILTIN_VFNMSUBPD256): Ditto.
2445         (enum multi_arg_type): New enum for describing the various FMA4
2446         intrinsic argument types.
2447         (bdesc_multi_arg): New table for FMA4 intrinsics.
2448         (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
2449         (ix86_expand_multi_arg_builtin): New function for creating FMA4
2450         intrinsics.
2451         (ix86_expand_builtin): Add FMA4 intrinsic support.
2452         (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
2453         operand instructions.
2454         (ix86_expand_fma4_multiple_memory): New function to split the
2455         second memory reference from FMA4 instructions.
2456         * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
2457         (ssemodesuffixf2s): Ditto.
2458         (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
2459         instructions.
2460         (fma4_fmsub<mode>4): Ditto.
2461         (fma4_fnmadd<mode>4): Ditto.
2462         (fma4_fnmsub<mode>4): Ditto.
2463         (fma4_vmfmadd<mode>4): Ditto.
2464         (fma4_vmfmsub<mode>4): Ditto.
2465         (fma4_vmfnmadd<mode>4): Ditto.
2466         (fma4_vmfnmsub<mode>4): Ditto.
2467         (fma4_fmadd<mode>4256): Ditto.
2468         (fma4_fmsub<mode>4256): Ditto.
2469         (fma4_fnmadd<mode>4256): Ditto.
2470         (fma4_fnmsub<mode>4256): Ditto.
2471         (fma4_fmaddsubv8sf4): Ditto.
2472         (fma4_fmaddsubv4sf4): Ditto.
2473         (fma4_fmaddsubv4df4): Ditto.
2474         (fma4_fmaddsubv2df4): Ditto.
2475         (fma4_fmsubaddv8sf4): Ditto.
2476         (fma4_fmsubaddv4sf4): Ditto.
2477         (fma4_fmsubaddv4df4): Ditto.
2478         (fma4_fmsubaddv2df4): Ditto.
2479         (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
2480         instructions for intrinsics.
2481         (fma4i_fmsub<mode>4): Ditto.
2482         (fma4i_fnmadd<mode>4): Ditto.
2483         (fma4i_fnmsub<mode>4): Ditto.
2484         (fma4i_vmfmadd<mode>4): Ditto.
2485         (fma4i_vmfmsub<mode>4): Ditto.
2486         (fma4i_vmfnmadd<mode>4): Ditto.
2487         (fma4i_vmfnmsub<mode>4): Ditto.
2488         (fma4i_fmadd<mode>4256): Ditto.
2489         (fma4i_fmsub<mode>4256): Ditto.
2490         (fma4i_fnmadd<mode>4256): Ditto.
2491         (fma4i_fnmsub<mode>4256): Ditto.
2492         (fma4i_fmaddsubv8sf4): Ditto.
2493         (fma4i_fmaddsubv4sf4): Ditto.
2494         (fma4i_fmaddsubv4df4): Ditto.
2495         (fma4i_fmaddsubv2df4): Ditto.
2496         (fma4i_fmsubaddv8sf4): Ditto.
2497         (fma4i_fmsubaddv4sf4): Ditto.
2498         (fma4i_fmsubaddv4df4): Ditto.
2499         (fma4i_fmsubaddv2df4): Ditto.
2500
2501         * doc/invoke.texi (-mfma4): Add documentation.
2502         * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
2503
2504 2009-09-29  Richard Henderson  <rth@redhat.com>
2505
2506         * tree-eh.c (unsplit_eh): Do not unsplit if there's already
2507         an edge to the new destination block.
2508
2509 2009-09-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2510
2511         PR target/41393
2512         * pa.c (hppa_profile_hook): Use
2513         make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
2514
2515 2009-09-29  Steve Ellcey  <sje@cup.hp.com>
2516             Alexander Monakov  <amonakov@ispras.ru>
2517
2518         PR target/41365
2519         * config/ia64/predicates.md (not_postinc_destination_operand): New.
2520         (not_postinc_memory_operand): New.
2521         (not_postinc_move_operand): New.
2522         * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
2523         (*cmovsi_internal): Ditto.
2524
2525 2009-09-29  Pat Haugen  <pthaugen@us.ibm.com>
2526
2527         * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
2528         restrict issue_rate in first pass when scheduling for register
2529         pressure.
2530
2531 2009-09-29  Basile Starynkevitch  <basile@starynkevitch.net>
2532             Rafael Avila de Espindola  <espindola@google.com>
2533
2534         * gengtype.c (plugin_output): New.
2535         (get_output_file_with_visibility): Return plugin_output for plugins.
2536         (main): Parse and use the -P option.
2537         * gty.texi: Update the command line format.
2538
2539 2009-09-29  Jakub Jelinek  <jakub@redhat.com>
2540
2541         PR debug/41438
2542         * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
2543         functions.
2544         (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
2545         out if !const_ok_for_output.
2546
2547         PR debug/41474
2548         * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
2549         case VAR_LOCATION>: Remove gcc_unreachable ().
2550
2551 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
2552
2553         * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
2554         (x86_64-*-*): Ditto.
2555         * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
2556         back to smmintrin.h.
2557         * config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
2558         * config/i386/x86intrin.h: Remove SSE5.
2559         * config/i386/mmintrin-common.h: Delete file.
2560         * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
2561
2562 2009-09-29  Richard Guenther  <rguenther@suse.de>
2563
2564         * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
2565         resulting from stack temporaries on STRICT_ALIGNMENT targets.
2566
2567 2009-09-29  Nick Clifton  <nickc@redhat.com>
2568
2569         * function.c (current_function_name): If there is no current
2570         function just return "<none>".
2571
2572 2009-09-28  Sriraman Tallam  <tmsriram@google.com>
2573
2574         * tree-pass.h (register_pass_info): New structure.
2575         (pass_positioning_ops): Move enum from gcc-plugin.h.
2576         (register_pass): New function.
2577         * gcc-plugin.h (plugin_pass): Delete structure.
2578         (pass_positioning_ops): Delete enum.
2579         * plugin.c (regsiter_pass): Delete function.
2580         (position_pass): Delete function.
2581         (added_pass_nodes): Delete variable.
2582         (prev_added_pass_nodes): Delete variable.
2583         (pass_list_node): Delete structure.
2584         * passes.c (make_pass_instance): New function.
2585         (next_pass_1): Change to call make_pass_instance.
2586         (pass_list_node): Move structure from gcc-plugin.h.
2587         (added_pass_nodes): Move variable from plugin.c.
2588         (prev_added_pass_nodes): Move variable from plugin.c.
2589         (position_pass): New function.
2590         (register_pass): New function.
2591
2592 2009-09-28  Easwaran Raman  <eraman@google.com>
2593
2594         * ifcvt.c (noce_try_abs): Recognize pattern and call
2595         expand_one_cmpl_abs_nojump.
2596         * optabs.c (expand_one_cmpl_abs_nojump): New function.
2597         * optabs.h (expand_one_cmpl_abs_nojump): Declare.
2598
2599 2009-09-28  Ian Lance Taylor  <iant@google.com>
2600
2601         PR middle-end/40500
2602         * c-opts.c (c_common_handle_option): Don't set
2603         warn_jump_misses_init for -Wall.
2604         * doc/invoke.texi (Warning Options): Update documentation.
2605
2606 2009-09-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2607
2608         * Makefile.in ($(out_object_file)): Depend on
2609         gt-$(basename $(notdir $(out_file))).h.
2610
2611 2009-09-28  Richard Henderson  <rth@redhat.com>
2612
2613         * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
2614         * except.c (gen_eh_region): Set it.
2615         (duplicate_eh_regions_1): Copy it.
2616         * tree-eh.c (lower_resx): Use it to determine which function
2617         to call to resume.
2618
2619         * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
2620         * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
2621         * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
2622         * tree.c (build_common_builtin_nodes): Remove parameter.  Build
2623         BUILT_IN_CXA_END_CLEANUP if necessary.
2624
2625         * c-common.c (c_define_builtins): Update call to
2626         build_common_builtin_nodes.
2627
2628 2009-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2629
2630         * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
2631
2632 2009-09-28  Michael Matz  <matz@suse.de>
2633
2634         * builtins.c (interclass_mathfn_icode): New helper.
2635         (expand_builtin_interclass_mathfn): Use it here, and split folding
2636         into ...
2637         (fold_builtin_interclass_mathfn): ... this new folder.
2638         (build_call_nofold_loc): New static helper.
2639         (build_call_nofold): New wrapper macro for above.
2640         (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
2641         (expand_builtin_pow): Ditto.
2642         (expand_builtin_memset_args): Ditto.
2643         (expand_builtin_printf): Ditto.
2644         (expand_builtin_fprintf): Ditto.
2645         (expand_builtin_sprintf): Ditto.
2646         (expand_builtin_memory_chk): Ditto.
2647         (expand_builtin_mempcpy_args): Ditto and don't call folders.
2648         (expand_builtin_stpcpy): Ditto.
2649         (expand_builtin_strcmp): Ditto.
2650         (expand_builtin_strncmp): Ditto.
2651         (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
2652         (expand_builtin_strcpy_args): Don't call folders.
2653         (expand_builtin_memcmp): Ditto.
2654         (expand_builtin_strncpy): Ditto, and use target.
2655         (expand_builtin_memcpy): Ditto.
2656         (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
2657         expand_builtin_strpbrk, expand_builtin_memmove,
2658         expand_builtin_memmove_args, expand_builtin_bcopy,
2659         expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
2660         expand_builtin_strspn, expand_builtin_strcspn,
2661         expand_builtin_fputs): Remove these.
2662         (expand_builtin): Don't call the above, change calls to other
2663         expanders that changed prototype.
2664         (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
2665         (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
2666         fold_builtin_interclass_mathfn.
2667         (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
2668         (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
2669
2670         * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
2671         * passes.c (init_optimization_passes): Move pass_fold_builtins
2672         after last phiopt pass.
2673         * tree-inline.c (fold_marked_statements): When folding builtins
2674         iterate over all instruction potentially generated.
2675         * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
2676         earlier.
2677         (fold_gimple_call): Use it to always fold calls (into potentially
2678         multiple instructions).
2679         * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
2680         calls into zero at this time.
2681         * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
2682         statements generated by builtin folding.
2683
2684 2009-09-28  Nick Clifton  <nickc@redhat.com>
2685
2686         * config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns.
2687
2688 2009-09-28  Duncan Sands  <baldrick@free.fr>
2689
2690         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
2691         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
2692         (register_callback): Dispatch it.
2693         (invoke_plugin_callbacks): Incorporate in sanity check.
2694         * ggc.h (ggc_register_cache_tab): Add declaration.
2695         * ggc-common.c (ggc_register_root_tab): Simplify.
2696         (const_ggc_cache_tab_t): New typedef.
2697         (extra_cache_vec): New vector of dynamically added cache tables.
2698         (ggc_register_cache_tab): New function.
2699         (ggc_scan_cache_tab): New function.
2700         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
2701         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
2702
2703 2009-09-27  Richard Henderson  <rth@redhat.com>
2704
2705         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
2706         which we remove __builtin_stack_restore.
2707
2708 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
2709
2710         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
2711         to test for GRD_INVARIANT.
2712         (simple_rhs_p): Anything that's function_invariant_p is fine.
2713
2714 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
2715
2716         * gengtype.c (main): Use plunge_files instead of plugin_output.
2717
2718 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
2719             Rafael Avila de Espindola  <espindola@google.com>
2720
2721         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
2722         Don't print pch related info if it is false.
2723         (main): Don't print pch info in plugin mode.
2724
2725 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
2726
2727         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
2728         with dw_val_class_const_double.
2729         (struct dw_val_struct): Replace val_long_long with val_double and
2730         adjust for above change.
2731         (output_loc_operands): Likewise.
2732         (add_AT_long_long): Rename into...
2733         (add_AT_double): ...this.
2734         (print_die): Replace dw_val_class_long_long with
2735         dw_val_class_const_double and adjust.
2736         (attr_checksum): Likewise.
2737         (same_dw_val_p): Likewise.
2738         (size_of_die): Likewise.
2739         (value_format): Likewise.
2740         (output_die): Likewise.
2741         (loc_descriptor) <CONST_DOUBLE>: Likewise.
2742         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
2743         instead of add_AT_long_long.
2744         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
2745         value with the precision of its type.
2746
2747 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
2748
2749         PR c/41476
2750         * c-typeck.c (build_conditional_expr): Use the readonly and
2751         volatile flags of the operand types, not of the operands itself.
2752
2753 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
2754
2755         * collect2.c (main): Look for -brtl before adding libraries.
2756
2757 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
2758
2759         * config.gcc: Update OpenBSD targets.
2760         * config/openbsd-stdint.h: New file.
2761         * config/openbsd-libpthread.h: New file.
2762         * config/openbsd.h: Update and break out LIB_SPEC definition.
2763         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
2764         * config/i386/openbsdelf.h: Correct types.
2765         * config/m68k/openbsd.h: Likewise.
2766         * config/mips/openbsd.h: Likewise.
2767         * config/vax/openbsd.h: Likewise.
2768
2769 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
2770
2771         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
2772         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
2773         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
2774         of the length and zero.
2775
2776 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2777
2778         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
2779         (FLAGS_H): Add options.h $(REAL_H).
2780         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
2781         (TREE_VECTORIZER_H): New.
2782         (EBITMAP_H): Renamed from EBIMAP_H.
2783         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
2784         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
2785         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
2786         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
2787         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
2788         (graphite-clast-to-gimple.o, graphite-dependences.o)
2789         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
2790         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
2791         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
2792         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
2793         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
2794         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
2795         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
2796         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
2797         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
2798         updated and fixed as per above changes and per
2799         check_makefile_deps.sh output.
2800
2801         PR bootstrap/40928
2802         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
2803         * configure: Regenerate.
2804
2805 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2806
2807         * doc/install.texi: Update minimum MPC version to 0.7.
2808
2809 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
2810
2811         * doc/install.texi (Binaries): Remove reference to the binary
2812         distribution CD-ROM from the FSF.
2813
2814 2009-09-26  Michael Matz  <matz@suse.de>
2815
2816         PR lto/40758
2817         PR middle-end/41470
2818         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
2819         that are mentioned in the body.
2820
2821 2009-09-26  Michael Matz  <matz@suse.de>
2822
2823         PR tree-optimization/41454
2824         * tree-ssa-dom (stmts_to_rescan): Remove variable.
2825         (tree_ssa_dominator_optimize): Don't allocate and free it.
2826         (dom_opt_leave_block): Don't iterate over it.
2827         (eliminate_redundant_computations): Don't return a value.
2828         (cprop_operand, cprop_into_stmt): Ditto.
2829         (optimize_stmt): Don't defer updating stmts.
2830
2831 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
2832
2833         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
2834         generic_parameter_die, template_parameter_pack_die,
2835         gen_formal_parameter_die, gen_subprogram_die): Adjust after
2836         renaming DW_TAG_formal_parameter_pack and
2837         DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack
2838         and DW_TAG_GNU_template_parameter_pack.
2839
2840 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
2841
2842         * config/v850/v850.h (FUNCTION_VALUE): Remove.
2843         * config/v850/v850.c (v850_function_value): New function.
2844         (TARGET_FUNCTION_VALUE): Define.
2845
2846 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
2847
2848         * tree-vect-stmts.c (vectorizable_call): Call
2849         mark_symbols_for_renaming after vect_finish_stmt_generation.
2850
2851         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
2852         to loc_descriptor_from_tree.
2853         (add_location_or_const_value_attribute): Pass 0 instead of 2
2854         for decl_by_reference_p decls.
2855
2856 2009-09-25  Richard Guenther  <rguenther@suse.de>
2857
2858         PR middle-end/41463
2859         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
2860         arrays again.
2861
2862 2009-09-25  Ben Elliston  <bje@au.ibm.com>
2863
2864         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
2865         after `power7'.
2866
2867 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
2868
2869         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
2870         form of instruction.
2871
2872 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2873
2874         PR middle-end/41435
2875         * fold-const.c (const_binop): Handle complex int division.
2876         * tree-complex.c (expand_complex_div_straight,
2877         expand_complex_div_wide): Update comments.
2878
2879 2009-09-24  DJ Delorie  <dj@redhat.com>
2880
2881         PR target/41456
2882         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
2883         (reg_class): Likewise.
2884         (REG_CLASS_NAMES): Likewise.
2885         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
2886         (m32c_override_options): Disable -fivopts for M32C.
2887
2888 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
2889
2890         * config/rs6000/predicates.md (indexed_or_indirect_operand):
2891         Delete VSX load/store with update support.
2892         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
2893         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
2894         (vsx_movti): Ditto.
2895         (VSX_U): Delete.
2896         (VSbit): Ditto.
2897         (VStype_load_update): Ditto.
2898         (VStype_store_update): Ditto.
2899         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
2900         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
2901
2902         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
2903         load/store with update builtins.
2904
2905 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
2906
2907         * libgcc2.c (L_trampoline): Prototype for getpagesize
2908         and mprotect in WINNT case.
2909
2910 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
2911
2912         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
2913         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
2914         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
2915         'outgoing' argument.
2916         (TARGET_FUNCTION_VALUE): Define.
2917
2918 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
2919
2920         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
2921
2922 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
2923
2924         PR bootstrap/41405
2925         * common.opt: Initialize dwarf_strict to -1.
2926         * toplev.c (process_options): Catch unset dwarf_strict
2927         and set to 0 for all targets not overriding.
2928         * config/darwin.c (darwin_override_options): Catch unset
2929         dwarf_strict and override to 1.
2930
2931 2009-09-24  Jeff Law  <law@redhat.com>
2932
2933         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
2934
2935 2009-09-24  Richard Guenther  <rguenther@suse.de>
2936
2937         PR tree-optimization/36143
2938         PR tree-optimization/38747
2939         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
2940         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
2941
2942 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
2943
2944         PR bootstrap/41457
2945         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
2946         return false instead of gcc_unreachable ().  For CONST return the
2947         value returned by recursive call instead of always returning true.
2948         (tree_add_const_value_attribute): Return the value returned by
2949         add_const_value_attribute instead of always returning true if rtl
2950         is non-NULL.
2951
2952 2009-09-23  Justin Seyster  <jrseys@gmail.com>
2953
2954         * Makefile.in (PLUGIN_HEADERS): Include real.h.
2955
2956 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
2957
2958         * cgraphunit.c (cgraph_lower_function): Revert last change.
2959         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
2960         instead of DECL_NO_STATIC_CHAIN.
2961         * tree-cfg.c (verify_gimple_call): Likewise.
2962         * tree-nested.c (get_chain_decl, get_chain_field,
2963         convert_tramp_reference_op, convert_gimple_call): Likewise.
2964         (convert_all_function_calls): Likewise.  Always set or clear
2965         DECL_STATIC_CHAIN initially, for !n->outer clear it.
2966         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
2967         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
2968         if nested.
2969         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
2970         DECL_NO_STATIC_CHAIN.
2971         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
2972         instead of DECL_NO_STATIC_CHAIN.
2973         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
2974         decl_function_context.
2975         * varasm.c (initializer_constant_valid_p): Likewise.
2976         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
2977         (DECL_STATIC_CHAIN): ... this.
2978         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
2979         instead of DECL_NO_STATIC_CHAIN.
2980
2981 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
2982             Rafael Avila de Espindola  <espindola@google.com>
2983
2984         * gengtype.c (nb_plugin_files): Make it unsigned to match
2985         num_gt_files. Adjust other variables to avoid warnings.
2986         (main): Allocate an all zero lang_bitmap before each plugin file name
2987         to match regular file names.
2988
2989 2009-09-23  Richard Henderson  <rth@redhat.com>
2990
2991         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
2992         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
2993         static chain passed in memory.
2994         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
2995         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
2996         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
2997         STATIC_CHAIN_REGNUM defined.
2998
2999         * config/picochip/picochip-protos.h: s/class/klass/.
3000         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
3001         (picochip_static_chain): New.
3002         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
3003         (STATIC_CHAIN_INCOMING): Remove.
3004
3005         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
3006         (xtensa_static_chain): New.
3007         * config/xtensa/xtensa.h (STATIC_CHAIN): Remove.
3008         (STATIC_CHAIN_INCOMING): Remove.
3009
3010 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
3011
3012         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
3013         * config/pa/pa-protos.h (function_value): Remove.
3014         * config/pa/pa.c (pa_function_value): Rename from function_value.
3015         Make static, add 'outgoing' argument.
3016         (TARGET_FUNCTION_VALUE): Define.
3017
3018 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
3019
3020         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
3021         instead of cfun->machine->is_leaf.
3022         * config/avr/avr.h (machine_function): Remove is_leaf field.
3023
3024 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
3025
3026         PR debug/41439
3027         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
3028         DW_OP_piece after DW_OP_stack_value, adjust size calculations
3029         for it, when DW_OP_stack_value and DW_OP_implicit_value has
3030         the same size, prefer DW_OP_stack_value.
3031         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
3032         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
3033
3034 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
3035
3036         PR debug/41353
3037         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
3038
3039 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
3040
3041         PR debug/41248
3042         * cfgexpand.c (convert_debug_memory_address): New.
3043         (expand_debug_expr): Convert base address and offset to the same
3044         mode.  Use it to convert addresses to other modes.  Accept
3045         ptr_mode addresses.
3046
3047 2009-09-23  Richard Guenther  <rguenther@suse.de>
3048
3049         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
3050         produced for bigendian targets with promoted subregs.
3051
3052 2009-09-23  Richard Guenther  <rguenther@suse.de>
3053
3054         * value-prof.c (gimple_ic): Purge old EH edges only after building
3055         the new ones.
3056
3057 2009-09-23  Nick Clifton  <nickc@redhat.com>
3058
3059         * config/arc/arc.c (arc_trampoline_init): Fix typo.
3060
3061 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
3062
3063         PR bootstrap/41405
3064         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
3065
3066         PR bootstrap/41436
3067         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
3068         on non-nested functions.
3069
3070 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
3071             Jan Hubicka  <jh@suse.cz>
3072
3073         * dwarf2out.c (loc_list_plus_const): Only define if
3074         DWARF2_DEBUGGING_INFO.
3075         (address_of_int_loc_descriptor): Likewise.
3076
3077         PR debug/41411
3078         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
3079
3080 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
3081
3082         PR c/39779
3083         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
3084         constant is more than zero.
3085
3086 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
3087
3088         PR target/40473
3089         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
3090         call final to emit non-scheduled prologue, instead insert at entry.
3091
3092 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
3093             Joseph S. Myers  <joseph@codesourcery.com>
3094
3095         * doc/install.texi (*-*-freebsd*): Add proper format codes.
3096
3097 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
3098             Rafael Avila de Espindola  <espindola@google.com>
3099
3100         * gengtype.c (is_file_equal): New function.
3101         (close_output_files): Use is_file_equal. Free of->buf.
3102
3103 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
3104             Rafael Avila de Espindola  <espindola@google.com>
3105
3106         * gengtype.c (write_types, write_local): Add the output_header
3107         argument. Update all callers.
3108
3109 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
3110
3111         * dwarf2out.c (template_parameter_pack_die,
3112         gen_formal_parameter_pack_die ): New functions.
3113         (make_ith_pack_parameter_name): Remove this function.
3114         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
3115         DW_TAG_formal_parameter_pack.
3116         (gen_generic_params_dies): Represent each template parameter pack
3117         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
3118         represented by usual DW_TAG_template_*_parameter DIEs that are
3119         children of the DW_TAG_template_parameter_pack element DIE.
3120         (generic_parameter_die): This doesn't deal with parameter pack
3121         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
3122         of parameter pack DIEs.
3123         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
3124         in certain cases, e.g. for pack elements.
3125         (gen_formal_types_die, gen_decl_die): Adjust usage of
3126         gen_formal_parameter_die.
3127         (gen_subprogram_die): Represent each function parameter pack by a
3128         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
3129         represented by usual DW_TAG_formal_parameter DIEs that are children
3130         of the DW_TAG_formal_parameter_pack DIE. Remove references to
3131         ____builtin_va_alist decls as no part of the compiler uses those
3132         anymore.
3133         * langhooks.h (struct lang_hooks_for_decls): Add
3134         function_parm_expanded_from_pack_p, get_generic_function_decl
3135         and function_parameter_pack_p hooks.  Fix comment for
3136         get_innermost_generic_parms hook.
3137         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
3138         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
3139         macros and use them to initialize lang_hook.
3140
3141 2009-09-22  Richard Henderson  <rth@redhat.com>
3142
3143         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
3144         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
3145         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
3146         on TRAMPOLINE_TEMPLATE.
3147         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
3148         TRAMPOLINE_ADJUST_ADDRESS.
3149         * targhooks.c (default_asm_trampoline_template): Remove.
3150         (default_trampoline_adjust_address): Remove.
3151         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
3152         * targhooks.h: Update decls.
3153
3154 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
3155
3156         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
3157         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
3158         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
3159
3160 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
3161
3162         PR debug/41295
3163         * reload1.c (reload): Reset debug insns with pseudos without
3164         equivalences.
3165
3166 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
3167
3168         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
3169         unconditional true for decimal float modes.
3170         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
3171         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
3172
3173 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
3174
3175         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
3176         Enable a new case for __FreeBSD__ >= 7.
3177         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
3178         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
3179         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
3180         and USE_LD_AS_NEEDED.
3181
3182         * doc/install.texi (*-*-freebsd*): Update target information.
3183
3184 2009-09-22  Richard Guenther  <rguenther@suse.de>
3185
3186         PR middle-end/41395
3187         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
3188         arrays really properly.
3189
3190 2009-09-22  Richard Henderson  <rth@redhat.com>
3191
3192         PR target/41246
3193         * target.h (struct gcc_target): Add asm_out.trampoline_template,
3194         calls.static_chain, calls.trampoline_init,
3195         calls.trampoline_adjust_address.
3196         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3197         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
3198         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
3199         * builtins.c (expand_builtin_setjmp_receiver): Use
3200         targetm.calls.static_chain; only clobber registers.
3201         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
3202         set up memory attributes properly for the trampoline block.
3203         (expand_builtin_adjust_trampoline): Use
3204         targetm.calls.trampoline_adjust_address.
3205         * calls.c (prepare_call_address): Add fndecl argument.  Use
3206         targetm.calls.static_chain.
3207         * df-scan.c (df_need_static_chain_reg): Remove.
3208         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
3209         consolodate static chain handling.
3210         * doc/tm.texi: Document new hooks.
3211         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
3212         (init_emit_regs): Don't initialize them.
3213         * expr.h (prepare_call_address): Update decl.
3214         * final.c (profile_function): Use targetm.calls.static_chain.
3215         * function.c (expand_function_start): Likewise.
3216         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
3217         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
3218         only clobber registers.
3219         * targhooks.c (default_static_chain): New.
3220         (default_asm_trampoline_template, default_trampoline_init): New.
3221         (default_trampoline_adjust_address): New.
3222         * targhooks.h: Declare them.
3223         * varasm.c (assemble_trampoline_template): Use
3224         targetm.asm_out.trampoline_template.  Make the memory block const
3225         and set its size.
3226
3227         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
3228         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
3229         differences into the TARGET_ABI_OPEN_VMS code block.
3230         (TARGET_TRAMPOLINE_INIT): New.
3231         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
3232         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
3233         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
3234         (INITIALIZE_TRAMPOLINE): Remove.
3235
3236         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
3237         (TRAMPOLINE_TEMPLATE): Merge with ...
3238         (INITIALIZE_TRAMPOLINE): ... this and move ...
3239         * config/arc/arc.c (arc_trampoline_init): ... here.
3240         (TARGET_TRAMPOLINE_INIT): New.
3241
3242         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3243         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
3244         (arm_asm_trampoline_template): New.
3245         (arm_trampoline_init, arm_trampoline_adjust_address): New.
3246         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
3247         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
3248         code to arm_asm_trampoline_template.
3249         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
3250         arm_trampoline_adjust_address.
3251         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
3252         adjust for target hook parameters.
3253
3254         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
3255         Remove.
3256
3257         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
3258         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
3259         (bfin_trampoline_init): Rename from initialize_trampoline;
3260         make static; update for target hook parameters.
3261         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
3262         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
3263         bfin_asm_trampoline_template.
3264         (INITIALIZE_TRAMPOLINE): Remove.
3265
3266         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
3267         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
3268         cris_trampoline_init): New.
3269         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
3270         cris_asm_trampoline_template.
3271         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
3272         adjust for target hook parameters.
3273
3274         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
3275
3276         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
3277         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
3278         fr30_trampoline_init): New.
3279         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
3280         fr30_asm_trampoline_template.
3281         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
3282         adjust for target hook parameters.
3283
3284         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
3285         (frv_trampoline_init): Rename from frv_initialize_trampoline;
3286         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
3287         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
3288         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
3289
3290         * config/h8300/h8300.c (h8300_trampoline_init): New.
3291         (TARGET_TRAMPOLINE_INIT): New.
3292         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
3293         to h8300_trampoline_init and adjust for hook parameters.
3294
3295         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
3296         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
3297         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
3298         make static; adjust for hook parameters.
3299         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
3300
3301         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3302         (TARGET_TRAMPOLINE_INIT): New.
3303         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
3304         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
3305         iq2000_asm_trampoline_template.
3306         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
3307         (TRAMPOLINE_CODE_SIZE): New.
3308         (TRAMPOLINE_SIZE): Use it.
3309         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
3310
3311         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
3312         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
3313         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
3314         adjust for hook parameters.
3315         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
3316
3317         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
3318         (m32r_trampoline_init): New.
3319         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
3320         m32r_trampoline_init.
3321
3322         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
3323         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
3324         make static; update for hook parameters.
3325         * config/m68hc11/m68hc11-protos.h: Update.
3326         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
3327
3328         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3329         (TARGET_TRAMPOLINE_INIT): New.
3330         (mcore_function_value): Fix typo.
3331         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
3332         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
3333         to mcore_asm_trampoline_template.
3334         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
3335
3336         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
3337         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
3338         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
3339         update for hook parameters.
3340         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
3341
3342         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
3343         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
3344         mips_trampoline_init): New.
3345         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
3346         mips_asm_trampoline_template.
3347         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
3348         update for hook parameters.
3349
3350         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3351         (TARGET_TRAMPOLINE_INIT): New.
3352         (mmix_trampoline_size): Remove.
3353         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
3354         make static.  Remove out-of-date tetra vs octa comment.
3355         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
3356         make static; update for hook parameters.
3357         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
3358         (INITIALIZE_TRAMPOLINE): Remove.
3359         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
3360         (TRAMPOLINE_ALIGNMENT): New.
3361         * gcc/config/mmix/mmix-protos.h: Update.
3362
3363         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
3364         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
3365         mn10300_trampoline_init): New.
3366         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
3367         mn10300_asm_trampoline_template.
3368         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
3369
3370         * config/moxie/moxie.c (moxie_static_chain,
3371         moxie_asm_trampoline_template, moxie_trampoline_init,
3372         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
3373         TARGET_TRAMPOLINE_INIT): New.
3374         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
3375         moxie_trampoline_init.
3376         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
3377         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
3378
3379         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
3380         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
3381         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
3382         pa_trampoline_adjust_address): New.
3383         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
3384         pa_asm_trampoline_template.
3385         (TRAMPOLINE_ALIGNMENT): New.
3386         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
3387         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
3388         adjust for hook parameters.
3389         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
3390
3391         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
3392         (TARGET_TRAMPOLINE_INIT): New.
3393         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
3394         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
3395
3396         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
3397
3398         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
3399         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
3400         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
3401         make static; adjust parameters for the hook.
3402         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
3403
3404         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
3405         s390_trampoline_template; make static.
3406         (s390_trampoline_init): Rename from s390_initialize_trampoline;
3407         make static; adjust for target hook.
3408         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
3409         * config/s390/s390-protos.h: Remove trampoline decls.
3410         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
3411         (TRAMPOLINE_TEMPLATE): Remove.
3412         (TRAMPOLINE_ALIGNMENT): New.
3413
3414         * config/score/score-protos.h (score_initialize_trampoline): Remove.
3415         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3416         (TARGET_TRAMPOLINE_INIT): New.
3417         (score_asm_trampoline_template): New.
3418         (score_trampoline_init): Rename from score_initialize_trampoline;
3419         make static; adjust for hook parameters.
3420         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
3421         score[37]_asm_trampoline_template.
3422         (INITIALIZE_TRAMPOLINE): Remove.
3423         * config/score/score3.c (score3_asm_trampoline_template): New.
3424         (score3_trampoline_init): Rename from score3_initialize_trampoline;
3425         adjust for target hook.
3426         * config/score/score7.c (score7_asm_trampoline_template): New.
3427         (score7_trampoline_init): Rename from score7_initialize_trampoline;
3428         adjust for target hook.
3429         * config/score/score3.h, config/score/score7.h: Update.
3430
3431         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
3432         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
3433         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
3434         (sh_trampoline_init): Rename from sh_initialize_trampoline;
3435         make static; adjust for target hook parameters.
3436         (sh_trampoline_adjust_address): New.
3437         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
3438         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
3439
3440         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
3441         (sparc32_initialize_trampoline): Rename from
3442         sparc_initialize_trampoline; make static; replace tramp parameter
3443         with m_tramp and update memory accesses.
3444         (sparc64_initialize_trampoline): Similarly.
3445         (sparc_trampoline_init): New.
3446         * config/sparc/sparc-protos.h: Remove trampoline decls.
3447         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
3448         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
3449
3450         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
3451         (array_to_constant): Make ARR parameter const.
3452         (spu_trampoline_init): Rename from spu_initialize_trampoline;
3453         make static; update for hook parameters.
3454         * config/spu/spu-protos.h: Update decls.
3455         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
3456
3457         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
3458         from xstormy16_initialize_trampoline; make static; update for
3459         hook parameters.
3460         (TARGET_TRAMPOLINE_INIT): New.
3461         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
3462
3463         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3464         (TARGET_TRAMPOLINE_INIT): New.
3465         (v850_can_eliminate): Make static.
3466         (v850_asm_trampoline_template, v850_trampoline_init): New.
3467         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
3468         v850_asm_trampoline_template.
3469         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
3470         and adjust for target hook parameters.
3471
3472         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3473         (TARGET_TRAMPOLINE_INIT): New.
3474         (vax_asm_trampoline_template, vax_trampoline_init): New.
3475         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
3476         vax_asm_trampoline_template.
3477         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
3478
3479         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3480         (TARGET_TRAMPOLINE_INIT): New.
3481         (xtensa_asm_trampoline_template): Rename from
3482         xtensa_trampoline_template; make static.
3483         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
3484         make static; update for hook parameters.
3485         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
3486         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
3487         (INITIALIZE_TRAMPOLINE): Remove.
3488
3489         * config/i386/i386.c (ix86_function_regparm): Do not issue an
3490         error for nested functions with regparm=3.
3491         (ix86_compute_frame_layout): Adjust frame pointer offset for
3492         ix86_static_chain_on_stack.
3493         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
3494         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
3495         don't reset to UNITS_PER_WORD.
3496         (ix86_emit_leave): Adjust ix86_cfa_state.
3497         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
3498         (ix86_static_chain): New.
3499         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
3500         make static; update for target hook parameters; use ix86_static_chain.
3501         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
3502         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
3503         (INITIALIZE_TRAMPOLINE): Remove.
3504         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
3505         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
3506         to the end.  Add static_chain_on_stack.
3507         (ix86_static_chain_on_stack): New.
3508
3509         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
3510         (m68k_output_mi_thunk): Don't use static_chain_rtx.
3511         (m68k_trampoline_init): New.
3512         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
3513         m68k_trampoline_init and adjust for hook parameters.
3514         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
3515         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
3516
3517 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
3518
3519         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
3520         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
3521
3522         * reload1.c (reload): Call wrap_constant when substituting
3523         reg for equiv inside of DEBUG_INSNs.
3524
3525         PR bootstrap/41405
3526         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
3527         add_call_src_coords_attributes, add_high_low_attributes,
3528         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
3529         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
3530         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
3531         when -gdwarf-2 -gstrict-dwarf.
3532         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
3533         -gdwarf-[23] -gstrict-dwarf.
3534         (address_of_int_loc_descriptor, loc_descriptor,
3535         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
3536         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
3537         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
3538
3539 2009-09-22  Richard Guenther  <rguenther@suse.de>
3540
3541         PR tree-optimization/41428
3542         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
3543         (ccp_finalize): Pass it to substitute_and_fold.
3544
3545 2009-09-22  Richard Guenther  <rguenther@suse.de>
3546
3547         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
3548         (substitute_and_fold): Adjust prototype.
3549         * tree-vrp.c (vrp_evaluate_conditional): Make static.
3550         (simplify_stmt_using_ranges): Likewise.
3551         (fold_predicate_in): Move here from tree-ssa-propagate.c.
3552         (vrp_fold_stmt): New function.
3553         (vrp_finalize): Pass it to substitute_and_fold.
3554         * tree-flow.h (vrp_evaluate_conditional): Remove.
3555         (simplify_stmt_using_ranges): Likewise.
3556         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
3557         * tree-ssa-copy.c (fini_copy_prop): Likewise.
3558         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
3559         member.
3560         (fold_predicate_in): Move to tree-vrp.c.
3561         (substitute_and_fold): Use the callback instead of calling into
3562         tree-vrp.c functions directly.
3563
3564 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
3565
3566         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
3567         comparison warning on rs6000.
3568
3569         PR middle-end/41429
3570         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
3571         GIMPLE_EH_MUST_NOT_THROW cleanup.
3572         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
3573
3574 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
3575
3576         PR middle-end/41260
3577         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
3578         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
3579         LIB_SPEC for darwin10 and later since it always uses the unwinder in
3580         libSystem which is derived from the gcc 4.2.1 unwinder.
3581
3582 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
3583
3584         PR middle-end/41357
3585         * varasm.c (default_encode_section_info): Copy TLS model into
3586         sym_ref flags regardless of backend support for TLS, for all
3587         model types except TLS_MODEL_EMULATED.
3588
3589 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
3590
3591         PR bootstrap/41404
3592         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
3593         we can handle it correctly.
3594
3595 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
3596
3597         * doc/install.texi (os2): Remove section.
3598
3599 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
3600
3601         * doc/standards.texi (Objective-C): Adjust two URLs.
3602
3603 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
3604
3605         * tree-tailcall.c (process_assignment): Don't check if a
3606         multiplication or an addition are already present.
3607         (find_tail_calls): Combine multiple additions and multiplications.
3608         (adjust_accumulator_values): Emit accumulators.
3609
3610 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
3611
3612         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
3613         xmm register restore.
3614
3615 2009-09-21  Jan Hubicka  <jh@suse.cz>
3616
3617         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
3618         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
3619         restore at the end.
3620
3621 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
3622
3623         * stor-layout.c (layout_type): Remove obsolete code.
3624
3625 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
3626
3627         PR middle-end/41395
3628         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
3629
3630 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3631
3632         PR middle-end/30789
3633         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
3634         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
3635         (fold_builtin_2, do_mpc_arg1): Update accordingly.
3636         * fold-const.c (const_binop): Likewise.
3637         * real.h (do_mpc_arg2): Update prototype.
3638
3639 2009-09-20  Jan Hubicka  <jh@suse.cz>
3640
3641         * dwarf2out.c (add_const_value_attribute): Return true if successful.
3642         (add_location_or_const_value_attribute): Rewrite using
3643         loc_list_from_tree.
3644         (tree_add_const_value_attribute): Return true if successful.
3645         (tree_add_const_value_attribute_for_decl): Likewise.
3646
3647         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
3648         (loc_descriptor): ... here;
3649         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
3650         (cst_pool_loc_descr): Break out from ...; do not reffer constant
3651         pool items that was not marked for output.
3652         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
3653         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
3654         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
3655         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
3656         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
3657         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
3658         DW_OP_stack_value to get address of items that are not available
3659         as addresses.
3660         (dw_loc_list): Handle single element lists correctly.
3661
3662 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
3663             Pascal Obry  <obry@adacore.com>
3664
3665         * unwind-dw2-fde.c (classify_object_over_fdes):
3666         Cast the constant 1 to _Unwind_Ptr.
3667         (add_fdes): Likewise.
3668         (linear_search_fdes): Likewise.
3669
3670 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
3671
3672         * stor-layout.c (set_sizetype): Avoid useless type copy.
3673
3674 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
3675
3676         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
3677         feature check.
3678         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
3679         * configure, config.in: Regenerate.
3680         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
3681         DW_EH_PE_absptr.
3682         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
3683         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
3684         for global data if the output could be used in a shared library.
3685         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
3686         to 0 if TARGET_WRITABLE_EH_FRAME.
3687
3688 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
3689
3690         PR rtl-optimization/39886
3691         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
3692         just when insn is equal to BB_END (bb).
3693
3694 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
3695
3696         * config/mips/mips.opt (mrelax-pic-calls): New option.
3697         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
3698         the file.
3699         (mips_unspec_call): Change "unspec_call" expander into this.
3700         (mips_strip_unspec_call): New function.
3701         (mips_got_load): Call mips_unspec_call instead of
3702         gen_unspec_call<mode>.
3703         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
3704         MIPS_CALL.
3705         (mips_cfg_in_reorg): New function.
3706         (mips16_lay_out_constants): Use it to decide whether to call
3707         CFG-aware insn splitting.
3708         (r10k_insert_cache_barriers): Move CFG set-up code from here to
3709         mips_reorg.  Move DF set-up code from here ...
3710         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
3711         from here.
3712         (mips_reorg): Call mips_df_reorg instead of
3713         r10k_insert_cache_barriers.  Move CFG set-up code here from
3714         r10k_insert_cache_barriers.
3715         (mips_call_expr_from_insn): New function.
3716         (mips_pic_call_symbol_from_set): Likewise.
3717         (mips_find_pic_call_symbol): Likewise.
3718         (mips_annotate_pic_call_expr): Likewise.
3719         (mips_get_pic_call_symbol): Likewise.
3720         (mips_annotate_pic_calls): Likewise.
3721         (mips_override_options): Disable -mrelax-pic-calls unless PIC
3722         calls are used.
3723         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
3724         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
3725         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
3726         directive.
3727         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
3728         (unspec_call<mode>): Remove it.
3729         (sibcall_internal, sibcall_value_internal,
3730         sibcall_value_multiple_internal, call_internal, call_split,
3731         call_value_internal, call_value_split,
3732         call_value_multiple_internal, call_value_multiple_split): Pass
3733         SIZE_OPNO to MIPS_CALL.
3734         (call_internal_direct, call_direct_split,
3735         call_value_internal_direct, call_value_direct_split): Pass -1 as
3736         SIZE_OPNO to MIPS_CALL.
3737         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
3738         * configure: Regenerate.
3739         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
3740         and -mno-relax-pic-calls.
3741         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
3742
3743 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3744
3745         PR bootstrap/35619
3746         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
3747         in the directory this rule is called from, rather than the
3748         toplevel 'gcc' directory, to fix in-tree build.
3749
3750 2009-09-19  Chris Demetriou  <cgd@google.com>
3751
3752         PR preprocessor/28435:
3753         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
3754         to cpplib that the preprocessor output is needed.
3755
3756 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
3757
3758         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
3759         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
3760         *return_and_restore_fpregs_<mode>,
3761         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
3762
3763         PR bootstrap/41397
3764         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
3765         instead of assuming it has always a REG inside of it.
3766
3767 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
3768
3769         * config/freebsd.h: Update comment on types.
3770         (WINT_TYPE): Define.
3771
3772 2009-09-18  Jason Merrill  <jason@redhat.com>
3773
3774         * c.opt: Add -fno-deduce-init-list.
3775
3776 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
3777
3778         * value-prof.c (interesting_stringop_to_profile_p): Added output
3779         argument to indicate which parameter is the size parameter.
3780         * value-prof.c (gimple_stringop_fixed_value): Use
3781         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
3782         * value-prof.c (gimple_stringops_transform): Update call sites to
3783         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
3784
3785 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
3786
3787         PR target/38288
3788         From David Binderman <dcb314@hotmail.com>:
3789         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
3790         local variable f.  Remove stale comments.
3791         (ix86_compute_frame_layout): Remove useless local variable total_size.
3792         Remove #if 0'd code.
3793         (legitimate_address_p): Remove useless local variables
3794         reason_rtx and reason.
3795         (ix86_split_copysign_const): Remove useless local variable op1.
3796         (scale_counter): Remove useless local variable piece_size_mask.
3797
3798 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
3799
3800         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
3801         output decl.
3802
3803 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
3804
3805         PR target/40913
3806         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
3807
3808 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
3809
3810         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
3811         TYPE_STUB_DECL.
3812
3813 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
3814
3815         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
3816         DW_OP_implicit_value even without dwarf_version 4.
3817
3818 2009-09-17  Jan Hubicka  <jh@suse.cz>
3819
3820         * dwarf2out.c: Include tree-pass.h and gimple.h.
3821         (loc_list_plus_const): New function.
3822         (loc_descriptor_from_tree_1): Rename to ...
3823         (loc_descriptor_from_tree): ... remove original.
3824         (loc_list_from_tree): New function.
3825         (add_AT_location_description): Accept location list.
3826         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
3827         (concatn_mem_loc_descriptor): Remove.
3828         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
3829         returning NULL.
3830         (secname_for_decl): Move up.
3831         (hidden_reference_p): New function; break out from ...
3832         (loc_by_refernece): ... here; move up.
3833         (dw_loc_list): New function.
3834         (single_element_loc_list): New function.
3835         (single_element_loc_list_p): New function.
3836         (add_loc_descr_to_each): New function.
3837         (add_loc_list): New function.
3838         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
3839         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
3840         add diagnostics why expansion failed.
3841         (add_location_or_const_value_attribute): Support location lists.
3842         (add_bound_info): Likewise.
3843         (descr_info_loc): Update call of loc_descriptor_from_tree.
3844         (gen_variable_die): Work on location lists.
3845         * final.c (pass_final): Add dump file.
3846         * Makefile.in (dwarf2out.o): Add new dependencies.
3847
3848 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
3849
3850         PR c/41049
3851         * real.c decimal_from_integer, decimal_integer_string): New.
3852         (real_from_integer): Use them as special case for decimal float.
3853         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
3854         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
3855         Do not append zero after the decimal point in string to convert.
3856
3857 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
3858
3859         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
3860         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
3861
3862 2009-09-17  Martin Jambor  <mjambor@suse.cz>
3863
3864         * common.opt (fipa-sra): New switch.
3865         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
3866         * timevar.def (TV_IPA_SRA): New timevar.
3867         * params.def (ipa-sra-ptr-growth-factor): New parameter.
3868         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
3869         * tree-sra.c: Include cgraph.c.
3870         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
3871         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
3872         and grp_not_necessarilly_dereferenced.
3873         (func_param_count): New variable.
3874         (encountered_apply_args): New variable.
3875         (bb_dereferences): New variable.
3876         (final_bbs): New variable.
3877         (no_accesses_representant): New variable.
3878         (no_accesses_p): New function.
3879         (dump_access): Dump the new fields.
3880         (sra_initialize): Set encountered_apply_args to false.
3881         (get_ssa_base_param): New function.
3882         (mark_parm_dereference): New function.
3883         (create_access): Caring for INIDRECT_REFs and different handling of
3884         varialble length accesses in early IPA SRA.  Store the stmt - a new
3885         parameter - to the new access.
3886         (build_access_from_expr_1): New parameter stmt, passed to
3887         create_access.  Handle INDIRECT_REFs.
3888         (build_access_from_expr): Pass the current statement to
3889         build_access_from_expr_1.
3890         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
3891         passes.
3892         (build_accesses_from_assign): Pass the current statement to
3893         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
3894         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
3895         final_bbs when necessary.  Check for calls to __builtin_apply_args.
3896         Fixup EH info if anythng was changed.
3897         (is_unused_scalar_param): New function.
3898         (ptr_parm_has_direct_uses): New function.
3899         (find_param_candidates): New function.
3900         (mark_maybe_modified): New function.
3901         (analyze_modified_params): New function.
3902         (propagate_dereference_distances): New function.
3903         (dump_dereferences_table): New function.
3904         (analyze_caller_dereference_legality): New function.
3905         (unmodified_by_ref_scalar_representative): New function.
3906         (splice_param_accesses): New function.
3907         (decide_one_param_reduction): New function.
3908         (enum ipa_splicing_result): New type.
3909         (splice_all_param_accesses): New function.
3910         (get_param_index): New function.
3911         (turn_representatives_into_adjustments): New function.
3912         (analyze_all_param_acesses): New function.
3913         (get_replaced_param_substitute): New function.
3914         (get_adjustment_for_base): New function.
3915         (replace_removed_params_ssa_names): New function.
3916         (sra_ipa_reset_debug_stmts): New function.
3917         (sra_ipa_modify_expr): New function.
3918         (sra_ipa_modify_assign): New function.
3919         (convert_callers): New function.
3920         (modify_function): New function.
3921         (ipa_sra_preliminary_function_checks): New function.
3922         (ipa_early_sra): New function.
3923         (ipa_early_sra_gate): New function.
3924         (pass_early_ipa_sra): New variable.
3925         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
3926
3927 2009-09-17  Michael Matz  <matz@suse.de>
3928
3929         PR middle-end/41347
3930         * tree.c (build_type_attribute_qual_variant): Export.
3931         * tree.h (build_type_attribute_qual_variant): Declare.
3932         * tree-inline.c (remap_type_1): Use it to build variants with
3933         the original qualifiers and attributes.
3934
3935 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3936
3937         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
3938         without a fallthrough edge.
3939
3940 2009-09-16  DJ Delorie  <dj@redhat.com>
3941
3942         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
3943         chip and ignore the "fast_interrupt" attribute if so.
3944
3945 2009-09-16  Richard Henderson  <rth@redhat.com>
3946
3947         PR middle-end/41360
3948         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
3949         barrier fix.
3950
3951 2009-09-16  Richard Henderson  <rth@redhat.com>
3952
3953         PR target/41246
3954         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
3955         is set only if DECL_NO_STATIC_CHAIN is unset.
3956         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
3957         (FOR_EACH_NEST_INFO): New.
3958         (walk_all_functions): Use it.
3959         (finalize_nesting_tree): Likewise.
3960         (unnest_nesting_tree): Likewise.
3961         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
3962         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
3963         (convert_gimple_call): Early out if gimple_call_chain already set.
3964         (convert_all_function_calls): Iterate until no new functions
3965         require a static chain.
3966         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
3967         when building a trampoline.  Use dump_function_to_file instead
3968         of dump_function.
3969         (lower_nested_functions): Open dump_file.  Validate that decls
3970         that have DECL_NO_STATIC_CHAIN from the front end don't have that
3971         bit reset by this pass.
3972
3973 2009-09-16  Michael Matz  <matz@suse.de>
3974
3975         PR fortran/41212
3976         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
3977         shorten decl_common_unused.
3978         (DECL_RESTRICTED_P): New accessor.
3979         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
3980         to disambiguate marked decls and restrict pointers.
3981
3982 2009-09-16  Richard Henderson  <rth@redhat.com>
3983
3984         PR middle-end/41360
3985         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
3986
3987 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
3988
3989         * integrate.c (set_block_abstract_flags): Call
3990         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
3991
3992 2009-09-16  Richard Guenther  <rguenther@suse.de>
3993
3994         PR middle-end/34011
3995         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
3996         as non-aliased.
3997
3998 2009-09-16  DJ Delorie  <dj@redhat.com>
3999             Kaz Kojima  <kkojima@gcc.gnu.org>
4000
4001         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
4002         (sh_expand_prologue): Update calls to output_stack_adjust.
4003         (sh_expand_epilogue): Likewise.
4004
4005 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
4006
4007         PR bootstrap/41349
4008         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
4009         trying to limit the extent of searches in the insn stream.
4010
4011 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
4012             Jakub Jelinek  <jakub@redhat.com>
4013
4014         PR target/41175
4015         PR target/40677
4016         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
4017         problem.
4018         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
4019         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
4020         (rs6000_savres_strategy): Always save FP registers inline if the
4021         target doesn't support hardware double-precision.  Set the above
4022         bits in return value when needed.
4023         (rs6000_savres_routine_sym): Fix computation for cache selector.
4024         Mark the generated symbol as a function.  Rename exitp argument to
4025         lr.  Move code for determining the name of the symbol...
4026         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
4027         getting the names right on AIX and 64-bit Linux.
4028         (savres_routine_name): New variable.
4029         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
4030         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
4031         on what the target routine uses as a base register.  If savep && lr
4032         describe saving of r0 into memory slot.
4033         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
4034         line calls for AIX ABI.
4035         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
4036         determine FP save/restore functions.
4037         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
4038         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
4039         gen_addsi3.
4040         (rs6000_emit_epilogue): Adjust computation of restore_lr.
4041         Duplicate restoration of LR and execute the appropriate one
4042         depending on whether GPRs are being restored inline.  Set r11 from
4043         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
4044         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
4045         Fix out of line calls for AIX ABI.
4046         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
4047         New insn.
4048         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
4049         register 11.
4050         (*restore_gpregs_spe): Likewise.
4051         (*return_and_restore_gpregs_spe): Likewise.
4052         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
4053         Define to empty string unconditionally.
4054         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
4055         Define to empty string unconditionally.
4056         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
4057         !TARGET_64BIT.
4058
4059 2009-09-15  Jan Hubicka  <jh@suse.cz>
4060
4061         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
4062         * params.def (inline-insns-auto): Likewise.
4063
4064 2009-09-15  Martin Jambor  <mjambor@suse.cz>
4065
4066         * ipa-inline.c (estimate_function_body_sizes): Dump info about
4067         individual statements only at TDF_DETAILS dump level.  Format
4068         source for 80 characters per line.
4069
4070 2009-09-15  Christian Bruel  <christian.bruel@st.com>
4071
4072         * regrename.c (do_replace): Update REG_DEAD notes.
4073
4074 2009-09-15  Revital Eres  <eres@il.ibm.com>
4075
4076         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
4077         * targhooks.c (default_builtin_support_vector_misalignment):
4078         New builtin function.
4079         * targhooks.h (default_builtin_support_vector_misalignment):
4080         Declare.
4081         * target.h (builtin_support_vector_misalignment):
4082         New field in struct gcc_target.
4083         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
4084         new builtin function.
4085         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
4086         Define.
4087         * config/rs6000/rs6000.c
4088         (rs6000_builtin_support_vector_misalignment): New function.
4089         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
4090
4091 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
4092
4093         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
4094         instead of INSN_P.
4095         (bfin_optimize_loop): Likewise.
4096         (bfin_gen_bundles): Likewise.
4097         (workaround_speculation): Likewise.
4098         (find_load): Return NULL_RTX for debug_insn.
4099
4100 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
4101
4102         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
4103         (sminsf3): Ditto.
4104
4105 2009-09-14  DJ Delorie  <dj@redhat.com>
4106
4107         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
4108         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
4109         VLIW mode.
4110
4111 2009-09-14  Richard Henderson  <rth@redhat.com>
4112             Jakub Jelinek  <jakub@redhat.com>
4113
4114         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
4115         * cfgbuild.c (make_edges): Handle asm goto.
4116         * cfglayout.c (fixup_reorder_chain): Likewise.
4117         * cfgrtl.c (patch_jump_insn): Likewise.
4118         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
4119         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
4120         (gimple_build_asm_vec): Add and use labels parameter.
4121         (gimple_build_asm): Remove.
4122         (walk_gimple_asm): Walk labels too.
4123         * gimple.def (GIMPLE_ASM): Update docs.
4124         * gimple.h: Update decls.
4125         (struct gimple_statement_asm): Change nc to use unsigned char;
4126         add nl member.
4127         (gimple_asm_nlabels): New.
4128         (gimple_asm_label_op, gimple_asm_set_label_op): New.
4129         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
4130         into gimple_build_asm_vec.
4131         * jump.c (mark_jump_label_asm): New.
4132         (mark_jump_label): Use it.
4133         (redirect_jump_1): Handle asm goto.
4134         (invert_jump_1): Soft fail if X is null.
4135         * recog.c (extract_asm_operands): New.
4136         (asm_noperands): Use it; handle asm labels.
4137         (decode_asm_operands): Use extract_asm_operands.
4138         (asm_operand_ok): Properly handle empty string.
4139         * reg-stack.c (get_asm_operands_in_out): Rename from
4140         get_asm_operand_n_inputs; use extract_asm_operands; return both
4141         inputs and outputs by reference; update all callers.
4142         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
4143         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
4144         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
4145         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
4146         (extract_asm_operands): Declare.
4147         * stmt.c (expand_asm_operands): Add and use labels parameter.
4148         (check_unique_operand_names): Likewise.
4149         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
4150         (expand_asm_stmt): Handle asm labels.
4151         * tree-cfg.c (make_gimple_asm_edges): New.
4152         (make_edges): Use it.
4153         (cleanup_dead_labels): Handle asm labels.
4154         (is_ctrl_altering_stmt): Likewise.
4155         (gimple_redirect_edge_and_branch): Likewise.
4156         * tree.def (ASM_EXPR): Add 5th operand.
4157         * tree.h (ASM_LABELS): New.
4158         (resolve_asm_operand_names): Update decl.
4159
4160         * c-parser.c (c_parser_asm_statement): Parse asm goto.
4161         (c_parser_asm_goto_operands): New.
4162         * c-tree.h (build_asm_expr): Update decl.
4163         * c-typeck.c (build_asm_expr): Add and use labels parameter.
4164         * doc/extend.texi: Document asm goto.
4165
4166 2009-09-14  Richard Henderson  <rth@redhat.com>
4167
4168         * except.h: Update declarations.
4169         (struct pointer_map_t): Forward declare.
4170         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
4171         (struct eh_landing_pad_d, eh_landing_pad): New.
4172         (struct eh_catch_d, eh_catch): New.
4173         (struct eh_region_d): Remove next_region_sharing_label, aka,
4174         label, tree_label, landing_pad, post_landing_pad, resume,
4175         may_contain_throw.  Rename region_number to index.  Remove
4176         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
4177         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
4178         (VEC(eh_landing_pad,gc)): New.
4179         (struct eh_status): Remove last_region_number.  Add lp_array,
4180         throw_stmt_table, ttype_data, ehspec_data.
4181         (ehr_next, FOR_ALL_EH_REGION_AT): New.
4182         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
4183         * except.c (lang_protect_cleanup_actions): Return tree.
4184         (struct ehl_map_entry): Remove.
4185         (init_eh_for_function): Push zero entries for region and lp_array.
4186         (gen_eh_region): Add to region_array immediately.
4187         (gen_eh_region_catch): Operate on eh_catch objects.
4188         (gen_eh_landing_pad): New.
4189         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
4190         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
4191         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
4192         (get_eh_landing_pad_from_number_fn): New.
4193         (get_eh_landing_pad_from_number): New.
4194         (get_eh_region_from_lp_number_fn): New.
4195         (get_eh_region_from_lp_number): New.
4196         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
4197         (get_exception_pointer, get_exception_filter): Remove.
4198         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
4199         (current_function_has_exception_handlers): Simplify.
4200         (bring_to_root, eh_region_replaceable_by_p): Remove.
4201         (replace_region, hash_type_list, hash_eh_region): Remove.
4202         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
4203         (label_to_region_map, num_eh_regions): Remove.
4204         (get_next_region_sharing_label, must_not_throw_labels): Remove.
4205         (find_exception_handler_labels): Remove.
4206         (duplicate_eh_regions_0, find_prev_try): Remove.
4207         (struct duplicate_eh_regions_data): New.
4208         (duplicate_eh_regions_1): Rewrite.
4209         (duplicate_eh_regions): Return a pointer map instead of an
4210         integer offset.
4211         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
4212         (redirect_eh_edge_to_label): Remove.
4213         (eh_region_outermost): Rewrite using eh_region pointers
4214         instead of integers.
4215         (add_ttypes_entry): Update for ttype_data move to eh_status.
4216         (add_ehspec_entry): Rewrite with VEC instead of varray.
4217         (assign_filter_values): Likewise.  Export.
4218         (build_post_landing_pads, connect_post_landing_pads): Remove.
4219         (dw2_build_landing_pads): Rewrite to use lp_array.
4220         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
4221         (sjlj_assign_call_site_values): Rewrite to use lp_array.
4222         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
4223         (sjlj_mark_call_sites): Update for landing pad numbers.
4224         (finish_eh_generation): Rewrite.
4225         (gate_handle_eh): Do nothing for no eh tree.
4226         (pass_rtl_eh): Move up near finish_eh_generation.
4227         (remove_eh_landing_pad): New.
4228         (remove_eh_handler): Export.
4229         (remove_eh_region, remove_eh_handler_and_replace): Remove.
4230         (for_each_eh_label): Rewrite to use lp_array.
4231         (make_reg_eh_region_note): New.
4232         (make_reg_eh_region_note_nothrow_nononlocal): New.
4233         (insn_could_throw_p): New.
4234         (copy_reg_eh_region_note_forward): New.
4235         (copy_reg_eh_region_note_backward): New.
4236         (check_handled, add_reachable_handler): Remove.
4237         (reachable_next_level, foreach_reachable_handler): Remove.
4238         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
4239         (get_eh_region_and_lp_from_rtx): New.
4240         (get_eh_region_from_rtx): New.
4241         (can_throw_internal_1, can_throw_external_1): Remove.
4242         (can_throw_internal): Use get_eh_region_from_rtx.
4243         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
4244         (insn_nothrow_p, can_nonlocal_goto): New.
4245         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
4246         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
4247         (add_action_record): Use VEC not varray.
4248         (collect_one_action_chain): Update for eh_region changes.
4249         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
4250         Use get_eh_region_and_lp_from_rtx.
4251         (gate_convert_to_eh_region_ranges): New.
4252         (pass_convert_to_eh_region_ranges): Use it.
4253         (push_uleb128, push_sleb128): Use VEC not varray.
4254         (output_one_function_exception_table): Likewise.
4255         (dump_eh_tree): Update for eh_region changes.
4256         (verify_eh_tree): Likewise.
4257         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
4258         * tree-eh.c: Include target.h.
4259         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
4260         Don't disallow GIMPLE_RESX; adjust argument check.
4261         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
4262         (record_stmt_eh_region): Update for landing pad numbers;
4263         generate a landing pad if necessary.
4264         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
4265         (remove_stmt_from_eh_lp_fn): Similarly.
4266         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
4267         Update for lp numbers; don't special case missing throw_stmt_table.
4268         (lookup_expr_eh_lp): Similarly.
4269         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
4270         (eh_seq, eh_region_may_contain_throw): New.
4271         (struct leh_state): Add ehp_region.
4272         (struct leh_tf_state): Remove eh_label.
4273         (emit_post_landing_pad): New.
4274         (emit_resx, emit_eh_dispatch): New.
4275         (note_eh_region_may_contain_throw): New.
4276         (frob_into_branch_around): Take eh_region not eh label;
4277         emit eh code into eh_seq.
4278         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
4279         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
4280         lower_eh_must_not_throw.  Emit code to eh_seq.
4281         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
4282         (lower_try_finally_onedest): Likewise.
4283         (lower_try_finally_copy): Likewise.
4284         (lower_try_finally_switch): Likewise.
4285         (lower_try_finally): Initialize ehp_region.
4286         (lower_catch): Update for eh_catch objects.
4287         (lower_eh_filter): Don't handle must_not_throw.
4288         (lower_eh_must_not_throw): New.
4289         (lower_cleanup): Don't set eh_label.
4290         (lower_eh_constructs_2): Resolve eh builtins.
4291         Handle GIMPLE_EH_MUST_NOT_THROW.
4292         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
4293         Add eh_seq to the end of the function body.
4294         (make_eh_dispatch_edges): New.
4295         (make_eh_edge): Remove.
4296         (make_eh_edges): Simplify for landing pads.
4297         (redirect_eh_edge_1): New.
4298         (redirect_eh_edge): Use it.
4299         (redirect_eh_dispatch_edge): New.
4300         (stmt_could_throw_p): Use a switch.  Allow RESX.
4301         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
4302         (stmt_can_throw_internal): Likewise.
4303         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
4304         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
4305         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
4306         (gate_refactor_eh): New.
4307         (pass_refactor_eh): Use it.
4308         (lower_resx, execute_lower_resx, pass_lower_resx): New.
4309         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
4310         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
4311         (remove_unreachable_handlers): Rename from
4312         tree_remove_unreachable_handlers; rewrite for landing pads;
4313         call remove_eh_handler directly.
4314         (remove_unreachable_handlers_no_lp): New.
4315         (unsplit_eh, unsplit_all_eh): New.
4316         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
4317         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
4318         (cleanup_empty_eh_unsplit): New.
4319         (cleanup_empty_eh): Rewrite.
4320         (cleanup_all_empty_eh): New.
4321         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
4322         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
4323         (gate_cleanup_eh): New.
4324         (pass_cleanup_eh): Use it.
4325         (verify_eh_edges): Move later in file.  Expect one EH edge.
4326         (verify_eh_dispatch_edge): New.
4327
4328         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
4329         (gtype-desc.o): Add TARGET_H.
4330         (tree.o): Use EXCEPT_H, not except.h.
4331         (cfgbuild.o): Add EXPR_H.
4332         (GTFILES): Add vecprim.h.
4333         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
4334         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
4335         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
4336         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
4337         * calls.c (emit_call_1): Use make_reg_eh_region_note.
4338         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
4339         calls to can_throw_internal.
4340         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
4341         (make_edges): Don't handle RESX; use can_nonlocal_goto.
4342         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
4343         (expand_gimple_stmt): Use make_reg_eh_region_note.
4344         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
4345         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
4346         or find_exception_handler_labels.
4347         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
4348         there is exacly one EH edge.  Use can_nonlocal_goto and
4349         can_throw_internal.
4350         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
4351         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
4352         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
4353         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
4354         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
4355         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
4356         * dse.c (scan_insn): Use insn_could_throw_p.
4357         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
4358         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
4359         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
4360         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
4361         EXC_PTR_EXPR or FILTER_EXPR.
4362         (tree_expr_nonzero_warnv_p): Likewise.
4363         * function.h: Include vecprim.h, not varray.h
4364         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
4365         move ttype_data and ehspec_data members to struct eh_status; change
4366         action_record_data member to a VEC.
4367         * gcse.c (hash_scan_set): Use can_throw_internal.
4368         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
4369         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
4370         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
4371         (block_may_fallthru): Don't handle RESX_EXPR.
4372         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
4373         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
4374         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
4375         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
4376         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
4377         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
4378         (gimple_size): Likewise.
4379         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
4380         (gimple_build_resx): Use gimple_build_with_ops.
4381         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
4382         (is_gimple_val): Likewise.
4383         (is_gimple_stmt): Remove RESX_EXPR.
4384         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
4385         (GIMPLE_RESX): Reorder with other EH constructs.
4386         * gimple.h (struct gimple_statement_eh_mnt): New.
4387         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
4388         (gimple_eh_filter_must_not_throw): Remove.
4389         (gimple_eh_filter_set_must_not_throw): Remove.
4390         (gimple_eh_must_not_throw_fndecl): New.
4391         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
4392         (is_gimple_resx): New.
4393         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
4394         Don't copy EH_FILTER_MUST_NOT_THROW.
4395         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
4396         * ipa-inline.c (estimate_function_body_sizes): Don't try to
4397         handle must_not_throw_labels specially.
4398         * ipa-pure-const.c (check_call): Update debug statement for LP.
4399         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
4400         * ipa-utils.c (get_base_var): Likewise.
4401         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
4402         * lower-subreg.c (move_eh_region_note): Remove.
4403         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
4404         * omp-low.c (new_omp_context): Update for eh_lp_nr.
4405         (create_task_copyfn): Likewise.
4406         (maybe_catch_exception): Use gimple_build_eh_filter.
4407         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
4408         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
4409         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
4410         and pass_lower_resx.
4411         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
4412         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
4413         can_throw_internal, can_nonlocal_goto.
4414         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
4415         copy_reg_eh_region_note_forward.
4416         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
4417         (emit_output_reload_insns): Likewise.
4418         (copy_eh_notes): Remove.
4419         * rtl.def (RESX): Remove.
4420         * rtl.h: Update declarations.
4421         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
4422         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
4423         (update_eh_label): Remove.
4424         (cleanup_dead_labels_eh): New.
4425         (cleanup_deal_labels): Use it instead of update_eh_label.
4426         (gimple_merge_blocks): Update landing pad data structure when
4427         removing a landing pad label.
4428         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
4429         test; handle GIMPLE_EH_MUST_NOT_THROW.
4430         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
4431         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
4432         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
4433         (verify_stmt): Likewise.  Verify landing pads.
4434         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
4435         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
4436         (struct move_stmt_d): Add eh_map.
4437         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
4438         (move_stmt_r): Remap eh region numbers in builtin calls,
4439         resx and eh_dispatch.
4440         (move_block_to_fn): Remove eh_offset parameter.  Use
4441         maybe_duplicate_eh_stmt_fn.
4442         (find_outermost_region_in_block): Operate on eh_region pointers
4443         instead of region numbers.
4444         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
4445         duplicate_eh_regions.
4446         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
4447         test earlier.  Disallow EH landing pads.
4448         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
4449         * tree-flow.h: Update declarations.
4450         (struct tree_ann_common_d): Replace rn with lp_nr.
4451         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
4452         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
4453         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
4454         resx and eh_dispatch.
4455         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
4456         (copy_edges_for_bb): Use make_eh_dispatch_edges.
4457         (copy_cfg_body): Expect eh_map instead of eh_region_offset
4458         from duplicate_eh_regions.
4459         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
4460         update RESX; handle EH_DISPATCH.
4461         (expand_call_inline): Set eh_lp_nr, not eh_region.
4462         (maybe_inline_call_in_expr): Likewise.
4463         * tree-inline.h (struct copy_body_data): Replace eh_region with
4464         eh_lp_nr, eh_region_offset with eh_map.
4465         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
4466         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
4467         * tree-pretty-print.c (dump_generic_node): Don't handle
4468         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
4469         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
4470         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
4471         EXC_PTR_EXPR, FILTER_EXPR.
4472         * tree-ssa-operands.c (get_expr_operands): Likewise.
4473         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
4474         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
4475         (ao_ref_init_from_vn_reference): Likewise.
4476         * tree-ssa-sink.c (statement_sink_location): Likewise.
4477         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
4478         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
4479         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
4480         EXC_PTR_EXPR, FILTER_EXPR.
4481         (is_exception_related): Remove.
4482         (compute_avail): Don't call it.
4483         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
4484         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
4485         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
4486         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
4487         Build EH builtins.
4488         (build_resx): Remove.
4489         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
4490         * tree.h: Update declarations.
4491         (EH_FILTER_MUST_NOT_THROW): Remove.
4492         (struct tree_label_decl): Add eh_landing_pad_nr.
4493         (EH_LANDING_PAD_NR): New.
4494         * value-prof.c (gimple_ic): Tidy variable names.  Update for
4495         landing pad numbers.
4496         (gimple_stringop_fixed_value): Tidy variable names.  Assert
4497         that neither call stmt can throw.
4498         * vecprim.h (uchar): New.
4499         (VEC(uchar,heap), VEC(uchar,gc)): New.
4500
4501         * c-common.c (c_define_builtins): Update call to
4502         build_common_builtin_nodes.
4503         * c-parser.c (c_parse_file): Don't call
4504         default_init_unwind_resume_libfunc.
4505
4506 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
4507
4508         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
4509         (mips_cprestore_address_p): Likewise.
4510         (mips_save_gp_to_cprestore_slot): Likewise.
4511         (mips_restore_gp): Rename to...
4512         (mips_restore_gp_from_cprestore_slot): ...this.
4513         (mips_must_initialize_gp_p): Declare.
4514         (mips_emit_save_slot_move): Likewise.
4515         (mips_output_load_label): Return nothing.
4516         (mips_eh_uses): Declare.
4517         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
4518         (TARGET_CPRESTORE_DIRECTIVE): New macro.
4519         (TARGET_ABSOLUTE_JUMPS): Likewise.
4520         (EH_USES): Likewise.
4521         (FIRST_PSEUDO_REGISTER): Update comment.
4522         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
4523         (MIPS_CALL): ...here.
4524         (REGISTER_NAMES): Add $cprestore.
4525         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
4526         Add load_label_length, has_inflexible_gp_insn_p,
4527         has_flexible_gp_insn_p, must_initialize_gp_p and
4528         must_restore_gp_when_clobbered_p.
4529         (mips_expand_call): Don't generate split instructions here.
4530         (mips_split_call): Update the call to mips_restore_gp after
4531         the above name change.
4532         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
4533         (mips_find_gp_ref): New function.
4534         (mips_insn_has_inflexible_gp_ref_p): Likewise.
4535         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
4536         (mips_insn_has_flexible_gp_ref_p): Likewise.
4537         (mips_cfun_has_flexible_gp_ref_p): Likewise.
4538         (mips_function_has_gp_insn): Delete.
4539         (mips_global_pointer): Drop the df_regs_ever_live_p check.
4540         Use the new functions above.  Only return INVALID_REGNUM
4541         for TARGET_ABSOLUTE_JUMPS.
4542         (mips_must_initialize_gp_p): New function.
4543         (mips_get_cprestore_base_and_offset): New function, extracted from...
4544         (mips_cprestore_slot): ...here.  Take a bool parameter.
4545         (mips_cfun_has_cprestore_slot_p): New function.
4546         (mips_cprestore_address_p): Likewise.
4547         (mips_save_gp_to_cprestore_slot): Likewise.
4548         (mips_restore_gp): Rename to...
4549         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
4550         epilogue_completed.  Update the call to mips_cprestore_slot.
4551         Test cfun->machine->must_restore_gp_when_clobbered_p.
4552         (mips_direct_save_slot_move_p): New function.
4553         (mips_emit_save_slot_move): Likewise.
4554         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
4555         of cfun->machine->global_pointer.
4556         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
4557         (mips_save_reg): Use mips_emit_save_slot_move.
4558         (mips_expand_prologue): Set must_initialize_gp_p.
4559         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
4560         for all cprestore saves.  Emit a use_cprestore instruction after
4561         setting up the cprestore slot.
4562         (mips_restore_reg): Use mips_emit_save_slot_move.
4563         (mips_process_load_label): New function.
4564         (mips_load_label_length): Likewise.
4565         (mips_output_load_label): Don't return asm: output it here instead.
4566         Use mips_process_load_label.
4567         (mips_adjust_insn_length): Adjust the length of branch instructions
4568         that have length MAX_PIC_BRANCH_LENGTH.
4569         (mips_output_conditional_branch): Update the call to
4570         mips_output_load_label.  Assume the branch target is OPERANDS[0]
4571         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
4572         (mips_output_order_conditional_branch): Swap the meaning of
4573         OPERANDS[0] and OPERANDS[1].
4574         (mips_variable_issue): Don't count ghost instructions.
4575         (mips_expand_ghost_gp_insns): New function.
4576         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
4577         (mips_output_mi_thunk): Set must_initialize_gp_p.
4578         (mips_eh_uses): New function.
4579         * config/mips/predicates.md (cprestore_save_slot_operand)
4580         (cprestore_load_slot_operand): New predicates.
4581         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
4582         (UNSPEC_MOVE_GP): Likewise.
4583         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
4584         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
4585         (CPRESTORE_SLOT_REGNUM): New register.
4586         (MAX_PIC_BRANCH_LENGTH): New constant.
4587         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
4588         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
4589         branches.  Fix commentary.
4590         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
4591         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
4592         Change type to "ghost".
4593         (loadgp_absolute_<mode>): Likewise.
4594         (loadgp_rtp_<mode>): Likewise.
4595         (copygp_mips16): Likewise.
4596         (loadgp_blockage): Remove redundant mode attribute.
4597         (potential_cprestore): New instruction.
4598         (cprestore): Turn into an unspec set.
4599         (use_cprestore): New instruction.
4600         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
4601         (*branch_fp_inverted): Likewise.
4602         (*branch_order<mode>): Likewise.
4603         (*branch_order<mode>_inverted): Likewise.
4604         (*branch_equality<mode>): Likewise.
4605         (*branch_equality<mode>_inverted): Likewise.
4606         (*branch_bit<bbv><mode>): Likewise.
4607         (*branch_bit<bbv><mode>_inverted): Likewise.
4608         (*branch_equality<mode>_mips16): Remove redundant mode.
4609         (jump): Turn into a define_expand.
4610         (*jump_absolute): New instruction.
4611         (*jump_pic): Likewise.
4612         (*jump_mips16): Rename previously-unnamed pattern.  Remove
4613         redundant mode attribute.
4614         (restore_gp): Split on epilogue_completed rather than
4615         reload_completed.  Change type to "ghost".
4616         (move_gp<mode>): New instruction.
4617         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
4618         Remove redundant mode attribute.
4619         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
4620         (bc1any4f, bc1any2t, bc1any2f): Likewise.
4621         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
4622
4623 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
4624
4625         PR target/41210
4626         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
4627         are returned in the same register (vs34 or v2) that Altivec vector
4628         types are returned in.
4629         (rs6000_libcall_value): Ditto.
4630
4631         PR target/41331
4632         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
4633         instead of explicit addsi3/adddi3 calls.
4634         (rs6000_split_multireg_move): Ditto.
4635         (rs6000_emit_allocate_stack): Ditto.
4636         (rs6000_emit_prologue): Ditto.
4637         (rs6000_output_mi_thunk): Ditto.
4638
4639         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
4640         size is 64 bits if we can use 64-bit registers.
4641
4642 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
4643
4644         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
4645         symbols.
4646
4647         From Jie Zhang <jie.zhang@analog.com>:
4648         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
4649         save FP and RETS with saveall attribute.
4650         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
4651         with saveall attribute.
4652
4653         * config/bfin/bfin.c (bfin_expand_builtin,
4654         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
4655         operands.
4656
4657         From Jie Zhang <jie.zhang@analog.com>:
4658         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
4659         before use in two places.
4660         * config/bfin/bfin.md (AREG): Define mode iterator.
4661         (reload_in, reload_out): Use mode iterator AREG.
4662
4663 2009-09-14  Richard Guenther  <rguenther@suse.de>
4664
4665         PR middle-end/41350
4666         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
4667         EH personality path.
4668
4669 2009-09-13  Richard Guenther  <rguenther@suse.de>
4670             Rafael Avila de Espindola  <espindola@google.com>
4671
4672         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
4673         (LANG_HOOKS_EH_PERSONALITY): Likewise.
4674         (LANG_HOOKS_INITIALIZER): Adjust.
4675         (lhd_pass_through_t): Declare.
4676         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
4677         eh_personality.
4678         * langhooks.c (lhd_pass_through_t): New function.
4679         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
4680         dwarf2out_begin_prologue): Use personality from current_function_decl.
4681         * expr.h (get_personality_function): Declare.
4682         * expr.c (get_personality_function): New function.
4683         (build_personality_function): Likewise.
4684         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
4685         (eh_personality_libfunc): Remove.
4686         * optabs.c (build_libfunc_function): New function split out from ...
4687         (init_one_libfunc): ... here.
4688         * tree.h (DECL_FUNCTION_PERSONALITY): New.
4689         (tree_function_decl): Add personality.
4690         (lhd_gcc_personality): Declare.
4691         (build_personality_function): Likewise.
4692         * tree.c (gcc_eh_personality_decl): New.
4693         (lhd_gcc_personality): New function.
4694         * except.h (lang_eh_runtime_type): Remove.
4695         (enum eh_personality_kind): New.
4696         (build_personality_function): Declare.
4697         (function_needs_eh_personality): Declare.
4698         * except.c (lang_eh_runtime_type): Remove.
4699         (function_needs_eh_personality): New function.
4700         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
4701         (sjlj_emit_function_enter, output_function_exception_table):
4702         Use personality from current_function_decl.
4703         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
4704         * tree-inline.c (tree_can_inline_p): Do not inline across different
4705         EH personalities.
4706         (expand_call_inline): Likewise.  Adjust the callers EH personality.
4707         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
4708         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
4709         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
4710         (c-parser.o): Likewise
4711         * c-tree.h (c_eh_initialized_p): Remove.
4712         (c_maybe_initialize_eh): Likewise.
4713         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
4714         (finish_decl): Don't call c_maybe_initialize_eh.
4715         (c_eh_initialized_p): Remove.
4716         (c_maybe_initialize_eh): Likewise.
4717         * c-parser.c (c_parser_omp_construct): Likewise.
4718         (c_parse_file): Initialize exception handling.
4719
4720 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
4721
4722         * config.gcc (tm_file): Remove i386/biarch32.h
4723         for i?86-w64-mingw* case.
4724         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
4725         support.
4726         * config.host: Set for x64 mingw the option
4727         use_long_long_for_widest_fast_int to yes.
4728
4729 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
4730
4731         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
4732         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
4733         (dbxout_begin_function): Likewise.
4734         * final.c (dwarf2_debug_info_emitted_p): New predicate.
4735         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
4736         set on the function.
4737         (final_end_function): Likewise.
4738         (final_scan_insn): Likewise.
4739         (rest_of_handle_final): Likewise.
4740         * varasm.c (assemble_start_function): Likewise.
4741         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
4742
4743 2009-09-12  Jason Merrill  <jason@redhat.com>
4744
4745         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
4746         * opts.c (common_handle_option): constify.
4747
4748 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
4749
4750         * doc/install.texi (avr): Remove obsolete reference site.
4751
4752 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
4753
4754         * doc/install.texi (Binaries): Adjust AIX link.
4755
4756 2009-09-12  Akim Demaille  <demaille@gostai.com>
4757
4758         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
4759         Use an imperative sentence.
4760
4761 2009-09-11  Richard Henderson  <rth@redhat.com>
4762
4763         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
4764         structure-name and has-tree-operands arguments; update all entries.
4765         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
4766         update all entries.
4767         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
4768         (gsstruct_code_size): New.
4769         (gss_for_code_): New.
4770         (gss_for_code): Remove.
4771         (gimple_size): Rewrite using gsstruct_code_size.
4772         (gimple_statement_structure): Move to gimple.h.
4773         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
4774         (gss_for_code, gimple_statement_structure): New.
4775         (gimple_ops): Use new arrays; tidy.
4776
4777 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4778
4779         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
4780         operand to be a PLUS expression.
4781         * config/pa/pa.c (pa_secondary_reload): Likewise.
4782
4783 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
4784
4785         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
4786
4787         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
4788         XEXP (in_rtx, 8).
4789
4790 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
4791
4792         From Jie Zhang <jie.zhang@analog.com>:
4793         * doc/extend.texi (node Function Attributes): Document l2
4794         function attribute.
4795         (node Blackfin Variable Attributes): Document l2 variable attributes.
4796
4797 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
4798
4799         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
4800         to match the system compiler's configuration at inflection point.
4801         Add comment to remark a remaining difference with system compiler.
4802
4803         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
4804         * configure: Regenerate.
4805
4806 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
4807
4808         From Jie Zhang <jie.zhang@analog.com>:
4809         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
4810         (bfin_handle_l2_attribute): New.
4811         (bfin_attribute_table): Add l2 attribute.
4812
4813 2009-09-11  Michael Matz  <matz@suse.de>
4814
4815         PR middle-end/41275
4816         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
4817         on the local_decls list.
4818
4819 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
4820
4821         PR debug/41276
4822         PR debug/41307
4823         * cselib.c (cselib_expand_value_rtx_cb): Document callback
4824         interface.
4825         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
4826         for VALUEs, to implement the documented interface.
4827         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
4828         Adjust for VALUEs and anything else, to implement the
4829         documented interface.
4830
4831 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
4832
4833         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
4834         with actual SPE/paired vector modes before using 64-bit alignment.
4835         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
4836
4837 2009-09-10  DJ Delorie  <dj@redhat.com>
4838
4839         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
4840         emitted.
4841
4842         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
4843         * config/mep/mep.c (mep_legitimate_constant_p): New.
4844         * config/mep/mep-protos.h: Prototype it.
4845
4846 2009-09-10  Richard Henderson  <rth@redhat.com>
4847
4848         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
4849
4850 2009-09-10  Jason Merrill  <jason@redhat.com>
4851
4852         * tree.c (chain_index): New fn.
4853         * tree.h: Declare it.
4854
4855 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4856
4857         * config/sol2-c.c (cmn_err_length_specs): Initialize
4858         scalar_identity_flag.
4859
4860 2009-09-10  Richard Henderson  <rth@redhat.com>
4861
4862         * tree.h (struct tree_decl_common): Move align member earlier;
4863         move label_decl_uid member ...
4864         (struct tree_label_decl): ... here.
4865         (LABEL_DECL_UID): Update to match.
4866
4867         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
4868         not TDF_DETAILS.
4869
4870         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
4871         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
4872
4873         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
4874         dest_prev if the edge is complex.
4875
4876         * tree-cfg.c (is_ctrl_stmt): Use a switch.
4877
4878         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
4879         loop latch tests earlier.
4880
4881         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
4882         before GIMPLE_RETURN, not after its predecessor; insert
4883         before GIMPLE_RESX.
4884
4885         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
4886         gimple_seq_empty_p to test for no PHI nodes.
4887         * tree-cfg.c (split_critical_edges): Likewise.
4888
4889         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
4890
4891 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
4892
4893         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
4894         introduced by the VTA branch merge.
4895
4896 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
4897
4898         * ira-conflicts.c: Use fputs or putc instead of fprintf
4899         where appropriate.
4900         * cfg.c: Ditto.
4901         * toplev.c: Ditto.
4902         * tree-switch-conversion.c: Ditto.
4903
4904 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
4905
4906         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
4907         introduced by the VTA branch merge.
4908
4909 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
4910
4911         Revert:
4912         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
4913
4914         PR rtl-optimization/39779
4915         * expr.c (convert_modes): Return when mode == oldmode after
4916         CONST_INTs are processed.
4917
4918 2009-09-10  Nick Clifton  <nickc@redhat.com>
4919
4920         * config/mep/mep.c (mep_encode_section_info): Copy weakness
4921         attribute and referring decl when creating renamed symbol.
4922
4923 2009-09-10  Richard Guenther  <rguenther@suse.de>
4924
4925         PR middle-end/41257
4926         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
4927         reachable nodes.
4928         (cgraph_finalize_compilation_unit): Compute reachability
4929         before emitting thunks.  Properly process aliases before
4930         possibly removing unreachable nodes.
4931
4932 2009-09-10  Richard Guenther  <rguenther@suse.de>
4933
4934         PR middle-end/41254
4935         * tree.c (struct free_lang_data_d): Add worklist member.
4936         (find_decls_types_r): Push onto the worklist instead of recursing.
4937         Handle TREE_BINFOs properly.
4938         (find_decls_types): New function wrapped around find_decls_types_r
4939         to process the worklist.
4940         (find_decls_types_in_eh_region): Use it.
4941         (find_decls_types_in_node): Likewise.
4942         (find_decls_types_in_var): Likewise.
4943         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
4944         * tree.h (RECORD_OR_UNION_TYPE_P): New.
4945         (AGGREGATE_TYPE_P): Adjust.
4946
4947 2009-09-09  Jason Merrill  <jason@redhat.com>
4948
4949         * configure.ac: Check glibc version even if we have an in-tree
4950         assembler.
4951
4952 2009-09-09  Anthony Green  <green@moxielogic.com>
4953
4954         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
4955         the constant 0 when appropriate.
4956         * config/moxie/constraints.md: Add constraint O.
4957
4958         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
4959         to pass up to 6 32-bit argument values in registers.
4960         (moxie_function_arg): Ditto.
4961         (moxie_arg_partial_bytes): Ditto.
4962         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
4963         (REG_PARM_STACK_SPACE): Ditto.
4964         (FUNCTION_ARG_REGNO_P): Ditto.
4965
4966         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
4967         instruction to allocate stack space.
4968
4969 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
4970
4971         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
4972         unnecessarily stringent constraints.  Fix address
4973         calculation in the splitters.
4974
4975 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
4976
4977         PR rtl-optimization/39779
4978         * expr.c (convert_modes): Return when mode == oldmode after
4979         CONST_INTs are processed.
4980
4981 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
4982
4983         PR/41315
4984         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
4985         (ix86_expand_prologue): Take frame.padding0 into logic of
4986         to_allocate checks.
4987         (ix86_expand_epilogue): Likewise.
4988
4989 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
4990
4991         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
4992         New variables.
4993         (SHLIB_LINK, SHLIB_INSTALL): Use them.
4994         * config/t-slibgcc-libgcc: New file.
4995         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
4996
4997 2009-09-09  Martin Jambor  <mjambor@suse.cz>
4998
4999         PR tree-optimization/41089
5000         * tree-sra.c (find_var_candidates): Do not consider va_lists in
5001         early SRA.
5002
5003 2009-09-09  Richard Henderson  <rth@redhat.com>
5004
5005         * gimple.h (CASE_GIMPLE_OMP): New.
5006         (is_gimple_omp): Use it.
5007         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
5008         (verify_gimple_debug): Likewise.
5009
5010 2009-09-09  Richard Guenther  <rguenther@suse.de>
5011
5012         PR tree-optimization/41101
5013         * tree-ssa-pre.c (maximal_set): Remove.
5014         (compute_antic_aux): Treat the maximal set as implicitly all ones.
5015         Defer all blocks we didn't visit at least one successor.
5016         (add_to_exp_gen): Do not add to the maximal set.
5017         (make_values_for_phi): Likewise.
5018         (compute_avail): Likewise.
5019         (init_pre): Do not allocate the maximal set.
5020         (execute_pre): Do not dump it.
5021
5022 2009-09-09  Martin Jambor  <mjambor@suse.cz>
5023
5024         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
5025         an SSA_NAME rather than a is_gimple_variable.
5026
5027 2009-09-09  Richard Guenther  <rguenther@suse.de>
5028
5029         PR middle-end/41317
5030         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
5031         code dealing with plain pointer bases.
5032         (maybe_fold_offset_to_reference): Likewise.
5033         (maybe_fold_stmt_addition): Adjust.
5034
5035 2009-09-09  Richard Guenther  <rguenther@suse.de>
5036
5037         * tree.c (free_lang_data_in_type): Do not free the type variant
5038         chains.
5039         (free_lang_data): Merge char_type_node with its properly signed
5040         variant.
5041         (pass_ipa_free): Collect after freeing language specific data.
5042
5043 2009-09-09  Michael Matz  <matz@suse.de>
5044
5045         PR middle-end/41268
5046         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
5047         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
5048         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
5049         to reflect reality.
5050
5051 2009-09-08  DJ Delorie  <dj@redhat.com>
5052
5053         * config/mep/mep.c (conversions[]): Add "ml" pattern.
5054
5055 2009-09-04  Jason Merrill  <jason@redhat.com>
5056
5057         * tree.c (tree_find_value): Remove.
5058         * tree.h: Remove prototype.
5059         * varasm.c (assemble_external): Use value_member instead.
5060
5061 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
5062
5063         * toplev.c (process_options): Choose default debugging type when
5064         gtoggle enables debug info and type is unset.
5065
5066 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
5067
5068         PR debug/41276
5069         PR debug/41307
5070         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
5071         invalid subreg.
5072
5073 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
5074
5075         * configure: Rebuilt with modified libtool.m4.
5076
5077 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
5078
5079         PR debug/41229
5080         PR debug/41291
5081         PR debug/41300
5082         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
5083
5084 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
5085
5086         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
5087         (remove_statement): Likewise.
5088         (rewrite_use_nonlinear_expr): Adjust.
5089         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
5090         * tree-ssa.c (release_defs_bitset): ... this.  New.
5091         * tree-flow.h (release_defs_bitset): Declare.
5092
5093 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
5094
5095         PR debug/41232
5096         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
5097         in the middle block.
5098
5099 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
5100
5101         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
5102         via intptr_t to long type.
5103         (insert_operand_rank): Cast long type via intptr_t to
5104         pointer type.
5105         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
5106         pointer to scalar.
5107         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
5108         from pointer to unsigned via uintptr_t.
5109
5110         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
5111         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
5112         and HAVE_INTPTR_T.
5113         * configure: Regenerated.
5114         * config.in: Regenerated
5115         * system.h (stdint.h): Add include.
5116         (inttypes.h): Likewise.
5117         * Makefile.in (aclocal): Add config/stdint.m4.
5118         * aclocal.m4: Regenerated.
5119
5120 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
5121
5122         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
5123         variables.
5124         (note_np_check_stores): New function.
5125         (harmless_null_pointer_p): New function.
5126         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
5127         changed.  Take into account whether we're in the shadow of a condjump
5128         that tested NP_REG for NULL.
5129         Lose all code that tested for SEQUENCEs.
5130         (workaround_speculation): Avoid inserting NOPs for loads that are
5131         either always executed or a NULL pointer.
5132
5133 2009-09-08  Jan Hubicka  <jh@suse.cz>
5134
5135         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
5136         * params.def (early-inlining-insns): Likewise.
5137
5138 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
5139
5140         PR rtl-optimization/41239
5141         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
5142         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
5143         lists.
5144         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
5145         across calls, as the calls might not always return normally.
5146         (call_may_noreturn_p): New function.
5147         (deps_analyze_insn): Update last_function_call_may_noreturn list.
5148         (init_deps): Initialize it.
5149         (remove_from_deps): Also remove calls from
5150         last_function_call_may_noreturn list.
5151
5152 2009-09-07  Richard Henderson  <rth@redhat.com>
5153
5154         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
5155         more VR->OPERANDS than LHS operands.  Free LHS before returning.
5156
5157 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
5158
5159         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
5160         (attr "addrtype"): New member "spreg".
5161         Use it if mem_spfp_address_operand is true for the address.
5162         (attr "type"): New entry "stall".
5163         (cpu_unit "load"): New.
5164         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
5165         "load".
5166         (insn_reservation "loadsp"): New.
5167         (insn_reservation "load_stall1"): New.
5168         (insn_reservation "load_stall3"): New.
5169         (stall): New insn.
5170         * config/bfin/predicates.md (const1_operand, const3_operand): New.
5171         (mem_p_address_operand): Exclude stack and frame pointer based
5172         addresses.
5173         (mem_spfp_address_operand): New; match them here.
5174         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
5175         (bfin_reorg): Call it if scheduling insns.
5176         (bfin_gen_bundles): Remove dummy insns created by
5177         add_sched_insns_for_speculation.
5178
5179         From Jie Zhang <jie.zhang@analog.com>:
5180         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
5181         bfin_si_revision, bfin_workarounds): Move these ...
5182         * config/bfin/bfin.h: ... here.
5183
5184         From Mike Frysinger  <michael.frysinger@analog.com>
5185         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
5186         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
5187         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
5188         bf547m, bf548m, and bf549m.
5189         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
5190         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
5191         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
5192         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
5193         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
5194         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
5195         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
5196         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
5197         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
5198         bf542m, bf544m, bf547m, bf548m, and bf549m.
5199
5200         From Jie Zhang <jie.zhang@analog.com>:
5201         * config/bfin/predicates.md (p_register_operand): New predicate.
5202         (dp_register_operand): New predicate.
5203         * config/bfin/bfin-protos.h (WA_05000074): Define.
5204         (ENABLE_WA_05000074): Define.
5205         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
5206         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
5207         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
5208         (define_attr addrtype): Allow load/store register to be P register.
5209         (define_attr storereg): New.
5210         (define_cpu_unit anomaly_05000074): New.
5211         (define_insn_reservation dsp32shiftimm): New.
5212         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
5213         (define_insn_reservation loadp): Cannot use slot2.
5214         (define_insn_reservation loadsp): Cannot use slot2.
5215         (define_insn_reservation storep): Cannot use slot2. Does not
5216         apply when working around 05000074.
5217         (define_insn_reservation storep_anomaly_05000074): New.
5218         (define_insn_reservation storei): Does not apply when working
5219         around 05000074.
5220         (define_insn_reservation storei_anomaly_05000074): New.
5221         (define_attr length): Add dsp32shiftimm case.
5222         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
5223         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
5224         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
5225         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
5226         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
5227
5228 2009-09-07  Martin Jambor  <mjambor@suse.cz>
5229
5230         PR middle-end/41282
5231         * tree-sra.c (create_artificial_child_access): Return NULL if
5232         build_ref_for_offset fails.
5233         (propagate_subacesses_accross_link): Allow build_ref_for_offset
5234         and create_artificial_child_access to fail.
5235
5236 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
5237
5238         PR c++/41214
5239         * unwind-dw2.c (uw_init_context_1): Mark noinline.
5240         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
5241         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
5242
5243 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
5244
5245         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
5246         block, ensure it has an exit edge.  Emit a barrier after a jump.
5247
5248 2009-09-07  Nick Clifton  <nickc@redhat.com>
5249
5250         * gcc.c (this_is_linker_script): New variable.  Like
5251         this_is_library_file but for the %T constructor.
5252         (end_going_arg): If this_is_linker_script is set then locate the
5253         script and insert a --script switch before it
5254         (do_spec_2): Initialise this_is_linker_script.
5255         (do_spec_1): Likewise.  Handle %T construct.
5256         (eval_spec_function): Preserve this_is_linker_script.
5257         * doc/invoke.texi: Document %T construct in spec files.
5258         * config/m32c/m32c.h (LIB_SPEC): Use it.
5259
5260 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5261
5262         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
5263         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
5264         when volatile flag is set.
5265         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
5266
5267 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
5268
5269         PR bootstrap/41241
5270         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
5271         (combine_stack_adjustments_for_block): Allow insns between stack
5272         adjustments and stores with corresponding pre-(dec|inc)rement or
5273         pre-modify operation.
5274
5275 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
5276
5277         PR bootstrap/41241
5278         * combine-stack-adj.c (struct csa_memlist): Rename to...
5279         (struct csa_reflist): ... this.  Rename mem field to ref.
5280         (free_csa_memlist): Rename to...
5281         (free_csa_reflist): ... this.
5282         (record_one_stack_memref): Rename to...
5283         (record_one_stack_ref): ... this.  Handle also REG_P.
5284         (try_apply_stack_adjustment): Handle also REG_P.
5285         (struct record_stack_memrefs_data): Rename to...
5286         (struct record_stack_refs_data): ... this.  Rename memlist field to
5287         reflist.
5288         (record_stack_memrefs): Rename to...
5289         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
5290         subexpressions instead of failing when a MEM contains SP references.
5291         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
5292         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
5293
5294 2009-09-06  Richard Guenther  <rguenther@suse.de>
5295
5296         PR middle-end/41144
5297         * tree.c (build_array_type): Do not record types marked
5298         with structural equality in the canonical type hashtable.
5299
5300 2009-09-06  Richard Guenther  <rguenther@suse.de>
5301
5302         PR middle-end/41261
5303         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
5304
5305 2009-09-05  Richard Guenther  <rguenther@suse.de>
5306
5307         PR middle-end/41181
5308         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
5309
5310 2009-09-05  Richard Guenther  <rguenther@suse.de>
5311
5312         PR debug/41273
5313         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
5314
5315 2009-09-05  Richard Guenther  <rguenther@suse.de>
5316
5317         PR middle-end/41271
5318         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
5319         before comparing function argument types.
5320
5321 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
5322
5323         PR target/41024
5324         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
5325         the assembler.
5326
5327 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
5328
5329         Revert:
5330         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
5331
5332         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
5333         locators before emit_insn is called.
5334
5335 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
5336
5337         PR bootstrap/41241
5338         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
5339         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
5340         (reginfo_init): Don't call allocate_reg_info.
5341
5342 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
5343
5344         PR target/41262
5345         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
5346         NONDEBUG_INSN_P instead of INSN_P.
5347
5348 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
5349
5350         PR debug/41225
5351         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
5352
5353 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
5354
5355         PR target/41252
5356         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
5357         pattern of the split.
5358
5359 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
5360
5361         * toplev.c (process_options): Move setter of flag_var_tracking
5362         before other tests that depend on it.  Move down setter of
5363         flag_rename_registers.  Don't enable var-tracking-assignments
5364         by default if selective scheduling is enabled.  Warn if both
5365         are enabled.
5366
5367 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
5368
5369         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
5370         comment.  Use switch statement to catch overlaps between rtx
5371         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
5372         (IS_DECL_CODE): ... here. Remove.
5373         (check_value_is_not_decl): Remove.
5374         (dv_from_decl, dv_from_value): Check after conversion.
5375
5376 2009-09-04  Richard Guenther  <rguenther@suse.de>
5377
5378         PR middle-end/41257
5379         * (cgraph_finalize_compilation_unit): Move finalizing aliases
5380         after emitting tunks.  Move emitting thunks and ctors from ...
5381         (cgraph_optimize): ... here.  Remove redundant
5382         cgraph_analyze_functions.
5383         * varasm.c (find_decl_and_mark_needed): Remove no longer
5384         necessary check.
5385         (finish_aliases_1): Adjust check for thunk aliases.
5386
5387 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
5388
5389         * config/arm/arm.md (ctzsi2): Added braces
5390         to avoid warning that broke booststrap.
5391
5392 2009-09-04  Martin Jambor  <mjambor@suse.cz>
5393
5394         PR tree-optimization/41112
5395         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
5396         handle variable-bounded arrays.
5397         (expr_with_var_bounded_array_refs_p): New function.
5398         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
5399
5400 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
5401
5402         * config/s390/2097.md: Removed two incorrect bypasses.
5403         (z10_fsimpdf): Fixed latency.
5404         (z10_fhex): New insn_reservation.
5405         (z10_floaddf): Fixed latency.
5406         (z10_floadsf): Fixed latency.
5407         (z10_ftrunctf): Fixed latency.
5408         (z10_ftruncdf): Fixed latency.
5409         * config/s390/s390.c (z10_cost): Fixed values.
5410         (s390_adjust_priority): Added z10 path.
5411         * config/s390/s390.md (type): Added fhex.
5412         (*mov<mode>_64dfp): Updated type attribute.
5413         (*mov<mode>_64): Updated type attribute.
5414         (*mov<mode>_31): Updated type attribute.
5415         (*mov<mode>"): Likewise.
5416         * config/s390/2084.md (x_fsimpdf): Updated condition.
5417
5418 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
5419
5420         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
5421         RTXs in the predicate for operand 1.
5422
5423 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
5424
5425         * config/arm/arm.md (UNSPEC_RBIT): New constant.
5426         (rbitsi2): New insn.
5427         (ctzsi2): New expand.
5428         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
5429
5430 2009-09-03  Martin Jambor  <mjambor@suse.cz>
5431
5432         * tree-sra.c (duplicate_expr_for_different_base): Removed.
5433         (create_artificial_child_access): Use build_ref_for_offset instead
5434         of duplicate_expr_for_different_base.
5435         (propagate_subacesses_accross_link): Likewise.
5436
5437 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
5438
5439         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
5440         of INSN_P.
5441         (mips16e_collect_argument_saves): Skip debug instructions.
5442         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
5443         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
5444         (r10k_insert_cache_barriers): Likewise.
5445         (mips_reorg_process_insns): Likewise.
5446
5447 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
5448
5449         PR bootstrap/41241
5450         * ira.c (update_equiv_reg): Remove check on class likely spill.
5451
5452 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
5453
5454         PR debug/41236
5455         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
5456         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
5457         it or SUBREG.
5458
5459         PR debug/41238
5460         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
5461         the stack slot if it is passed by invisible reference.
5462         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
5463         by invisible reference.
5464
5465 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
5466
5467         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
5468         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
5469         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
5470         0.
5471         * config/bfin/sync.md: New file.
5472         * config/bfin/bfin.md: Include it.
5473         (UNSPEC_ATOMIC): New.
5474         (UNSPEC_ONES): Provide a unique number.
5475
5476         From Jie Zhang <jie.zhang@analog.com>:
5477         * config/bfin/bfin.c (ret_regs): New.
5478         (must_save_fp_p): Don't return true because of frame_pointer_needed.
5479         (must_save_rets_p): New.
5480         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
5481         current_function_is_leaf.
5482         (do_link): Likewise.
5483         (do_unlink): Likewise.
5484         (expand_interrupt_handler_prologue): Use ret_regs array.
5485         (expand_interrupt_handler_epilogue): Use ret_regs array and
5486         pass return register to gen_return_internal.
5487         (bfin_expand_epilogue): Pass return register to
5488         gen_return_internal.
5489         (bfin_expand_call): Explicitly clobber RETS.
5490         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
5491         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
5492         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
5493         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
5494         RETS.
5495         (return_internal): Take a reg rtx rather than the register number.
5496
5497 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
5498
5499         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
5500         when comparing against estimated_loop_iterations_int return.
5501
5502 2009-09-03  Richard Guenther  <rguenther@suse.de>
5503
5504         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
5505         eh_personality_libfunc.
5506
5507 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
5508
5509         * tree-parloops.c (separate_decls_in_region): Add space.
5510
5511 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
5512
5513         * tree-parloops.c (separate_decls_in_region): Change the condition
5514         checking if there are reductions in the loop.
5515
5516 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
5517
5518         PR tree-optimization/38275
5519         * tree-parloops.c (parallelize_loops): Replace profitability condition
5520         for expected number of iterations.
5521
5522 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
5523
5524         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
5525         (bootstrap-debug): Explain conditions in which it becomes default.
5526         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
5527         make it add to it.
5528
5529 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
5530
5531         * doc/invoke.texi (Optimize Options): Move
5532         -finline-small-functions to the -O2 list.
5533
5534 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
5535
5536         * toplev.c (process_options): Enable var-tracking-assignments
5537         by default if var-tracking is enabled.
5538
5539 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
5540
5541         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
5542         barrier.
5543         * emit-rtl.c (prev_nonnote_insn_bb): New function.
5544         * rtl.h (prev_nonnote_insn_bb): Declare it.
5545
5546 2009-09-03  Diego Novillo  <dnovillo@google.com>
5547
5548         * cgraph.c (cgraph_node_for_decl): New.
5549         * cgraph.h (cgraph_node_for_decl): Declare.
5550         * tree.c (host_integerp): Return 0 if T is NULL.
5551
5552 2009-09-03  Diego Novillo  <dnovillo@google.com>
5553
5554         * tree.h (struct alias_pair): Move from varasm.c.
5555         (alias_pairs): Likewise.
5556         (TYPE_MAXVAL): Define.
5557         (TYPE_MINVAL): Define.
5558         (iterative_hash_host_wide_int): Declare.
5559         (remove_unreachable_alias_pairs): Declare.
5560         * tree-pass.h (pass_ipa_free_lang_data): Declare.
5561         * diagnostic.c (default_diagnostic_starter): Make extern.
5562         (default_diagnostic_finalizer): Make extern.
5563         * diagnostic.h (default_diagnostic_starter): Declare.
5564         (default_diagnostic_finalizer): Declare.
5565         (default_tree_printer): Declare.
5566         * toplev.c (default_tree_printer): Make extern.
5567
5568 2009-09-03  Richard Guenther  <rguenther@suse.de>
5569             Diego Novillo  <dnovillo@google.com>
5570
5571         * cgraph.c (cgraph_add_new_function): Remove gimplification.
5572         * cgraphunit.c (cgraph_expand_function): Do not emit
5573         associated thunks from here.
5574         (cgraph_emit_thunks): New.
5575         (cgraph_optimize): Call it.
5576         Return if any IPA pass finds an error.
5577         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
5578         by thunks.
5579
5580 2009-09-03  Simon Baldwin  <simonb@google.com>
5581             Rafael Espindola  <espindola@google.com>
5582             Richard Guenther  <rguenther@suse.de>
5583             Doug Kwan  <dougkwan@google.com>
5584             Diego Novillo  <dnovillo@google.com>
5585
5586         * tree.c: Include tree-pass.h, langhooks-def.h,
5587         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
5588         (free_lang_data_in_type): New.
5589         (need_assembler_name_p): New.
5590         (free_lang_data_in_block): New.
5591         (free_lang_data_in_decl): New.
5592         (struct free_lang_data_d): New.
5593         (add_tree_to_fld_list): New.
5594         (find_decls_types_r): New.
5595         (get_eh_types_for_runtime): New.
5596         (find_decls_types_in_eh_region): New.
5597         (find_decls_types_in_node): New.
5598         (find_decls_types_in_var): New.
5599         (free_lang_data_in_cgraph): New.
5600         (free_lang_data): New.
5601         (gate_free_lang_data): New.
5602         (pass_ipa_free_lang_data): New.
5603
5604 2009-09-03  Diego Novillo  <dnovillo@google.com>
5605
5606         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
5607         * langhooks.h (struct lang_hooks): Add field free_lang_data.
5608         (lang_hooks): Remove const qualifier.
5609         * ipa.c (cgraph_remove_unreachable_nodes): Call
5610         remove_unreachable_alias_pairs.
5611         * except.c (add_type_for_runtime): Check if TYPE has
5612         already been converted.
5613         (lookup_type_for_runtime): Likewise.
5614         (check_handled): Handle converted types.
5615         * varasm.c (remove_unreachable_alias_pairs): New.
5616         * gimple.c: Include demangle.h.
5617         (gimple_decl_printable_name): New.
5618         (gimple_fold_obj_type_ref): New.
5619         * gimple.h (gimple_decl_printable_name): Declare.
5620         (gimple_fold_obj_type_ref): Declare.
5621         * passes.c (init_optimization_passes): Add pass
5622         pass_ipa_free_lang_data.
5623         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
5624         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
5625
5626 2009-09-03  Diego Novillo  <dnovillo@google.com>
5627
5628         * c-lang.c (lang_hooks): Remove const qualifier.
5629
5630 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
5631
5632         * doc/install.texi (*-*-freebsd*): Update target information.
5633
5634 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
5635
5636         * hard-reg-set.h (call_fixed_regs): Remove.
5637         * reginfo.c (call_fixed_regs): Remove.
5638         (init_reg_sets_1): Remove initialization of call_fixed_regs.
5639         (globalize_reg): Don't use call_fixed_regs.
5640         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
5641         call_fixed_regs.
5642
5643 2009-09-01  Michael Matz  <matz@suse.de>
5644
5645         * expr.h (emit_storent_insn, expand_expr_real_1,
5646         expand_expr_real_2): Declare.
5647         * expr.c (emit_storent_insn, expand_expr_real_1,
5648         expand_expr_real_2): Export.
5649         (store_expr): Setting and evaluating dont_return_target is useless.
5650         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
5651         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
5652         * except.c (expand_resx_expr): Rename to ...
5653         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
5654         * except.h (expand_resx_stmt): Declare.
5655         * stmt.c: Add include gimple.h
5656         (expand_asm_expr): Rename to ...
5657         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
5658         (expand_case): Rewrite to take gimple statement.
5659         * tree.h (expand_asm_stmt): Declare.
5660         (expand_case): Change prototype.
5661         * Makefile.in (stmt.o): Depend on gimple.h.
5662         * builtins.c (expand_builtin_synchronize): Build gimple asm
5663         statement, not an ASM_EXPR.
5664         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
5665         gimple_to_tree, release_stmt_tree): Remove.
5666         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
5667         ggc_free, but hold comparison code and operands separately.
5668         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
5669         (expand_call_stmt, expand_gimple_stmt_1,
5670         expand_gimple_stmt): New helpers.
5671         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
5672         release_stmt_tree.  Call expand_gimple_stmt instead.
5673         (expand_gimple_basic_block): Ditto.
5674
5675         * calls.c (emit_call_1): Don't look at EH regions here, make
5676         fntree parameter useless.
5677         (expand_call): New local rettype for TREE_TYPE(exp), use it
5678         throughout.  Remove local p, use addr instead.
5679         Don't look at EH regions here.
5680
5681 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
5682
5683         * doc/invoke.texi (-fsched-pressure): Document it.
5684         (-fsched-reg-pressure-heuristic): Remove it.
5685
5686         * reload.c (ira.h): Include.
5687         (find_reloads): Add choosing reload on number of small spilled
5688         classes.
5689
5690         * haifa-sched.c (ira.h): Include.
5691         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
5692         saved_reg_pressure, curr_reg_live, saved_reg_live,
5693         region_ref_regs): New variables.
5694         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
5695         initiate_reg_pressure_info, setup_ref_regs,
5696         initiate_bb_reg_pressure_info, save_reg_pressure,
5697         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
5698         functions.
5699         (setup_insn_reg_pressure_info): New function.
5700         (rank_for_schedule): Add pressure checking and insn issue time.
5701         Remove comparison of insn reg weights.
5702         (ready_sort): Set insn reg pressure info.
5703         (update_register_pressure, setup_insn_max_reg_pressure,
5704         update_reg_and_insn_max_reg_pressure,
5705         sched_setup_bb_reg_pressure_info): New functions.
5706         (schedule_insn): Add code for printing and updating reg pressure info.
5707         (find_set_reg_weight, find_insn_reg_weight): Remove.
5708         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
5709         (debug_ready_list): Print reg pressure info.
5710         (schedule_block): Ditto.  Check insn issue time.
5711         (sched_init): Set up sched_pressure_p.  Allocate and set up some
5712         reg pressure related info.
5713         (sched_finish): Free some reg pressure related info.
5714         (fix_tick_ready): Make insn always ready if pressure_p.
5715         (init_h_i_d): Don't call find_insn_reg_weight.
5716         (haifa_finish_h_i_d): Free insn reg pressure info.
5717
5718         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
5719         ira_memory_move_cost, ira_class_hard_regs,
5720         ira_class_hard_regs_num, ira_no_alloc_regs,
5721         ira_available_class_regs, ira_reg_class_cover_size,
5722         ira_reg_class_cover, ira_class_translate): Move to ira.h.
5723
5724         * ira-lives.c (single_reg_class): Check mode to find how many
5725         registers are necessary for operand.
5726         (ira_implicitly_set_insn_hard_regs): New.
5727
5728         * common.opt (fsched-pressure): New options.
5729         (fsched-reg-pressure-heuristic): Remove.
5730
5731         * ira.c (setup_eliminable_regset): Rename to
5732         ira_setup_eliminable_regset.  Make it external.
5733         (expand_reg_info): Pass cover class to setup_reg_classes.
5734         (ira): Call resize_reg_info instead of allocate_reg_info.
5735
5736         * sched-deps.c: Include ira.h.
5737         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
5738         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
5739         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
5740         mark_insn_hard_regno_birth, mark_insn_reg_birth,
5741         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
5742         mark_insn_reg_store, mark_insn_reg_clobber,
5743         setup_insn_reg_pressure_info): New.
5744         (sched_analyze_1): Update implicit_reg_pending_uses.
5745         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
5746         Use them to create dependencies.  Set insn reg uses and pressure
5747         info.  Process reg_pending_uses in one place.
5748         (free_deps): Free implicit sets.
5749         (remove_from_deps): Remove implicit sets if necessary.  Check
5750         implicit sets when clearing reg_last_in_use.
5751         (init_deps_global): Clear implicit_reg_pending_clobbers and
5752         implicit_reg_pending_uses.
5753
5754         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
5755         ira_memory_move_cost, ira_class_hard_regs,
5756         ira_class_hard_regs_num, ira_no_alloc_regs,
5757         ira_available_class_regs, ira_reg_class_cover_size,
5758         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
5759         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
5760         ira_implicitly_set_insn_hard_regs): New prototypes.
5761
5762         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
5763         cost_elements_num): New variables.
5764         (allocno_costs, total_costs): Rename to costs and
5765         total_allocno_costs.
5766         (COSTS_OF_ALLOCNO): Rename to COSTS.
5767         (allocno_pref): Rename to pref.
5768         (allocno_pref_buffer): Rename to pref_buffer.
5769         (common_classes): Rename to regno_cover_class.
5770         (COST_INDEX): New.
5771         (record_reg_classes): Set allocno attributes only if allocno_p.
5772         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
5773         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
5774         and COSTS_OF_ALLOCNO.
5775         (print_costs): Rename to print_allocno_costs.
5776         (print_pseudo_costs): New.
5777         (process_bb_node_for_costs): Split into 2 functions with new
5778         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
5779         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
5780         new parameter dump_file.  Use cost_elements_num instead of
5781         ira_allocnos_num.  Make one iteration if preferred classes were
5782         already calculated for scheduler.  Make 2 versions of code
5783         depending on allocno_p.
5784         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
5785         regno_cover_class and COSTS instead of common_classes and
5786         COSTS_OF_ALLOCNO.
5787         (init_costs, finish_costs): New.
5788         (ira_costs): Set up allocno_p and cost_elements_num.  Call
5789         init_costs and finish_costs.
5790         (ira_set_pseudo_classes): New.
5791
5792         * rtl.h (allocate_reg_info): Remove.
5793         (resize_reg_info): Change return type.
5794         (reg_cover_class): New.
5795         (setup_reg_classes): Add new parameter.
5796
5797         * sched-int.h (struct deps_reg): New member implicit_sets.
5798         (sched_pressure_p, sched_regno_cover_class): New external definitions.
5799         (INCREASE_BITS): New macro.
5800         (struct reg_pressure_data, struct reg_use_data): New.
5801         (struct _haifa_insn_data): Remove reg_weight.  Add members
5802         reg_pressure, reg_use_list, reg_set_list, and
5803         reg_pressure_excess_cost_change.
5804         (struct deps): New member implicit_sets.
5805         (pressure_p): New variable.
5806         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
5807         (struct reg_pressure_data, struct reg_use_data): New.
5808         (INSN_REG_WEIGHT): Remove.
5809         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
5810         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
5811         (sched_init_region_reg_pressure_info,
5812         sched_setup_bb_reg_pressure_info): New prototypes.
5813
5814         * reginfo.c (struct reg_pref): New member coverclass.
5815         (reg_cover_class): New function.
5816         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
5817         (reg_info_size): New variable.
5818         (allocate_reg_info): Make static.  Setup reg_info_size.
5819         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
5820         (setup_reg_classes): Add a new parameter.  Setup cover class too.
5821
5822         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
5823         the dependencies.
5824
5825         * sched-rgn.c (deps_join): Set up implicit_sets.
5826         (schedule_region): Set up region and basic blocks pressure
5827         relative info.
5828
5829         * passes.c (init_optimization_passes): Move
5830         pass_subregs_of_mode_init before pass_sched.
5831
5832 2009-09-02  Martin Jambor  <mjambor@suse.cz>
5833
5834         * tree-sra.c (struct access): New field grp_hint.
5835         (dump_access): Dump grp_hint.
5836         (sort_and_splice_var_accesses): Set grp_hint if a group is read
5837         multiple times.
5838         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
5839         those which have been specifically read and somehow written to.
5840         (propagate_subacesses_accross_link): Set grp_hint of right child and
5841         also possibly of the left child.
5842
5843 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
5844
5845         * tree-object-size.c (addr_object_size): Always use object_size_type
5846         0 or 2 when determining the pointer pointed object size.
5847
5848 2009-09-02  Richard Guenther  <rguenther@suse.de>
5849
5850         Revert
5851         2009-08-31  Richard Guenther  <rguenther@suse.de>
5852
5853         * builtins.c (fold_builtin_memory_op): Use the alias oracle
5854         to query if the memory regions for memmove overlap.
5855         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
5856         asserts on pointers, instead deal with odd trees.
5857         (ptr_derefs_may_alias_p): Likewise.
5858         (refs_may_alias_p_1): Constructor bases also never alias.
5859
5860 2009-08-01  Christian Bruel  <christian.bruel@st.com>
5861
5862         Revert:
5863         2009-07-31  Christian Bruel  <christian.bruel@st.com>
5864         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
5865
5866 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
5867
5868         * doc/invoke.texi (-fvar-tracking-assignments): New.
5869         (-fvar-tracking-assignments-toggle): New.
5870         (-fdump-final-insns=file): Mark filename as optional.
5871         (--param min-nondebug-insn-uid): New.
5872         (-gdwarf-@{version}): Mention version 4.
5873         * opts.c (common_handle_option): Accept it.
5874         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
5875         * regrename.c (regrename_optimize): Drop last.  Don't count debug
5876         insns as uses.  Don't reject change because of debug insn.
5877         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
5878         from the chain starter, and check for inexact matches in DEBUG_INSNS.
5879         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
5880         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
5881         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
5882         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
5883         * doc/gimple.texi (is_gimple_debug): New.
5884         (gimple_debug_bind_p): New.
5885         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
5886         * doc/install.texi (bootstrap-debug): More details.
5887         (bootstrap-debug-big, bootstrap-debug-lean): Document.
5888         (bootstrap-debug-lib): More details.
5889         (bootstrap-debug-ckovw): Update.
5890         (bootstrap-time): New.
5891         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
5892         (insert_phi_nodes_for): Insert debug stmts.
5893         (rewrite_stmt): Take iterator.  Insert debug stmts.
5894         (rewrite_enter_block): Adjust.
5895         (maybe_replace_use_in_debug_stmt): New.
5896         (rewrite_update_stmt): Use it.
5897         (mark_use_interesting): Return early for debug stmts.
5898         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
5899         stmts before replacing stmt.
5900         (move_computations_stmt): Likewise.
5901         * ira-conflicts.c (add_copies): Skip debug insns.
5902         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
5903         (regstat_bb_compute_ri): Skip debug insns.
5904         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
5905         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
5906         check_loop_closed_ssa_stmt): Skip debug stmts.
5907         * tree-tailcall.c (find_tail_calls): Likewise.
5908         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
5909         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
5910         (build_var_debug_value_stat): Declare.
5911         (build_var_debug_value): Define.
5912         (target_for_debug_bind): Declare.
5913         * reload.c (find_equiv_reg): Skip debug insns.
5914         * rtlanal.c (reg_used_between_p): Skip debug insns.
5915         (side_effects_p): Likewise.
5916         (canonicalize_condition): Likewise.
5917         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
5918         insns never depend on debug insns.
5919         (create_ddg_dep_no_link): Likewise.
5920         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
5921         Don't add inter-loop dependencies for debug insns.
5922         (build_intra_loop_deps): Likewise.
5923         (create_ddg): Count debug insns.
5924         * ddg.h (struct ddg::num_debug): New.
5925         (num_backargs): Pair up with previous int field.
5926         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
5927         -fcompare-debug-second.
5928         * final.c (get_attr_length_1): Skip debug insns.
5929         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
5930         * gcc.c (invoke_as): Call compare-debug-dump-opt.
5931         (driver_self_specs): Map -fdump-final-insns to
5932         -fdump-final-insns=..
5933         (get_local_tick): New.
5934         (compare_debug_dump_opt_spec_function): Test for . argument and
5935         compute output name.  Compute temp output spec without flag name.
5936         Compute -frandom-seed.
5937         (OPT): Undef after use.
5938         * cfgloopanal.c (num_loop_insns): Skip debug insns.
5939         (average_num_loop_insns): Likewise.
5940         * params.h (MIN_NONDEBUG_INSN_UID): New.
5941         * gimple.def (GIMPLE_DEBUG): New.
5942         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
5943         * auto-inc-dec.c (merge_in_block): Skip debug insns.
5944         (merge_in_block): Fix whitespace.
5945         * toplev.c (flag_var_tracking): Update comment.
5946         (flag_var_tracking_assignments): New.
5947         (flag_var_tracking_assignments_toggle): New.
5948         (process_options): Don't open final insns dump file if we're not
5949         going to write to it.  Compute defaults for var_tracking.
5950         * df-scan.c (df_insn_rescan_debug_internal): New.
5951         (df_uses_record): Handle debug insns.
5952         * haifa-sched.c (ready): Initialize n_debug.
5953         (contributes_to_priority): Skip debug insns.
5954         (dep_list_size): New.
5955         (priority): Use it.
5956         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
5957         they're ready.  Disregard previous debug insns to make decisions.
5958         (queue_insn): Never queue debug insns.
5959         (ready_add, ready_remove_first, ready_remove): Count debug insns.
5960         (schedule_insn): Don't reject debug insns because of issue rate.
5961         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
5962         (queue_to_ready): Skip and discount debug insns.
5963         (choose_ready): Let debug insns through.
5964         (schedule_block): Check boundary debug insns.  Discount debug
5965         insns, schedule them early.  Adjust whitespace.
5966         (set_priorities): Check for boundary debug insns.
5967         (add_jump_dependencies): Use dep_list_size.
5968         (prev_non_location_insn): New.
5969         (check_cfg): Use it.
5970         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
5971         stmts.
5972         (remove_unused_ivs): Reset debug stmts.
5973         * modulo-sched.c (const_iteration_count): Skip debug insns.
5974         (res_MII): Discount debug insns.
5975         (loop_single_full_bb_p): Skip debug insns.
5976         (sms_schedule): Likewise.
5977         (sms_schedule_by_order): Likewise.
5978         (ps_has_conflicts): Likewise.
5979         * caller-save.c (refmarker_fn): New.
5980         (save_call_clobbered_regs): Replace regs with saved mem in
5981         debug insns.
5982         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
5983         Call refmarker_fn mark for hardregnos.
5984         (mark_reg_as_referenced): New.
5985         (replace_reg_with_saved_mem): New.
5986         * ipa-pure-const.c (check_stmt): Skip debug stmts.
5987         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
5988         searching back.
5989         (cse_extended_basic_block): Skip debug insns.
5990         (count_reg_usage): Likewise.
5991         (is_dead_reg): New, split out of...
5992         (set_live_p): ... here.
5993         (insn_live_p): Use it for debug insns.
5994         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
5995         (execute_optimize_stdarg): Likewise.
5996         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
5997         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
5998         changes in debug stmts as changes.
5999         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
6000         (moveup_expr): Don't move across debug insns.  Don't move
6001         debug insn if it would create a bookkeeping block.
6002         (moveup_expr_cached): Don't use cache for debug insns that
6003         are heads of blocks.
6004         (compute_av_set_inside_bb): Skip debug insns.
6005         (sel_rank_for_schedule): Schedule debug insns first.  Remove
6006         dead code.
6007         (block_valid_for_bookkeeping_p); Support lax searches.
6008         (create_block_for_bookkeeping): Adjust block numbers when
6009         encountering debug-only blocks.
6010         (find_place_for_bookkeeping): Deal with debug-only blocks.
6011         (generate_bookkeeping_insn): Accept no place to insert.
6012         (remove_temp_moveop_nops): New argument full_tidying.
6013         (prepare_place_to_insert): Deal with debug insns.
6014         (advance_state_on_fence): Debug insns don't start cycles.
6015         (update_boundaries): Take fence as argument.  Deal with
6016         debug insns.
6017         (schedule_expr_on_boundary): No full_tidying on debug insns.
6018         (fill_insns): Deal with debug insns.
6019         (track_scheduled_insns_and_blocks): Don't count debug insns.
6020         (need_nop_to_preserve_insn_bb): New, split out of...
6021         (remove_insn_from_stream): ... this.
6022         (fur_orig_expr_not_found): Skip debug insns.
6023         * rtl.def (VALUE): Move up.
6024         (DEBUG_INSN): New.
6025         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
6026         (nearest_common_dominator_of_uses): Take debug_stmts argument.
6027         Set it if debug stmts are found.
6028         (statement_sink_location): Skip debug stmts.  Propagate
6029         moving defs into debug stmts.
6030         * ifcvt.c (first_active_insn): Skip debug insns.
6031         (last_active_insns): Likewise.
6032         (cond_exec_process_insns): Likewise.
6033         (noce_process_if_block): Likewise.
6034         (check_cond_move_block): Likewise.
6035         (cond_move_convert_if_block): Likewise.
6036         (block_jumps_and_fallthru_p): Likewise.
6037         (dead_or_predicable): Likewise.
6038         * dwarf2out.c (debug_str_hash_forced): New.
6039         (find_AT_string): Add comment.
6040         (gen_label_for_indirect_string): New.
6041         (get_debug_string_label): New.
6042         (AT_string_form): Use it.
6043         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
6044         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
6045         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
6046         several operations that cannot be represented with DWARF opcodes.
6047         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
6048         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
6049         (dwarf2out_var_location): Take during-call mark into account.
6050         (output_indirect_string): Update comment.  Output if there are
6051         label and references.
6052         (prune_indirect_string): New.
6053         (prune_unused_types): Call it if debug_str_hash_forced.
6054         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
6055         (dw_long_long_const): Remove.
6056         (struct dw_val_struct): Change val_long_long type to rtx.
6057         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
6058         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
6059         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
6060         component instead of HOST_BITS_PER_LONG.
6061         (output_loc_operands): Likewise.  For const8* assert
6062         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
6063         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
6064         rather than HOST_BITS_PER_LONG is >= 64.
6065         (add_AT_long_long): Remove val_hi and val_lo arguments, add
6066         val_const_double.
6067         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
6068         HOST_BITS_PER_LONG for dw_val_class_long_long.
6069         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
6070         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
6071         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
6072         DW_OP_stack_value.
6073         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
6074         Handle DW_OP_implicit_value.
6075         (extract_int): Move prototype earlier.
6076         (mem_loc_descriptor): For SUBREG punt if inner
6077         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
6078         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
6079         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
6080         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
6081         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
6082         instead of Pmode size.
6083         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
6084         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
6085         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
6086         (concat_loc_descriptor, concatn_loc_descriptor,
6087         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
6088         (add_location_or_const_value_attribute): Likewise.  For single
6089         location loc_lists attempt to use add_const_value_attribute
6090         for constant decls.  Add DW_AT_const_value even if
6091         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
6092         in its expression.
6093         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
6094         (control_flow_insn_p): Likewise.
6095         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
6096         (separate_decls_in_region_debug_bind): New.
6097         (separate_decls_in_region): Process debug bind stmts afterwards.
6098         * recog.c (verify_changes): Handle debug insns.
6099         (extract_insn): Likewise.
6100         (peephole2_optimize): Skip debug insns.
6101         * dse.c (scan_insn): Skip debug insns.
6102         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
6103         Pass it on.
6104         (setup_id_for_insn): Handle debug insns.
6105         (maybe_tidy_empty_bb): Adjust whitespace.
6106         (tidy_control_flow): Skip debug insns.
6107         (sel_remove_insn): Adjust for debug insns.
6108         (sel_estimate_number_of_insns): Skip debug insns.
6109         (create_insn_rtx_from_pattern): Handle debug insns.
6110         (create_copy_of_insn_rtx): Likewise.
6111         * sel-sched-.h (sel_bb_end): Declare.
6112         (sel_bb_empty_or_nop_p): New.
6113         (get_all_loop_exits): Use it.
6114         (_eligible_successor_edge_p): Likewise.
6115         (return_nop_to_pool): Adjust.
6116         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
6117         * ira-lives.c (process_bb_node_lives): Skip debug insns.
6118         * gimple-pretty-print.c (dump_gimple_debug): New.
6119         (dump_gimple_stmt): Use it.
6120         (dump_bb_header): Skip gimple debug stmts.
6121         * regmove.c (optimize_reg_copy_1): Discount debug insns.
6122         (fixup_match_2): Likewise.
6123         (regmove_backward_pass): Likewise.  Simplify combined
6124         replacement.  Handle debug insns.
6125         * function.c (instantiate_virtual_regs): Handle debug insns.
6126         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
6127         * print-rtl.h: Include cselib.h.
6128         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
6129         * df.h (df_inns_rescan_debug_internal): Declare.
6130         * gcse.c (alloc_hash_table): Estimate n_insns.
6131         (cprop_insn): Don't regard debug insns as changes.
6132         (bypass_conditional_jumps): Skip debug insns.
6133         (one_pre_gcse_pass): Adjust.
6134         (one_code_hoisting_pass): Likewise.
6135         (compute_ld_motion_mems): Skip debug insns.
6136         (one_cprop_pass): Adjust.
6137         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
6138         (if_convertible_stmt_p): Handle debug stmts.
6139         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
6140         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
6141         * ira-build.c (create_bb_allocnos): Skip debug insns.
6142         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
6143         (has_single_use): Likewise.
6144         (single_imm_use): Likewise.
6145         (num_imm_uses): Likewise.
6146         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
6147         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
6148         (create_outofssa_var_map): Likewise.
6149         * lower-subreg.c (adjust_decomposed_uses): New.
6150         (resolve_debug): New.
6151         (decompose_multiword_subregs): Use it.
6152         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
6153         * emit-rtl.c: Include params.h.
6154         (cur_debug_insn_uid): Define.
6155         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
6156         (copy_rtx_if_shared_1): Handle debug insns.
6157         (reset_used_flags): Likewise.
6158         (set_used_flags): LIkewise.
6159         (get_max_insn_count): New.
6160         (next_nondebug_insn): New.
6161         (prev_nondebug_insn): New.
6162         (make_debug_insn_raw): New.
6163         (emit_insn_before_noloc): Handle debug insns.
6164         (emit_jump_insn_before_noloc): Likewise.
6165         (emit_call_insn_before_noloc): Likewise.
6166         (emit_debug_insn_before_noloc): New.
6167         (emit_insn_after_noloc): Handle debug insns.
6168         (emit_jump_insn_after_noloc): Likewise.
6169         (emit_call_insn_after_noloc): Likewise.
6170         (emit_debug_insn_after_noloc): Likewise.
6171         (emit_insn_after): Take loc from earlier non-debug insn.
6172         (emit_jump_insn_after): Likewise.
6173         (emit_call_insn_after): Likewise.
6174         (emit_debug_insn_after_setloc): New.
6175         (emit_debug_insn_after): New.
6176         (emit_insn_before): Take loc from later non-debug insn.
6177         (emit_jump_insn_before): Likewise.
6178         (emit_call_insn_before): Likewise.
6179         (emit_debug_insn_before_setloc): New.
6180         (emit_debug_insn_before): New.
6181         (emit_insn): Handle debug insns.
6182         (emit_debug_insn): New.
6183         (emit_jump_insn): Handle debug insns.
6184         (emit_call_insn): Likewise.
6185         (emit): Likewise.
6186         (init_emit): Take min-nondebug-insn-uid into account.
6187         Initialize cur_debug_insn_uid.
6188         (emit_copy_of_insn_after): Handle debug insns.
6189         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
6190         location of single rhs in place.
6191         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
6192         (floor_sdiv_adjust): New.
6193         (cell_sdiv_adjust): New.
6194         (cell_udiv_adjust): New.
6195         (round_sdiv_adjust): New.
6196         (round_udiv_adjust): New.
6197         (wrap_constant): Moved from cselib.
6198         (unwrap_constant): New.
6199         (expand_debug_expr): New.
6200         (expand_debug_locations): New.
6201         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
6202         debug bind stmts.
6203         (gimple_expand_cfg): Expand debug locations.
6204         * cselib.c: Include tree-pass.h.
6205         (struct expand_value_data): New.
6206         (cselib_record_sets_hook): New.
6207         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
6208         (cselib_clear_table): Move, and implemnet in terms of...
6209         (cselib_reset_table_with_next_value): ... this.
6210         (cselib_get_next_unknown_value): New.
6211         (discard_useless_locs): Don't discard preserved values.
6212         (cselib_preserve_value): New.
6213         (cselib_preserved_value_p): New.
6214         (cselib_preserve_definitely): New.
6215         (cselib_clear_preserve): New.
6216         (cselib_preserve_only_values): New.
6217         (new_cselib_val): Take rtx argument.  Dump it in details.
6218         (cselib_lookup_mem): Adjust.
6219         (expand_loc): Take regs_active in struct.  Adjust.  Silence
6220         dumps unless details are requested.
6221         (cselib_expand_value_rtx_cb): New.
6222         (cselib_expand_value_rtx): Rename and reimplment in terms of...
6223         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
6224         without details.  Copy more subregs.  Try to resolve values
6225         using a callback.  Wrap constants.
6226         (cselib_subst_to_values): Adjust.
6227         (cselib_log_lookup): New.
6228         (cselib_lookup): Call it.
6229         (cselib_invalidate_regno): Don't count preserved values as useless.
6230         (cselib_invalidate_mem): Likewise.
6231         (cselib_record_set): Likewise.
6232         (struct set): Renamed to cselib_set, moved to cselib.h.
6233         (cselib_record_sets): Adjust.  Call hook.
6234         (cselib_process_insn): Reset table when it would be cleared.
6235         (dump_cselib_val): New.
6236         (dump_cselib_table): New.
6237         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
6238         (remove_forwarder_block): Support moving debug stmts.
6239         * cselib.h (cselib_record_sets_hook): Declare.
6240         (cselib_expand_callback): New type.
6241         (cselib_expand_value_rtx_cb): Declare.
6242         (cselib_reset_table_with_next_value): Declare.
6243         (cselib_get_next_unknown_value): Declare.
6244         (cselib_preserve_value): Declare.
6245         (cselib_preserved_value_p): Declare.
6246         (cselib_preserve_only_values): Declare.
6247         (dump_cselib_table): Declare.
6248         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
6249         (try_crossjump_to_edge): Likewise.
6250         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
6251         dominated blocks when debug stmts are present.
6252         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
6253         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
6254         (set_var_live_on_entry): Likewise.
6255         * loop-invariant.c (find_invariants_bb): Skip debug insns.
6256         * cfglayout.c (curr_location, last_location): Make static.
6257         (set_curr_insn_source_location): Don't avoid bouncing.
6258         (get_curr_insn_source_location): New.
6259         (get_curr_insn_block): New.
6260         (duplicate_insn_chain): Handle debug insns.
6261         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
6262         into debug stmts.
6263         * common.opt (fcompare-debug): Move to sort order.
6264         (fdump-unnumbered-links): Likewise.
6265         (fvar-tracking-assignments): New.
6266         (fvar-tracking-assignments-toggle): New.
6267         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
6268         because of debug stmts.
6269         (mark_stmt_if_obviously_necessary): Mark debug stmts.
6270         (eliminate_unnecessary_stmts): Walk dominated blocks before
6271         dominators.
6272         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
6273         * ira.c (memref_used_between_p): Skip debug insns.
6274         (update_equiv_regs): Likewise.
6275         * sched-deps.c (sd_lists_size): Accept empty list.
6276         (sd_init_insn): Mark debug insns.
6277         (sd_finish_insn): Unmark them.
6278         (sd_add_dep): Reject non-debug deps on debug insns.
6279         (fixup_sched_groups): Give debug insns group treatment.
6280         Skip debug insns.
6281         (sched_analyze_reg): Don't mark debug insns for sched before call.
6282         (sched_analyze_2): Handle debug insns.
6283         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
6284         insns.
6285         (deps_analyze_insn): Handle debug insns.
6286         (deps_start_bb): Skip debug insns.
6287         (init_deps): Initialize last_debug_insn.
6288         * tree-ssa.c (target_for_debug_bind): New.
6289         (find_released_ssa_name): New.
6290         (propagate_var_def_into_debug_stmts): New.
6291         (propagate_defs_into_debug_stmts): New.
6292         (verify_ssa): Skip debug bind stmts without values.
6293         (warn_uninialized_vars): Skip debug stmts.
6294         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
6295         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
6296         (rtx_equal_p): Likewise.
6297         * ira-costs.c (scan_one_insn): Skip debug insns.
6298         (process_bb_node_for_hard_reg_moves): Likewise.
6299         * rtl.h (DEBUG_INSN_P): New.
6300         (NONDEBUG_INSN_P): New.
6301         (MAY_HAVE_DEBUG_INSNS): New.
6302         (INSN_P): Accept debug insns.
6303         (RTX_FRAME_RELATED_P): Likewise.
6304         (INSN_DELETED_P): Likewise
6305         (PAT_VAR_LOCATION_DECL): New.
6306         (PAT_VAR_LOCATION_LOC): New.
6307         (PAT_VAR_OCATION_STATUS): New.
6308         (NOTE_VAR_LOCATION_DECL): Reimplement.
6309         (NOTE_VAR_LOCATION_LOC): Likewise.
6310         (NOTE_VAR_LOCATION_STATUS): Likewise.
6311         (INSN_VAR_LOCATION): New.
6312         (INSN_VAR_LOCATION_DECL): New.
6313         (INSN_VAR_LOCATION_LOC): New.
6314         (INSN_VAR_LOCATION_STATUS): New.
6315         (gen_rtx_UNKNOWN_VAR_LOC): New.
6316         (VAR_LOC_UNKNOWN_P): New.
6317         (NOTE_DURING_CALL_P): New.
6318         (SCHED_GROUP_P): Accept debug insns.
6319         (emit_debug_insn_before): Declare.
6320         (emit_debug_insn_before_noloc): Declare.
6321         (emit_debug_insn_beore_setloc): Declare.
6322         (emit_debug_insn_after): Declare.
6323         (emit_debug_insn_after_noloc): Declare.
6324         (emit_debug_insn_after_setloc): Declare.
6325         (emit_debug_insn): Declare.
6326         (make_debug_insn_raw): Declare.
6327         (prev_nondebug_insn): Declare.
6328         (next_nondebug_insn): Declare.
6329         (delegitimize_mem_from_attrs): Declare.
6330         (get_max_insn_count): Declare.
6331         (wrap_constant): Declare.
6332         (unwrap_constant): Declare.
6333         (get_curr_insn_source_location): Declare.
6334         (get_curr_insn_block): Declare.
6335         * tree-inline.c (insert_debug_decl_map): New.
6336         (processing_debug_stmt): New.
6337         (remap_decl): Don't create new mappings in debug stmts.
6338         (remap_gimple_op_r): Don't add references in debug stmts.
6339         (copy_tree_body_r): Likewise.
6340         (remap_gimple_stmt): Handle debug bind stmts.
6341         (copy_bb): Skip debug stmts.
6342         (copy_edges_for_bb): Likewise.
6343         (copy_debug_stmt): New.
6344         (copy_debug_stmts): New.
6345         (copy_body): Copy debug stmts at the end.
6346         (insert_init_debug_bind): New.
6347         (insert_init_stmt): Take id.  Skip and emit debug stmts.
6348         (setup_one_parameter): Remap variable earlier, register debug mapping.
6349         (estimate_num_insns): Skip debug stmts.
6350         (expand_call_inline): Preserve debug_map.
6351         (optimize_inline_calls): Check for no debug_stmts left-overs.
6352         (unsave_expr_now): Preserve debug_map.
6353         (copy_gimple_seq_and_replace_locals): Likewise.
6354         (tree_function_versioning): Check for no debug_stmts left-overs.
6355         Init and destroy debug_map as needed.  Split edges unconditionally.
6356         (build_duplicate_type): Init and destroy debug_map as needed.
6357         * tree-inline.h: Include gimple.h instead of pointer-set.h.
6358         (struct copy_body_data): Add debug_stmts and debug_map.
6359         * sched-int.h (struct ready_list): Add n_debug.
6360         (struct deps): Add last_debug_insn.
6361         (DEBUG_INSN_SCHED_P): New.
6362         (BOUNDARY_DEBUG_INSN_P): New.
6363         (SCHEDULE_DEBUG_INSN_P): New.
6364         (sd_iterator_cond): Accept empty list.
6365         * combine.c (create_log_links): Skip debug insns.
6366         (combine_instructions): Likewise.
6367         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
6368         return value is always unshared.
6369         (struct rtx_subst_pair): New.
6370         (auto_adjust_pair): New.
6371         (propagate_for_debug_subst): New.
6372         (propagate_for_debug): New.
6373         (try_combine): Skip debug insns.  Propagate removed defs into
6374         debug insns.
6375         (next_nonnote_nondebug_insn): New.
6376         (distribute_notes): Use it.  Skip debug insns.
6377         (distribute_links): Skip debug insns.
6378         * tree-outof-ssa.c (set_location_for_edge): Likewise.
6379         * resource.c (mark_target_live_regs): Likewise.
6380         * var-tracking.c: Include cselib.h and target.h.
6381         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
6382         MO_VAL_SET.
6383         (micro_operation_type_name): New.
6384         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
6385         (struct micro_operation_def): Update comments.
6386         (decl_or_value): New type.  Use instead of decls.
6387         (struct emit_note_data_def): Add vars.
6388         (struct attrs_def): Use decl_or_value.
6389         (struct variable_tracking_info_def): Add permp, flooded.
6390         (struct location_chain_def): Update comment.
6391         (struct variable_part_def): Use decl_or_value.
6392         (struct variable_def): Make var_part a variable length array.
6393         (valvar_pool): New.
6394         (scratch_regs): New.
6395         (cselib_hook_called): New.
6396         (dv_is_decl_p): New.
6397         (dv_is_value_p): New.
6398         (dv_as_decl): New.
6399         (dv_as_value): New.
6400         (dv_as_opaque): New.
6401         (dv_onepart_p): New.
6402         (dv_pool): New.
6403         (IS_DECL_CODE): New.
6404         (check_value_is_not_decl): New.
6405         (dv_from_decl): New.
6406         (dv_from_value): New.
6407         (dv_htab_hash): New.
6408         (variable_htab_hash): Use it.
6409         (variable_htab_eq): Support values.
6410         (variable_htab_free): Free from the right pool.
6411         (attrs_list_member, attrs_list_insert): Use decl_or_value.
6412         (attrs_list_union): Adjust.
6413         (attrs_list_mpdv_union): New.
6414         (tie_break_pointers): New.
6415         (canon_value_cmp): New.
6416         (unshare_variable): Return possibly-modified slot.
6417         (vars_copy_1): Adjust.
6418         (var_reg_decl_set): Adjust.  Split out of...
6419         (var_reg_set): ... this.
6420         (get_init_value): Adjust.
6421         (var_reg_delete_and_set): Adjust.
6422         (var_reg_delete): Adjust.
6423         (var_regno_delete): Adjust.
6424         (var_mem_decl_set): Split out of...
6425         (var_mem_set): ... this.
6426         (var_mem_delete_and_set): Adjust.
6427         (var_mem_delete): Adjust.
6428         (val_store): New.
6429         (val_reset): New.
6430         (val_resolve): New.
6431         (variable_union): Adjust.  Speed up merge of 1-part vars.
6432         (variable_canonicalize): Use unshared slot.
6433         (VALUED_RECURSED_INTO): New.
6434         (find_loc_in_1pdv): New.
6435         (struct dfset_merge): New.
6436         (insert_into_intersection): New.
6437         (intersect_loc_chains): New.
6438         (loc_cmp): New.
6439         (canonicalize_loc_order_check): New.
6440         (canonicalize_values_mark): New.
6441         (canonicalize_values_star): New.
6442         (variable_merge_over_cur): New.
6443         (variable_merge_over_src): New.
6444         (dataflow_set_merge): New.
6445         (dataflow_set_equiv_regs): New.
6446         (remove_duplicate_values): New.
6447         (struct dfset_post_merge): New.
6448         (variable_post_merge_new_vals): New.
6449         (variable_post_merge_perm_vals): New.
6450         (dataflow_post_merge_adjust): New.
6451         (find_mem_expr_in_1pdv): New.
6452         (dataflow_set_preserve_mem_locs): New.
6453         (dataflow_set_remove_mem_locs): New.
6454         (dataflow_set_clear_at_call): New.
6455         (onepart_variable_different_p): New.
6456         (variable_different_p): Use it.
6457         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
6458         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
6459         if not needed.
6460         (track_loc_p): Pass it true.
6461         (struct count_use_info): New.
6462         (find_use_val): New.
6463         (replace_expr_with_values): New.
6464         (log_op_type): New.
6465         (use_type): New, partially split out of...
6466         (count_uses): ... this.  Count new micro-ops.
6467         (count_uses_1): Adjust.
6468         (count_stores): Adjust.
6469         (count_with_sets): New.
6470         (VAL_NEEDS_RESOLUTION): New.
6471         (VAL_HOLDS_TRACK_EXPR): New.
6472         (VAL_EXPR_IS_COPIED): New.
6473         (VAL_EXPR_IS_CLOBBERED): New.
6474         (add_uses): Adjust.  Generate new micro-ops.
6475         (add_uses_1): Adjust.
6476         (add_stores): Generate new micro-ops.
6477         (add_with_sets): New.
6478         (find_src_status): Adjust.
6479         (find_src_set_src): Adjust.
6480         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
6481         Handle new micro-ops.  Canonicalize value equivalances.
6482         (vt_find_locations): Compute total size of hash tables for
6483         dumping.  Perform merge for var-tracking-assignments.  Don't
6484         disregard single-block loops.
6485         (dump_attrs_list): Handle decl_or_value.
6486         (dump_variable): Take variable.  Deal with decl_or_value.
6487         (dump_variable_slot): New.
6488         (dump_vars): Use it.
6489         (dump_dataflow_sets): Adjust.
6490         (set_slot_part): New, extended to support one-part variables
6491         after splitting out of...
6492         (set_variable_part): ... this.
6493         (clobber_slot_part): New, split out of...
6494         (clobber_variable_part): ... this.
6495         (delete_slot_part): New, split out of...
6496         (delete_variable_part): .... this.
6497         (check_wrap_constant): New.
6498         (vt_expand_loc_callback): New.
6499         (vt_expand_loc): New.
6500         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
6501         EMIT_NOTE_AFTER_CALL_INSN.
6502         (emit_notes_for_differences_1): Adjust.  Handle values.
6503         (emit_notes_for_differences_2): Likewise.
6504         (emit_notes_for_differences): Adjust.
6505         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
6506         Adjust.  Handle new micro-ops.
6507         (vt_add_function_parameters): Adjust.  Create and bind values.
6508         (vt_initialize): Adjust.  Initialize scratch_regs and
6509         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
6510         operations.  Move some code to count_with_sets and add_with_sets.
6511         (delete_debug_insns): New.
6512         (vt_debug_insns_local): New.
6513         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
6514         cselib.
6515         (var_tracking_main): If var-tracking-assignments is enabled
6516         but var-tracking isn't, delete debug insns and leave.  Likewise
6517         if we exceed limits or fail the stack adjustments tests, and
6518         after all var-tracking processing.
6519         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
6520         (dataflow_set): Add traversed_vars.
6521         (value_chain, const_value_chain): New typedefs.
6522         (value_chain_pool, value_chains): New variables.
6523         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
6524         add_value_chains, add_cselib_value_chains, remove_value_chain,
6525         remove_value_chains, remove_cselib_value_chains): New functions.
6526         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
6527         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
6528         static inlines.
6529         (shared_hash_find_slot_unshare, shared_hash_find_slot,
6530         shared_hash_find_slot_noinsert, shared_hash_find): Update.
6531         (dst_can_be_shared): New variable.
6532         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
6533         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
6534         different from set->vars, look up slot again instead of using the
6535         passed in slot.
6536         (dataflow_set_init): Initialize traversed_vars.
6537         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
6538         lookup if set->vars is shared.  Don't keep slot cleared before
6539         calling unshare_variable.  Unshare set->vars if needed.  Adjust
6540         unshare_variable callers.  Clear dst_can_be_shared if needed.
6541         Even ->refcount == 1 vars must be unshared if set->vars is shared
6542         and var needs to be modified.
6543         (dataflow_set_union): Set traversed_vars during canonicalization.
6544         (VALUE_CHANGED, DECL_CHANGED): Define.
6545         (set_dv_changed, dv_changed_p): New static inlines.
6546         (track_expr_p): Clear DECL_CHANGED.
6547         (dump_dataflow_sets): Set it.
6548         (variable_was_changed): Call set_dv_changed.
6549         (emit_note_insn_var_location): Likewise.
6550         (changed_variables_stack): New variable.
6551         (check_changed_vars_1, check_changed_vars_2): New functions.
6552         (emit_notes_for_changes): Do nothing if changed_variables is
6553         empty.  Traverse changed_variables with check_changed_vars_1,
6554         call check_changed_vars_2 on each changed_variables_stack entry.
6555         (emit_notes_in_bb): Add SET argument.  Just clear it at the
6556         beginning, use it instead of local &set, don't destroy it at the end.
6557         (vt_emit_notes): Call dataflow_set_clear early on all
6558         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
6559         computed set, dataflow_set_clear also VTI(bb)->in when we are
6560         done with the basic block.  Initialize changed_variables_stack,
6561         free it afterwards.  If ENABLE_CHECKING verify that after noting
6562         differences to an empty set value_chains hash table is empty.
6563         (vt_initialize): Initialize value_chains and value_chain_pool.
6564         (vt_finalize): Delete value_chains htab, free value_chain_pool.
6565         (variable_tracking_main): Call dump_dataflow_sets before calling
6566         vt_emit_notes, not after it.
6567         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
6568         (propagate_var_def_into_debug_stmts): Declare.
6569         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
6570         (df_set_note): Reject debug insns.
6571         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
6572         add notes to debug insns.
6573         (df_note_bb_compute): Adjust.  Likewise.
6574         (df_simulate_uses): Skip debug insns.
6575         (df_simulate_initialize_backwards): Likewise.
6576         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
6577         (subst_stack_regs_pat): Reject debug insns.
6578         (convert_regs_1): Handle debug insns.
6579         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
6580         (print-rtl.o): Depend on cselib.h.
6581         (cselib.o): Depend on TREE_PASS_H.
6582         (var-tracking.o): Depend on cselib.h and TARGET_H.
6583         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
6584         (init_ready_list): Skip boundary debug insns.
6585         (add_branch_dependences): Skip debug insns.
6586         (free_block_dependencies): Check for blocks with only debug insns.
6587         (compute_priorities): Likewise.
6588         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
6589         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
6590         all callers.
6591         (gimple_build_debug_bind_stat): New.
6592         (empty_body_p): Skip debug stmts.
6593         (gimple_has_side_effects): Likewise.
6594         (gimple_rhs_has_side_effects): Likewise.
6595         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
6596         (gimple_build_debug_bind_stat): Declare.
6597         (gimple_build_debug_bind): Define.
6598         (is_gimple_debug): New.
6599         (gimple_debug_bind_p): New.
6600         (gimple_debug_bind_get_var): New.
6601         (gimple_debug_bind_get_value): New.
6602         (gimple_debug_bind_get_value_ptr): New.
6603         (gimple_debug_bind_set_var): New.
6604         (gimple_debug_bind_set_value): New.
6605         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
6606         (gimple_debug_bind_reset_value): New.
6607         (gimple_debug_bind_has_value_p): New.
6608         (gsi_next_nondebug): New.
6609         (gsi_prev_nondebug): New.
6610         (gsi_start_nondebug_bb): New.
6611         (gsi_last_nondebug_bb): New.
6612         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
6613         (print_insn): Handle DEBUG_INSN.
6614         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
6615         of first insn prevail.
6616         (first_stmt): Skip debug stmts.
6617         (first_non_label_stmt): Likewise.
6618         (last_stmt): Likewise.
6619         (has_zero_uses_1): New.
6620         (single_imm_use_1): New.
6621         (verify_gimple_debug): New.
6622         (verify_types_in_gimple_stmt): Handle debug stmts.
6623         (verify_stmt): Likewise.
6624         (debug_loop_num): Skip debug stmts.
6625         (remove_edge_and_dominated_blocks): Remove dominators last.
6626         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
6627         (linearize_expr): Likewise.
6628         * config/i386/i386.c (ix86_delegitimize_address): Call
6629         default implementation.
6630         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
6631         (group_barrier_needed): Skip debug insns.
6632         (emit_insn_group_barriers): Likewise.
6633         (emit_all_insn_group_barriers): Likewise.
6634         (ia64_variable_issue): Handle debug insns.
6635         (ia64_dfa_new_cycle): Likewise.
6636         (final_emit_insn_group_barriers): Skip debug insns.
6637         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
6638         def cfa without frame.
6639         (process_set): Likewise.
6640         (process_for_unwind_directive): Pass frame on.
6641         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
6642         (rs6000_delegitimize_address): New.
6643         (rs6000_debug_adjust_cost): Handle debug insns.
6644         (is_microcoded_insn): Likewise.
6645         (is_cracked_insn): Likewise.
6646         (is_nonpipeline_insn): Likewise.
6647         (insn_must_be_first_in_group): Likewise.
6648         (insn_must_be_last_in_group): Likewise.
6649         (force_new_group): Likewise.
6650         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
6651         contains only debug insns.
6652         (rtl_merge_blocks): Skip debug insns.
6653         (purge_dead_edges): Likewise.
6654         (rtl_block_ends_with_call_p): Skip debug insns.
6655         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
6656         (mark_reg_dependencies): Skip debug insns.
6657         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
6658         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
6659         * tree-ssa-threadedge.c
6660         (record_temporary_equivalences_from_stmts): Skip debug stmts.
6661         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
6662         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
6663         (copyprop_hardreg_forward_1): Handle debug insns.
6664         * reload1.c (reload): Skip debug insns.  Replace unassigned
6665         pseudos in debug insns with their equivalences.
6666         (eliminate_regs_in_insn): Skip debug insns.
6667         (emit_input_reload_insns): Skip debug insns at first, adjust
6668         them later.
6669         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
6670         (get_indirect_ref_operands): Pass opf_no_vops on.
6671         (get_expr_operands): Likewise.  Skip debug stmts.
6672         (parse_ssa_operands): Scan debug insns with opf_no_vops.
6673
6674 2009-09-01  Richard Henderson  <rth@redhat.com>
6675
6676         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
6677         stmt_ends_pp_p statements at least once.
6678         * tree-vrp.c (vrp_initialize): Likewise.
6679         (vrp_visit_stmt): Be prepared for non-interesting stmts.
6680
6681 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
6682
6683         PR bootstrap/41205
6684         Fix AIX bootstrap after PR debug/30161
6685         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
6686         that is a GNU extension.
6687         (tmpl_value_parm_die_table): Move the definition of this global
6688         outside #ifdef DWARF2_DEBUGGING_INFO region.
6689
6690 2009-09-01  Richard Guenther  <rguenther@suse.de>
6691
6692         * tree.c (tree_expr_size): New function.
6693         * tree.h (tree_expr_size): Declare.
6694         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
6695         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
6696         * langhooks.c (lhd_expr_size): Remove.
6697         * langhooks.h (struct lang_hooks): Remove expr_size.
6698         * explow.c (expr_size): Use tree_expr_size.
6699         (int_expr_size): Likewise.
6700         * langhooks-def.h (lhd_expr_size): Remove.
6701         (LANG_HOOKS_EXPR_SIZE): Likewise.
6702         (LANG_HOOKS_INITIALIZER): Adjust.
6703
6704 2009-09-01  Richard Guenther  <rguenther@suse.de>
6705
6706         * tree-flow.h (mark_addressable): Move declaration ...
6707         * tree.h (mark_addressable): ... here.
6708         * stmt.c (expand_asm_operands): Use mark_addressable, not
6709         lang_hooks.mark_addressable.
6710         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
6711         LANG_HOOKS_MARK_ADDRESSABLE.
6712         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
6713         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
6714
6715 2009-08-31  Chris Demetriou  <cgd@google.com>
6716
6717         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
6718         vectorize if not TARGET_SSE2.
6719
6720 2009-08-31  DJ Delorie  <dj@redhat.com>
6721
6722         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
6723         registers if no coprocessor is enabled.
6724
6725 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
6726
6727         PR debug/30161
6728         * cgraph.h (cgraph_get_node): Declare ...
6729         * cgraph.c (cgraph_get_node): ... new function.
6730         * dwarf2out.c (gen_generic_params_dies,
6731         generic_parameter_die, tree_add_const_value_attribute_for_decl,
6732         make_ith_pack_parameter_name,
6733         append_entry_to_tmpl_value_parm_die_table,
6734         gen_remaining_tmpl_value_param_die_attribute): New functions.
6735         (gen_subprogram_die): Generate debug info for template parameters
6736         if debug info level is higher than DINFO_LEVEL_TERSE.
6737         Use tree_add_const_value_attribute_for_decl instead of
6738         tree_add_const_value_attribute.
6739         (gen_const_die): Use tree_add_const_value_attribute_for_decl
6740         instead of tree_add_const_value_attribute.
6741         (gen_struct_or_union_type_die): Generate debug
6742         info for template parameters if debug info level is higher than
6743         DINFO_LEVEL_TERSE.
6744         (tree_add_const_value_attribute): Handle integral and pointer
6745         constants. Update comment.
6746         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
6747         (dwarf_attr_name): Support DW_AT_GNU_template_name.
6748         (reference_to_unused): Fix thinko. Remove redundant predicates from
6749         tests.
6750         (tree_add_const_value_attribute): Make this work for constant
6751         expressions only.
6752         tree_add_const_value_attribute_for_decl is to be used for variable
6753         DECLs now.
6754         (add_location_or_const_value_attribute): Use
6755         tree_add_const_value_attribute_for_decl now.
6756         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
6757         DW_TAG_template_value_param DIEs after function DIEs have been
6758         emitted.
6759         * langhooks.h (lang_hooks_for_types): Add
6760         get_argument_pack_elems.
6761         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
6762         (lang_hooks): Added get_innermost_generic_parms,
6763         get_innermost_generic_args.
6764         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
6765         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
6766         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
6767         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
6768
6769 2009-08-31  DJ Delorie  <dj@redhat.com>
6770
6771         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
6772         it once we start generating the prologue or epilogue.
6773         (mep_call_saves_register): If the frame is locked, re-use
6774         cached values.
6775         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
6776         (mep_expand_prologue): Call it.
6777         (mep_expand_epilogue): Likewise.
6778         (mep_start_function): Use the same logic as mep_expand_prologue.
6779         (mep_pass_by_reference): Make logic more readable.
6780         (mep_return_in_memory): Zero-sized objects are passed in memory.
6781         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
6782
6783 2009-08-31  Richard Guenther  <rguenther@suse.de>
6784
6785         * builtins.c (fold_builtin_memory_op): Use the alias oracle
6786         to query if the memory regions for memmove overlap.
6787         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
6788         asserts on pointers, instead deal with odd trees.
6789         (ptr_derefs_may_alias_p): Likewise.
6790         (refs_may_alias_p_1): Constructor bases also never alias.
6791
6792 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
6793
6794         * doc/install.texi (Final install): Adjust reference on where to
6795         order printed manuals.
6796
6797 2009-08-30  Olivier Hainque  <hainque@adacore.com>
6798
6799         * dwarf2out.c (switch_to_frame_table_section): Move
6800         definition prior to first use.
6801
6802 2009-08-30  Richard Guenther  <rguenther@suse.de>
6803
6804         PR tree-optimization/41186
6805         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
6806         (ao_ref_init_from_ptr_and_size): New function.
6807         (ref_maybe_used_by_call_p_1): Be more precise tracking
6808         used ranges for builtin functions.
6809         (ref_maybe_used_by_call_p): Adjust.
6810         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
6811         ranges for builtin functions.
6812         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
6813
6814 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
6815
6816         PR target/41081
6817         * fwprop.c (get_reg_use_in): Delete.
6818         (free_load_extend): New function.
6819         (forward_propagate_subreg): Use it.
6820
6821 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
6822
6823         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
6824
6825 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
6826
6827         PR/41184
6828         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
6829         padding.
6830
6831 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
6832
6833         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
6834         fini or fini_array section.
6835
6836 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6837
6838         * graphite-dependences.c (graphite_legal_transform_bb): Call
6839         pbb_remove_duplicate_pdrs.
6840         * graphite-poly.c (can_collapse_pdr): Removed.
6841         (pdr_find_duplicate): Removed.
6842         (can_collapse_pdrs): New.
6843         (pbb_remove_duplicate_pdrs): New.
6844         (new_poly_dr): Do not look for duplicates.
6845         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
6846         (PBB_PDR_DUPLICATES_REMOVED): New.
6847         (pbb_remove_duplicate_pdrs): Declared.
6848
6849 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6850
6851         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
6852         the strides by multiplying by PDR_NB_REFS.
6853         * graphite-poly.c (can_collapse_pdr): New.
6854         (pdr_find_duplicate): New.
6855         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
6856         Initialize PDR_NB_REFS.
6857         * graphite-poly.h (struct poly_dr): Add field nb_refs.
6858         (PDR_NB_REFS): New.
6859         (new_poly_dr): Number of subscripts is a graphite_dim_t.
6860
6861 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6862
6863         PR middle-end/40965
6864         * graphite-poly.c (apply_poly_transforms): Remove legality test before
6865         any transform.
6866
6867 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6868
6869         * graphite-dependences.c (pddr_original_scattering): Return NULL
6870         for read-read dependence relations.
6871         * graphite-poly.h (enum poly_dr_type): Fix comment.
6872         (pdr_read_p): New.
6873         (pdr_write_p): New.
6874         (pdr_may_write_p): New.
6875
6876 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6877
6878         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
6879         (struct poly_dr): Same.
6880         (new_poly_dr): Same.
6881         * graphite-poly.c (new_poly_dr): Same.
6882         * graphite-dependences.c (dot_deps): Disable call to system.
6883
6884 2009-08-28  Cary Coutant  <ccoutant@google.com>
6885
6886         PR debug/41063
6887         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
6888         struct/union/enum types local to a function.
6889
6890 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
6891             Sebastian Pop  <sebastian.pop@amd.com>
6892
6893         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
6894         pbb_strip_mine_time_depth.  Changed the implementation so that
6895         transformation is expressed as a transformation on
6896         time (scatttering) dimensions.  Also, ensures that the 2d+1
6897         scheduling format is preserved.
6898         (pbb_strip_mine_profitable_p): Profitability is based on the
6899         iteration number of a given time (scattering) dimension,
6900         and not on a original loop depth dimension.
6901         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
6902         (pbb_do_strip_mine): Call psct_dynamic_dim.
6903         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
6904         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
6905         (pbb_nb_dynamic_scattering_transform): New.
6906         (psct_dynamic_dim): New.
6907
6908 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
6909
6910         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
6911         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
6912         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
6913         * graphite-interchange.c (build_linearized_memory_access): Same.
6914         (memory_stride_in_loop): Same.
6915
6916 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6917
6918         * graphite-dependences.c (pddr_original_scattering): New.
6919         (graphite_legal_transform_dr): Call pddr_original_scattering.
6920         (dot_deps_1): New.
6921         (dot_deps): New.
6922         * graphite-dependences.h (dot_deps): Declared.
6923         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
6924         (print_pdr): Print PDR_ID.
6925         * graphite-poly.h (struct poly_dr): Add field id.
6926         (PDR_ID): New.
6927         (pbb_index): New.
6928         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
6929
6930 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6931
6932         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
6933         not delete the original dependence relation.
6934
6935 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6936
6937         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
6938         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
6939         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
6940         (free_poly_ddr): New.
6941         (pddr_is_empty): New.
6942         (dependence_polyhedron_1): Now returns a poly_ddr_p.
6943         (dependence_polyhedron): Same.  Remove useless gcc_assert.
6944         Remove fprintfs.
6945         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
6946         (graphite_carried_dependence_level_k): Call pddr_is_empty.
6947         * graphite-dependences.h (enum poly_dependence_kind): New.
6948         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
6949         (PDRP_SOURCE): Renamed PDDR_SOURCE.
6950         (PDRP_SINK): Renamed PDDR_SINK.
6951         (PDRP_DDP): Renamed PDDR_DDP.
6952         (PDDR_KIND): New.
6953         (free_poly_ddr): Declared.
6954         * graphite-poly.c (new_scop): Use the new hash function names.
6955         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
6956         into original_pddrs.
6957         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
6958
6959 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6960
6961         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
6962         bounds with LT_EXPR to make niter analysis more precise on code
6963         generated by Graphite.
6964
6965 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6966
6967         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
6968         (graphite_legal_transform_bb): Same.
6969         (poly_drs_may_alias_p): Same.
6970
6971 2009-08-28  Richard Guenther  <rguenther@suse.de>
6972
6973         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
6974
6975 2009-08-28  Jan Beulich  <jbeulich@novell.com>
6976
6977         * config/i386/netware.c: Include langhooks.h.
6978         (i386_nlm_encode_section_info): Simplify.
6979         (netware_override_options): Delete.
6980         * config/i386/netware.h (netware_override_options): Delete
6981         declaration.
6982         (OVERRIDE_OPTIONS): Delete definition.
6983         (SUBTARGET_OVERRIDE_OPTIONS): Define.
6984         (ASM_COMMENT_START): Define.
6985         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
6986
6987 2009-08-28  Jan Beulich  <jbeulich@novell.com>
6988
6989         * configure.ac: For in-tree ld, do a plain version check to
6990         determine whether comdat groups are supported.
6991         * configure: Regenerate.
6992
6993 2009-08-28  Olivier Hainque  <hainque@adacore.com>
6994
6995         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
6996         always defined.  Reflect definition or absence of such for
6997         COLLECT_EXPORT_LIST.  Readability helper.
6998         (scanfilter): New enum, to help control what symbols
6999         are to be considered or ignored by scan_prog_file.
7000         (enum pass): Rename as "scanpass", moved together with scanfilter
7001         prior to scan_prog_file's prototype.
7002         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
7003         Group prototype with the scanpass/scanfilter definitions, factorize
7004         head comments for the several implementations at the prototype.
7005         (main): Reorganize the first pass link control to let AIX
7006         drag only the needed frame tables in executables.  Prevent
7007         frame tables collection during the scan aimed at static ctors.
7008         Pre-link and scan for frame tables later to compensate.
7009         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
7010         A C statement to issue assembly directives that create a reference
7011         to the given DWARF table identifier label from the current function
7012         section.
7013         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
7014         to differentiate first time section entry.  Only emit a .data
7015         tables start identifier label the first time around.
7016         (switch_to_frame_table_section): New function.  Helper for
7017         output_call_frame_info to switch possibly BACK into the eh_frame
7018         or the debug_frame section depending on FOR_EH.
7019         (output_call_frame_info): Use helper to first enter the proper
7020         frame section.
7021         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
7022         emit a link to the frame table start label from each function
7023         section.
7024         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
7025         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
7026         * config/rs6000/rs6000-protos.h: Declare it.
7027         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
7028
7029 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
7030
7031         * config/sh/sh.c (split_branches): Check the result of
7032         next_active_insn.
7033
7034 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
7035
7036         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
7037         using -pthread -fopenmp
7038
7039 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
7040
7041         * doc/service.texi (service directory): Update URL.
7042
7043 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
7044
7045         PR rtl-optimization/40861
7046         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
7047         extract word from a multi-word subreg for negative byte positions.
7048
7049 2009-08-27  Tristan Gingold  <gingold@adacore.com>
7050             Douglas B Rupp  <rupp@gnat.com>
7051
7052         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
7053         (SECTION_VMS_OVERLAY): Define.
7054         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
7055         attribute.
7056         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
7057         for common_object.
7058         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
7059         common_object declarations.
7060         (ia64_section_type_flags): Set section flag for common_object.
7061         * config/ia64/ia64-protos.h
7062         (ia64_vms_output_aligned_decl_common): Declare.
7063         (ia64_vms_elf_asm_named_section): Declare.
7064
7065 2009-08-27  Michael Matz  <matz@suse.de>
7066
7067         * expr.c (expand_expr_real_2): New function taking exploded
7068         unary or binary expression, split out from ...
7069         (expand_expr_real_1): ... here.  Move over all unary/binary
7070         switch parts to above function, in particular these codes:
7071         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
7072         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
7073         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
7074         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
7075         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
7076         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
7077         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
7078         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
7079         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
7080         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
7081         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
7082         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
7083         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
7084         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
7085         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
7086         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
7087         VEC_PACK_FIX_TRUNC_EXPR.
7088         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
7089         full expression.
7090
7091 2009-08-27  Richard Guenther  <rguenther@suse.de>
7092
7093         * gengtype.c (main): Handle uint64_t.
7094         * ipa-utils.c (get_base_var): Indent properly.
7095         * tree-ssa-live.c (debug_scope_block): New function.
7096         * tree-flow.h (debug_scope_block): Declare.
7097         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
7098         * basic-block.h (enum profile_status): Rename to
7099         enum profile_status_d.
7100         (x_profile_status): Adjust type.
7101
7102 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
7103
7104         PR debug/41170
7105         * dwarf2out.c (get_context_die): Declare this static function.
7106         (gen_type_die_with_usage): Make sure a DIE is a generated for
7107         the context of a typedef.
7108
7109 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
7110
7111         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
7112         switch.
7113
7114 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
7115
7116         * config/mips/mips-protos.h (mips_output_sync): Declare.
7117         (mips_sync_loop_insns): Likewise.
7118         (mips_output_sync_loop): Replace first two parameters with an rtx.
7119         * config/mips/mips.c (mips_multi_member): New structure.
7120         (mips_multi_members): New variable.
7121         (mips_multi_start): New function.
7122         (mips_multi_add): Likewise.
7123         (mips_multi_add_insn): Likewise.
7124         (mips_multi_add_label): Likewise.
7125         (mips_multi_last_index): Likewise.
7126         (mips_multi_copy_insn): Likewise.
7127         (mips_multi_set_operand): Likewise.
7128         (mips_multi_write): Likewise.
7129         (mips_print_operand_punctuation): Remove '%|' and '%-'.
7130         (mips_init_print_operand_punct): Update accordingly.
7131         (mips_start_ll_sc_sync_block): New function.
7132         (mips_end_ll_sc_sync_block): Likewise.
7133         (mips_output_sync): Likewise.
7134         (mips_sync_insn1_template): Likewise.
7135         (mips_sync_insn2_template): Likewise.
7136         (mips_get_sync_operand): Likewise.
7137         (mips_process_sync_loop): Likewise.
7138         (mips_output_sync_loop): Use mips_process_sync_loop.
7139         (mips_sync_loop_insns): New function.
7140         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
7141         (MIPS_COMPARE_AND_SWAP_12): Likewise.
7142         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
7143         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
7144         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
7145         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
7146         (MIPS_SYNC_OLD_OP_12): Likewise.
7147         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
7148         (MIPS_SYNC_NEW_OP_12): Likewise.
7149         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
7150         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
7151         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
7152         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
7153         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
7154         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
7155         * config/mips/mips.md (sync_mem): New attribute.
7156         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
7157         (sync_exclusive_mask, sync_required_oldval): Likewise.
7158         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
7159         (sync_release_barrier): Likewise.
7160         (length): Handle sync loops.
7161         (sync): Use mips_output_sync.
7162         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
7163         (sync_compare_and_swap<mode>): Set the new sync_* attributes
7164         and use mips_output_sync_loop.
7165         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
7166         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
7167         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
7168         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
7169         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
7170         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
7171         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
7172         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
7173         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
7174
7175 2009-08-26  Richard Guenther  <rguenther@suse.de>
7176
7177         PR middle-end/41163
7178         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
7179         the types to not match.
7180         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
7181         verification.
7182         * tree-ssa.c (useless_type_conversion_p): Conversions to
7183         pointers to unprototyped functions are useless.
7184
7185 2009-08-26  Richard Guenther  <rguenther@suse.de>
7186
7187         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
7188         whole-program condition, prepare to be called for non-globals.
7189         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
7190         params build a representative with known type and track its fields.
7191
7192 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
7193
7194         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
7195         clearing by a taken branch.
7196         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
7197         effectively after bbro pass.
7198         (sync_nand<mode>): Ditto.
7199         (sync_old_<fetchop_name><mode>): Ditto.
7200         (sync_old_nand<mode>): Ditto.
7201         (sync_new_<fetchop_name><mode>): Dito.
7202         (sync_new_nand<mode>): Ditto.
7203         (sync_compare_and_swap<mode>_1): Ditto.
7204         (*sync_compare_and_swap<mode>): Ditto.
7205         (sync_lock_test_and_set<mode>_1): Ditto.
7206         ("sync_lock_test_and_set<mode>): Ditto.
7207
7208 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
7209
7210         * hwint.h (HOST_LONG_FORMAT): New macro
7211         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
7212         Use HOST_PTR_PRINTF.
7213         * system.h (HOST_PTR_PRINTF): Resurrect old macro
7214         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
7215         (HOST_PTR_PRINTF): Document.
7216
7217 2009-08-25 Jan Hubicka  <jh@suse.cz>
7218
7219         * config/i386/bmmintrin.h: Replace by #error.
7220
7221         Revert:
7222         Michael Meissner  <michael.meissner@amd.com>
7223         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
7224         Tony Linthicum  <tony.linthicum@amd.com>
7225
7226         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
7227         (TARGET_ROUND): New macro for the round/ptest instructions which
7228         are shared between SSE4.1 and SSE5.
7229         (OPTION_MASK_ISA_ROUND): Ditto.
7230         (OPTION_ISA_ROUND): Ditto.
7231         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
7232         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
7233
7234         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
7235         (-mfused-madd): New switch to give users control over whether the
7236         compiler optimizes to use the multiply/add SSE5 instructions.
7237
7238         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
7239         (ix86_handle_option): Turn off 3dnow if -msse5.
7240         (override_options): Add SSE5 support.
7241         (print_operand): %Y prints comparison codes for SSE5 com/pcom
7242         instructions.
7243         (ix86_expand_sse_movcc): Add SSE5 support.
7244         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
7245         vector type to the next largest size.
7246         (ix86_expand_sse5_pack): New function to use pperm to pack a
7247         vector type to the next smallest size.
7248         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
7249         (IX86_BUILTIN_FMADDSD): Ditto.
7250         (IX86_BUILTIN_FMADDPS): Ditto.
7251         (IX86_BUILTIN_FMADDPD): Ditto.
7252         (IX86_BUILTIN_FMSUBSS): Ditto.
7253         (IX86_BUILTIN_FMSUBSD): Ditto.
7254         (IX86_BUILTIN_FMSUBPS): Ditto.
7255         (IX86_BUILTIN_FMSUBPD): Ditto.
7256         (IX86_BUILTIN_FNMADDSS): Ditto.
7257         (IX86_BUILTIN_FNMADDSD): Ditto.
7258         (IX86_BUILTIN_FNMADDPS): Ditto.
7259         (IX86_BUILTIN_FNMADDPD): Ditto.
7260         (IX86_BUILTIN_FNMSUBSS): Ditto.
7261         (IX86_BUILTIN_FNMSUBSD): Ditto.
7262         (IX86_BUILTIN_FNMSUBPS): Ditto.
7263         (IX86_BUILTIN_FNMSUBPD): Ditto.
7264         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
7265         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
7266         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
7267         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
7268         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
7269         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
7270         (IX86_BUILTIN_PPERM): Ditto.
7271         (IX86_BUILTIN_PERMPS): Ditto.
7272         (IX86_BUILTIN_PERMPD): Ditto.
7273         (IX86_BUILTIN_PMACSSWW): Ditto.
7274         (IX86_BUILTIN_PMACSWW): Ditto.
7275         (IX86_BUILTIN_PMACSSWD): Ditto.
7276         (IX86_BUILTIN_PMACSWD): Ditto.
7277         (IX86_BUILTIN_PMACSSDD): Ditto.
7278         (IX86_BUILTIN_PMACSDD): Ditto.
7279         (IX86_BUILTIN_PMACSSDQL): Ditto.
7280         (IX86_BUILTIN_PMACSSDQH): Ditto.
7281         (IX86_BUILTIN_PMACSDQL): Ditto.
7282         (IX86_BUILTIN_PMACSDQH): Ditto.
7283         (IX86_BUILTIN_PMADCSSWD): Ditto.
7284         (IX86_BUILTIN_PMADCSWD): Ditto.
7285         (IX86_BUILTIN_PHADDBW): Ditto.
7286         (IX86_BUILTIN_PHADDBD): Ditto.
7287         (IX86_BUILTIN_PHADDBQ): Ditto.
7288         (IX86_BUILTIN_PHADDWD): Ditto.
7289         (IX86_BUILTIN_PHADDWQ): Ditto.
7290         (IX86_BUILTIN_PHADDDQ): Ditto.
7291         (IX86_BUILTIN_PHADDUBW): Ditto.
7292         (IX86_BUILTIN_PHADDUBD): Ditto.
7293         (IX86_BUILTIN_PHADDUBQ): Ditto.
7294         (IX86_BUILTIN_PHADDUWD): Ditto.
7295         (IX86_BUILTIN_PHADDUWQ): Ditto.
7296         (IX86_BUILTIN_PHADDUDQ): Ditto.
7297         (IX86_BUILTIN_PHSUBBW): Ditto.
7298         (IX86_BUILTIN_PHSUBWD): Ditto.
7299         (IX86_BUILTIN_PHSUBDQ): Ditto.
7300         (IX86_BUILTIN_PROTB): Ditto.
7301         (IX86_BUILTIN_PROTW): Ditto.
7302         (IX86_BUILTIN_PROTD): Ditto.
7303         (IX86_BUILTIN_PROTQ): Ditto.
7304         (IX86_BUILTIN_PROTB_IMM): Ditto.
7305         (IX86_BUILTIN_PROTW_IMM): Ditto.
7306         (IX86_BUILTIN_PROTD_IMM): Ditto.
7307         (IX86_BUILTIN_PROTQ_IMM): Ditto.
7308         (IX86_BUILTIN_PSHLB): Ditto.
7309         (IX86_BUILTIN_PSHLW): Ditto.
7310         (IX86_BUILTIN_PSHLD): Ditto.
7311         (IX86_BUILTIN_PSHLQ): Ditto.
7312         (IX86_BUILTIN_PSHAB): Ditto.
7313         (IX86_BUILTIN_PSHAW): Ditto.
7314         (IX86_BUILTIN_PSHAD): Ditto.
7315         (IX86_BUILTIN_PSHAQ): Ditto.
7316         (IX86_BUILTIN_FRCZSS): Ditto.
7317         (IX86_BUILTIN_FRCZSD): Ditto.
7318         (IX86_BUILTIN_FRCZPS): Ditto.
7319         (IX86_BUILTIN_FRCZPD): Ditto.
7320         (IX86_BUILTIN_CVTPH2PS): Ditto.
7321         (IX86_BUILTIN_CVTPS2PH): Ditto.
7322         (IX86_BUILTIN_COMEQSS): Ditto.
7323         (IX86_BUILTIN_COMNESS): Ditto.
7324         (IX86_BUILTIN_COMLTSS): Ditto.
7325         (IX86_BUILTIN_COMLESS): Ditto.
7326         (IX86_BUILTIN_COMGTSS): Ditto.
7327         (IX86_BUILTIN_COMGESS): Ditto.
7328         (IX86_BUILTIN_COMUEQSS): Ditto.
7329         (IX86_BUILTIN_COMUNESS): Ditto.
7330         (IX86_BUILTIN_COMULTSS): Ditto.
7331         (IX86_BUILTIN_COMULESS): Ditto.
7332         (IX86_BUILTIN_COMUGTSS): Ditto.
7333         (IX86_BUILTIN_COMUGESS): Ditto.
7334         (IX86_BUILTIN_COMORDSS): Ditto.
7335         (IX86_BUILTIN_COMUNORDSS): Ditto.
7336         (IX86_BUILTIN_COMFALSESS): Ditto.
7337         (IX86_BUILTIN_COMTRUESS): Ditto.
7338         (IX86_BUILTIN_COMEQSD): Ditto.
7339         (IX86_BUILTIN_COMNESD): Ditto.
7340         (IX86_BUILTIN_COMLTSD): Ditto.
7341         (IX86_BUILTIN_COMLESD): Ditto.
7342         (IX86_BUILTIN_COMGTSD): Ditto.
7343         (IX86_BUILTIN_COMGESD): Ditto.
7344         (IX86_BUILTIN_COMUEQSD): Ditto.
7345         (IX86_BUILTIN_COMUNESD): Ditto.
7346         (IX86_BUILTIN_COMULTSD): Ditto.
7347         (IX86_BUILTIN_COMULESD): Ditto.
7348         (IX86_BUILTIN_COMUGTSD): Ditto.
7349         (IX86_BUILTIN_COMUGESD): Ditto.
7350         (IX86_BUILTIN_COMORDSD): Ditto.
7351         (IX86_BUILTIN_COMUNORDSD): Ditto.
7352         (IX86_BUILTIN_COMFALSESD): Ditto.
7353         (IX86_BUILTIN_COMTRUESD): Ditto.
7354         (IX86_BUILTIN_COMEQPS): Ditto.
7355         (IX86_BUILTIN_COMNEPS): Ditto.
7356         (IX86_BUILTIN_COMLTPS): Ditto.
7357         (IX86_BUILTIN_COMLEPS): Ditto.
7358         (IX86_BUILTIN_COMGTPS): Ditto.
7359         (IX86_BUILTIN_COMGEPS): Ditto.
7360         (IX86_BUILTIN_COMUEQPS): Ditto.
7361         (IX86_BUILTIN_COMUNEPS): Ditto.
7362         (IX86_BUILTIN_COMULTPS): Ditto.
7363         (IX86_BUILTIN_COMULEPS): Ditto.
7364         (IX86_BUILTIN_COMUGTPS): Ditto.
7365         (IX86_BUILTIN_COMUGEPS): Ditto.
7366         (IX86_BUILTIN_COMORDPS): Ditto.
7367         (IX86_BUILTIN_COMUNORDPS): Ditto.
7368         (IX86_BUILTIN_COMFALSEPS): Ditto.
7369         (IX86_BUILTIN_COMTRUEPS): Ditto.
7370         (IX86_BUILTIN_COMEQPD): Ditto.
7371         (IX86_BUILTIN_COMNEPD): Ditto.
7372         (IX86_BUILTIN_COMLTPD): Ditto.
7373         (IX86_BUILTIN_COMLEPD): Ditto.
7374         (IX86_BUILTIN_COMGTPD): Ditto.
7375         (IX86_BUILTIN_COMGEPD): Ditto.
7376         (IX86_BUILTIN_COMUEQPD): Ditto.
7377         (IX86_BUILTIN_COMUNEPD): Ditto.
7378         (IX86_BUILTIN_COMULTPD): Ditto.
7379         (IX86_BUILTIN_COMULEPD): Ditto.
7380         (IX86_BUILTIN_COMUGTPD): Ditto.
7381         (IX86_BUILTIN_COMUGEPD): Ditto.
7382         (IX86_BUILTIN_COMORDPD): Ditto.
7383         (IX86_BUILTIN_COMUNORDPD): Ditto.
7384         (IX86_BUILTIN_COMFALSEPD): Ditto.
7385         (IX86_BUILTIN_COMTRUEPD): Ditto.
7386         (IX86_BUILTIN_PCOMEQUB): Ditto.
7387         (IX86_BUILTIN_PCOMNEUB): Ditto.
7388         (IX86_BUILTIN_PCOMLTUB): Ditto.
7389         (IX86_BUILTIN_PCOMLEUB): Ditto.
7390         (IX86_BUILTIN_PCOMGTUB): Ditto.
7391         (IX86_BUILTIN_PCOMGEUB): Ditto.
7392         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
7393         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
7394         (IX86_BUILTIN_PCOMEQUW): Ditto.
7395         (IX86_BUILTIN_PCOMNEUW): Ditto.
7396         (IX86_BUILTIN_PCOMLTUW): Ditto.
7397         (IX86_BUILTIN_PCOMLEUW): Ditto.
7398         (IX86_BUILTIN_PCOMGTUW): Ditto.
7399         (IX86_BUILTIN_PCOMGEUW): Ditto.
7400         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
7401         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
7402         (IX86_BUILTIN_PCOMEQUD): Ditto.
7403         (IX86_BUILTIN_PCOMNEUD): Ditto.
7404         (IX86_BUILTIN_PCOMLTUD): Ditto.
7405         (IX86_BUILTIN_PCOMLEUD): Ditto.
7406         (IX86_BUILTIN_PCOMGTUD): Ditto.
7407         (IX86_BUILTIN_PCOMGEUD): Ditto.
7408         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
7409         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
7410         (IX86_BUILTIN_PCOMEQUQ): Ditto.
7411         (IX86_BUILTIN_PCOMNEUQ): Ditto.
7412         (IX86_BUILTIN_PCOMLTUQ): Ditto.
7413         (IX86_BUILTIN_PCOMLEUQ): Ditto.
7414         (IX86_BUILTIN_PCOMGTUQ): Ditto.
7415         (IX86_BUILTIN_PCOMGEUQ): Ditto.
7416         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
7417         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
7418         (IX86_BUILTIN_PCOMEQB): Ditto.
7419         (IX86_BUILTIN_PCOMNEB): Ditto.
7420         (IX86_BUILTIN_PCOMLTB): Ditto.
7421         (IX86_BUILTIN_PCOMLEB): Ditto.
7422         (IX86_BUILTIN_PCOMGTB): Ditto.
7423         (IX86_BUILTIN_PCOMGEB): Ditto.
7424         (IX86_BUILTIN_PCOMFALSEB): Ditto.
7425         (IX86_BUILTIN_PCOMTRUEB): Ditto.
7426         (IX86_BUILTIN_PCOMEQW): Ditto.
7427         (IX86_BUILTIN_PCOMNEW): Ditto.
7428         (IX86_BUILTIN_PCOMLTW): Ditto.
7429         (IX86_BUILTIN_PCOMLEW): Ditto.
7430         (IX86_BUILTIN_PCOMGTW): Ditto.
7431         (IX86_BUILTIN_PCOMGEW): Ditto.
7432         (IX86_BUILTIN_PCOMFALSEW): Ditto.
7433         (IX86_BUILTIN_PCOMTRUEW): Ditto.
7434         (IX86_BUILTIN_PCOMEQD): Ditto.
7435         (IX86_BUILTIN_PCOMNED): Ditto.
7436         (IX86_BUILTIN_PCOMLTD): Ditto.
7437         (IX86_BUILTIN_PCOMLED): Ditto.
7438         (IX86_BUILTIN_PCOMGTD): Ditto.
7439         (IX86_BUILTIN_PCOMGED): Ditto.
7440         (IX86_BUILTIN_PCOMFALSED): Ditto.
7441         (IX86_BUILTIN_PCOMTRUED): Ditto.
7442         (IX86_BUILTIN_PCOMEQQ): Ditto.
7443         (IX86_BUILTIN_PCOMNEQ): Ditto.
7444         (IX86_BUILTIN_PCOMLTQ): Ditto.
7445         (IX86_BUILTIN_PCOMLEQ): Ditto.
7446         (IX86_BUILTIN_PCOMGTQ): Ditto.
7447         (IX86_BUILTIN_PCOMGEQ): Ditto.
7448         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
7449         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
7450         (enum multi_arg_type): New enum for describing the various SSE5
7451         intrinsic argument types.
7452         (bdesc_multi_arg): New table for SSE5 intrinsics.
7453         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
7454         (ix86_expand_multi_arg_builtin): New function for creating SSE5
7455         intrinsics.
7456         (ix86_expand_builtin): Add SSE5 intrinsic support.
7457         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
7458         operand instructions.
7459         (ix86_expand_sse5_multiple_memory): New function to split the
7460         second memory reference from SSE5 instructions.
7461         (type_has_variadic_args_p): Delete in favor of stdarg_p.
7462         (ix86_return_pops_args): Use stdarg_p to determine if the function
7463         has variable arguments.
7464         (ix86_setup_incoming_varargs): Ditto.
7465         (x86_this_parameter): Ditto.
7466
7467         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
7468         declaration.
7469         (ix86_expand_sse5_pack): Ditto.
7470         (ix86_sse5_valid_op_p): Ditto.
7471         (ix86_expand_sse5_multiple_memory): Ditto.
7472
7473         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
7474         constant for SSE5 support.
7475         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
7476         (UNSPEC_SSE5_TRUEFALSE): Ditto.
7477         (UNSPEC_SSE5_PERMUTE): Ditto.
7478         (UNSPEC_SSE5_ASHIFT): Ditto.
7479         (UNSPEC_SSE5_LSHIFT): Ditto.
7480         (UNSPEC_FRCZ): Ditto.
7481         (UNSPEC_CVTPH2PS): Ditto.
7482         (UNSPEC_CVTPS2PH): Ditto.
7483         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
7484         (PCOM_TRUE): Ditto.
7485         (COM_FALSE_S): Ditto.
7486         (COM_FALSE_P): Ditto.
7487         (COM_TRUE_S): Ditto.
7488         (COM_TRUE_P): Ditto.
7489         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
7490         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
7491         types.
7492         (memory attribute): Ditto.
7493         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
7494         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
7495         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
7496         (floor<mode>2): Ditto.
7497         (ceil<mode>2): Ditto.
7498         (btrunc<mode>2): Ditto.
7499         (nearbyintdf2): Ditto.
7500         (nearbyintsf2): Ditto.
7501         (sse_setccsf): Disable if SSE5.
7502         (sse_setccdf): Ditto.
7503         (sse5_setcc<mode>): New support for SSE5 conditional move.
7504         (sse5_pcmov_<mode>): Ditto.
7505
7506         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
7507         (SSEMODEF4): Ditto.
7508         (SSEMODEF2P): Ditto.
7509         (ssemodesuffixf4): New mode attribute for SSE5.
7510         (ssemodesuffixf2s): Ditto.
7511         (ssemodesuffixf2c): Ditto.
7512         (sserotatemax): Ditto.
7513         (ssescalarmode): Ditto.
7514         (sse_maskcmpv4sf3): Disable if SSE5.
7515         (sse_maskcmpv2df3): Ditto.
7516         (sse_vmmaskcmpv4sf3): Ditto.
7517         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
7518         (sse5_vmfmadd<mode>4): Ditto.
7519         (sse5_fmsub<mode>4): Ditto.
7520         (sse5_vmfmsub<mode>4): Ditto.
7521         (sse5_fnmadd<mode>4): Ditto.
7522         (sse5_vmfnmadd<mode>4): Ditto.
7523         (sse5_fnmsub<mode>4): Ditto.
7524         (sse5_vmfnmsub<mode>4): Ditto.
7525         (sse5i_fmadd<mode>4): Ditto.
7526         (sse5i_fmsub<mode>4): Ditto.
7527         (sse5i_fnmadd<mode>4): Ditto.
7528         (sse5i_fnmsub<mode>4): Ditto.
7529         (sse5i_vmfmadd<mode>4): Ditto.
7530         (sse5i_vmfmsub<mode>4): Ditto.
7531         (sse5i_vmfnmadd<mode>4): Ditto.
7532         (sse5i_vmfnmsub<mode>4): Ditto.
7533         (mulv16qi3): Add SSE5 support.
7534         (mulv4si3): Ditto.
7535         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
7536         (sse2_mulv4si3): Disable if SSE5.
7537         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
7538         (sse4_1_roundps): Ditto.
7539         (sse4_1_roundsd): Ditto.
7540         (sse4_1_roundss): Ditto.
7541         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
7542         be generated.
7543         (sse_maskcmpsf3): Ditto.
7544         (sse_vmmaskcmpv4sf3): Ditto.
7545         (sse2_maskcmpv2df3): Ditto.
7546         (sse2_maskcmpdf3): Ditto.
7547         (sse2_vmmaskcmpv2df3): Ditto.
7548         (sse2_eq<mode>3): Ditto.
7549         (sse2_gt<mode>3): Ditto.
7550         (sse5_pcmov_<mode>): Add SSE5 support.
7551         (vec_unpacku_hi_v16qi): Ditto.
7552         (vec_unpacks_hi_v16qi): Ditto.
7553         (vec_unpacku_lo_v16qi): Ditto.
7554         (vec_unpacks_lo_v16qi): Ditto.
7555         (vec_unpacku_hi_v8hi): Ditto.
7556         (vec_unpacks_hi_v8hi): Ditto.
7557         (vec_unpacku_lo_v8hi): Ditto.
7558         (vec_unpacks_lo_v8hi): Ditto.
7559         (vec_unpacku_hi_v4si): Ditto.
7560         (vec_unpacks_hi_v4si): Ditto.
7561         (vec_unpacku_lo_v4si): Ditto.
7562         (vec_unpacks_lo_v4si): Ditto.
7563         (sse5_pmacsww): New SSE5 intrinsic insn.
7564         (sse5_pmacssww): Ditto.
7565         (sse5_pmacsdd): Ditto.
7566         (sse5_pmacssdd): Ditto.
7567         (sse5_pmacssdql): Ditto.
7568         (sse5_pmacssdqh): Ditto.
7569         (sse5_pmacsdqh): Ditto.
7570         (sse5_pmacsswd): Ditto.
7571         (sse5_pmacswd): Ditto.
7572         (sse5_pmadcsswd): Ditto.
7573         (sse5_pmadcswd): Ditto.
7574         (sse5_pcmov_<move>): Conditional move support on SSE5.
7575         (sse5_phaddbw): New SSE5 intrinsic insn.
7576         (sse5_phaddbd): Ditto.
7577         (sse5_phaddbq): Ditto.
7578         (sse5_phaddwd): Ditto.
7579         (sse5_phaddwq): Ditto.
7580         (sse5_phadddq): Ditto.
7581         (sse5_phaddubw): Ditto.
7582         (sse5_phaddubd): Ditto.
7583         (sse5_phaddubq): Ditto.
7584         (sse5_phadduwd): Ditto.
7585         (sse5_phadduwq): Ditto.
7586         (sse5_phaddudq): Ditto.
7587         (sse5_phsubbw): Ditto.
7588         (sse5_phsubwd): Ditto.
7589         (sse5_phsubdq): Ditto.
7590         (sse5_pperm): Ditto.
7591         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
7592         (sse5_pperm_zero_v16qi_v8hi): Ditto.
7593         (sse5_pperm_sign_v8hi_v4si): Ditto.
7594         (sse5_pperm_zero_v8hi_v4si): Ditto.
7595         (sse5_pperm_sign_v4si_v2di): Ditto.
7596         (sse5_pperm_sign_v4si_v2di): Ditto.
7597         (sse5_pperm_pack_v2di_v4si): Ditto.
7598         (sse5_pperm_pack_v4si_v8hi): Ditto.
7599         (sse5_pperm_pack_v8hi_v16qi): Ditto.
7600         (sse5_perm<mode>): New SSE5 intrinsic insn.
7601         (rotl<mode>3): Ditto.
7602         (sse5_rotl<mode>3): Ditto.
7603         (sse5_ashl<mode>3): Ditto.
7604         (sse5_lshl<mode>3): Ditto.
7605         (sse5_frcz<mode>2): Ditto.
7606         (sse5s_frcz<mode>2): Ditto.
7607         (sse5_cvtph2ps): Ditto.
7608         (sse5_cvtps2ph): Ditto.
7609         (sse5_vmmaskcmp<mode>3): Ditto.
7610         (sse5_com_tf<mode>3): Ditto.
7611         (sse5_maskcmp<mode>3): Ditto.
7612         (sse5_maskcmp_uns<mode>3): Ditto.
7613         (sse5_maskcmp_uns2<mode>3): Ditto.
7614         (sse5_pcom_tf<mode>3): Ditto.
7615
7616         * config/i386/predicates.md (sse5_comparison_float_operator):
7617         New predicate to match the comparison operators supported by
7618         the SSE5 com instruction.
7619         (ix86_comparison_int_operator): New predicate to match just the
7620         signed int comparisons.
7621         (ix86_comparison_uns_operator): New predicate to match just the
7622         unsigned int comparisons.
7623
7624         * doc/invoke.texi (-msse5): Add documentation.
7625         (-mfused-madd): Ditto.
7626
7627         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
7628
7629         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
7630         mmintrin-common.h.
7631         (x86_64-*-*): Ditto.
7632
7633         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
7634
7635         * config/i386/bmmintrin.h: New file, provide common x86 compiler
7636         intrinisics for SSE5.
7637
7638         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
7639         mmintrin-common.h.
7640
7641         * config/i386/mmintrin-common.h: New file, to contain common
7642         instructions between SSE4.1 and SSE5.
7643
7644         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
7645         FOREACH_FUNCTION_ARGS to iterate over the argument list.
7646         (gen_regparm_prefix): Ditto.
7647
7648         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
7649         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
7650         prototype_p to determine if a function is prototyped.
7651
7652 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
7653
7654         * c-common.c (c_common_reswords) add the alignof keyword,
7655         with same RID as __alignof and __alignof__
7656
7657 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
7658
7659         * hooks.h (hook_bool_const_int_const_int_true): Declare.
7660         * hooks.c (hook_bool_const_int_const_int_true): New function.
7661         * target.h (struct gcc_target): Add can_eliminate field.
7662         * target-def.h (TARGET_CAN_ELIMINATE): Define.
7663         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
7664         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
7665         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
7666         (elim_table): Revise comment.
7667         * system.h (CAN_ELIMINATE): Poison.
7668         * defaults.h (CAN_ELIMINATE): Remove.
7669         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
7670
7671         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
7672         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
7673         Define macro.
7674         (alpha_vms_can_eliminate): Declare as static, change return type to
7675         bool.
7676         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
7677
7678         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
7679         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
7680         (arm_can_eliminate): New function.
7681
7682         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
7683         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
7684         (avr_can_eliminate): Declare as static.
7685         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
7686
7687         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
7688         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
7689         (bfin_can_eliminate): New function.
7690
7691         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
7692         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
7693         (crx_can_eliminate): New function.
7694
7695         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
7696         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
7697         (fr30_can_eliminate): New function.
7698
7699         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
7700         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
7701         (frv_can_eliminate): New function.
7702
7703         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
7704         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
7705         (h8300_can_eliminate): New function.
7706
7707         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
7708         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
7709         (i386_can_eliminate): Declare as static, change return type to bool.
7710         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
7711
7712         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
7713         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
7714         (ia64_can_eliminate): New function.
7715
7716         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
7717         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
7718         (iq2000_can_eliminate): New function.
7719
7720         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
7721         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
7722         (m32r_can_eliminate): New function.
7723
7724         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
7725         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
7726         (m68hc11_can_eliminate): New function.
7727
7728         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
7729         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
7730         (m68k_can_eliminate): New function.
7731
7732         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
7733         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
7734         (mep_can_eliminate): New function.
7735
7736         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
7737         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
7738         (mips_can_eliminate): New function.
7739
7740         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
7741         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
7742         (rs6000_can_eliminate): New function.
7743
7744         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
7745         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
7746         (s390_can_eliminate): Declare as static.
7747         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
7748
7749         * config/score/score.h (CAN_ELIMINATE): Remove macro.
7750         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
7751         (score_can_eliminate): New function.
7752
7753         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
7754         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
7755         (sparc_can_eliminate): Declare as static.
7756         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
7757
7758         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
7759         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
7760         (xstormy16_can_eliminate): New function.
7761
7762         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
7763         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
7764         (v850_can_eliminate): New function.
7765
7766 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
7767
7768         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
7769         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
7770         (*movdfcc_ext[1234]): Disable for IEEE mode.
7771
7772 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
7773
7774         * gimplify.c (prepare_gimple_addressable): New static function.
7775         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
7776         it addressable.
7777         (gimplify_addr_expr): Invoke it similarly on the operand instead of
7778         manually fiddling with it.
7779
7780 2009-08-25  Michael Matz  <matz@suse.de>
7781
7782         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
7783         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
7784         full expression.
7785         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
7786         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
7787         (do_jump): Split out code for simple binary comparisons into ...
7788         (do_jump_1): ... this, taking the individual operands and code.
7789         Change callers to helper function above accordingly.
7790         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
7791         comparisons.
7792
7793 2009-08-25  Michael Matz  <matz@suse.de>
7794
7795         * expr.h (struct separate_ops, sepops): New type for passing
7796         around an exploded simple expression.
7797         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
7798         Use this structure instead of expression tree.
7799         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
7800         expression, only its type.
7801         (expand_vec_cond_expr): Take type and individual operands instead
7802         of full expression.
7803         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
7804         expand_vec_shift_expr): Change prototype accordingly.
7805         * tree-vect-stmts.c (vectorizable_condition): Change call of
7806         expand_vec_cond_expr_p to pass only type.
7807         * expr.c (do_store_flags): Change prototype and implementation
7808         to take an exploded expression.
7809         (expand_expr_real_1): New local ops initialized with details
7810         of the full expression.  Use it instead of full
7811         expression in calls to do_store_flags, expand_vec_cond_expr,
7812         expand_widen_pattern_expr and expand_vec_shift_expr.
7813
7814 2009-08-25  Michael Matz  <matz@suse.de>
7815
7816         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
7817         treeop2 initialized with first three operands of the full expression.
7818         Substitute all TREE_OPERAND (exp, [012]) calls with them.
7819
7820 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
7821
7822         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
7823         (__gthread_objc_condition_allocate): Mark arguments as unused.
7824         (__gthread_objc_condition_deallocate): Likewise.
7825         (__gthread_objc_condition_wait): Likewise.
7826         (__gthread_objc_condition_broadcast): Likewise.
7827         (__gthread_objc_condition_signal): Likewise.
7828         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
7829         (__gthread_objc_thread_id): Likewise.
7830
7831 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
7832
7833         PR middle-end/41149
7834         * tree-pretty-print.c (print_call_name): Print the correct call name
7835         for procedure pointer components.
7836
7837 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
7838
7839         * config/ia64/ia64.c (ia64_promote_function_mode): Call
7840         default_promote_function_mode when not VMS.
7841
7842 2009-08-24  Olivier Hainque  <hainque@adacore.com>
7843
7844         * convert.c (convert_to_integer): Don't assume an input pointer is
7845         POINTER_SIZE wide.  Fetch from the type instead.
7846
7847 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7848
7849         * configure.ac (AC_PREREQ): Bump to 2.64.
7850
7851 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
7852
7853         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
7854         (process_command): Don't search standard_exec_prefix_1 and
7855         standard_exec_prefix_2.
7856
7857 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7858
7859         * config/arm/arm.c (output_return_instruction): Handle for
7860         unified syntax.
7861
7862 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7863
7864         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
7865
7866 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7867
7868         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
7869         (*arm_movdf_vfp): Likewise.
7870
7871 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7872
7873         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
7874         (vashr<mode>3): Rename from ashr<mode>3.
7875         (vlshr<mode>3): Rename from lshr<mode>3.
7876
7877 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
7878
7879         PR/40786
7880         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
7881         (check_format_info_main): Use scalar_identify_flag.
7882         (check_format_types): Check for scalar size identity if
7883         scalar_identify_flag is set.
7884         (printf_length_specs): Extend by new field.
7885         (asm_fprintf_length_specs): Likewise.
7886         (gcc_diag_length_specs): Likewise.
7887         (scanf_length_specs): Likewise.
7888         (strfmon_length_specs): Likewise.
7889         (gcc_gfc_length_specs): Likewise.
7890         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
7891         (ms_printf_flag_specs): Likewise.
7892         * c-format.h (format_length_info): Add new member scalar_identity_flag.
7893
7894 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
7895
7896         PR target/40718
7897         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
7898         (*call_value_pop_1): Ditto.
7899         (*sibcall_pop_1): New insn pattern.
7900         (*sibcall_value_pop_1): Ditto.
7901
7902 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
7903
7904         PR target/41081
7905         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
7906         ashrsi3_64): New.
7907
7908 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
7909
7910         PR target/41081
7911         * fwprop.c (try_fwprop_subst): Allow multiple sets.
7912         (get_reg_use_in): New function.
7913         (forward_propagate_subreg): Propagate through subreg of zero_extend
7914         or sign_extend.
7915
7916 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
7917
7918         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
7919         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
7920
7921 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7922
7923         * configure.ac: Remove --with-datarootdir, --with-docdir,
7924         --with-htmldir switches.  No need to call AC_SUBST for
7925         datarootdir, docdir, htmldir any more.
7926         * configure: Regenerate.
7927         * doc/install.texi (Configuration): Document --datarootdir,
7928         --docdir, --htmldir, --pdfdir; update documentation for
7929         --infodir, --mandir.
7930         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
7931         M4 to 1.4.6.
7932
7933         * aclocal.m4: Regenerate.
7934         * config.in: Regenerate.
7935         * configure: Regenerate.
7936
7937 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
7938             Olivier Hainque  <hainque@adacore.com>
7939
7940         * config/ia64/ia64.c: Include libfuncs.h.
7941         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
7942         (ia64_expand_call): Use reg 25 on VMS.
7943         (ia64_initialize_trampoline): Fix for VMS ABI.
7944         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
7945         (ia64_function_arg): Initialize reg 25 on VMS.
7946         Fix OpenVMS ABI issues for varargs.
7947         For OpenVMS, emit the Argument Information register set in the
7948         incoming/sibcall case as well.
7949         (ia64_arg_type): New function.
7950         (ia64_function_arg_advance): Keep track of cum->words.
7951         Fix OpenVMS ABI issues for varargs.
7952         (ia64_function_value): On VMS, promote mode of non-aggregate types.
7953         (ia64_override_options): Set flag_no_common on VMS.
7954         (ia64_init_builtins): Disable FWRITE builtin.
7955         (ia64_asm_output_external): Call DO_CRTL_NAMES.
7956         (ia64_vms_init_libfuncs): Add decc$ routines.
7957         (ia64_vms_valid_pointer_mode): New function.
7958         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
7959         (ia64_promote_function_mode): New function
7960         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
7961         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
7962         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
7963         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
7964         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
7965         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
7966         Suppress trailing '#' if VALUE is numeric.
7967         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
7968         ia64_promote_function_mode.
7969         (TARGET_VALID_POINTER_MODE): Define.
7970
7971 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
7972
7973         PR target/40671
7974         * config/rs6000/rs6000.c (rs6000_override_options): Use
7975         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
7976
7977         PR target/41145
7978         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
7979         reporting of vector + decimal/boolean/complex error.
7980
7981 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
7982
7983         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
7984         __vector double TYPE_DECL.
7985
7986 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
7987
7988         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
7989         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
7990         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
7991         to pointer to enum machine_mode.  Update all callers as needed.
7992
7993 2009-08-21 Uros Bizjak <ubizjak@gmail.com>
7994
7995         * config/alpha/alpha.md (exception_receiver): Emit alternative
7996         GP load sequence if flag_reorder_blocks_and_partition is set.
7997         (*exception_receiver_2): Also enable when
7998         flag_reorder_blocks_and_partition is set.
7999
8000 2009-08-20  Matt Rice  <ratmice@gmail.com>
8001             Diego Novillo  <dnovillo@google.com>
8002
8003         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
8004         tree-ssa-sccvn.h.
8005
8006 2009-08-20  Richard Guenther  <rguenther@suse.de>
8007
8008         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
8009         * c-tree.h (c_dup_lang_specific_decl): Remove.
8010         (struct lang_decl, struct lang_type): Move definitions ...
8011         * c-lang.h: ... here.  New file.
8012         * c-decl.c: Include c-lang.h.
8013         (c_dup_lang_specific_decl): Remove.
8014         * c-typeck.c: Include c-lang.h.
8015         * Makefile.in (c-decl.o): Add c-lang.h dependency.
8016         (c-typeck.o): Likewise.
8017         * c-config-lang.in (gtfiles): Add c-lang.h.
8018         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
8019         like c-tree.h.
8020
8021 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
8022
8023         * config/alpha/alpha.c (alpha_end_function): Do not clear
8024         crtl->emit structure and free insn locators if cfun->is_thunk is true,
8025         this is now handled in generic code.
8026
8027 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
8028
8029         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
8030         (s390_z10_fix_long_loop_prediction): New function.
8031         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
8032         (s390_reorg): Walk over the INSNs and invoke
8033         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
8034
8035 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
8036
8037         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
8038         "*brx_64bit", "*brx_31bit"): New patterns.
8039         * config/s390/s390.c ('E'): New output modifier.
8040
8041 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
8042             Richard Earnshaw  <richard.earnshaw@arm.com>
8043
8044         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
8045         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
8046
8047 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8048
8049         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
8050         patterns.
8051         * pa.c (emit_move_sequence): Check if address of operand1 is valid
8052         for mode mode of operand0 when doing secondary reload for SAR.
8053
8054 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
8055
8056         PR middle-end/41123
8057         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
8058         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
8059
8060 2009-08-19  Jason Merrill  <jason@redhat.com>
8061
8062         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
8063         supported template depth in C++0x.
8064
8065 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
8066
8067         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
8068         free_after_compilation.
8069         * config/score/score7.c (score7_output_mi_thunk): Likewise.
8070         * config/score/score3.c (score3_output_mi_thunk): Likewise.
8071         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
8072         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
8073         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
8074         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
8075         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
8076
8077 2009-08-19  Ian Lance Taylor  <iant@google.com>
8078
8079         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
8080         of (plus (mult (neg B) C) A).
8081
8082 2009-08-18  Michael Matz  <matz@suse.de>
8083
8084         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
8085         instead of comparing TYPE_MAIN_VARIANT for equality.
8086         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
8087         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
8088         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
8089         * gimplify.c (goa_lhs_expr_p): Ditto and use
8090         STRIP_USELESS_TYPE_CONVERSION.
8091
8092 2009-08-18  Michael Matz  <matz@suse.de>
8093
8094         * tree-ssa-structalias.c (create_variable_info_for): Also mark
8095         first field in a struct.
8096         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
8097
8098 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
8099
8100         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
8101         locators before emit_insn is called.  Remove assert that
8102         cfun->is_thunk.
8103         (alpha_end_function): Clear crtl->emit structure and free insn
8104         locators if cfun->is_thunk is true.
8105
8106 2009-08-18  Jason Merrill  <jason@redhat.com>
8107
8108         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
8109         type if available.
8110         * configure.ac: Test for it.
8111         * configure, config.in: Regenerate.
8112         * doc/install.texi: Document --enable-gnu-unique-object.
8113
8114 2009-08-18  Richard Guenther  <rguenther@suse.de>
8115
8116         PR middle-end/41094
8117         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
8118         pow(x,y*z) only if x is nonnegative.
8119
8120 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
8121
8122         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
8123         on jumps.
8124
8125         PR target/40971
8126         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
8127         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
8128
8129 2009-08-17  DJ Delorie  <dj@redhat.com>
8130
8131         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
8132         * config/m32c/prologue.md (epilogue_freit): New.
8133         (fset_b): New.
8134         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
8135         (bank_switch_p): Likewise.
8136         (fast_interrupt_p): Likewise.
8137         (interrupt_p): Likewise.
8138         (m32c_conditional_register_usage): Round memregs size up.
8139         (need_to_save): We only need to save $a0 when we use ENTER.
8140         (interrupt_p): Check for fast_interrupt too.
8141         (bank_switch_p): New.
8142         (fast_interrupt_p): New.
8143         (m32c_attribute_table): Add bank_switch and fast_interrupt.
8144         (m32c_emit_prolog): Support bank switching and fast interrupts.
8145         * doc/extend.texi (Function Attributes): Add bank_switch and
8146         fast_interrupt.
8147
8148 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
8149
8150         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
8151         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
8152
8153 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
8154
8155         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
8156         (menu): Add IA-64/VMS Options.
8157         (IA-64/VMS Options): Likewise.
8158
8159 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
8160
8161         PR target/38599
8162         * config/mips/mips.md (*lwxs): Use :P for pointer values.
8163
8164 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
8165
8166         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
8167         (mips_pop_asm_switch): Likewise.
8168         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
8169         with...
8170         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
8171         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
8172         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
8173         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
8174         instead of set_noreorder.
8175         (mips_output_function_prologue): Use the new functions.
8176         (mips_output_function_epilogue): Likewise.
8177         (mips_need_noat_wrapper_p): New function, split out from...
8178         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
8179         Use mips_push_asm_switch and mips_pop_asm_switch.
8180         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
8181         and mips_pop_asm_switch.
8182         (ASM_OUTPUT_REG_POP): Likewise.
8183         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
8184         Use mips_pop_asm_switch.
8185         (mips_asm_switch): New structure.
8186         (set_noreorder, set_nomacro): Replace with...
8187         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
8188         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
8189         instead of set_nomacro.
8190         (fix_truncsfsi2_macro): Likewise.
8191         (cprestore): Likewise.
8192         (hazard): Use mips_noreorder instead of set_noreorder.
8193         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
8194
8195 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
8196
8197         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
8198         from prev_active_insn.
8199
8200 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
8201
8202         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
8203         * config/avr/avr.c (avr_override_options): Initialize
8204         avr_current_arch variable.
8205         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
8206         __AVR_HAVE_16BIT_SP__ according to the device type.
8207         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
8208         TARGET_TINY_STACK.
8209         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
8210         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
8211
8212 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
8213
8214         PR debug/37801
8215         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
8216         generating inlined subroutine die only. We shouldn't be
8217         called for anything else.
8218         (gen_block_die): Don't generate inline subroutine debug info for
8219         abstract blocks.
8220
8221 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
8222
8223         * graphite-poly.c (print_pbb): Print PBB index.
8224
8225 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
8226
8227         PR middle-end/40981
8228         * graphite-interchange.c (ppl_max_for_le): Moved...
8229         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
8230         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
8231         ppl_Pointset_Powerset_C_Polyhedron_maximize.
8232         * graphite-ppl.h (ppl_max_for_le): Declared.
8233
8234 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
8235
8236         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
8237         supported on all platforms.
8238         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
8239         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
8240         * c-pragma.c: Likewise.
8241         * target-def.h (TARGET_INITIALIZER): Remove
8242         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
8243         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
8244
8245 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
8246
8247         * config/ia64/fde-vms.c: New file.
8248         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
8249         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
8250         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
8251         (uw_frame_state_for): Only register a personality routine if it is
8252         known to be compatible with our expectations.
8253         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
8254         Declare unw_table_entry stack variable and
8255         mod all calls to _Unwind_FindTableEntry to add arg.
8256         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
8257         (_Unwind_FindTableEntry): Add arg to prototype.
8258
8259 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
8260
8261         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
8262         field 'signal_pfs_loc'.
8263         (uw_frame_state_for): Remove duplicate code dealing with leaf
8264         procedures without unwind info.
8265         If in the frame after unwinding through a signal handler, restore
8266         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
8267         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
8268         'pfs_loc' to the AR.PFS location in the signal context; instead
8269         set 'signal_pfs_loc'.
8270         Manually generate the unwind info for the AR.PFS register.
8271         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
8272         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
8273         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
8274         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
8275         instead set 'signal_pfs_loc'.
8276         Remove code preventing the AR.PFS register from being restored
8277         from the signal context.
8278
8279 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
8280             Tristan Gingold  <gingold@adacore.com>
8281
8282         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
8283         * config/ia64/t-vms: New file.
8284         * config/ia64/vms64.h: New file.
8285         * config/ia64/vms.h: New file.
8286         * config/ia64/vms-crtinit.asm: New file.
8287         * config/ia64/vms_symvec_libgcc_s.opt: New file.
8288         * config/ia64/vms-unwind.h: New file.
8289
8290 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
8291
8292         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
8293         TFmode compares.
8294
8295 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8296
8297         PR middle-end/30789
8298         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
8299         Move declaration...
8300         * real.h (do_mpc_arg2): ... here.
8301         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
8302         and RDIV_EXPR.
8303
8304 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
8305
8306         * final.c (add_debug_prefix_map): Don't use GC memory for
8307         old_prefix and new_prefix.
8308
8309 2009-08-14  Richard Guenther  <rguenther@suse.de>
8310
8311         * ipa-prop.c (compute_complex_pass_through): If we cannot
8312         compute a non-varying offset for IPA_JF_ANCESTOR punt.
8313
8314 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8315
8316         * c-lex.c (c_lex_with_flags): Increase size of local variable
8317         to avoid memory clobber.
8318
8319 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
8320
8321         PR target/40934
8322         * config/i386/i386.c (ix86_fp_comparison_strategy):
8323         Only enable/disable sahf at function granularity.
8324
8325 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
8326
8327         PR rtl-optimization/41064
8328         * reload1.c (reload_as_needed): Don't call extract_insn
8329         for known invalid replacements after calling
8330         validate_replace_rtx_group and verify_changes.
8331
8332 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
8333
8334         PR target/41019
8335         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
8336         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
8337         ix86_expand_fp_vcond.
8338         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
8339         Assert that operation is supported by ix86_expand_int_vcond.
8340         (vcondu<SSEMODE124C8:mode>): Ditto.
8341
8342 2009-08-13  DJ Delorie  <dj@redhat.com>
8343
8344         * config/i386/djgpp-stdint.h: New.
8345         * config.gcc (djgpp): Use it.
8346
8347 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
8348
8349         * config/sh/sh.c (sh_override_options): When flag_exceptions or
8350         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
8351
8352 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
8353
8354         * tree-ssa-loop-prefetch.c
8355         (prune_ref_by_group_reuse): Enhance probabilistic analysis
8356         for long-stride pruning.
8357         (compute_miss_rate): New function to compute the probability
8358         that two memory references access different cache lines.
8359
8360 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
8361
8362         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
8363
8364 2009-08-13  Richard Guenther  <rguenther@suse.de>
8365
8366         PR middle-end/41047
8367         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
8368         use the constant pointer type.
8369         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
8370         of CV qualifiers on the target pointer type.
8371         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
8372         conversion check before restrict check.
8373
8374 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
8375
8376         PR target/41029
8377         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
8378
8379 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
8380
8381         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
8382
8383 2009-08-12  Richard Guenther  <rguenther@suse.de>
8384
8385         PR tree-optimization/41011
8386         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
8387         and reference constructing.
8388
8389 2009-08-12  Xinliang David Li  <davidxl@google.com>
8390
8391         PR tree-optimization/41012
8392         * tree-flow.h : New external interface.
8393         * gimple-low.c (check_call_arg): Change to public function.
8394         Remove argument mismatch check in lowering.
8395         * tree-inline.h (tree_can_inline_p): Interface change.
8396         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
8397         into this function.
8398         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
8399         Call change to tree_can_inline_p function.
8400         (cgraph_decide_inlining_incrementally): Ditto.
8401
8402 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
8403
8404         PR tree-optimization/41031
8405         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
8406         on the partition variable rather than promote_mode on the source
8407         type.  Assert that the partition variable's type has the same
8408         mode as the source value's.
8409
8410 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
8411
8412         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
8413         for for_return == 2.
8414         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
8415         comments.
8416         * calls.c (expand_call): Fix typo.
8417         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
8418         and PARM_DECL.
8419         * stmt.c (expand_value_return): Use promote_function_mode to copy out
8420         of pseudo.
8421         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
8422         * config/cris/cris.c (cris_promote_function_mode): Likewise.
8423         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
8424         * config/pa/pa.c (pa_promote_function_mode): Likewise.
8425
8426 2009-08-12  Andrew Haley  <aph@redhat.com>
8427
8428         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
8429
8430 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8431
8432         PR bootstrap/40103
8433         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
8434
8435 2009-08-12  Richard Guenther  <rguenther@suse.de>
8436
8437         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
8438         * gimplify.c (gimplify_modify_expr): Do not use
8439         lang_hooks.types_compatible_p.
8440         * tree-ssa.c (useless_type_conversion_p): For aggregates
8441         just return false if the canonical types differ.
8442
8443 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8444
8445         PR middle-end/40980
8446         * sese.c (convert_for_phi_arg): New.
8447         (add_guard_exit_phis): Use convert_for_phi_arg.
8448
8449 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8450
8451         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
8452         unknown subscript upper bounds.
8453
8454 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8455             Pranav Garg  <pranav.garg2107@gmail.com>
8456
8457         * graphite-interchange.c (gather_access_strides): Removed.
8458         (ppl_max_for_le): New.
8459         (build_linearized_memory_access): New.
8460         (memory_stride_in_loop): New.
8461         (pbb_interchange_profitable_p): Reimplemented.
8462         * graphite-ppl.h (ppl_new_id_map): New.
8463         (ppl_interchange): New.
8464
8465 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8466
8467         * graphite-interchange.c (compute_subscript): Removed.
8468         (compute_array_size_cstr): Removed.
8469         (compute_array_size_poly): Removed.
8470         (compute_array_size): Removed.
8471         (gather_access_strides_poly): Removed.
8472         (gather_access_strides): Empty.
8473
8474 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8475
8476         * graphite-dependences.c (dependence_polyhedron_1): Replace
8477         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
8478         (graphite_legal_transform_dr): Same.
8479         (graphite_carried_dependence_level_k): Same.
8480         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
8481         Initialize PDR_NB_SUBSCRIPTS.
8482         (print_pdr_access_layout): Replace pdr_nb_subscripts with
8483         PDR_NB_SUBSCRIPTS.
8484         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
8485         (PDR_NB_SUBSCRIPTS): New.
8486         (pdr_nb_subscripts): Removed.
8487         (pdr_dim): Simplified.
8488         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
8489         with PDR_NB_SUBSCRIPTS.
8490
8491 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8492
8493         * graphite-interchange.c (compute_array_size): Remove use of
8494         PDR_DATA_CONTAINER.
8495         * graphite-poly.c (new_poly_dr): Remove argument data_container.
8496         Do not initialize PDR_DATA_CONTAINER.
8497         (print_pdr): Do not print PDR_DATA_CONTAINER.
8498         * graphite-poly.h (struct poly_dr): Remove data_container field.
8499         (PDR_DATA_CONTAINER): Removed.
8500         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
8501         PDR_DATA_CONTAINER.
8502         (build_poly_dr): Same.
8503
8504 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
8505             Sebastian Pop  <sebastian.pop@amd.com>
8506
8507         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
8508         copy of the dependence polyhedron.  Free the temporary objects.
8509         (graphite_carried_dependence_level_k): Free unused objects before
8510         returning.
8511
8512 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8513
8514         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
8515         Early return without analyzing the data dependences if no
8516         transform has been done.  Call restore_scattering if the transform
8517         is not legal.
8518         (graphite-interchange.c): Same.
8519         * graphite-poly.c (print_scattering_function): Test for
8520         PBB_TRANSFORMED.
8521         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
8522         (apply_poly_transforms): Do not gcc_assert that
8523         the transform is legal.
8524         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
8525         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
8526         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
8527         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
8528         * graphite-poly.h (struct poly_scattering): New.
8529         (struct poly_bb): Add original, transformed, and saved fields.
8530         Remove transformed_scattering, original_scattering,
8531         nb_local_variables and nb_scattering_transform fields.
8532         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
8533         (poly_scattering_new): New.
8534         (poly_scattering_free): New.
8535         (poly_scattering_copy): New.
8536         (store_scattering_pbb): New.
8537         (store_scattering): New.
8538         (restore_scattering_pbb): New.
8539         (restore_scattering): New.
8540         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
8541         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
8542
8543 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8544
8545         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
8546         (print_scop): Same.
8547
8548 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8549
8550         * Makefile.in (graphite.o): Depends on PREDICT_H.
8551         * graphite.c: Include predict.h.
8552         (graphite_finalize): Call tree_estimate_probability.
8553         * predict.c (predict_loops): Do not call scev_initialize and
8554         scev_finalize.
8555         (tree_estimate_probability_bb): New.
8556         (tree_estimate_probability): Do not initialize loops: move that
8557         code to the driver.  Call tree_estimate_probability_bb.
8558         (tree_estimate_probability_driver): New.
8559         (pass_profile): Use tree_estimate_probability_driver.
8560         * predict.h (tree_estimate_probability): Declared.
8561
8562 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8563
8564         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
8565         * graphite-dependences.c (graphite_legal_transform): Add time to
8566         TV_GRAPHITE_DATA_DEPS.
8567         (dependency_between_pbbs_p): Same.
8568         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
8569
8570 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
8571
8572         PR rtl-optimization/41033
8573         * alias.c (nonoverlapping_component_refs_p): Punt when strict
8574         aliasing is disabled.
8575
8576 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
8577
8578         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
8579         si_mask_operand, and_load_operand, low_bitmask_operand,
8580         and_reg_operand, and_operand): New predicates.
8581         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
8582         * config/mips/mips.c (and_operands_ok): New function.
8583         * config/mips/mips-protos.h (and_operands_ok): Declare it.
8584         * config/mips/mips.md (move_type): Add ext_ins and logical.
8585         (type): Handle them.
8586         (and<mode>3): Use and_reg_operand as the second operand's predicate.
8587         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
8588         shift_shift.  Remove commutative constraint modifier.
8589         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
8590         shift_shift.
8591         (*clear_upper32_dext): Remove define_insn_and_split.
8592         (*clear_upper32): Turn this define_insn_and_split ...
8593         (splitter for ANDing register with 0xffff_ffff): .. into this.
8594
8595 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
8596
8597         * combine.c (try_widen_shift_mode): Factor out code to check if an
8598         integer constant is a low-order bitmask from here ...
8599         * rtlanal.c (low_bitmask_len): ... to here.
8600         * rtl.h (low_bitmask_len): Declare.
8601
8602 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
8603
8604         PR target/8603
8605         * config/alpha/alpha.md (addsi3): Remove expander.
8606         (addsi3): Rename from *addsi3_internal insn pattern.
8607         (subsi3): Remove expander.
8608         (subsi3): Rename from *subsi3_internal insn pattern.
8609
8610 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
8611
8612         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
8613         FWRITE_UNLOCKED.
8614
8615 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
8616             Eric Botcazou  <botcazou@adacore.com>
8617             Douglas B Rupp  <rupp@gnat.com>
8618
8619         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
8620         that records that fit in 64 bits are returned by immediate value,
8621         as required by OpenVMS Calling Standard.
8622         (function_value): Adjust for above modification.
8623         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
8624         virtual_incoming_args_rtx as base object, not next_arg.
8625         * config/alpha/vms.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
8626
8627 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8628
8629         * reload.c (find_reloads_subreg_address): Check the original
8630         req_equiv_mem address to detect the case where an address is
8631         not valid in the outer mode.
8632
8633 2009-08-11  Richard Guenther  <rguenther@suse.de>
8634
8635         PR bootstrap/40788
8636         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
8637
8638 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
8639
8640         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
8641         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
8642
8643 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
8644             Douglas B Rupp  <rupp@gnat.com>
8645
8646         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
8647         PT_STACK when frame_pointer_needed on OpenVMS.
8648         (alpha_pv_save_size, alpha_using_fp): Remove.
8649         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
8650         with proper processing for PT_NULL.
8651         (alpha_vms_initial_elimination_offset): New function. Support for
8652         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
8653         (alpha_sa_size): Force procedure type to PT_STACK when
8654         frame_pointer_needed on OpenVMS.
8655         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
8656         (alpha_using_fp): Likewise.
8657         (alpha_vms_can_eliminate): Add prototype.
8658         (alpha_vms_initial_elimination_offset): Likewise.
8659         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
8660         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
8661
8662 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
8663             Douglas B Rupp  <rupp@gnat.com>
8664
8665         * config/alpha/alpha.c (common_object_handler): New function.
8666         (vms_attribute_table): Declare a single attribute "common_object".
8667         (vms_output_aligned_decl_common): New global function.
8668         (SECTION_VMS_OVERLAY): Delete.
8669         (SECTION_VMS_GLOBAL): Likewise.
8670         (SECTION_VMS_INITIALIZE): Likewise.
8671         (vms_asm_named_section): Remove support for above flags.
8672         (vms_section_type_flags): Delete.
8673         (TARGET_SECTION_TYPE_FLAGS): Likewise.
8674         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
8675         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
8676         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
8677
8678 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
8679
8680         PR target/41015
8681         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
8682         (sub_ddmmss): Likewise.
8683
8684 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
8685
8686         PR bootstrap/41018
8687         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
8688         year.
8689
8690 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8691
8692         PR target/37053
8693         * reload1.c (reload_as_needed): Use cancel_changes to completely
8694         undo a failed replacement attempt.
8695
8696 2009-08-10  Richard Guenther  <rguenther@suse.de>
8697
8698         PR middle-end/41006
8699         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
8700         (useless_type_conversion_p): ... here.  Require pointer targets
8701         to be compatible.
8702
8703 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
8704
8705         PR c++/40866
8706         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
8707         loose the original type of the statement list.
8708
8709 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
8710
8711         * config/alpha/alpha.c: Include libfuncs.h
8712         (avms_asm_output_extern): New function.
8713         (alpha_init_libfuncs): Init some decc libfuncs.
8714         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
8715         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
8716         (DO_CRTL_NAMES): Define.
8717         (LIB_SPEC): Remove.
8718         * config/alpha/vms64.h (POINTERS_EXTEND_UNSIGNED): Remove undef.
8719         (LONG_TYPE_SIZE): Define.
8720         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
8721         (SUBTARGET_SWITCHES): Define malloc64 switch.
8722         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
8723         (MASK_RETURN_ADDR): Define.
8724         doc/invoke.texi (mmalloc64): Document switch.
8725
8726 2009-08-09  Olivier Hainque  <hainque@adacore.com>
8727             Douglas B Rupp  <rupp@gnat.com>
8728
8729         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
8730         uses_condition_handler.
8731         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
8732         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
8733         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
8734         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
8735         (code_for_builtin): New insn codes for the new alpha_builtins.
8736         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
8737         (alpha_sa_size): Account for uses_condition_handler.
8738         (alpha_expand_prologue): Likewise.
8739         (alpha_start_function): Likewise.
8740         (alpha_expand_epilogue): Likewise.
8741         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
8742         establish/revert expanders.
8743         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
8744         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
8745         New expander, resorting to the alpha.c associated function.
8746         (builtin_revert_vms_condition_handler): Likewise.
8747         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
8748         __gcc_shell_handler, the static VMS condition handler used as
8749         an indirection wrapper to the current dynamically established
8750         handler.
8751         * config/alpha/vms-unwind.h: Complete rewrite.
8752         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
8753         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
8754
8755 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
8756             Douglas B Rupp  <rupp@gnat.com>
8757
8758         * config/alpha/alpha.c (alpha_links): Add 'target' field.
8759         (alpha_need_linkage): Handle aliases.  Return function symbol.
8760         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
8761         Use ultimate alias target for the linkage name.
8762         * config/alpha/alpha.md (movmemdi): Use the symbol returned
8763         by alpha_need_linkage for the function symbol.
8764         (setmemdi): Likewise.
8765
8766 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
8767
8768         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
8769         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
8770         (ASM_WEAKEN_LABEL): Define.
8771         (CRT_CALL_STATIC_FUNCTION): Define.
8772         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
8773         (ENDFILE_SPEC): Define.
8774         (INIT_SECTION_ASM_OP): Define.
8775         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
8776         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
8777         crtend.o crtendS.o.
8778         (MULTILIB_OSDIRNAMES): Define.
8779         (shlib_version): Define.
8780         (SHLIB_EXT): Define.
8781         (SHLIB_OBJS): Define.
8782         (SHLIB_NAME): Define.
8783         (SHLIB_MULTILIB): Define.
8784         (SHLIB_INSTALL): Define.
8785         (SHLIB_SYMVEC): Define.
8786         (SHLIB_SYMVECX2): Define.
8787         (SHLIB_LINK): Define.
8788
8789 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
8790
8791         * config/alpha/alpha.c (alpha_initialize_trampoline):
8792         Initialize VMS trampoline IAW ABI for bounded procedure calls.
8793         (alpha_start_function): Emit transfer address on nested functions
8794         for VMS trampoline call.
8795         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
8796         since no longer used.
8797         * config/alpha/vms-tramp.asm: Remove.
8798         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
8799         since now only data initialized at runtime.
8800
8801 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
8802
8803         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
8804         (LINK_GCC_C_SEQUENCE_SPEC): Define.
8805         (MD_EXEC_PREFIX): Remove, no longer used.
8806         (MD_STARTFILE_PREFIX): Likewise.
8807         (INCLUDE_DEFAULTS): Likewise.
8808         * config/alpha/t-vms:
8809         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
8810
8811 2009-08-09  Richard Guenther  <rguenther@suse.de>
8812
8813         PR tree-optimization/41016
8814         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
8815         (operand_precision): Remove.
8816         (integral_operand_p): Likewise.
8817         (recognize_single_bit_test): Adjust.
8818
8819 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
8820
8821         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
8822         operation overflows.  Likewise non-cast unary arithmetic.
8823         If one arm of a conditional expression is always taken,
8824         inhibit evaluation warnings for the other arm.  Likewise inhibit
8825         evaluation warnings for the second && or || operand if the first
8826         operand is enough to determine the result.
8827         * c-typeck.c (build_conditional_expr): Apply the same inhibition
8828         rules here.
8829         (build_binary_op): Prevent duplicate evaluation warnings.
8830
8831 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
8832
8833         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
8834         and destination have different modes, Use promote_mode to
8835         determine the signedness of the conversion.  Assert that the
8836         promoted source mode matches the destination mode.  Don't pass
8837         the destination and destination mode to expand_expr if the source
8838         mode is different.  Simplify conversion logic.
8839
8840 2009-08-09  Ira Rosen  <irar@il.ibm.com>
8841
8842         PR tree-optimization/41008
8843         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
8844         from condition only in case it's a comparison. Adjust checks.
8845
8846 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
8847
8848         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
8849         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
8850         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
8851         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
8852         (dump_cand): Handle them.
8853         (struct iv_cand): New members COST_STEP and AINC_USE.
8854         (stmt_after_increment): Likewise.
8855         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
8856         callers changed.  Use gimple_uid comparison instead of scanning.
8857         (add_candidate_1): When looking for identical candidates, take
8858         AINC_USE into account.  Set it for new candidates.
8859         (force_expr_to_var_cost): Cast target_spill_cost to int.
8860         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
8861         All callers changed.  Check for availability of autoinc addressing
8862         modes, both in general for a given mode, and in the specific use case.
8863         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
8864         changed.
8865         (get_computation_cost): Likewise.
8866         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
8867         add_autoinc_candidates): New static functions.
8868         (add_candidate): Call add_autoinc_candidates for candidates based on
8869         a USE_ADDRESS use.
8870         (find_iv_candidates): Call set_autoinc_for_original_candidates.
8871         (determine_use_iv_cost_address): If we have an autoinc candidate at
8872         the matching use, verify autoinc is possible and subtract the cost
8873         of the candidate's step from the cost.
8874         (determine_iv_cost): Record the cost of the increment in the COST_STEP
8875         member of the candidate.
8876         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
8877         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
8878
8879 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
8880
8881         * config.build (ia64-hp-*vms*): New target.
8882         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
8883         with ia64-hp-*vms*.
8884         * config.gcc (ia64-hp-*vms*): New target.
8885         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
8886         with ia64-hp-*vms*.
8887         * config.host (ia64-hp-*vms*): New target.
8888         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
8889         with ia64-hp-*vms*.
8890
8891 2009-08-08  Richard Guenther  <rguenther@suse.de>
8892
8893         PR tree-optimization/40991
8894         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
8895
8896 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
8897
8898         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
8899         mode check.  Do truncations in an integer mode.
8900         (force_to_mode): Handle subregs for all mode types.  Only do
8901         arithmetic simplifications on integer modes.
8902
8903 2009-08-07  Richard Guenther  <rguenther@suse.de>
8904
8905         PR tree-optimization/40999
8906         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
8907         (maybe_fold_reference): Lookup constant initializers.
8908         (fold_gimple_assign): Likewise.
8909
8910 2009-08-07  Richard Guenther  <rguenther@suse.de>
8911
8912         * tree-ssa.c (useless_type_conversion_p_1): Only for types
8913         that require structural equality defer to the langhook.
8914
8915 2009-08-07  Martin Jambor  <mjambor@suse.cz>
8916
8917         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
8918         comments.
8919         (struct ipa_pass_through_data): New type.
8920         (struct ipa_ancestor_jf_data): New type.
8921         (union jump_func_value): Removed field formal_id, added fields
8922         pass_through and ancestor.
8923         (struct ipa_param_call_note): Changed type of formal_id to int from
8924         unsigned.
8925         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
8926         operations jump functions and ancestor jump functions.
8927         (compute_complex_pass_through): New function.
8928         (compute_scalar_jump_functions): Call compute_complex_pass_through,
8929         reflect changes in the jump function strucutre.
8930         (update_jump_functions_after_inlining): Ignore complex pass-through
8931         and ancestor jump functions.
8932         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
8933         polynomial pass-through with operation jump functions.
8934
8935 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
8936
8937         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
8938         fde->dw_fde_begin as begin label instead of hot/cold label.
8939         Use LLSDAC label instead of LLSDA for second section lsda.
8940         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
8941         label instead of LLSDA if it is true.
8942         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
8943         callers.
8944         * except.c (add_call_site, dw2_size_of_call_site_table): Add
8945         SECTION argument.  Use it as index into crtl->eh.call_site_record
8946         array.
8947         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
8948         use it to determine how to print table entries instead of using
8949         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
8950         label instead of normal begin label as base.
8951         (sjlj_assign_call_site_values): Adjust add_call_site caller.
8952         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
8953         ensure no EH range spans between sections and that landing pads
8954         are always in the corresponding section.
8955         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
8956         for crtl->eh.call_site_record being an array rather than scalar.
8957         (output_one_function_exception_table): New function, copied
8958         from output_function_exception_table.  Adjust
8959         dw2_size_of_call_site_table, dw2_output_call_site_table
8960         callers.  For SECOND section use *C suffixed labels.
8961         (output_function_exception_table): Call
8962         output_one_function_exception_table and, when doing hot/cold
8963         partitioning, also another time for the second section.
8964         * opts.c: Include except.h.
8965         (decode_options): Allow -freorder-blocks-and-partition with
8966         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
8967         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
8968         * function.h (struct rtl_eh): Change call_site_record from
8969         scalar into array of 2 elements.
8970
8971 2009-08-07  Martin Jambor  <mjambor@suse.cz>
8972
8973         * ipa-prop.c (count_formal_params_1): New function.
8974         (ipa_get_vector_of_formal_parms): New function.
8975         (get_vector_of_formal_parm_types): New function.
8976         (ipa_modify_formal_parameters): New function.
8977         (ipa_modify_call_arguments): New function.
8978         (index_in_adjustments_multiple_times_p): New function.
8979         (ipa_combine_adjustments): New function.
8980         (ipa_dump_param_adjustments): New function.
8981         * ipa-prop.h (struct ipa_parm_adjustment): New type.
8982         (ipa_get_vector_of_formal_parms): Declare.
8983         (ipa_modify_formal_parameters): Declare.
8984         (ipa_modify_call_arguments): Declare.
8985         (ipa_combine_adjustments): Declare.
8986         (ipa_dump_param_adjustments): Declare.
8987         (build_ref_for_offset): Declare.
8988         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
8989         * tree-sra.c: Include ipa-prop.c.
8990         (build_ref_for_offset): Make public.
8991
8992 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
8993
8994         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
8995
8996 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
8997
8998         * gcc/doc/extend.texi (__builtin_extract_return_address)
8999         (__builtin_frob_return_address): Document.
9000
9001 2009-08-06  Paul Brook  <paul@codesourcery.com>
9002
9003         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
9004         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
9005         implementation on ARMv6-M.
9006
9007 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
9008
9009         * doc/extend.texi (pcs): Document new attribute for ARM.
9010
9011 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
9012
9013         * arm.c (pcs_attribute_args): Comment out unsupported attribute
9014         variants.
9015
9016 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
9017
9018         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
9019         warning ().
9020
9021 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
9022
9023         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
9024
9025 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
9026
9027         Merge ARM/hard_vfp_branch to trunk.
9028
9029         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
9030
9031         * arm.c (libcall_eq): New function.
9032         (libcall_hash): New function.
9033         (add_libcall): New function.
9034         (arm_libcall_uses_aapcs_base): New function.
9035         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
9036         libcalls using the base PCS.
9037         (arm_init_cumulative_args): Likewise.
9038
9039         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
9040
9041         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
9042         Use base ABI for conversion libfuncs between HFmode and SFmode.
9043
9044         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
9045
9046         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
9047         V4SImode as representatives of all 64-bit and 128-bit vector
9048         types.  Allow vector types without vector modes.
9049         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
9050         without vector modes like BLKmode.
9051         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
9052         BLKmode.  Avoid unsupported vector modes or TImode moves for
9053         non-TARGET_NEON.
9054         (aapcs_vfp_allocate_return_reg): Likewise.
9055         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
9056         V8QImode if TARGET_NEON || TARGET_IWMMXT.
9057
9058         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
9059
9060         * config/arm/arm.c (arm_handle_pcs_attribute): New.
9061         (arm_get_pcs_model): Pass attribute arguments to
9062         arm_pcs_from_attribute.
9063         (arm_init_cumulative_args): Use base AAPCS for conversions from
9064         floating-point types to DImode.
9065         (arm_attribute_table): Add pcs attribute.
9066         (arm_handle_pcs_attribute): New.
9067         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
9068         conversions from floating-point types to DImode, also declare them
9069         to use base AAPCS and declare functions they call to use base
9070         AAPCS and their RTABI names.
9071
9072         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
9073
9074         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
9075         -mfloat-abi=hard not being supported for VFP.
9076
9077         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
9078
9079         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
9080         SYMBOL_REF to hard_libcall_value.
9081
9082         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
9083             Richard Earnshaw  <rearnsha@arm.com>
9084
9085         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
9086         has been put on the stack, all remaining co-processory arguments for
9087         that co-processor also go on the stack.
9088
9089         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
9090
9091         * config/arm/arm.c (arm_return_in_memory): Handle returning
9092         vectors of suitable size in registers also for AAPCS case.
9093
9094         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
9095
9096         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
9097
9098         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
9099
9100         ARM Hard-VFP calling convention
9101         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
9102         * target.h (gcc_target): Add libcall_value to table of call hooks.
9103         * targhooks.h (default_libcall_value): Default implementation.
9104         * targhooks.c (default_libcall_value): Likewise.
9105         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
9106         * optabs.c (expand_unop): Use it.
9107         * expr.h (hard_libcall_value): Pass the function RTX through.
9108         * calls.c (emit_library_call_value_1): Update call to
9109         hard_libcall_value.
9110         * explow.c (hard_libcall_value): Use new target hook.
9111         * testsuite/lib/target-supports.exp
9112         (check_effective_target_arm_hard_vfp_ok): New hook.
9113         (check_effective_target_arm_neon_ok): Improve test for neon
9114         availability.
9115         * testsuite/gcc.target/arm/eabi1.c: Only run test in base variant.
9116         * config/arm/arm.c: Include cgraph.h
9117         (TARGET_FUNCTION_VALUE): Override default hook.
9118         (arm_pcs_default): New variable.
9119         (arm_override_options): Don't fault hard calling convention with VFP.
9120         Add support for AAPCS variants.
9121         (arm_function_value): Make static.  Handle AAPCS variants.
9122         (arm_libcall_value): New function.
9123         (arm_apply_result_size): Handle VFP registers in results.
9124         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
9125         conventions.
9126         (pcs_attribute_args): New variable.
9127         (arm_pcs_from_attribute): New function.
9128         (arm_get_pcs_model): New function.
9129         (aapcs_vfp_cum_init): New function.
9130         (aapcs_vfp_sub_candidate): New function.
9131         (aapcs_vfp_is_return_candidate): New function.
9132         (aapcs_vfp_is_call_candidate): New function.
9133         (aapcs_vfp_allocate): New function.
9134         (aapcs_vfp_allocate_return_reg): New function.
9135         (aapcs_vfp_advance): New function.
9136         (aapcs_cp_arg_layout): New variable.
9137         (aapcs_select_call_coproc): New function.
9138         (aapcs_select_return_coproc): New function.
9139         (aapcs_allocate_return_reg): New function.
9140         (aapcs_libcall_value): New function.
9141         (aapcs_layout_arg): New function.
9142         (arm_init_cumulative_args): Initialize AAPCS args data.
9143         (arm_function_arg): Handle AAPCS variants using new interface.
9144         (arm_arg_parital_bytes): Likewise.
9145         (arm_function_arg_advance): New function.
9146         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
9147         calling conventions.
9148         (arm_setup_incoming_varargs): Handle new AAPCS args data.
9149         * arm.h (NUM_VFP_ARG_REGS): Define.
9150         (LIBCALL_VALUE): Update.
9151         (FUNCTION_VALUE): Delete.
9152         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
9153         (arm_pcs): New enum.
9154         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
9155         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
9156         (FUNCTION_ARG_REGNO_P): Add VFP regs.
9157         * arm-protos.h (arm_function_arg_advance): Add.
9158         (aapcs_libcall_value): Add.
9159         (arm_function_value): Delete.
9160
9161 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
9162             H.J. Lu  <hongjiu.lu@intel.com>
9163
9164         PR target/40957
9165         * config/i386/i386.c (standard_sse_mode_p): Remove.
9166         (standard_sse_constant_p): Return 2 for integer mode
9167         vector_all_ones_operand when SSE2 is enabled.
9168         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
9169         (ix86_expand_vector_move): Do not check for negative values from
9170         standard_sse_constant_p.
9171
9172 2009-08-06  Richard Guenther  <rguenther@suse.de>
9173
9174         * tree-ssa.c (useless_type_conversion_p_1): Make function and
9175         array type comparisons frontend independent.
9176         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
9177         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
9178         out array reference lower bound and element size operands.
9179         (ao_ref_init_from_vn_reference): Properly compute the offset
9180         for ARRAY_RANGE_REF.
9181         (vn_reference_fold_indirect): Fill out array reference lower
9182         bound and element size operands.
9183         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
9184         a non gimple valued reference operand which can happen for
9185         array reference lower bound or element size.
9186         (create_component_ref_by_pieces_1): Properly generate the
9187         element size operand for array references.
9188
9189 2009-08-06  Richard Guenther  <rguenther@suse.de>
9190
9191         PR tree-optimization/40964
9192         * tree.c (iterative_hash_host_wide_int): Export.
9193         * tree.h (iterative_hash_host_wide_int): Declare.
9194         * tree-ssa-structalias.c (heapvar_map): New struct.
9195         (heapvar_map_eq): New function.
9196         (heapvar_map_hash): Likewise.
9197         (heapvar_lookup): Adjust.
9198         (heapvar_insert): Likewise.
9199         (make_constraint_from_heapvar): Allow multiple heap variables
9200         per decl at different offsets.
9201         (init_alias_heapvars): Adjust.
9202
9203 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
9204
9205         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
9206         * mips_output_sync_loop (mips_output_sync_loop): Only emit
9207         trailing sync if TARGET_SYNC_AFTER_SC.
9208
9209 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
9210
9211         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
9212         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
9213         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
9214         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
9215         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
9216         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
9217         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
9218         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
9219         test_and_set_12): Rewrite calls to mips_output_sync_loop.
9220         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
9221         the prototype declaration match the definition.
9222         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
9223         instructions explicitly.  Add barrier_before and operands
9224         parameters.
9225         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
9226         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
9227         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
9228         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
9229         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
9230         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
9231
9232 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
9233
9234         * tree-ssa-alias.c: Fix intervals to use [) syntax.
9235
9236 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
9237             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
9238
9239         PR target/40906
9240         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
9241         source operand.
9242
9243 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
9244
9245         PR rtl-optimization/40924
9246         * dse.c (canon_address): Before calling cselib_expand_value_rtx
9247         make sure canon_rtx (mem_address) isn't simpler than
9248         canon_rtx (expanded_mem_address).
9249
9250 2009-08-05  Li Feng  <nemokingdom@gmail.com>
9251
9252         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
9253         for each poly_bb_p.
9254         (build_scop_drs): Build alias set for each SCoP.
9255
9256 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
9257
9258         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
9259         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
9260         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
9261         (MIPS_ARCH_FLOAT_SPEC): Likewise.
9262         (BASE_DRIVER_SELF_SPECS): Likewise.
9263
9264 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
9265
9266         * tree-ssa-alias.c: Fix some comment typos.
9267
9268 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
9269
9270         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
9271         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
9272
9273 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
9274
9275         PR c/39902
9276         * simplify-rtx.c (simplify_binary_operation_1): Disable
9277         simplifications for decimal float operations.
9278
9279 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
9280
9281         PR middle-end/40943
9282         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
9283         operand of INDIRECT_REF.
9284
9285 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
9286
9287         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
9288         constants referencing TLS symbols.
9289
9290 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
9291
9292         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
9293         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
9294
9295 2009-08-03  Richard Guenther  <rguenther@suse.de>
9296
9297         * tree.c (make_vector_type): Build a main variant first,
9298         get the canonical one and then build the variant.
9299         * tree-ssa.c (useless_type_conversion_p_1): Handle
9300         fixed-point types.
9301         (useless_type_conversion_p): Conversions to pointers to
9302         incomplete record types are useless.
9303
9304 2009-08-03  Richard Guenther  <rguenther@suse.de>
9305
9306         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
9307         file will be created.
9308         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
9309         * toplev.c (compile_file): Adjust comment.
9310
9311 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
9312
9313         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
9314         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
9315         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9316         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
9317         (sh_promote_function_mode): Fix typo.
9318
9319 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
9320
9321         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
9322
9323 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9324
9325         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
9326         declaration arguments.
9327
9328 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
9329
9330         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
9331         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
9332         (ix86_split_ashl): Ditto.
9333         (ix86_expand_vector_init_one_nonzero): Ditto.
9334         (ix86_expand_vector_set): Ditto.
9335         (ix86_expand_reduc_v4sf): Ditto.
9336
9337 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
9338
9339         * explow.c (promote_function_mode): Remove assert.
9340         * config/sh/sh.c (sh_promote_function_mode): Declare.
9341
9342 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9343
9344         * config/pa/pa.c (pa_promote_function_mode): Declare.
9345         Change to static.  Fix promote_mode call.
9346
9347         * gthr-dce.h (CONST_CAST2): Define if not defined.
9348         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
9349
9350         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
9351
9352 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
9353
9354         * expr.c (store_constructor): Use promote_decl_mode.  Remove
9355         now write-only variable unsignedp.
9356         (expand_expr_real_1): Use promote_decl_mode.
9357         * expr.h (promote_function_mode, promote_decl_mode): New.
9358         (promote_mode): Remove last argument.
9359         * function.c (assign_temp): Drop last argument of promote_mode.
9360         (assign_parm_find_data_types): Use promote_function_mode.
9361         (assign_parm_setup_reg): Likewise.
9362         (expand_function_end): Use promote_function_mode.
9363         * calls.c (initialize_argument_information): Use promote_function_mode.
9364         (precompute_arguments): Use promote_mode instead of checking if
9365         only PROMOTE_FUNCTION_MODE is defined.
9366         (expand_call): When making sibcall decisions, use promote_function_mode.
9367         Below, remove an if for targetm.calls.promote_function_return and
9368         and use promote_function_mode.
9369         (emit_library_call_value_1): Use promote_function_mode, fix bug
9370         where promote_mode was passed FOR_CALL == 0 for a return value in an
9371         assertion.
9372         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
9373         * explow.c (promote_function_mode, promote_decl_mode): New.
9374         (promote_mode): Keep only the FOR_CALL == 0 case.
9375         * combine.c (setup_incoming_promotion): Remove test of
9376         promote_function_args.  Use promote_function_mode.
9377         * stmt.c (expand_value_return): Use promote_decl_mode.
9378         (expand_decl): Use promote_decl_mode.
9379
9380         * expr.c (store_constructor): Use promote_decl_mode.  Remove
9381         now write-only variable unsignedp.
9382         (expand_expr_real_1): Use promote_decl_mode.
9383         * expr.h (promote_function_mode, promote_decl_mode): New.
9384         (promote_mode): Remove last argument.
9385         * function.c (assign_temp): Drop last argument of promote_mode.
9386         (assign_parm_find_data_types): Use promote_function_mode.
9387         (assign_parm_setup_reg): Likewise.
9388         (expand_function_end): Use promote_function_mode.
9389         * calls.c (initialize_argument_information): Use promote_function_mode.
9390         (precompute_arguments): Use promote_mode instead of checking if
9391         only PROMOTE_FUNCTION_MODE is defined.
9392         (expand_call): When making sibcall decisions, use promote_function_mode.
9393         Below, remove an if for targetm.calls.promote_function_return and
9394         and use promote_function_mode.
9395         (emit_library_call_value_1): Use promote_function_mode, fix bug
9396         where promote_mode was passed FOR_CALL == 0 for a return value in an
9397         assertion.
9398         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
9399         * explow.c (promote_function_mode, promote_decl_mode): New.
9400         (promote_mode): Keep only the FOR_CALL == 0 case.
9401         * combine.c (setup_incoming_promotion): Remove test of
9402         promote_function_args.  Use promote_function_mode.
9403         * stmt.c (expand_value_return): Use promote_decl_mode.
9404         (expand_decl): Use promote_decl_mode.
9405
9406         * explow.c (promote_function_mode): Just call the target hook.
9407         * targhooks.c (default_promote_function_mode,
9408         default_promote_function_mode_always_promote): New.
9409         * targhooks.h (default_promote_function_mode,
9410         default_promote_function_mode_always_promote): Declare.
9411         * target.h (promote_function_args, promote_function_return): Remove.
9412         (promote_function_mode): New.
9413         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
9414         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9415         (TARGET_PROMOTE_FUNCTION_MODE): New.
9416         (TARGET_CALLS): Adjust.
9417         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
9418         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
9419
9420         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
9421         * config/s390/s390.c (s390_promote_function_mode): ... here,
9422         with pointer handling.
9423         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9424         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9425
9426         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
9427         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
9428         with pointer handling.
9429         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9430         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9431
9432         * config/sh/sh-protos.h (sh_promote_function_mode): New.
9433         * config/sh/sh.c (sh_promote_function_mode): New.
9434         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9435         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9436
9437         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
9438         * config/cris/cris.c (cris_promote_function_mode): ... here.
9439         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9440         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
9441
9442         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
9443         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
9444         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9445         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
9446
9447         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
9448         * config/arm/arm.c (arm_promote_function_mode): ... here, without
9449         complex type handling.
9450         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9451         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9452
9453         * config/pa/pa.c (pa_promote_function_mode): New.
9454         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9455         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9456
9457         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
9458         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9459         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
9460         * config/xtensa/xtensa.c: Likewise.
9461         * config/stormy16/stormy16.c: Likewise.
9462         * config/iq2000/iq2000.c: Likewise.
9463         * config/rs6000/rs6000.c: Likewise.
9464         * config/picochip/picochip.c: Likewise.
9465         * config/arc/arc.c: Likewise.
9466         * config/mcore/mcore.c: Likewise.
9467         * config/score/score.c: Likewise.
9468         * config/mips/mips.c: Likewise.
9469         * config/bfin/bfin.c: Likewise.
9470         * config/ia64/ia64.c: Likewise (disabled though).
9471
9472         * config/frv/frv.h: Remove pointless remark.
9473
9474         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
9475         TARGET_PROMOTE_FUNCTION_ARGS,
9476         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
9477         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
9478
9479 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
9480
9481         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
9482         -floop-parallelize-all.
9483         * toplev.c (process_options): Rename flag_graphite_force_parallel to
9484         flag_loop_parallelize_all.
9485         * tree-ssa-loop.c (gate_graphite_transforms): Same.
9486         * graphite.c (graphite_transform_loops): Same.
9487         * common.opt: Same.
9488         * graphite-poly.c (apply_poly_transforms): Same.
9489
9490 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
9491
9492         PR tree-optimization/40914
9493         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
9494         if set, then check the delta field of the PMF record.
9495         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
9496         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
9497         call is stored in the delta.
9498
9499 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
9500
9501         * config/mips/mips.md (*clear_upper32_dext): New pattern.
9502
9503 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
9504
9505         * config/i386/bsd.h (ASM_BYTE): New define.
9506         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
9507         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
9508         .byte.  Use fputs or putc instead of fprintf where appropriate.
9509         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
9510         fputs or putc instead of fprintf where appropriate.
9511         * config/i386/i386elf.h: Ditto.
9512         * config/i386/sysv4.h: Ditto.
9513
9514         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
9515         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
9516         (*tls_global_dynamic_64): Ditto.
9517
9518 2009-07-31  Christian Bruel  <christian.bruel@st.com>
9519
9520         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
9521
9522 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9523
9524         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
9525         Remove dead code for MINUS.
9526
9527 2009-07-31  Anthony Green  <green@moxielogic.com>
9528
9529         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
9530         $r12 in prologue.
9531         (moxie_expand_epilogue): Ditto for epilogue.
9532         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
9533         incoming arguments.
9534         (moxie_function_arg): Ditto.
9535         (moxie_pass_by_reference): Ditto.
9536         (moxie_arg_partial_bytes): Ditto.
9537         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
9538         (FUNCTION_ARG_ADVANCE) Ditto.
9539         (REG_PARM_STACK_SPACE) Ditto.
9540         (FUNCTION_ARG_REGNO_P) Dito.
9541
9542         * config.gcc: Add moxie linux config support.
9543         * gcc/config/moxie/uclinux.h: New file.
9544
9545 2009-07-31  DJ Delorie  <dj@redhat.com>
9546
9547         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
9548         (UNSPECV_SP_SWITCH_E): New.
9549         (sp_switch_1): Change to an unspec.
9550         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
9551         replace $r15.
9552         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
9553         reference the new stack's address
9554
9555 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9556
9557         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
9558         graphite-clast-to-gimple.o, graphite-dependences.o,
9559         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
9560         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
9561         (graphite-blocking.o,
9562         graphite-clast-to-gimple.o, graphite-dependences.o,
9563         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
9564         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
9565         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
9566         * cfgloop.h (struct loop): Add can_be_parallel field.
9567         * common.opt (fgraphite-identity): Moved up.
9568         (fgraphite-force-parallel): New flag.
9569         * graphite.c: Rewrite.
9570         * graphite.h: Rewrite.
9571         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
9572         after Graphite.
9573         * toplev.c (graphite_out_file): New file descriptor.
9574         (graphite_in_file): New.
9575         (process_options): flag_graphite_force_parallel cannot be used without
9576         Graphite.
9577         * tree-ssa-loop.c: Include toplev.h.
9578         (gate_graphite_transforms): Enable flag_graphite for
9579         flag_graphite_force_parallel.
9580
9581 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9582
9583         * ChangeLog.graphite: New.
9584         * graphite-blocking.c: New.
9585         * graphite-clast-to-gimple.c: New.
9586         * graphite-clast-to-gimple.h: New.
9587         * graphite-dependences.c: New.
9588         * graphite-dependences.h: New.
9589         * graphite-interchange.c: New.
9590         * graphite-poly.c: New.
9591         * graphite-poly.h: New.
9592         * graphite-ppl.c: New.
9593         * graphite-ppl.h: New.
9594         * graphite-scop-detection.c: New.
9595         * graphite-scop-detection.h: New.
9596         * graphite-sese-to-poly.c: New.
9597         * graphite-sese-to-poly.h: New.
9598         * sese.c: New.
9599         * sese.h: New.
9600
9601 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9602
9603         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
9604         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
9605
9606 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9607
9608         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
9609         (scev_is_linear_expression): Return false if the evolution is not
9610         affine multivariate.
9611
9612 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9613
9614         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
9615         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
9616
9617 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9618
9619         * tree-data-ref.c (debug_data_references): New.
9620         (debug_data_reference): New.
9621         * tree-data-ref.h (debug_data_references): Declared.
9622         (debug_data_reference): Declared.
9623
9624 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9625
9626         * tree-data-ref.c (stmt_simple_memref_p: Removed.
9627         * tree-data-ref.h (scop_p): Removed.
9628         (struct data_reference): Remove field scop.
9629         (DR_SCOP): Removed.
9630         (stmt_simple_memref_p): Removed.
9631
9632 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9633
9634         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
9635         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
9636         basic block empty.
9637
9638 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9639
9640         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
9641
9642 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9643
9644         * doc/invoke.texi (-fgraphite-identity): Documented.
9645
9646 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9647
9648         * tree-scalar-evolution.c: Fix comment.
9649         (instantiate_scev_1): Return unknow from scev instantiation if the
9650         result is not above instantiate_below.
9651
9652 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9653
9654         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
9655         static anymore.  Instantiate the symbols that may have been introduced
9656         by chrec_apply.
9657         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
9658         Declared.
9659
9660 2009-07-30  DJ Delorie  <dj@redhat.com>
9661
9662         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
9663         .vliw directive to VLIW sections.
9664
9665 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9666
9667         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
9668         New variables.
9669         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
9670         (AUTOHEADER): New variable.
9671         ($(srcdir)/cstamp-h.in): Use it.
9672
9673 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
9674             Pat Haugen  <pthaugen@us.ibm.com>
9675             Revital Eres <ERES@il.ibm.com>
9676
9677         * config/rs6000/vector.md (VEC_F): Add VSX support.
9678         (VEC_A): Ditto.
9679         (VEC_N): Ditto.
9680         (mov<mode>): Ditto.
9681         (vector_load_<mode>): Ditto.
9682         (vector_store_<mode>): Ditto.
9683         (vector GPR move split): Ditto.
9684         (vec_reload_and_plus_<mptrsize>): Ditto.
9685         (vec_reload_and_reg_<mptrsize>): Ditto.
9686         (add<mode>3): Ditto.
9687         (sub<mode>3): Ditto.
9688         (mul<mode>3): Ditto.
9689         (neg<mode>2): Ditto.
9690         (abs<mode>2): Ditto.
9691         (smin<mode>3): Ditto.
9692         (smax<mode>3): Ditto.
9693         (vector_eq<mode>): Ditto.
9694         (vector_gt<mode>): Ditto.
9695         (vector_ge<mode>): Ditto.
9696         (vector_gtu<mode>): Ditto.
9697         (vector_select_<mode>_uns): Ditto.
9698         (vector_eq_<mode>_p): Ditto.
9699         (vector_gt_<mode>_p): Ditto.
9700         (vector_ge_<mode>_p): Ditto.
9701         (vector_gtu_<mode>_p): Ditto.
9702         (cr6_test_for_zero): Ditto.
9703         (cr6_test_for_zero_reverse): Ditto.
9704         (cr6_test_for_lt): Ditto.
9705         (cr6_test_for_lt_reverse): Ditto.
9706         (xor<mode>3): Ditto.
9707         (ior<mode>3): Ditto.
9708         (and<mode>3): Ditto.
9709         (one_cmpl<mode>2): Ditto.
9710         (nor<mode>2): Ditto.
9711         (andc<mode>2): Ditto.
9712         (float<VEC_int<mode>2): Ditto.
9713         (unsigned_float<VEC_int><mode>2): Ditto.
9714         (fix_trunc<mode><VEC_int>2): Ditto.
9715         (fixuns_trunc<mode><VEC_int>2): Ditto.
9716         (vec_init<mode>):
9717         (vec_set<mode>): Ditto.
9718         (vec_extract<mode>): Ditto.
9719         (vec_interleave_highv4sf): Ditto.
9720         (vec_interleave_lowv4sf): Ditto.
9721         (vec_realign_load_<mode>): Ditto.
9722         (vec_shl_<mode>): Ditto.
9723         (vec_shr_<mode>): Ditto.
9724         (div<mode>3): New patterns for VSX.
9725         (vec_interleave_highv2df): Ditto.
9726         (vec_interleave_lowv2df): Ditto.
9727         (vec_pack_trunc_v2df): Ditto.
9728         (vec_pack_sfix_trunc_v2df): Ditto.
9729         (vec_pack_ufix_trunc_v2df): Ditto.
9730         (vec_unpacks_hi_v4sf): Ditto.
9731         (vec_unpacks_lo_v4sf): Ditto.
9732         (vec_unpacks_float_hi_v4si): Ditto.
9733         (vec_unpacks_float_lo_v4si): Ditto.
9734         (vec_unpacku_float_hi_v4si): Ditto.
9735         (vec_unpacku_float_lo_v4si): Ditto.
9736         (movmisalign<mode>): Ditto.
9737         (vector_ceil<mode>2): New patterns for vectorizing math library.
9738         (vector_floor<mode>2): Ditto.
9739         (vector_btrunc<mode>2): Ditto.
9740         (vector_copysign<mode>3): Ditto.
9741
9742         * config/rs6000/predicates.md (easy_vector_constant_msb): New
9743         predicate for setting the high bit in each word, used for copysign.
9744
9745         * config/rs6000/ppc-asm.h (f19): Whitespace.
9746         (f32-f63): Define if VSX.
9747         (v0-v31): Define if Altivec.
9748         (vs0-vs63): Define if VSX.
9749
9750         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
9751
9752         * config/rs6000/power7.md: New file, provide tuning parameters for
9753         -mcpu=power7.
9754
9755         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
9756         (rs6000_cpu_cpp_builtins): Ditto.
9757         (altivec_overloaded_builtins): Ditto.
9758         (altivec_resolve_overloaded_builtin): Ditto.
9759
9760         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
9761         debug switch to disable vectorizing simple math builtin
9762         functions.
9763
9764         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
9765         Vectorize simple math builtin functions.
9766         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
9767         hook to vectorize math builtins.
9768         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
9769         (rs6000_builtin_conversion): Add VSX/power7 support.
9770         (rs6000_builtin_vec_perm): Ditto.
9771         (vsplits_constant): Add support for loading up a vector constant
9772         with just the high bit set in each part.
9773         (rs6000_expand_vector_init): Add VSX/power7 support.
9774         (rs6000_expand_vector_set): Ditto.
9775         (rs6000_expand_vector_extract): Ditto.
9776         (rs6000_emit_move): Ditto.
9777         (bdesc_3arg): Ditto.
9778         (bdesc_2arg): Ditto.
9779         (bdesc_1arg): Ditto.
9780         (rs6000_expand_ternop_builtin): Ditto.
9781         (altivec_expand_builtin): Ditto.
9782         (rs6000_expand_unop_builtin): Ditto.
9783         (rs6000_init_builtins): Ditto.
9784         (altivec_init_builtins): Ditto.
9785         (builtin_function_type): Ditto.
9786         (rs6000_common_init_builtins): Ditto.
9787         (rs6000_handle_altivec_attribute); Ditto.
9788         (rs6000_mangle_type): Ditto.
9789         (rs6000_vector_mode_supported_p): Ditto.
9790         (rs6000_mode_dependent_address): Altivec addresses with AND -16
9791         are mode dependent.
9792
9793         * config/rs6000/vsx.md: New file for VSX support.
9794
9795         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
9796         identifing values with just the most significant bit set.
9797         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
9798         vectorized builtins.
9799
9800         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
9801         (UNSPEC_VRFIM): Delete.
9802         (splitter for loading up vector with most significant bit): New
9803         splitter for vectorizing copysign.
9804         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
9805         vectorizing simple math functions.
9806         (altivec_vrfip): Add support for vectorizing simple math functions.
9807         (altivec_vrfim): Ditto.
9808         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
9809
9810         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
9811         (power7.md, vsx.md): Include for power7 support.
9812         (copysigndf3): Use VSX instructions if -mvsx.
9813         (negdf2_fpr): Ditto.
9814         (absdf2_fpr): Ditto.
9815         (nabsdf2_fpr): Ditto.
9816         (adddf3_fpr): Ditto.
9817         (subdf3_fpr): Ditto.
9818         (muldf3_fpr): Ditto.
9819         (divdf3_fpr): Ditto.
9820         (fix_truncdfdi2_fpr): Ditto.
9821         (cmpdf_internal1): Ditto.
9822         (fred, fred_fpr): Convert into expander/insn to add VSX support.
9823         (btruncdf2, btruncdf2_fpr): Ditto.
9824         (ceildf2, ceildf2_fpr): Ditto.
9825         (floordf2, floordf2_fpr): Ditto.
9826         (floatdidf2, floatdidf2_fpr): Ditto.
9827         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
9828         (fmsubdf4_fpr): Ditto.
9829         (fnmadddf4_fpr_1): Ditto.
9830         (fnmadddf4_fpr_2): Ditto.
9831         (fnmsubdf4_fpr_1): Ditto.
9832         (fnmsubdf4_fpr_2): Ditto.
9833         (fixuns_truncdfdi2): Add expander for VSX support.
9834         (fix_truncdfdi2): Ditto.
9835         (fix_truncdfsi2): Ditto.
9836         (ftruncdf2): Ditto.
9837         (btruncsf2): Whitespace.
9838         (movdf_hardfloat32): Add support for VSX registers.
9839         (movdf_softfloat32): Ditto.
9840         (movdf_hardfloat64): Ditto.
9841         (movdf_hardfloat64_mfpgpr): Ditto.
9842         (movdf_softfloat64): Ditto.
9843         (movti splitters): Add check for vector registers supporting
9844         TImode in the future.
9845         (bpermd): Add power7 bpermd instruction.
9846
9847         * config/rs6000/altivec.h (vec_div): Define if VSX.
9848         (vec_mul): Ditto.
9849         (vec_msub): Ditto.
9850         (vec_nmadd): Ditto.
9851         (vec_nearbyint): Ditto.
9852         (vec_rint): Ditto.
9853         (vec_sqrt): Ditto.
9854         (all predicates): Use the generic builtin function, and not the V4SF
9855         specific function so that the predicates will work with VSX's V2DF.
9856         (vec_all_*): Ditto.
9857         (vec_any_*): Ditto.
9858
9859         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
9860         Document new VSX functions and types.
9861
9862         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
9863         switches.
9864
9865         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
9866         "wa", and "j" constraints.  Modify "v" to talk about Altivec
9867         instead of just vector.
9868
9869 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
9870
9871         PR debug/26475
9872         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
9873         location for phi arguments.
9874         (rewrite_update_phi_arguments): Find locations for reaching defs.
9875         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
9876         Add location to add_phi_arg calls.
9877         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
9878         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
9879         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
9880         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
9881         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
9882         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
9883         * tree-phinodes.c (make_phi_node): Initialize location.
9884         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
9885         (add_phi_arg): Add location parameter.
9886         (remove_phi_arg_num): Move location when moving phi argument.
9887         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
9888         location.
9889         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
9890         slpeel_update_phi_nodes_for_guard1,
9891         slpeel_update_phi_nodes_for_guard2,
9892         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
9893         vect_loop_versioning): Set locations.
9894         * tree-parloops.c (create_phi_for_local_result,
9895         transform_to_exit_first_loop, create_parallel_loop): Add locations.
9896         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
9897         * tree-vect-loop.c (get_initial_def_for_induction,
9898         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
9899         locations.
9900         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
9901         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
9902         (gimple_phi_arg_set_location): New.  Set locus.
9903         (gimple_phi_arg_has_location): New.  Check for locus.
9904         (redirect_edge_var_map_location): New.  Return locus from var_map.
9905         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
9906         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
9907         combining PHI arguments.
9908         (cond_store_replacement): Set location.
9909         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
9910         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
9911         scop_add_exit_phis_edge): Add locations.
9912         * tree-cfgcleanup.c (remove_forwarder_block,
9913         remove_forwarder_block_with_phi): Add locations.
9914         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
9915         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
9916         locations.
9917         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
9918         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
9919         flush_pending_stmts): Add source location.
9920         * lambda-code.c (perfect_nestify): Maintain location stack with argument
9921         stack to preserve locations.
9922         * tree-vect-stmts.c (vectorizable_load): Add location.
9923         * tree-inline.c (copy_phis_for_bb): Copy locus.
9924         (setup_one_parameter): Add call locus to inlined parameter stmts.
9925         (initialize_inlined_parameters): Pass in call location as parameter
9926         assignment locus.
9927         (tree_function_versioning): Pass location to setup_one_parameter.
9928         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
9929         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
9930         copy and edge lists.
9931         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
9932         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
9933         locus parameter and override the stmt default if provided.
9934         (new_elim_graph, clear_elim_graph, delete_elim_graph,
9935         elim_graph_add_edge, elim_graph_remove_succ_edge,
9936         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
9937         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
9938         eliminate_phi):  Add locus info in elimination graph for each edge and
9939         value copy.
9940         (insert_backedge_copies): Copy locus if present.
9941         * tree-flow.h (struct _edge_var_map): Add locus field.
9942         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
9943         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
9944         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
9945         locations.
9946         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
9947
9948 2009-07-30  Martin Jambor  <mjambor@suse.cz>
9949
9950         PR tree-optimization/40570
9951         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
9952         use inlining loops.
9953
9954 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
9955
9956         * ssa-loop-manip.c: Include langhooks.h.
9957         (rewrite_phi_with_iv): New.
9958         (rewrite_all_phi_nodes_with_iv): New.
9959         (canonicalize_loop_ivs): Move here from tree-parloops.c.
9960         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
9961         * tree-parloops.c (loop_parallel_p): Move out all conditions
9962         except dependency check.
9963         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
9964         (gen_parallel_loop): Call canonicalize_loop_ivs without
9965         reduction_list argument.
9966         (build_new_reduction): New.
9967         (gather_scalar_reductions): New.
9968         (try_get_loop_niter): New.
9969         (try_create_reduction_list): New.
9970         (parallleize_loops): Change the parallel conditions check.
9971         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
9972         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
9973
9974 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
9975
9976         * opt-functions.awk (opt_args): Allow argument to be enclosed in
9977         curly braces.
9978         * doc/options.texi (Option properties):  Mention new quoting syntax.
9979
9980 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
9981
9982         * config/alpha/alpha.c (alpha_start_function):
9983         Handle VMS_DEBUG_MAIN_POINTER
9984         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
9985         * doc/invoke.texi: Document -mdebug-main switch.
9986
9987 2009-07-29  Richard Henderson  <rth@redhat.com>
9988
9989         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
9990         (cgraph_create_edge_including_clones): Likewise.
9991         * tree-inline.c (copy_bb): Operate on the correct edges
9992         when updating the callgraph.
9993
9994 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
9995
9996         * config/alpha/vms-cc.c: Deleted.
9997         * config/alpha/vms-ld.c: Deleted.
9998         * config/alpha/t-vms64: Moved to config/vms
9999         * config/alpha/vms-crt0-64.c: Moved to config/vms
10000         * config/alpha/vms-crt0.c: Moved to config/vms
10001         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
10002         * config/alpha/vms-psxcrt0.c: Moved to config/vms
10003         * config/alpha/xm-vms.h: Moved to config/vms
10004         * config/alpha/x-vms: Moved to config/vms
10005         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
10006         config/vms/t-vms.
10007         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
10008         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
10009         (version): Set.
10010         * config/vms/t-vms64: Moved here from config/alpha
10011         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
10012         (argc,argv,envp): Enforce 32bit malloc'ing.
10013         * config/vms/vms-psxcrt0-64.c: Likewise.
10014         * config/vms/vms-crt0.c: Moved here from config/alpha.
10015         * config/vms/vms-psxcrt0.c: Likewise.
10016         * config/vms/vms-crtl-64.h: New file.
10017         * config/vms/vms-crtl.h: New file.
10018         * config/vms/vms.opt: New file.
10019         * config/vms/xm-vms64.h: New file.
10020         * config/vms/xm-vms.h: Moved here from config/alpha.
10021         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
10022         Set.
10023         * config/vms/x-vms: Moved here from config/alpha.
10024         (version, VMS_EXTRA_PARTS): Moved to t-vms.
10025         (vms-ld.o, vms-cc.o): Removed.
10026         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
10027
10028 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
10029
10030         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
10031         correct stack (obvious VMS fix).
10032
10033 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
10034
10035         * dwarf2out.c (output_file_names): Output VMS style file name, size,
10036         date, version info if VMS_DEBUGGING_INFO defined.
10037         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
10038         size, date calculating code moved here.
10039
10040 2009-07-29  Paul Brook  <paul@codesourcery.com>
10041
10042         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
10043         do_push/do_pop.
10044
10045 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
10046
10047         PR target/40577
10048         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
10049         to DImode when generating insq_le insn.
10050
10051 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
10052
10053         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
10054         New macro set for VMS_DEBUGGGING_INFO.
10055         (AT_string_form): Use it.
10056
10057 2009-07-28  DJ Delorie  <dj@redhat.com>
10058
10059         * config/mep/mep.c (vtext_section): New.
10060         (vftext_section): New.
10061         (ftext_section): New.
10062         (mep_select_section): Add support for functions.
10063         (mep_unique_section): Likewise.
10064         (mep_asm_init_sections): Likewise.
10065         (mep_encode_section_info): Remove it from here.
10066
10067         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
10068
10069 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
10070
10071         * tree.h (TREE_DEPRECATED): Document it is used for types too.
10072         (TYPE_VECTOR_OPAQUE): Use default_def_flag
10073
10074 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
10075
10076         * dwarf2out.c (output_file_names): Test new macro
10077         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
10078         (add_comp_dir_attribute): Likewise.
10079
10080 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
10081
10082         * config/i386/mingw-w64.h (LINK_SPEC): Add
10083         separating space between commands.
10084
10085 2009-07-28  Jan Hubicka  <jh@suse.cz>
10086
10087         PR tree-optimization/40759
10088         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
10089         for renaming.
10090
10091 2009-07-27  DJ Delorie  <dj@redhat.com>
10092
10093         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
10094         types are dword-aligned.
10095         (mep_expand_va_start): Likewise.
10096
10097 2009-07-27  Olivier Hainque  <hainque@adacore.com>
10098             Douglas B Rupp  <rupp@gnat.com>
10099
10100         * convert.c (convert_to_pointer): Don't assume the target
10101         pointer type is POINTER_SIZE long. Fetch its precision instead.
10102
10103 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
10104
10105         * system.h (fopen): Undefine if macro.
10106
10107 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
10108
10109         * dwarf2out.c (output_cfi_p): Removed.
10110         (output_cfis): New function.
10111         (output_fde): New function, split from output_call_frame_info.
10112         (output_call_frame_info): Use it.
10113         (dwarf2out_switch_text_section): Use output_cfis.
10114
10115 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
10116
10117         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
10118         TARGET_BI_ARCH is specified without enabling SJLJ.
10119         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
10120         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
10121
10122 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
10123
10124         * arm.md (negdi2): Use DImode if forcing a value into a register.
10125
10126 2009-07-26  Ira Rosen  <irar@il.ibm.com>
10127
10128         PR tree-optimization/40801
10129         * tree-vect-stmts.c (vectorizable_call): Get previous copy
10130         of vector operand from the previous copy of vector statement.
10131         Pass the correct definition type value to
10132         vect_get_vec_def_for_stmt_copy().
10133
10134 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10135
10136         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
10137         const char ** conversion.
10138
10139 2009-07-25 David Daney <ddaney@caviumnetworks.com>
10140
10141         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
10142         fancy_abort() if !ENABLE_ASSERT_CHECKING.
10143         (gcc_unreachable): Invoke __builtin_unreachable() if
10144         !ENABLE_ASSERT_CHECKING.
10145
10146 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
10147
10148         PR rtl-optimization/40445
10149         * emit-rtl.c (next_nonnote_insn_bb): New function.
10150         * rtl.h (next_nonnote_insn_bb): Declare new function.
10151         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
10152         with no successors that is the successor of the ENTRY_BLOCK.
10153         Continue from the top after removing an empty fallthrough block.
10154         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
10155         of next_nonnote_insn.
10156
10157 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
10158
10159         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
10160
10161 2009-07-25  Martin Jambor  <mjambor@suse.cz>
10162
10163         * c-common.c (c_common_attribute_table): New element for noclone.
10164         (handle_noclone_attribute): New function. Forward-declare.
10165         * tree-inline.c (tree_versionable_function_p): Check for noclone
10166         attribute.
10167         * doc/extend.texi (Labels as Values): Document need for noclone.
10168         (Function Attributes): Document noclone attribute.
10169
10170 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
10171
10172         PR rtl-optimization/34999
10173         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
10174         and dw_fde_switched_cold_to_hot fields.
10175         (output_cfi_p): New function.
10176         (output_call_frame_info): If fde->dw_fde_switched_sections,
10177         output 2 FDEs instead of one with corrupted header.
10178         (dwarf2out_do_cfi_startproc): New function.
10179         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
10180         and fde->dw_fde_switched_cold_to_hot.
10181         (dwarf2out_switch_text_section): Compute
10182         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
10183         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
10184         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
10185         Otherwise, compute fde->dw_fde_switch_cfi.
10186
10187 2009-07-24  Cary Coutant  <ccoutant@google.com>
10188
10189         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
10190
10191 2009-07-24  Cary Coutant  <ccoutant@google.com>
10192
10193         * cfghooks.c (split_block): Copy discriminator to new block.
10194         * tree-cfg.c (assign_discriminator): Check location of last
10195         instruction in block as well as first.
10196
10197 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
10198
10199         * config/i386/linux.c: Use fputs or putc instead of fprintf
10200         where appropriate.
10201         * config/i386/gas.h: Ditto.
10202         * config/i386/x86-64.h: Ditto.
10203         * config/i386/att.h: Ditto.
10204
10205 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
10206
10207         * expmed.c (emit_store_flag): Use a recursive call to optimize the
10208         xor case.
10209
10210 2009-07-24  Martin Jambor  <mjambor@suse.cz>
10211
10212         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
10213         (ipa_push_func_to_list_1): Declare.
10214         (ipa_push_func_to_list): New function.
10215
10216         * ipa-prop.c (ipa_push_func_to_list_1): New function.
10217         (ipa_init_func_list): Call ipa_push_func_to_list_1.
10218         (ipa_push_func_to_list): Removed.
10219         (ipa_pop_func_from_list): Clear node_enqueued flag.
10220
10221 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
10222
10223         * config/s390/s390.c (override_options): Default
10224         max-unrolled-insns to 100 for z10 tuning.
10225
10226 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
10227
10228         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
10229         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
10230         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
10231         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
10232         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
10233         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
10234         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
10235
10236 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
10237
10238         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
10239         use default set in mingw32.h header.
10240         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
10241         64-bit /mingw/include path.
10242         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
10243         path.
10244
10245 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
10246
10247         PR rtl-optimization/40209
10248         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
10249
10250 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
10251
10252         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
10253         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
10254         with the rest of string where appropriate.  Use fputs or putc
10255         instead of fprintf where appropriate.
10256
10257 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
10258             Pat Haugen  <pthaugen@us.ibm.com>
10259             Revital Eres <ERES@il.ibm.com>
10260
10261         * config/rs6000/vector.md: New file.  Move most of the vector
10262         expander support here from altivec.md to allow for the VSX vector
10263         unit in the future.  Add support for secondary_reload patterns.
10264         Rewrite the patterns for vector comparison, and vector comparison
10265         predicate instructions so that the RTL expresses the desired
10266         behavior, instead of using unspec.
10267
10268         * config/rs6000/constraints.md ("f" constraint): Use
10269         rs6000_constraints to hold the precalculated register class.
10270         ("d" constraint): Ditto.
10271         ("wd" constraint): New constraint for VSX.
10272         ("wf" constraint): Ditto.
10273         ("ws" constraint): Ditto.
10274         ("wa" constraint): Ditto.
10275         ("wZ" constraint): Ditto.
10276         ("j" constraint): Ditto.
10277
10278         * config/rs6000/predicates.md (vsx_register_operand): New
10279         predicate for VSX.
10280         (vfloat_operand): New predicate for vector.md.
10281         (vint_operand): Ditto.
10282         (vlogical_operand): Ditto.
10283         (easy_fp_constant): If VSX, 0.0 is an easy constant.
10284         (easy_vector_constant): Add VSX support.
10285         (altivec_indexed_or_indirect_operand): New predicate for
10286         recognizing Altivec style memory references with AND -16.
10287
10288         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
10289         for vector secondary reload support.
10290         (rs6000_vector_reg_class): Delete, replacing it with
10291         rs6000_constraints.
10292         (rs6000_vsx_reg_class): Ditto.
10293         (rs6000_constraints): New array to hold the register classes of
10294         each of the register constraints that can vary at runtime.
10295         (builtin_mode_to_type): New static array for builtin function type
10296         creation.
10297         (builtin_hash_table): New static hash table for builtin function
10298         type creation.
10299         (TARGET_SECONDARY_RELOAD): Define target hook.
10300         (TARGET_IRA_COVER_CLASSES): Ditto.
10301         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
10302         registers are 128 bits if VSX memory reference instructions are used.
10303         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
10304         unit is being used.
10305         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
10306         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
10307         Print several of the scheduling related parameters.
10308         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
10309         rs6000_constraints instead of rs6000_vector_reg_class.  Move
10310         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
10311         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
10312         Altivec.  Add VSX support.  Setup for secondary reload support on
10313         Altivec/VSX registers.
10314         (rs6000_override_options): Make power7 set the scheduling groups
10315         like the power5.  Add support for new debug switches to override
10316         the scheduling defaults.  Temporarily disable -mcpu=power7 from
10317         setting -mvsx.  Add support for debug switches -malways-hint,
10318         -msched-groups, and -malign-branch-targets.
10319         (rs6000_buitlin_conversion): Add support for returning unsigned
10320         vector conversion functions to fix regressions due to stricter
10321         type checking.
10322         (rs6000_builtin_mul_widen_even): Ditto.
10323         (rs6000_builtin_mul_widen_odd): Ditto.
10324         (rs6000_builtin_vec_perm): Ditto.
10325         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
10326         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
10327         to zero a register.
10328         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
10329         generated upstream.
10330         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
10331         VSX types for bit operations.  Changes to accomidate vector.md.
10332         (bdesc_2arg): Ditto.
10333         (bdesc_1arg): Ditto.
10334         (struct builtin_description_predicates): Rewrite predicate
10335         handling so that RTL describes the operation, instead of passing
10336         the instruction to be used as a string argument.
10337         (bdesc_altivec_preds): Ditto.
10338         (altivec_expand_predicate_builtin): Ditto.
10339         (altivec_expand_builtin): Ditto.
10340         (rs6000_expand_ternop_builtin): Use a switch instead of an if
10341         statement for vsldoi support.
10342         (altivec_expand_ld_builtin): Change to use new names from vector.md.
10343         (altivec_expand_st_builtin): Ditto.
10344         (paired_expand_builtin): Whitespace changes.
10345         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
10346         builtin_mode_to_type table for secondary reload.  Call
10347         builtin_function_type to build random builtin functions.
10348         (altivec_init_builtins): Change to use builtin_function_type to
10349         create builtin function types dynamically as we need them.
10350         (builtin_hash_function): New support for hashing the tree types
10351         for builtin function as we need it, rather than trying to build
10352         all of the trees that we need.  Add initial preliminary VSX support.
10353         (builtin_function_type): Ditto.
10354         (builtin_function_eq): Ditto.
10355         (builtin_hash_struct): Ditto.
10356         (rs6000_init_builtins): Ditto.
10357         (rs6000_common_init_builtins): Ditto.
10358         (altivec_init_builtins): Ditto.
10359         (rs6000_common_init_builtins): Ditto.
10360         (enum reload_reg_type): New enum for simplifing reg classes.
10361         (rs6000_reload_register_type): Simplify register classes into GPR,
10362         Vector, and other registers.  Altivec and VSX addresses in reload.
10363         (rs6000_secondary_reload_inner): Ditto.
10364         (rs6000_ira_cover_classes): New target hook, that returns the
10365         appropriate cover classes, based on -mvsx being used or not.
10366         (rs6000_secondary_reload_class): Add VSX support.
10367         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
10368         (get_vsel_insn): Ditto.
10369         (rs6000_emit_vector_compare): Rewrite vector conditional support
10370         so that where we can, we use RTL operators, instead of blindly use
10371         UNSPEC.
10372         (rs6000_emit_vector_select): Ditto.
10373         (rs6000_emit_vector_cond_expr): Ditto.
10374         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
10375         (create_TOC_reference): Add -mdebug=addr support.
10376         (emit_frame_save): VSX loads/stores need register indexed addressing.
10377
10378         * config/rs6000/rs6000.md: Include vector.md.
10379
10380         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
10381
10382         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
10383         support for V2DI, V2DF in logical, permute, select operations.
10384
10385         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
10386         switch for vsx/power7.
10387         (-mvsx-scalar-memory): Ditto.
10388         (-mvsx-align-128): Ditto.
10389         (-mallow-movmisalign): Ditto.
10390         (-mallow-df-permute): Ditto.
10391         (-msched-groups): Ditto.
10392         (-malways-hint): Ditto.
10393         (-malign-branch-targets): Ditto.
10394
10395         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
10396         hook instead.
10397         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
10398         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
10399         (rs6000_vector_reg_class): Delete.
10400         (rs6000_vsx_reg_class): Ditto.
10401         (enum rs6000_reg_class_enum): New enum for the constraints that
10402         vary based on target switches.
10403         (rs6000_constraints): New array to hold the register class for all
10404         of the register constraints that vary based on the switches used.
10405         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
10406         (enum rs6000_builtins): Add unsigned varients for the builtin
10407         declarations returned by target hooks for expanding multiplies,
10408         select, and permute operations.  Add VSX builtins.
10409         (enum rs6000_builtin_type_index): Add entries for VSX.
10410         (V2DI_type_node): Ditto.
10411         (V2DF_type_node): Ditto.
10412         (unsigned_V2DI_type_node): Ditto.
10413         (bool_long_type_node): Ditto.
10414         (intDI_type_internal_node): Ditto.
10415         (uintDI_type_internal_node): Ditto.
10416         (double_type_internal_node): Ditto.
10417
10418         * config/rs6000/altivec.md (whole file): Move all expanders to
10419         vector.md from altivec.md.  Rename insn matching functions to be
10420         altivec_foo.
10421         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
10422         (altivec_vcmp*): Ditto.
10423         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
10424         (VM): New iterator for moves that includes the VSX types.
10425         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
10426         (altivec_vperm_<mode>_uns): New, for unsigned types.
10427         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
10428         (altivec_eq<mode>): Ditto.
10429         (altivec_gt<mode>): Ditto.
10430         (altivec_gtu<mode>): Ditto.
10431         (altivec_eqv4sf): Ditto.
10432         (altivec_gev4sf): Ditto.
10433         (altivec_gtv4sf): Ditto.
10434         (altivec_vcmpbfp_p): Ditto.
10435
10436 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
10437
10438         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
10439         unsigned HWI.
10440
10441 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
10442
10443         PR target/40832
10444         * config/i386/i386.c (output_387_ffreep): Rewrite to use
10445         ASM_SHORT instead of .word.
10446         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
10447         instead of .word in asm template.
10448
10449 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
10450
10451         PR target/37488
10452         * ira-lives.c (bb_has_abnormal_call_pred): New function.
10453         (process_bb_node_lives): Use it.
10454
10455         * ira.c (setup_cover_and_important_classes): Don't setup
10456         ira_important_class_nums.  Add cover classes to the end of
10457         important classes.
10458         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
10459         New.
10460         (find_reg_class_closure): Use reorder_important_classes.
10461
10462         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
10463
10464         * config/i386/i386.c (i386_ira_cover_classes): New function.
10465         (TARGET_IRA_COVER_CLASSES): Redefine.
10466
10467         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
10468         importance of order of cover classes in the array.
10469
10470 2009-07-22  Diego Novillo  <dnovillo@google.com>
10471
10472         * tree-pass.h (TDF_EH): Define.
10473         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
10474         contains TDF_EH, print the EH region number holding GS.
10475         * tree-dump.c (dump_options): Add "eh".
10476         * doc/invoke.texi: Document it.
10477
10478 2009-07-22  Doug Kwan  <dougkwan@google.com>
10479
10480         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
10481
10482 2009-07-22  Michael Matz  <matz@suse.de>
10483
10484         PR tree-optimization/35229
10485         PR tree-optimization/39300
10486
10487         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
10488         (inhibit_phi_insertion): New function.
10489         (insert_into_preds_of_block): Call it for REFERENCEs.
10490         (init_pre): Initialize and finalize scalar evolutions.
10491         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
10492
10493 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
10494
10495         * config/i386/predicates.md (zero_extended_scalar_load_operand):
10496         Use CONST_VECTOR_NUNITS to determine number of elements.
10497
10498 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
10499
10500         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
10501         (U, W): Constraints are now deprecated and will be removed if we
10502         run out of letters.
10503         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
10504         the file.
10505         ("prefetch"): Add the stcmh instruction for prefetching.
10506         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
10507         changes.
10508         (s390_short_displacement): Return always true if compiling for
10509         machines not providing the long displacement facility.
10510         (s390_mem_constraint): Support the new constraint letter Z.
10511         (s390_check_qrst_address): New function.
10512
10513 2009-07-21  DJ Delorie  <dj@redhat.com>
10514
10515         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
10516         alone too.
10517
10518 2009-07-21  Jason Merrill  <jason@redhat.com>
10519
10520         * c-common.c (max_tinst_depth): Increase default to 1024.
10521
10522 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
10523
10524         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
10525         (vec_unpacku_float_lo_v4si): Ditto.
10526
10527 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
10528
10529         PR target/40811
10530         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
10531         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
10532         (builtin_description): Add __builtin_ia32_cvtudq2ps.
10533         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
10534
10535 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
10536
10537         PR tree-optimization/40813
10538         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
10539         it.
10540
10541 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
10542
10543         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
10544         with a NOP_EXPR if needed.
10545
10546 2009-07-21  Paul Brook <paul@codesourcery.com>
10547
10548         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
10549         Terminate debug dump with newline.
10550
10551 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10552
10553         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
10554         Cast "1" to unsigned HOST_WIDE_INT.
10555         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
10556         deposit length to the maximum length - lsb.  Extend length if
10557         HOST_BITS_PER_WIDE_INT is 32.
10558
10559 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
10560
10561         * cgraph.h (constant_pool_htab): New function.
10562         (constant_descriptor_tree): Move from varasm.c.
10563         * varasm.c (constant_pool_htab): New function.
10564         (constant_descriptor_tree): Move to cgraph.h.
10565
10566 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
10567
10568         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
10569
10570 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
10571
10572         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
10573         $(VARRAY_H).
10574
10575 2009-07-20  Xinliang David Li  <davidxl@google.com>
10576
10577         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
10578
10579 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
10580
10581         * config/mips/mips.md (move_type): Add arith.
10582         (type): Handle arith.
10583         (zero_extendsidi2): Rename this into ...
10584         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
10585         (zero_extendsidi2): New expander.
10586         (*zero_extendsidi2_dext): New pattern.
10587
10588 2009-07-20  Nick Clifton  <nickc@redhat.com>
10589
10590         * config.gcc (mips64-*-*): Add definition of tm_defines in order
10591         to set MIPS_ABI_DEFAULT.
10592         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
10593
10594 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
10595
10596         * tree-object-size.c (addr_object_size): Handle unions with
10597         array in it as last field of structs in __bos (, 1) as __bos (, 0).
10598
10599         PR tree-optimization/40792
10600         * tree.c (build_function_type_skip_args): Remove bogus assert.
10601
10602 2009-07-20  Jan Hubicka  <jh@suse.cz>
10603             Martin Jambor  <mjambor@suse.cz>
10604
10605         * cgraph.h (combined_args_to_skip): New field.
10606         * cgraph.c (cgraph_create_virtual_clone): Properly handle
10607         combined_args_to_skip and args_to_skip.
10608         * tree-inline.c (update_clone_info): New function.
10609         (tree_function_versioning): Call update_clone_info.
10610         * cgraphunit.c (cgraph_materialize_clone): Dump materialized
10611         functions.
10612         (cgraph_materialize_all_clones): More extensive dumping, working
10613         with combined_args_to_skip rather than args_to_skip.
10614
10615 2009-07-20  Ira Rosen  <irar@il.ibm.com>
10616
10617         * tree-vectorizer.h (vectorizable_condition): Add parameters.
10618         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
10619         (get_initial_def_for_reduction): Likewise.
10620         (vectorizable_reduction): Skip the check of first operand in case
10621         of COND_EXPR. Add check that it is outer loop vectorization if
10622         nested cycle was detected. Call vectorizable_condition() for
10623         COND_EXPR. If reduction epilogue cannot be created do not fail for
10624         nested cycles (if it is not double reduction). Assert that there
10625         is only one type in the loop in case of COND_EXPR. Call
10626         vectorizable_condition() to vectorize COND_EXPR.
10627         * tree-vect-stmts.c (vectorizable_condition): Update comment.
10628         Add parameters. Allow nested cycles if called from
10629         vectorizable_reduction(). Use reduction vector variable if provided.
10630         (vect_analyze_stmt): Call vectorizable_reduction() before
10631         vectorizable_condition().
10632         (vect_transform_stmt): Update call to vectorizable_condition().
10633
10634 2009-07-20  Christian Bruel  <christian.bruel@st.com>
10635
10636         * config/sh/sh.opt (-mfmovd): Resurrect and document.
10637         * doc/invoke.texi (-mfmovd): Likewise.
10638         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
10639
10640 2009-07-20  Jan Hubicka  <jh@suse.cz>
10641
10642         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
10643         when handling SSA name.
10644
10645 2009-07-19  Jan Hubicka  <jh@suse.cz>
10646
10647         PR tree-optimization/40676
10648         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
10649         virtual PHIs in empty BBs.
10650
10651 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
10652
10653         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
10654         re-expanded the compound use gen_lowpart instead to convert to the
10655         desired mode.
10656
10657 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
10658
10659         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
10660         OUTER_CONST arguments.
10661         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
10662         the new wider mode will be masked off.
10663         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
10664
10665 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
10666
10667         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
10668         high-order bits are zero.
10669
10670 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
10671
10672         * combine.c (simplify_shift_const_1): Split code to determine
10673         shift_mode into ...
10674         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
10675         new bits shifted in are identical to the old sign bit.
10676
10677 2009-07-18  Richard Guenther  <rguenther@suse.de>
10678
10679         PR c/40787
10680         * gimplify.c (gimplify_call_expr): Reject code using results from
10681         functions returning void.
10682
10683 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
10684
10685         * doc/md.texi: Document the new PowerPC "es" constraint.
10686         Document that "m" can include automodified addresses on this target,
10687         and explain how %U must be used.  Extend the "Q" and "Z" documentation
10688         to suggest "es" as well as "m".
10689         * config/rs6000/constraints.md (es): New memory constraint.
10690         (Q, Z): Update strings to match new documentation.
10691
10692 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
10693
10694         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
10695         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
10696         * config/rs6000/predicates.md (volatile_mem_operand): Use
10697         offsettable_nonstrict_memref_p.
10698         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
10699         (*floatunssidf2_internal): Likewise.
10700         (*fix_truncdfsi2_internal): Likewise.
10701         (*fix_trunctfsi2_internal): Likewise.
10702
10703 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
10704
10705         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
10706         atmega32u2 devices.
10707         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
10708
10709 2009-07-17  Richard Guenther  <rguenther@suse.de>
10710
10711         PR c/40401
10712         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
10713         (pass_warn_unused_result): Likewise.
10714         (TODO_set_props): Remove.
10715         * omp-low.c (diagnose_omp_structured_block_errors): Change to
10716         run as a pass.
10717         (pass_diagnose_omp_blocks): Define.
10718         * c-decl.c (pop_file_scope): Do not finalize the CU here.
10719         (c_gimple_diagnostics_recursively): Remove.
10720         (finish_function): Do not call it.
10721         (c_write_global_declarations): Continue after errors.
10722         Finalize the CU here.
10723         * c-gimplify.c (c_genericize): Do not gimplify here.
10724         * c-common.c (c_warn_unused_result): Move ...
10725         * tree-cfg.c (do_warn_unused_result): ... here.
10726         (run_warn_unused_result): New function.
10727         (gate_warn_unused_result): New function.
10728         (pass_warn_unused_result): New pass.
10729         * c-common.h (c_warn_unused_result): Remove.
10730         * flags.h (flag_warn_unused_result): Declare.
10731         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
10732         * opts.c (flag_warn_unused_result): Initialize to false.
10733         * toplev.c (compile_file): Add comment.
10734         * omp-low.c (create_omp_child_function): Do not register
10735         the function with the frontend.
10736         (diagnose_omp_structured_block_errors): Prepare to be
10737         called as optimization pass.
10738         (gate_diagnose_omp_blocks): New function.
10739         (pass_diagnose_omp_blocks): New pass.
10740         * cgraph.h (cgraph_optimize): Remove.
10741         (cgraph_analyze_function): Likewise.
10742         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
10743         * cgraphunit.c (cgraph_lower_function): Lower nested functions
10744         before their parents here.
10745         (cgraph_finalize_function): Not here.
10746         (cgraph_analyze_function): Gimplify functions here.
10747         (cgraph_finalize_compilation_unit): Continue after errors.
10748         Optimize the callgraph from here.
10749         (cgraph_optimize): Make static.
10750         * langhooks.c (write_global_declarations): Finalize the CU.
10751         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
10752         (gimplify_function_tree): Assert we gimplify only once.
10753         Set PROP_gimple_any property.
10754         * tree-nested.c (gimplify_all_functions): New function.
10755         (lower_nested_functions): Gimplify all nested functions.
10756         * gimple.h (diagnose_omp_structured_block_errors): Remove.
10757         * passes.c (init_optimization_passes): Add pass_warn_unused_result
10758         and pass_diagnose_omp_blocks after gimplification.  Do not
10759         set TODO_set_props on all_lowering_passes.
10760         (execute_one_pass): Do not handle TODO_set_props.
10761         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
10762         (gimplify.o): Add tree-pass.h dependency.
10763         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
10764         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
10765         (unsave_r): Likewise.
10766         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
10767         temporary variable.
10768
10769 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
10770
10771         * doc/service.texi (Service): Restore previously removed link,
10772         which isn't broken after all.
10773
10774 2009-07-17  Richard Guenther  <rguenther@suse.de>
10775
10776         PR tree-optimization/40321
10777         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
10778         PHI nodes to the maximal set.
10779         (make_values_for_phi): Add PHI arguments to the maximal set.
10780         (execute_pre): Dump PHI_GEN and the maximal set.
10781
10782 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
10783
10784         PR c++/40780
10785         * gimplify.c (gimplify_conversion): Don't change non-conversions into
10786         VIEW_CONVERT_EXPR.
10787
10788 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
10789
10790         * doc/extend.texi (Nested Functions): Replace broken link with
10791         textual reference.
10792         * doc/service.texi (Service): Remove broken link.
10793
10794 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
10795
10796         PR bootstrap/40781
10797         * builtins.c (expand_builtin_memcmp): Use loc instead of
10798         EXPR_LOCATION (exp).
10799         (expand_builtin_strncmp): Likewise.
10800
10801 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
10802             Manuel López-Ibáñez  <manu@gcc.gnu.org>
10803
10804         PR 40435
10805         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
10806         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
10807         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
10808         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
10809         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
10810         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
10811         tree-inline.c, c-common.c, c-common.h, gimple.c,
10812         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
10813         convert.c: Add location argument to fold_{unary,binary,ternary},
10814         fold_build[123], build_call_expr, build_size_arg,
10815         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
10816         fold_build1_initializer, fold_build2_initializer,
10817         fold_build3_initializer, fold_build_call_array,
10818         fold_build_call_array_initializer, fold_single_bit_test,
10819         omit_one_operand, omit_two_operands, invert_truthvalue,
10820         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
10821         combine_comparisons, fold_builtin_*, fold_call_expr,
10822         build_range_check, maybe_fold_offset_to_address, round_up,
10823         round_down.
10824
10825 2009-07-16  Jason Merrill  <jason@redhat.com>
10826
10827         PR libstdc++/37907
10828         * c-common.c (c_common_reswords): Add __is_standard_layout
10829         and __is_trivial.
10830         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
10831         * doc/implement-cxx.texi: New.
10832         * doc/gcc.texi: Include it.
10833
10834 2009-07-16  DJ Delorie  <dj@redhat.com>
10835
10836         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
10837         compares that may be indirectly affected by previous instructions.
10838
10839 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10840
10841         * builtins.c (do_mpc_arg2): New.
10842         (fold_builtin_2): Fold builtin cpow.
10843         * real.h (HAVE_mpc_pow): New.
10844
10845 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
10846
10847         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
10848         comparison to skip unprofitable schedule
10849
10850 2009-07-16  Simon Baldwin  <simonb@google.com>
10851
10852         * gcc.c (option_map): New flag -no-canonical-prefixes.
10853         * (display_help): Print help text for new flag.
10854         * (process_command): Move options translation and language specifics
10855         and handle new flag early.  Use it to set a function pointer to a
10856         prefix builder.  Replace make_relative_prefix calls with calls to
10857         the function pointed to.  Ignore new flag in regular options handling.
10858         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
10859
10860 2009-07-15  DJ Delorie  <dj@redhat.com>
10861
10862         * config/mep/mep.md (sibcall_internal): Change register to avoid
10863         argument registers.
10864         (sibcall_value_internal): Likewise.
10865
10866 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
10867
10868         PR rtl-optimization/40710
10869         * resource.c (mark_target_live_regs): Reset DF problem to LR.
10870
10871 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
10872
10873         * config/mips/mips.md (*extenddi_truncate<mode>,
10874         *extendsi_truncate<mode>): Change type attribute to move_type
10875         with shift_shift.  Split out code handling exts from here ...
10876         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
10877         pattern.
10878         (*extendhi_truncateqi): Change type attribute to move_type with
10879         shift_shift.  Split out code handling exts from here ...
10880         (*extendhi_truncateqi_exts): ... to this new pattern.
10881
10882 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
10883
10884         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
10885         instead of "and" with inverted sign bit mask value.  Use
10886         "nonimmediate_operand" for operand 1 and operand 2 predicate.
10887         Allocate registers only for operand 4 and operand 5.
10888
10889 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
10890
10891         PR middle-end/40747
10892         * fold-const.c (fold_cond_expr_with_comparison): When folding
10893         < and <= to MIN, make sure the MIN uses the same type as the
10894         comparison's operands.
10895
10896 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
10897
10898         * arm.md (ior_xor): New code iterator.
10899         (split for ior/xor with shift and zero-extend): New split pattern.
10900         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
10901
10902 2009-07-15  Richard Guenther  <rguenther@suse.de>
10903
10904         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
10905         offset member.
10906
10907 2009-07-15  Richard Guenther  <rguenther@suse.de>
10908
10909         PR middle-end/40753
10910         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
10911
10912 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
10913
10914         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
10915         handle 2.6.30 kernel.
10916
10917 2009-07-15  DJ Delorie  <dj@redhat.com>
10918
10919         * config/mep/mep.md (sibcall_internal): Change register to allow
10920         for 24-bit addresses.
10921         (sibcall_value_internal): Likewise.
10922
10923 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
10924
10925         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
10926         that are enabled/disabled by the flags introduced by a previous patch.
10927
10928 2009-07-14  DJ Delorie  <dj@redhat.com>
10929
10930         * config/mep/mep.md (sibcall_internal): Include non-toggling
10931         non-jmp case.
10932         (sibcall_value_internal): Likewise.
10933
10934 2009-07-14  Taras Glek  <tglek@mozilla.com>
10935             Rafael Espindola  <espindola@google.com>
10936
10937         * doc/sourcebuild.texi: Document install-plugin target.
10938         * configure.ac: Added install-plugin target to language makefiles.
10939         * configure: Regenerate.
10940         * Makefile.in (install-plugin): Install more headers,
10941         depend on lang.install-plugin.
10942
10943 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
10944
10945         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
10946         translation.
10947
10948 2009-07-14  DJ Delorie  <dj@redhat.com>
10949
10950         * config/mep/mep.c (mep_vliw_jmp_match): New function.
10951         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
10952         * config/mep/mep.md (sibcall_internal): Change test from
10953         mep_vliw_mode_match to mep_vliw_jmp_match.
10954         (sibcall_value_internal): Likewise.
10955
10956 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
10957
10958         * config/i386/sse.md (copysign<mode>3): New expander.
10959         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
10960         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
10961         Use ix86_build_const_vector.
10962         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
10963         IX86_BUILTIN_CPYSGNPD.
10964         (builtin_description): Add __builtin_ia32_copysignps and
10965         __builtin_ia32_copysignpd.
10966         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
10967         and BUILT_IN_COPYSIGNF.
10968
10969 2009-07-13  Jason Merrill  <jason@redhat.com>
10970
10971         * builtins.c (can_trust_pointer_alignment): New fn.
10972         (get_pointer_alignment): Factor it out from here.
10973         * tree.h: Declare it.
10974
10975 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
10976
10977         * config/rs6000/predicates.md (offsettable_mem_operand): Test
10978         RTX_AUTOINC class.
10979
10980 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
10981
10982         PR debug/40705
10983         PR c++/403057
10984         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
10985
10986 2009-07-14  Richard Guenther  <rguenther@suse.de>
10987             Andrey Belevantsev <abel@ispras.ru>
10988
10989         PR middle-end/40745
10990         * cfgexpand.c (partition_stack_vars): Do not bother to update
10991         alias information when not optimizing.
10992
10993 2009-07-14  Richard Guenther  <rguenther@suse.de>
10994             Andrey Belevantsev <abel@ispras.ru>
10995
10996         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
10997         (pt_solution_set): Likewise.
10998         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
10999         * tree-ssa-structalias.c (pt_solution_set): New function.
11000         * final.c (rest_of_clean_state): Free SSA data structures.
11001         * print-rtl.c (print_decl_name): Remove.
11002         (print_mem_expr): Implement in terms of print_generic_expr.
11003         * alias.c (ao_ref_from_mem): New function.
11004         (rtx_refs_may_alias_p): Likewise.
11005         (true_dependence): Query alias-export info.
11006         (canon_true_dependence): Likewise.
11007         (write_dependence_p): Likewise.
11008         * tree-dfa.c (get_ref_base_and_extent): For void types leave
11009         size unknown.
11010         * emit-rtl.c (component_ref_for_mem_expr): Remove.
11011         (mem_expr_equal_p): Use operand_equal_p.
11012         (set_mem_attributes_minus_bitpos): Do not use
11013         component_ref_for_mem_expr.
11014         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
11015         (update_alias_info_with_stack_vars): Likewise.
11016         (partition_stack_vars): Call update_alias_info_with_stack_vars.
11017         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
11018         explicitly nor clear stmt operands.
11019         Free the decl-to-pointer map.
11020         * tree-optimize.c (execute_free_datastructures): Do not free
11021         SSA data structures here.
11022         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
11023         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
11024         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
11025         dependencies.
11026         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
11027
11028 2009-07-13  DJ Delorie  <dj@redhat.com>
11029
11030         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
11031         unrolling at the right iteration count.
11032
11033         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
11034         calculations.
11035
11036 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
11037
11038         * haifa-sched.c (rank_for_schedule): Introduced flags to
11039         enable/disable individual scheduling heuristics.
11040         * common.opt: Introduced flags to enable/disable individual
11041         heuristics in the scheduler.
11042         * doc/invoke.texi: Introduced flags to enable/disable individual
11043         heuristics in the scheduler.
11044
11045 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
11046
11047         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
11048         config/i386/mingw-tls.c.
11049         * config/i386/mingw-tls.c: Removed.
11050
11051 2009-07-13  Ira Rosen  <irar@il.ibm.com>
11052
11053         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
11054         checks access only relevant statements.
11055         (vectorizable_reduction): Likewise.
11056
11057 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
11058
11059         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
11060         just for 32-bit case.
11061
11062 2009-07-12  Jan Hubicka  <jh@suse.cz>
11063
11064         PR tree-optimization/40585
11065         * except.c (expand_resx_expr): When there already is resume
11066         instruction, produce linked list.
11067         (build_post_landing_pads): Assert that resume is empty.
11068         (connect_post_landing_pads): Handle resume lists.
11069         (dump_eh_tree): Dump resume list.
11070
11071 2009-07-12  Ira Rosen  <irar@il.ibm.com>
11072
11073         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
11074         with additional argument.
11075         * tree-vectorizer.h (enum vect_def_type): Add
11076         vect_double_reduction_def.
11077         (vect_is_simple_reduction): Add argument.
11078         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
11079         indentation.
11080         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
11081         vect_is_simple_reduction with additional argument.
11082         (vect_analyze_loop_operations): Handle exit phi nodes in case of
11083         double reduction.
11084         (reduction_code_for_scalar_code): Handle additional codes by
11085         returning ERROR_MARK for them. Fix comment and indentation.
11086         (vect_is_simple_reduction): Fix comment, add argument to specify
11087         double reduction. Detect double reduction.
11088         (get_initial_def_for_induction): Fix indentation.
11089         (get_initial_def_for_reduction): Fix comment and indentation.
11090         Handle double reduction. Create initial definitions that do not
11091         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
11092         (vect_create_epilog_for_reduction): Fix comment, add argument to
11093         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
11094         epilogue result extraction. Create double reduction phi node and
11095         replace relevant uses.
11096         (vectorizable_reduction): Call vect_is_simple_reduction with
11097         additional argument. Fix indentation. Update epilogue code treatment
11098         according to the changes in reduction_code_for_scalar_code. Check
11099         for double reduction. Call vect_create_epilog_for_reduction with
11100         additional argument.
11101         * tree-vect-stmts.c (process_use): Handle double reduction, update
11102         documentation.
11103         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
11104         (vect_get_vec_def_for_operand): Likewise.
11105
11106 2009-07-12  Danny Smith  <dansmister@gmail.com>
11107
11108         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
11109         dllexport if !TREE_PUBLIC.
11110         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
11111
11112 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
11113
11114         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
11115         (avr_extra_arch_macro) Remove declatation.
11116         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
11117         (avr_extra_arch_macro) Declare as static.
11118         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
11119
11120 2009-07-11  Jan Hubicka  <jh@suse.cz>
11121
11122         PR middle-end/48388
11123         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
11124
11125 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
11126
11127         PR debug/40713
11128         * dwarf2out.c (dw_fde_struct): Add in_std_section and
11129         cold_in_std_section bits.
11130         (dwarf2out_begin_prologue): Initialize them.
11131         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
11132         if already covered by text_section or cold_text_section range.
11133
11134         PR rtl-optimization/40667
11135         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
11136         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
11137         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
11138         * config/i386/i386.c (ix86_minimum_alignment): New function.
11139         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
11140         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
11141         * emit-rtl.c (gen_reg_rtx): Likewise.
11142         * function.c (assign_parms): Likewise.  If nominal_type needs
11143         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
11144         rather than passed_type's alignment.
11145
11146         PR target/40668
11147         * function.c (assign_parm_setup_stack): Adjust
11148         MEM_OFFSET (data->stack_parm) if promoted_mode is different
11149         from nominal_mode on big endian.
11150
11151 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
11152
11153         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
11154
11155 2009-07-10  DJ Delorie  <dj@redhat.com>
11156
11157         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
11158
11159 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
11160
11161         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
11162         attribute.
11163         (thumb2_cbnz): Likewise.
11164
11165 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
11166
11167         PR target/39079
11168         * config.gcc (supported_defaults): Add synci.
11169         (with_synci): Add validation.
11170         (all_defaults): Add synci.
11171         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
11172         ISA_HAS_SYNCI.
11173         (synci): Same.
11174         * config/mips/mips.opt (msynci): New option.
11175         * config/mips/mips.c (mips_override_options): Warn on use of
11176         -msynci for targets that do now support it.
11177         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
11178         msynci.
11179         * gcc/doc/invoke.texi (-msynci): Document the new option.
11180         * doc/install.texi (--with-synci): Document the new option.
11181
11182 2009-07-10  Richard Guenther  <rguenther@suse.de>
11183
11184         PR tree-optimization/40496
11185         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
11186         the PHI result with a compatible type.
11187
11188 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11189
11190         PR 25509
11191         PR 40614
11192         * c.opt (Wunused-result): New.
11193         * doc/invoke.texi: Document it.
11194         * c-common.c (c_warn_unused_result): Use it.
11195
11196 2009-07-09  DJ Delorie  <dj@redhat.com>
11197
11198         * targhooks.c (default_target_can_inline_p): Rename from
11199         default_target_option_can_inline_p.
11200         * targhooks.h (default_target_can_inline_p): Likewise.
11201         * target-def.h (TARGET_CAN_INLINE_P): Rename from
11202         TARGET_OPTION_CAN_INLINE_P.
11203         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
11204         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
11205         (mep_target_can_inline_p): Rename from
11206         mep_target_option_can_inline_p.
11207
11208         PR target/40626
11209         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
11210         registers used to pass vectors.
11211
11212         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
11213
11214 2009-07-09  Tom Tromey  <tromey@redhat.com>
11215
11216         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
11217         * config/mmix/mmix.c: Include dwarf2.h.
11218         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
11219         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
11220         * config/sh/sh.c: Include dwarf2.h.
11221         * config/i386/i386.c: Include dwarf2.h.
11222         * Makefile.in (DWARF2_H): Remove 'elf'.
11223         * except.c: Include dwarf2.h.
11224         * unwind-dw2.c: Include dwarf2.h.
11225         * dwarf2out.c: Include dwarf2.h.
11226         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
11227         * unwind-dw2-fde.c: Include dwarf2.h.
11228         * dwarf2asm.c: Include dwarf2.h.
11229
11230 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
11231
11232         * haifa-sched.c (insn_finishes_cycle_p): New static function.
11233         (max_issue): Use it.
11234         * sched-int.h (struct sched_info: insn_finishes_block_p): New
11235         scheduler hook.
11236         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
11237         (region_sched_info): Update.
11238         * sched-ebb.c (ebb_sched_info): Update.
11239         * modulo-sched.c (sms_sched_info): Update.
11240         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
11241
11242 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
11243
11244         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
11245
11246 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
11247
11248         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
11249
11250 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
11251
11252         PR middle-end/40692
11253         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
11254         arg1 with arg01 if arg1 is already INTEGER_CST.
11255
11256 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
11257
11258         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
11259         Transform (and (truncate)) into (truncate (and)).
11260
11261 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
11262
11263         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
11264         creating LHS paradoxical subregs.  Fix surrounding returns to
11265         use NULL_RTX rather than 0.
11266
11267 2009-07-08  DJ Delorie  <dj@redhat.com>
11268
11269         * config/mep/mep.c (mep_option_can_inline_p): New.
11270         (TARGET_OPTION_CAN_INLINE_P): Define.
11271
11272 2009-07-08  Mark Wielaard  <mjw@redhat.com>
11273
11274         PR debug/40659
11275         * dwarf2out.c (add_data_member_location_attribute): When we have
11276         only a constant offset don't emit a new location description using
11277         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
11278         dwarf_version > 2.
11279
11280 2009-07-08  Richard Henderson  <rth@redhat.com>
11281
11282         PR target/38900
11283         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
11284         (enum reg_class): Add CLOBBERED_REGS.
11285         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
11286         * config/i386/i386.c (ix86_conditional_register_usage): Moved
11287         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
11288         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
11289         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
11290         force 64-bit sibcalls into R11.
11291         * config/i386/constraints.md (U): New constraint.
11292         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
11293         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
11294         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
11295
11296 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
11297
11298         * basic-block.h (dump_regset, debug_regset): Remove duplicate
11299         prototypes.
11300         * c-objc-common.h (c_initialize_diagnostics): Ditto.
11301         * ebitmap.h (dump_ebitmap): Ditto.
11302         * optabs.h (optab_libfunc): Ditto.
11303         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
11304         * tree-flow.h (vect_can_force_dr_alignment_p,
11305         get_vectype_for_scalar_type): Ditto.
11306         (vectorize_loops): Move prototype to ...
11307         * tree-vectorizer.h: ... here. Also, adjust comment.
11308         (vect_set_verbosity_level): Remove duplicate prototype.
11309         * tree-ssa-loop.c: Include tree-vectorizer.h.
11310         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
11311
11312 2009-07-08  Nick Clifton  <nickc@redhat.com>
11313
11314         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
11315         forward slash.
11316
11317 2009-07-08  DJ Delorie  <dj@redhat.com>
11318
11319         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
11320         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
11321         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
11322         written to.
11323         * config/mep/intrinsics.md: Regenerated.
11324         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
11325         registers when asm() or calls are detected.
11326
11327 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11328
11329         PR c++/31246
11330         * gimplify.c (gimplify_expr): Propagate no_warning flag when
11331         gimplifying.
11332         * gimple (gimple_build_call_from_tree): Likewise.
11333         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
11334         no_warning flag before warning.
11335
11336 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11337
11338         * tree.c (set_expr_locus): Remove.
11339         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
11340         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
11341         EXPR_LOCATION.
11342         * gimplify.c (internal_get_tmp_var): Likewise.
11343         (gimplify_call_expr): Likewise.
11344         (gimplify_one_sizepos): Likewise.
11345
11346 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
11347
11348         PR debug/40666
11349         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
11350         to variables for debugging purposes.
11351
11352 2009-06-23  Mark Loeser  <mark@halcy0n.com>
11353
11354         PR build/40010
11355         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
11356
11357 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11358
11359         * pretty-print.c (pp_base_format): Remove %J.
11360         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
11361         gcc_cxxdiag_char_table): Likewise.
11362         (init_dynamic_diag_info): Likewise.
11363
11364 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11365
11366         * pretty-print.c (pp_base_format): Remove %H.
11367         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
11368         gcc_cxxdiag_char_table): Likewise.
11369         (init_dynamic_diag_info): Likewise.
11370         * config/mep/mep.c (mep_select_section): Likewise.
11371
11372 2009-07-07  Duncan Sands  <baldrick@free.fr>
11373
11374         * final.c (pass_clean_state): Give the pass a name.
11375         * passes.c (pass_rest_of_compilation): Likewise.
11376         * tree-optimize.c (pass_all_optimizations): Likewise.
11377
11378 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
11379
11380         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
11381         an extra 'decl' for error_at.
11382
11383 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
11384
11385         PR middle-end/40669
11386         * tree-tailcall.c (adjust_return_value_with_ops,
11387         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
11388         if it has complex or vector type.
11389
11390 2009-07-07  Olivier Hainque  <hainque@adacore.com>
11391
11392         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
11393         pthread symbols.
11394
11395 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
11396
11397         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
11398
11399 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11400
11401         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
11402         * c-decl.c: Likewise.
11403         * function.c: Likewise.
11404         * varasm.c: Likewise.
11405         * tree-ssa.c: Likewise.
11406         * c-common.c: Likewise.
11407         * tree-cfg.c: Likewise.
11408         * config/spu/spu.c: Likewise.
11409         * config/ia64/ia64.c: Likewise.
11410         * config/v850/v850.c: Likewise.
11411
11412 2009-07-06  DJ Delorie  <dj@redhat.com>
11413
11414         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
11415         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
11416         unspecified accesses to control registers.
11417         * config/mep/intrinsics.md: Regenerate.
11418         * config/mep/intrinsics.h: Regenerate.
11419         * config/mep/mep-intrin.h: Regenerate.
11420
11421 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11422
11423         * c-lex.c: Replace %H by an explicit location. Update all calls.
11424         * c-common.c: Likewise.
11425         * c-decl.c: Likewise.
11426         * c-typeck.c: Likewise.
11427         * fold-const.c: Likewise.
11428         * gimplify.c: Likewise.
11429         * stmt.c: Likewise.
11430         * tree-cfg.c: Likewise.
11431         * tree-ssa-loop-niter.c: Likewise.
11432         * tree-vrp.c: Likewise.
11433         * value-prof.c: Likewise.
11434
11435 2009-07-06  Diego Novillo  <dnovillo@google.com>
11436
11437         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
11438         if it has one.  Handle cases where VAR does not have an
11439         annotation or cfun is NULL.
11440
11441 2009-07-06  Diego Novillo  <dnovillo@google.com>
11442
11443         * tree.c: Include debug.h.
11444         (initialize_tree_contains_struct): New.
11445         (init_ttree): Call it.
11446         (tree_node_structure_for_code): Factor out of ...
11447         (tree_node_structure): ... here.
11448         * treestruct.def (TS_PHI_NODE): Remove.
11449         (TS_GIMPLE_STATEMENT): Remove.
11450
11451 2009-07-06  Diego Novillo  <dnovillo@google.com>
11452
11453         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
11454         (debug_tree_chain): Handle cycles.
11455
11456 2009-07-06  Nick Clifton  <nickc@redhat.com>
11457             DJ Delorie  <dj@redhat.com>
11458
11459         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
11460         __FMOVD_ENABLED__ is defined.
11461         * config/sh/sh.h
11462         (TARGET_FMOVD): Provide a default definition.
11463         (MASK_FMOVD): Likewise.
11464         (TARGET_CPU_CPP_BUILTINS): Define
11465         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
11466         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
11467         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
11468         (split for DF load from memory into register): Also handle
11469         MEMs which consist of REG+DISP addressing.
11470         (split for DF store from register to memory): Likewise.
11471         (movsf_ie): Always use single fp_mode.
11472         * config/sh/sh.c (sh_override_options): Do not automatically
11473         enable TARGET_MOVD for the SH2A when supporting doubles - leave
11474         that to the -mfmovd command line switch.
11475         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
11476         (fldi_ok): Always allow.
11477         * config/sh/sh.opt (mfmovd): Remove this switch.
11478         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
11479
11480 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
11481             Kaz Kojima  <kkojima@gcc.gnu.org>
11482
11483         PR rtl-optimization/30807
11484         * postreload.c (reload_combine): For every new use of REG_SUM,
11485         record the use of BASE.
11486
11487 2009-07-06  Jan Hubicka  <jh@suse.cz>
11488
11489         * params.def: Revert my accidental commit at 2009-06-30.
11490
11491 2009-07-04  Ian Lance Taylor  <iant@google.com>
11492
11493         PR target/40636
11494         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
11495         EXPORTED_CONST.
11496         (mingw_format_attribute_overrides): Likewise.
11497
11498 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
11499
11500         PR debug/40596
11501         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
11502         don't check cfa.reg.  Instead of cfa.indirect use
11503         fde && fde->drap_reg != INVALID_REGNUM test.
11504
11505 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
11506
11507         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
11508
11509 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
11510
11511         PR target/40587
11512         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
11513
11514 2009-07-03  Richard Guenther  <rguenther@suse.de>
11515
11516         PR tree-optimization/40640
11517         * tree-switch-conversion.c (build_arrays): Perform arithmetic
11518         in original type.
11519
11520 2009-07-03  Jan Hubicka  <jh@suse.cz>
11521
11522         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
11523         for size, reduce amount of inlining.
11524
11525 2009-07-03  Richard Guenther  <rguenther@suse.de>
11526
11527         PR middle-end/34163
11528         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
11529         if t +- x is known to not overflow and the conversion widens the
11530         operation.
11531         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
11532
11533 2009-07-03  Jan Hubicka  <jh@suse.cz>
11534
11535         * ipa-pure-const.c (analyze): Update loop optimizer init.
11536         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
11537         try_remove_empty_loop, remove_empty_loops): Remove.
11538         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
11539         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
11540         to mark regular loops as neccesary.
11541         (degenerate_phi_p): New function.
11542         (propagate_necessity, remove_dead_phis): Use it.
11543         (forward_edge_to_pdom): Likewise.
11544         (eliminate_unnecessary_stmts): Take care to remove uses of results of
11545         virtual PHI nodes that became unreachable.
11546         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
11547         * tree-flow.h (remove_empty_loops): Remove.
11548         * passes.c (init_optimization_passes): Remove.
11549
11550 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
11551
11552         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
11553         can_create_pseudo_p.
11554         (*fix_trunc<mode>_i387_1): Ditto.
11555         (*floathi<mode>2_1): Ditto.
11556         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
11557         (*fistdi2_1): Ditto.
11558         (*fist<mode>2_1): Ditto.
11559         (frndintxf2_floor): Ditto.
11560         (*fist<mode>2_floor_1): Ditto.
11561         (frndintxf2_ceil): Ditto.
11562         (*fist<mode>2_ceil_1): Ditto.
11563         (frndintxf2_trunc): Ditto.
11564         (frndintxf2_mask_pm): Ditto.
11565         (fxam<mode>2_i387_with_temp): Ditto.
11566         * config/i386/sse.md (mulv16qi3): Ditto.
11567         (*sse2_mulv4si3): Ditto.
11568         (mulv2di3): Ditto.
11569         (sse4_2_pcmpestr): Ditto.
11570         (sse4_2_pcmpistr): Ditto.
11571
11572 2009-07-03  Jan Hubicka  <jh@suse.cz>
11573
11574         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
11575         (mark_stmt_necessary): Set it.
11576         (mark_operand_necessary): Set it.
11577         (mark_control_dependent_edges_necessary): Set it.
11578         (mark_virtual_phi_result_for_renaming): New function.
11579         (get_live_post_dom): New function.
11580         (forward_edge_to_pdom): New function.
11581         (remove_dead_stmt): Fix handling of control dependences.
11582         (tree_dce_init): Init new bitmap.
11583         (tree_dce_done): Free it.
11584
11585 2009-07-02  Richard Guenther  <rguenther@suse.de>
11586
11587         PR bootstrap/40617
11588         * tree-ssa-structalias.c (new_var_info): Initialize
11589         is_restrict_var.
11590
11591 2009-07-02  Jan Hubicka  <jh@suse.cz>
11592
11593         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
11594         local.
11595
11596 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
11597
11598         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
11599         instead of recomputing it.  Adjust calls.
11600         (emit_store_flag): Adjust recursive calls.
11601
11602 2009-07-02  Richard Guenther  <rguenther@suse.de>
11603
11604         * tree-ssa-live.c (remove_unused_locals): Do not remove
11605         heap variables.
11606         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
11607         of DECL_EXTERNAL for HEAP variables.
11608         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
11609         HEAP variables.  Do not adjust RESTRICT vars.
11610         (find_what_var_points_to): Nobody cares if something
11611         points to READONLY.
11612
11613 2009-07-02  Ben Elliston  <bje@au.ibm.com>
11614
11615         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
11616         pc_low and pc_high declarations to the top of the function.
11617
11618 2009-07-01  DJ Delorie  <dj@redhat.com>
11619
11620         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
11621         registers as fixed.
11622         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
11623         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
11624         unspecified accesses to control registers.
11625         * config/mep/intrinsics.md: Regenerate.
11626         * config/mep/intrinsics.h: Regenerate.
11627         * config/mep/mep-intrin.h: Regenerate.
11628
11629 2009-07-01  Anthony Green  <green@moxielogic.com>
11630
11631         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
11632         instruction when possible.
11633         (moxie_expand_prologue): Ditto.  Also, save an instruction and
11634         some complexity by popping off of $r12 instead of $sp.
11635         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
11636         operands.
11637
11638 2009-07-01  Richard Henderson  <rth@redhat.com>
11639
11640         PR bootstrap/40347
11641         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
11642         contained no insns, reposition note before last insn.
11643
11644 2009-07-01  Richard Henderson  <rth@redhat.com>
11645
11646         PR debug/40431
11647         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
11648         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
11649
11650 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
11651
11652         PR bootstrap/40558
11653         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
11654         darwin9 for printing reg addresses with %y.
11655
11656 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
11657
11658         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
11659         truncation from operands in binary operations.
11660
11661 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
11662
11663         Revert:
11664         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
11665         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
11666         subreg of op0 to the original op0.
11667
11668         * expmed.c (store_bit_field_1): Use a temporary as the destination
11669         instead of a paradoxical subreg when we need to truncate the result.
11670
11671 2009-07-01  DJ Delorie  <dj@redhat.com>
11672
11673         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
11674         names to VLIW variants.
11675         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
11676         * config/mep/intrinsics.md: Regenerate.
11677         * config/mep/intrinsics.h: Regenerate.
11678         * config/mep/mep-intrin.h: Regenerate.
11679
11680 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
11681
11682         PR debug/40462
11683         * jump.c (returnjump_p): Revert last patch.
11684         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
11685
11686 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11687
11688         PR target/40575
11689         * pa.md (casesi32p): Use jump table label to determine the offset
11690         of the jump table.
11691         (casesi64p): Likewise.
11692
11693         * pa.c (forward_branch_p): Return bool type.  Use instruction
11694         addresses when available.  Assert that INSN has a jump label.
11695         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
11696         have a jump label.
11697
11698 2009-07-01  Richard Guenther  <rguenther@suse.de>
11699
11700         PR tree-optimization/19831
11701         * tree-ssa-dce.c (propagate_necessity): Calls to functions
11702         that only act as barriers do not make any previous stores necessary.
11703         * tree-ssa-structalias.c (handle_lhs_call): Delay making
11704         HEAP variables global, do not add a constraint from nonlocal.
11705         (find_func_aliases): Handle escapes through return statements.
11706         (compute_points_to_sets): Make escaped HEAP variables global.
11707
11708 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
11709
11710         PR bootstrap/40597
11711         * expmed.c (emit_store_flag): Perform a conversion if necessary,
11712         after reducing a DImode cstore to SImode.
11713
11714 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
11715
11716         * expr.c (expand_expr_real_1): Reinstate fallthrough to
11717         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
11718
11719 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
11720
11721         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
11722         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
11723         to 0.
11724         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
11725         and umod_optab if TARGET_BSD_DIVMOD.
11726         * config/vax/lib1funcs.asm: New file.
11727         * config/vax/t-linux: New file.
11728         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
11729
11730 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
11731
11732         PR c++/40566
11733         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
11734         to type arguments that have void type.
11735
11736         PR debug/40573
11737         * dwarf2out.c (gen_formal_parameter_die): Call
11738         equate_decl_number_to_die if node is different from origin.
11739
11740 2009-06-30  Anthony Green  <green@moxielogic.com>
11741
11742         Clean up moxie port for --enable-build-with-cxx.
11743         * config/moxie/moxie.c (moxie_function_value): First two
11744         parameters are const_tree, not tree.
11745         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
11746         (REG_CLASS_NAMES): Ditto.
11747         (REGNO_REG_CLASS): Ditto.
11748         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
11749         (moxie_function_value): Fix constyness of arguments.
11750
11751 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
11752
11753         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
11754         finalize_size_functions before further processing.
11755         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
11756         (variable_size): Call self_referential_size on size expressions
11757         that contain a PLACEHOLDER_EXPR.
11758         (size_functions): New static variable.
11759         (copy_self_referential_tree_r): New static function.
11760         (self_referential_size): Likewise.
11761         (finalize_size_functions): New global function.
11762         * tree.c: Include tree-inline.h.
11763         (push_without_duplicates): New static function.
11764         (find_placeholder_in_expr): New global function.
11765         (substitute_in_expr) <tcc_declaration>: Return the replacement object
11766         on equality.
11767         <tcc_expression>: Likewise.
11768         <tcc_vl_exp>: If the replacement object is a constant, try to inline
11769         the call in the expression.
11770         * tree.h (finalize_size_functions): Declare.
11771         (find_placeholder_in_expr): Likewise.
11772         (FIND_PLACEHOLDER_IN_EXPR): New macro.
11773         (substitute_placeholder_in_expr): Update comment.
11774         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
11775         is true.
11776         (copy_tree_body_r): Likewise.
11777         (copy_tree_body): New static function.
11778         (maybe_inline_call_in_expr): New global function.
11779         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
11780         (maybe_inline_call_in_expr): Declare.
11781         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
11782         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
11783         GIMPLE_H.
11784
11785 2009-06-30  Richard Guenther  <rguenther@suse.de>
11786
11787         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
11788         continue walking.
11789         (propagate_necessity): Do not mark reaching defs of stores
11790         as necessary.
11791
11792 2009-06-30  Jan Hubicka  <jh@suse.cz>
11793
11794         * cfgloopanal.c (check_irred): Move into ...
11795         (mark_irreducible_loops): ... here; return true if ireducible
11796         loops was found.
11797         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
11798         (analyze_function): Try to prove loop finiteness.
11799         * cfgloop.h (mark_irreducible_loops): Update prototype.
11800         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
11801
11802 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
11803
11804         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
11805
11806 2009-06-30  Ira Rosen  <irar@il.ibm.com>
11807
11808         PR tree-optimization/40542
11809         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
11810         types.
11811
11812 2009-06-30  Martin Jambor  <mjambor@suse.cz>
11813
11814         PR tree-optimization/40582
11815         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
11816         than useless_type_conversion_p.
11817         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
11818         proper place.
11819
11820 2009-06-30  Martin Jambor  <mjambor@suse.cz>
11821
11822         PR middle-end/40554
11823         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
11824
11825 2009-06-30  Richard Guenther  <rguenther@suse.de>
11826
11827         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
11828         use ao_ref references.
11829         (walk_aliased_vdefs): Likewise.
11830         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
11831         * tree-ssa-dce.c (struct ref_data): Remove.
11832         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
11833         (mark_aliased_reaching_defs_necessary): Adjust.
11834         (mark_all_reaching_defs_necessary_1): Likewise.
11835
11836 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
11837
11838         PR boostrap/40597
11839         * expmed.c (emit_cstore): New name of emit_store_flag_1.
11840         (emit_store_flag_1): Extract from emit_store_flag, adjust
11841         calls to (what now is) emit_cstore.
11842         (emit_store_flag): Call emit_store_flag_1 and also use it
11843         for what used to be recursive calls.
11844
11845 2009-06-30  Wei Guozhi  <carrot@google.com>
11846
11847         PR/40416
11848         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
11849         if the target bb post dominates from bb.
11850         * config/i386/i386.c (memory_address_length): Check existence of base
11851         register before using it.
11852
11853 2009-06-30  Nick Clifton  <nickc@redhat.com>
11854             DJ Delorie  <dj@redhat.com>
11855
11856         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
11857         __FMOVD_ENABLED__ is defined.
11858         * config/sh/sh.h
11859         (TARGET_FMOVD): Provide a default definition.
11860         (MASK_FMOVD): Likewise.
11861         (TARGET_CPU_CPP_BUILTINS): Define
11862         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
11863         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
11864         two fmov instructions depending upon whether TARGET_FMOVD is
11865         enabled.
11866         (split for DF load from memory into register): Also handle
11867         MEMs which consist of REG+DISP addressing.
11868         (split for DF store from register to memory): Likewise.
11869         * config/sh/sh.opt (mfmovd): Remove this switch.
11870         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
11871         * config/sh/sh.c (sh_override_options): Do not automatically
11872         enable TARGET_MOVD for the SH2A when supporting doubles - leave
11873         that to the -mfmovd command line switch.
11874
11875         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
11876         the SH4 and SH4A.
11877         (fldi_ok): Always allow.
11878         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
11879
11880 2009-06-29  DJ Delorie  <dj@redhat.com>
11881
11882         * doc/install.texi (mep-x-elf): Correct chip's full name.
11883
11884 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
11885
11886         * doc/extend.texi: Fix typo.
11887
11888 2009-06-29  Tom Tromey  <tromey@redhat.com>
11889
11890         * dwarf2.h: Remove.
11891         * Makefile.in (DWARF2_H): New variable.
11892         (except.o): Use it.
11893         (dwarf2out.o): Likewise.
11894         (dwarf2asm.o): Likewise.
11895         * config/i386/t-i386: Use DWARF2_H.
11896         * except.c: Include elf/dwarf2.h.
11897         * unwind-dw2.c: Include elf/dwarf2.h.
11898         * dwarf2out.c: Include elf/dwarf2.h.
11899         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
11900         <dtprel>: New field.
11901         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
11902         (size_of_loc_descr): Likewise.
11903         (output_loc_operands_raw): Likewise.
11904         (output_loc_operands): Handle new dtprel field.
11905         (loc_checksum): Update.
11906         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
11907         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
11908         * unwind-dw2-fde.c: Include elf/dwarf2.h.
11909         * dwarf2asm.c: Include elf/dwarf2.h.
11910         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
11911         * config/mmix/mmix.c: Include elf/dwarf2.h.
11912         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
11913         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
11914         * config/sh/sh.c: Include elf/dwarf2.h.
11915         * config/i386/i386.c: Include elf/dwarf2.h.
11916
11917 2009-06-29  DJ Delorie  <dj@redhat.com>
11918
11919         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
11920
11921         * doc/extend.texi: Add MeP attributes and pragmas.
11922         * doc/invoke.text: Add MeP Options.
11923         * doc/contrib.texi: Add MeP contribution.
11924         * doc/md.texi: Add MeP constraints.
11925         * doc/install.texi: Add MeP target.
11926
11927 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
11928
11929         * target.h (struct gcc_target): Add frame_pointer_required field.
11930         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
11931         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
11932         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
11933         hook.
11934         * reload1.c (update_eliminables): (Ditto.).
11935         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
11936         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
11937         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
11938
11939         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
11940
11941         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
11942         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
11943         (arm_frame_pointer_required): New function.
11944
11945         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
11946         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11947         (avr_frame_pointer_required_p): Declare as static.
11948         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
11949
11950         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
11951         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
11952         (bfin_frame_pointer_required): Make as static, change return type
11953         to bool.
11954         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
11955
11956         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
11957         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11958         (cris_frame_pointer_required): New function.
11959
11960         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
11961
11962         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
11963         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11964         (fr30_frame_pointer_required): New function.
11965
11966         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
11967         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
11968         (frv_frame_pointer_required): Make as static, change return type
11969         to bool.
11970         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
11971
11972         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
11973         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11974         (ix86_frame_pointer_required): Make as static, change return type to
11975         bool.
11976         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
11977
11978         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
11979         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11980
11981         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
11982
11983         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
11984
11985         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
11986
11987         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
11988         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11989         (mips_frame_pointer_required): Make as static.
11990         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
11991
11992         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
11993         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11994         (mmix_frame_pointer_required): Mew function.
11995
11996         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
11997         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11998
11999         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
12000
12001         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
12002
12003         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
12004
12005         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
12006         (CAN_ELIMINATE): Redefine.
12007         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
12008         (sparc_frame_pointer_required): New function.
12009         (sparc_can_eliminate): New function.
12010         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
12011
12012         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
12013         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
12014
12015         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
12016         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
12017         (xtensa_frame_pointer_required): Make as static, change return type
12018         to bool.
12019         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
12020         Remove.
12021
12022 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
12023
12024         * doc/plugins.texi: Document PLUGIN_START_UNIT.
12025         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
12026         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
12027         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
12028         (register_callback): Handle PLUGIN_START_UNIT.
12029         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
12030
12031 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
12032
12033         * tree.c (process_call_operands): Propagate TREE_READONLY from the
12034         operands.
12035         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
12036         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
12037
12038 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
12039
12040         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
12041         move cost.
12042
12043 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
12044
12045         * doc/extend.texi (Additional Floating Types): __float128 is also
12046         supported on i386 targets.
12047
12048 2009-06-29  Richard Guenther  <rguenther@suse.de>
12049
12050         PR middle-end/14187
12051         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
12052         flag.
12053         (pt_solutions_same_restrict_base): Declare.
12054         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
12055         flag.
12056         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
12057         (make_constraint_from, make_copy_constraint): Move earlier.
12058         (make_constraint_from_heapvar): New function.
12059         (make_constraint_from_restrict): Likewise.
12060         (handle_lhs_call): Use it.
12061         (find_func_aliases): Use it to track conversions to restrict
12062         qualified pointers.
12063         (struct fieldoff): Add only_restrict_pointers flag.
12064         (push_fields_onto_fieldstack): Initialize it.
12065         (create_variable_info_for): Track global restrict qualified pointers.
12066         (intra_create_variable_infos): Use make_constraint_from_heapvar.
12067         Track restrict qualified pointer arguments.
12068         (set_uids_in_ptset): Use varinfo is_global_var flag.
12069         (find_what_var_points_to): Set the vars_contains_restrict flag.
12070         Always create the points-to solution for sets including restrict tags.
12071         (pt_solutions_same_restrict_base): New function.
12072         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
12073         qualified pointers use pt_solutions_same_restrict_base as
12074         additional source for disambiguation.
12075
12076 2009-06-29  Richard Guenther  <rguenther@suse.de>
12077
12078         PR middle-end/38212
12079         * alias.c (find_base_decl): Remove.
12080         (get_deref_alias_set_1): Remove restrict handling.
12081         * c-common.c (c_apply_type_quals_to_decl): Do not set
12082         DECL_POINTER_ALIAS_SET.
12083         * gimplify.c (find_single_pointer_decl_1): Remove.
12084         (find_single_pointer_decl): Likewise.
12085         (internal_get_tmp_var): Remove restrict handling.
12086         (gimple_regimplify_operands): Likewise.
12087         * omp-low.c (expand_omp_atomic_pipeline): Do not set
12088         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
12089         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
12090         * tree.c (restrict_base_for_decl): Remove.
12091         (init_ttree): Do not allocate it.
12092         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
12093         LABEL_DECL_UID for label decls.
12094         (copy_node_stat): Do not copy restrict information.
12095         (decl_restrict_base_lookup): Remove.
12096         (decl_restrict_base_insert): Likewise.
12097         (print_restrict_base_statistics): Likewise.
12098         (dump_tree_statistics): Do not call print_restrict_base_statistics.
12099         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
12100         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
12101         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
12102         (LABEL_DECL_UID): Adjust.
12103         (DECL_BASED_ON_RESTRICT_P): Remove.
12104         (DECL_GET_RESTRICT_BASE): Likewise.
12105         (SET_DECL_RESTRICT_BASE): Likewise.
12106         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
12107
12108         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
12109         instead of DECL_POINTER_ALIAS_SET.
12110         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
12111         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
12112         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
12113
12114 2009-06-29  Richard Guenther  <rguenther@suse.de>
12115
12116         PR tree-optimization/40579
12117         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
12118         the IL to simplify has constants that overflowed.
12119
12120 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
12121
12122         PR tree-optimization/40550
12123         * tree-vect-generic.c (expand_vector_operations_1): Compute in
12124         vector_compute_type only when the size of vector_compute_type is
12125         less than the size of type.
12126
12127 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
12128
12129         * fold-const.c (contains_label_1): Fix comments.
12130         (contains_label_p): Do not walk trees multiple time.
12131
12132 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
12133
12134         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
12135         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
12136         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
12137         ix86_fp_comparison_operator.
12138         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
12139         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
12140         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
12141         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
12142         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
12143         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
12144         (related splits): Change predicate to ix86_fp_comparison_operator.
12145         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
12146         instead of ix86_fp_comparison_codes.
12147         (ix86_trivial_fp_comparison_operator,
12148         ix86_fp_comparison_operator): New.
12149         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
12150         (ix86_expand_compare): Eliminate last two parameters.
12151         (ix86_fp_jump_nontrivial_p): Kill.
12152         * config/i386/i386.c (put_condition_code): Eliminate call to
12153         ix86_fp_comparison_codes and subsequent assertion.
12154         (ix86_fp_comparison_codes): Eliminate.
12155         (ix86_fp_swap_condition): New.
12156         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
12157         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
12158         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
12159         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
12160         and ix86_fp_swap_condition.
12161         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
12162         Use ix86_fp_comparison_strategy.
12163         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
12164         (ix86_fp_jump_nontrivial_p): Eliminate.
12165         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
12166         call to ix86_expand_compare.
12167         (ix86_split_fp_branch, ix86_expand_setcc,
12168         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
12169         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
12170
12171 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
12172
12173         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
12174         related to jump_clobbers.
12175         * config/arm/arm.md (conds): Remove jump_clob case.
12176         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
12177         splits): Change comparison_operator to arm_comparison_operator.
12178         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
12179         Eliminate.
12180
12181 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
12182
12183         * dojump.c (do_compare_rtx_and_jump): Try swapping the
12184         condition for floating point modes.
12185         * expmed.c (emit_store_flag_1): Move here a bigger part
12186         of emit_store_flag.
12187         (emit_store_flag): Try swapping the condition for floating point
12188         modes.
12189         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
12190
12191 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
12192
12193         * expr.c (expand_expr_real_1): Just use do_store_flag.
12194         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
12195         emit_store_flag_force.
12196         * expmed.c (emit_store_flag_force): Copy here trick
12197         previously in expand_expr_real_1.  Try reversing the comparison.
12198         (emit_store_flag_1): Work if target is NULL.
12199         (emit_store_flag): Work if target is NULL, using the result mode
12200         from the comparison.  Use split_comparison, restructure final part
12201         to simplify conditionals.
12202
12203 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
12204
12205         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
12206         * dojump.c (do_jump): Change handling of floating-point
12207         ops to use just do_compare_and_jump.
12208         (split_comparison): New.
12209         (do_compare_rtx_and_jump): Add here logic coming previously
12210         in do_jump, using split_comparison.
12211
12212 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
12213
12214         PR target/40489
12215         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
12216
12217 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
12218
12219         * tree-ssa-alias.c: Fix unintentional commit.
12220
12221 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
12222
12223         * passes.c (execute_one_pass): Fix unintentional commit.
12224
12225 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
12226
12227         * df-problems.c (df_set_seen, df_unset_seen): Delete.
12228         (df_rd_local_compute, df_md_local_compute): Inline them.
12229
12230         (df_md_scratch): New.
12231         (df_md_alloc, df_md_free): Allocate/free it.
12232         (df_md_local_compute): Only include live registers in init.
12233         (df_md_transfer_function): Prune the in-set computed by
12234         the confluence function, and the gen-set too.
12235
12236 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
12237
12238         PR rtl-optimization/26854
12239         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
12240         * df-problems.c (df_rd_add_problem): Fix comment.
12241         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
12242         df_md_simulate_artificial_defs_at_top,
12243         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
12244         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
12245         df_md_transfer_function, df_md_init, df_md_confluence_0,
12246         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
12247         problem_MD, df_md_add_problem): New.
12248         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
12249         df_md_get_bb_info): New.
12250         (DF_LAST_PROBLEM_PLUS1): Adjust.
12251
12252         * Makefile.in (fwprop.o): Include domwalk.h.
12253         * fwprop.c: Include domwalk.h.
12254         (reg_defs, reg_defs_stack): New.
12255         (bitmap_only_bit_between): Remove.
12256         (process_defs): New.
12257         (process_uses): Use reg_defs and local_md instead of
12258         bitmap_only_bit_between and local_rd.
12259         (single_def_use_enter_block): New, from build_single_def_use_links.
12260         (single_def_use_leave_block): New.
12261         (build_single_def_use_links): Remove code moved to
12262         single_def_use_enter_block, invoke domwalk.
12263         (use_killed_between): Adjust comment.
12264
12265 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
12266
12267         * bitmap.h (bitmap_ior_and_into): New.
12268         * bitmap.c (bitmap_ior_and_into): New.
12269
12270 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
12271
12272         * domwalk.h (struct dom_walk_data): Remove all callbacks except
12273         before_dom_children_before_stmts and after_dom_children_after_stmts.
12274         Rename the two remaining callbacks to just before_dom_children and
12275         after_dom_children. Remove other GIMPLE statement walking bits.
12276         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
12277         * graphite.c: Do not include domwalk.h.
12278         * tree-into-ssa.c (interesting_blocks): New global.
12279         (struct mark_def_sites_global_data): Remove it and names_to_rename.
12280         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
12281         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
12282         now that they're not domwalk callbacks.
12283         (rewrite_initialize_block): Rename to...
12284         (rewrite_enter_block): ... this, place after called functions.  Test
12285         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
12286         (rewrite_finalize_block): Rename to...
12287         (rewrite_leave_block): ... this, place after called functions.
12288         (rewrite_update_init_block): Rename to...
12289         (rewrite_update_enter_block): ... this, place after called functions.
12290         Test interesting_blocks, call rewrite_update_stmt and
12291         rewrite_update_phi_arguments.
12292         (rewrite_update_fini_block): Rename to...
12293         (rewrite_leave_block): ... this, place after called functions.
12294         (rewrite_blocks): Remove last argument, simplify initialization of
12295         walk_data.
12296         (mark_def_sites_initialize_block): Rename to...
12297         (mark_def_sites_block): ... this, call mark_def_sites.
12298         (mark_def_sites_blocks): Remove argument, simplify initialization of
12299         walk_data.
12300         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
12301         (update_ssa): Likewise.
12302         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
12303         callback.
12304         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
12305         (dom_opt_initialize_block): Rename to...
12306         (dom_opt_enter_block): ... this, place after called functions.  Walk
12307         statements here, inline propagate_to_outgoing_edges.
12308         (dom_opt_finalize_block): Rename to...
12309         (dom_opt_leave_block): ... this, place after called functions.
12310         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
12311         domwalk callback.
12312         (dse_enter_block, dse_record_phi): New.
12313         (dse_record_phis): Delete.
12314         (dse_finalize_block): Rename to...
12315         (dse_leave_block): ... this.
12316         (tree_ssa_dse): Simplify initialization of walk_data.
12317         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
12318         Adjust initialization of walk_data.
12319         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
12320         * tree-ssa-loop-phiopt.c (get_non_trapping):
12321         Adjust initialization of walk_data.
12322         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
12323         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
12324         it's not a domwalk callback.
12325         (uncprop_initialize_block): Rename to...
12326         (dse_enter_block): ... this, call uncprop_into_successor_phis.
12327         (dse_finalize_block): Rename to...
12328         (dse_leave_block): ... this.
12329         (tree_ssa_uncprop): Simplify initialization of walk_data.
12330         * Makefile.in: Adjust dependencies.
12331
12332 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
12333
12334         * arm.md (casesi): Fix test for Thumb1.
12335         (thumb1_casesi_internal_pic): Likewise.
12336         (thumb1_casesi_dispatch): Likewise.
12337
12338 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
12339
12340         * config/arm/arm-cores.def: Added core cortex-m0.
12341         * config/arm/arm-tune.md: Regenerated.
12342         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
12343
12344 2009-06-26  DJ Delorie  <dj@redhat.com>
12345
12346         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
12347
12348         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
12349         the scheduler doesn't tag jump insns.
12350
12351 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
12352
12353         * c-decl.c (merge_decls): Re-indent.
12354
12355 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
12356
12357         PR c/39902
12358         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
12359         Special-case decimal float constants.
12360
12361 2009-06-26  Richard Henderson  <rth@redhat.com>
12362
12363         * function.h (struct function): Add cannot_be_copied_reason,
12364         and cannot_be_copied_set.
12365         * tree-inline.c (has_label_address_in_static_1): Rename from
12366         inline_forbidden_p_2; don't set inline_forbidden_reason here.
12367         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
12368         don't set inline_forbidden_reason.
12369         (copy_forbidden): New function, split out of inline_forbidden_p.
12370         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
12371         (inline_forbidden_p): Use copy_forbidden.
12372         (tree_versionable_function_p): Likewise.
12373         (inlinable_function_p): Merge into tree_inlinable_function_p.
12374         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
12375         * ipa-cp.c (ipcp_versionable_function_p): New function.
12376         (ipcp_cloning_candidate_p): Use it.
12377         (ipcp_node_modifiable_p): Likewise.
12378
12379 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
12380
12381         * builtins.c (expand_builtin_alloca): Handle builtin alloca
12382         that is marked not to be inlined. Remove flag_mudflap use.
12383         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
12384         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
12385
12386 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
12387
12388         PR bootstrap/40338
12389         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
12390         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
12391
12392 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
12393
12394         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
12395         shared libgcc.
12396         (__mingwthr_remove_key_dtor): Likewise.
12397
12398 2009-06-26  Richard Guenther  <rguenther@suse.de>
12399
12400         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
12401
12402 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
12403
12404         PR middle-end/40525
12405         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
12406         try the non-cond_exec path also.
12407
12408 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12409
12410         PR target/40468
12411         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
12412         (output_cbranch): Use new functions.
12413         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
12414         Likewise.
12415
12416 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
12417             Pat Haugen  <pthaugen@us.ibm.com>
12418             Revital Eres <ERES@il.ibm.com>
12419
12420         * config/rs6000/rs6000.c (print_operand): Correct lossage message
12421         for %c error.  Add %x support to print VSX registers as a unified
12422         register set, instead of separate float and altivec registers.
12423         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
12424         %y case, and add support for VSX pre-modify addresses.
12425         (output_toc): Add assert for CONST containing an integer constant
12426         in the PLUS case.
12427         (rs6000_adjust_cost): Add POWER7 support.
12428         (insn_must_be_first_in_group): Ditto.
12429         (insn_must_be_last_in_group): Ditto.
12430         (rs6000_emit_popcount): Ditto.
12431         (rs6000_vector_mode_supported_p): Ditto.
12432
12433         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
12434         Change some of the functions called by macros to being called
12435         through a pointer, so debug functions can be inserted if
12436         -mdebug=addr or -mdebug=cost.
12437         (rs6000_preferred_reload_class_ptr): Ditto.
12438         (rs6000_secondary_reload_class_ptr): Ditto.
12439         (rs6000_secondary_memory_needed_ptr): Ditto.
12440         (rs6000_cannot_change_mode_class_ptr): Ditto.
12441         (rs6000_secondary_reload_inner): Ditto.
12442         (rs6000_legitimize_reload_address): Ditto.
12443         (rs6000_legitimize_reload_address_ptr): Ditto.
12444         (rs6000_mode_dependent_address): Ditto.
12445         (rs6000_mode_dependent_address_ptr): Ditto.
12446
12447         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
12448         function to return true if the mode allows reg + integer
12449         addresses.
12450         (virtual_stack_registers_memory_p): New function to return true if
12451         the address refers to a virtual stack register.
12452         (rs6000_legitimate_offset_address_p): Move code to say whether a
12453         mode supports reg+int addressing to reg_offset_addressing_ok_p and
12454         call it.
12455         (rs6000_legitimate_address_p): Add checks for modes that only can
12456         do reg+reg addressing.  Start adding VSX support.
12457         (rs6000_legitimize_reload_address): Ditto.
12458         (rs6000_legitimize_address): Ditto.
12459         (rs6000_debug_legitimate_address_p): New debug functions for
12460         -mdebug=addr and -mdebug=cost.
12461         (rs6000_debug_rtx_costs): Ditto.
12462         (rs6000_debug_address_costs): Ditto.
12463         (rs6000_debug_adjust_cost): Ditto.
12464         (rs6000_debug_legitimize_address): Ditto.
12465         (rs6000_legitimize_reload_address_ptr): Point to call normal
12466         function or debug function.  Make functions called via pointer
12467         static.
12468         (rs6000_mode_dependent_address_ptr): Ditto.
12469         (rs6000_secondary_reload_class_ptr): Ditto.
12470         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
12471         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
12472         into a friendlier error.
12473         (rs6000_init_builtins): Add initial VSX support.
12474         (rs6000_adjust_cost): Fix some spacing issues.
12475
12476         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
12477         (REG_CLASS_NAMES): Ditto.
12478         (REG_CLASS_CONTENTS): Ditto.
12479         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
12480         pointer, to add -mdebug=addr support.
12481         (CANNOT_CHANGE_MODE_CLASS): Ditto.
12482         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
12483         -mdebug=addr support.
12484         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
12485         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
12486         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
12487
12488         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
12489         16-bit values.
12490         (bswapsi*): Set attribute types for load/store.  Add combiner
12491         patterns to eliminate zero extend on 64-bit.
12492         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
12493         stdbrx if the hardware supports those instructions.
12494
12495 2009-06-25  Ian Lance Taylor  <iant@google.com>
12496
12497         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
12498         (Link Options): Document -static-libstdc++.
12499
12500 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12501
12502         PR target/38731
12503         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
12504         DATA_ALIGNMENT instead.
12505
12506 2009-06-25  Richard Guenther  <rguenther@suse.de>
12507
12508         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
12509         indirect references against the callused/escaped solutions.
12510         (call_may_clobber_ref_p_1): Likewise.
12511
12512 2009-06-25  Martin Jambor  <mjambor@suse.cz>
12513
12514         PR tree-optimization/40493
12515         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
12516         (enum unscalarized_data_handling): New type.
12517         (handle_unscalarized_data_in_subtree): Return what has been done.
12518         (load_assign_lhs_subreplacements): Handle left flushes differently.
12519         (sra_modify_assign): Use unscalarized_data_handling, simplified
12520         condition determining whether to remove the statement.
12521
12522 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
12523
12524         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
12525         excerpt - @ should be doubled for texinfo.
12526
12527 2009-06-24  Ian Lance Taylor  <iant@google.com>
12528
12529         * config/arc/arc.c: Include "df.h".
12530         (arc_attribute_table): Make static.  Move higher in file.
12531         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
12532         (output_shift): Initialize n later to avoid warning.
12533         * config/arm/arm.c (arm_attribute_table): Make static.  Move
12534         higher in file.
12535         * config/avr/avr.c (avr_attribute_table): Make static.  Move
12536         higher in file.
12537         (reg_class_tab): Change array type from int to enum reg_class.
12538         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
12539         LABEL_REF.
12540         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
12541         (lshrhi3_out): Likewise.
12542         (class_likely_spilled_p): Change return type to bool.
12543         (avr_rtx_costs): Use local code variable with enum type.
12544         * config/avr/avr.md (movmemhi): Use add_reg_note.
12545         (andhi3, andsi3): Don't use AS2 with "and".
12546         (iorhi3, iorsi3): Don't use AS2 with "or".
12547         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
12548         * config/crx/crx.c: Include "df.h".
12549         (crx_attribute_table): Make static.
12550         * config/m32r/m32r.c: Include "df.h".
12551         (m32r_attribute_table): Make static.  Move higher in file.
12552         (pop): Use add_reg_note.
12553         (block_move_call): Change 0 to LCT_NORMAL in function call.
12554         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
12555         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
12556         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
12557         declare, not just when TREE_CODE is defined.
12558         * config/m68hc11/m68hc11.c: Include "expr.h".
12559         (m68hc11_attribute_table): Make static.  Move higher in file.
12560         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
12561         function call.
12562         (m68hc11_register_indirect_p): Likewise.
12563         (m68hc11_function_arg_padding): Change return type to enum
12564         direction.
12565         (emit_move_after_reload): Use add_reg_note.
12566         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
12567         (m68hc11_split_logical): Likewise.
12568         (m68hc11_rtx_costs): Add local code_and outer_code variables with
12569         enum type.
12570         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
12571         to VOIDmode in function call.
12572         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
12573         tree is defined.
12574         (m68hc11_split_logical): Update declaration.
12575         (m68hc11_function_arg_padding): Update declaration.
12576         * config/mcore/mcore.c (regno_reg_class): Change form array of int
12577         to array of enum reg_class.
12578         (mcore_attribute_table): Make static.  Move higher in file.
12579         (mcore_rtx_costs): Add cast to enum type.
12580         * config/mcore/mcore.h (regno_reg_class): Update declaration.
12581         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
12582         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
12583         in file.
12584         * config/sh/predicates.md (trapping_target_operand): Rename and to
12585         and_expr.
12586         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
12587         higher in file.
12588         * config/spu/spu.c (spu_attribute_table): Make static.  Move
12589         higher in file.
12590         * config/v850/v850.c (v850_attribute_table): Make static.  Move
12591         higher in file.
12592         (v850_rtx_costs): Use local code with enum type.
12593         (expand_epilogue): Add cast.
12594         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
12595
12596 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
12597
12598         PR target/40515
12599         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
12600         -m2a-single-only and -m2a-nofpu.
12601         * config/sh/sh.opt: Document m2a generates FPU code.
12602
12603 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
12604
12605         * defaults.h (CAN_ELIMINATE): Provide default.
12606         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
12607         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
12608         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
12609         * config/spu/spu.h (CAN_ELIMINATE): Delete.
12610         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
12611         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
12612         * config/cris/cris.h (CAN_ELIMINATE): Delete.
12613         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
12614         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
12615         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
12616
12617 2009-06-24  DJ Delorie  <dj@redhat.com>
12618
12619         * mep-ext-cop.cpu: Fix copyright notice.
12620         * mep-default: Fix copyright notice.
12621         * mep-core: Fix copyright notice.
12622         * mep: Fix copyright notice.
12623         * mep-ivc2: Fix copyright notice.
12624         * mep-c5: Fix copyright notice.
12625
12626 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
12627
12628         * doc/contrib.texi (Contributors):
12629
12630 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12631
12632         PR middle-end/40501
12633         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
12634         src and dst operands if necessary.
12635
12636 2009-06-23  DJ Delorie  <dj@redhat.com>
12637
12638         Add MeP port.
12639         * config.gcc: Add mep support.
12640         * recog.c: Resurrect validate_replace_rtx_subexp().
12641         * recog.h: Likewise.
12642         * config/mep/: Add new port:
12643         * config/mep/constraints.md: New file.
12644         * config/mep/default.h: New file.
12645         * config/mep/intrinsics.h: New file.
12646         * config/mep/intrinsics.md: New file.
12647         * config/mep/ivc2-template.h: New file.
12648         * config/mep/mep-c5.cpu: New file.
12649         * config/mep/mep-core.cpu: New file.
12650         * config/mep/mep-default.cpu: New file.
12651         * config/mep/mep-ext-cop.cpu: New file.
12652         * config/mep/mep-intrin.h: New file.
12653         * config/mep/mep-ivc2.cpu: New file.
12654         * config/mep/mep-lib1.asm: New file.
12655         * config/mep/mep-lib2.c: New file.
12656         * config/mep/mep-pragma.c: New file.
12657         * config/mep/mep-protos.h: New file.
12658         * config/mep/mep-tramp.c: New file.
12659         * config/mep/mep.c: New file.
12660         * config/mep/mep.cpu: New file.
12661         * config/mep/mep.h: New file.
12662         * config/mep/mep.md: New file.
12663         * config/mep/mep.opt: New file.
12664         * config/mep/predicates.md: New file.
12665         * config/mep/t-mep: New file.
12666
12667 2009-06-23  Ian Lance Taylor  <iant@google.com>
12668
12669         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
12670         from loose_warn into c_loose_warn and from strict_warn into
12671         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
12672         --enable-build-with-cxx.  Set and substitute
12673         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
12674         * Makefile.in (CXXFLAGS): New variable.
12675         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
12676         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
12677         the default is the same as $(STRICT_WARN).
12678         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
12679         (CXX): New variable.
12680         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
12681         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
12682         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
12683         (HOST_LIBS): New variable.
12684         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
12685         (ALL_CXXFLAGS): New variable.
12686         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
12687         * doc/install.texi (Configuration): Document
12688         --enable-build-with-cxx, --with-stage1-ldflags,
12689         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
12690         * configure: Rebuild.
12691
12692 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12693
12694         * config/arm/arm.c (arm_override_options): Fix braces and formatting
12695         from previous commit.
12696
12697 2009-06-23  Ian Lance Taylor  <iant@google.com>
12698
12699         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
12700
12701 2009-06-23  Ian Lance Taylor  <iant@google.com>
12702
12703         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
12704         with ATTRIBUTE_UNUSED.
12705
12706 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
12707             Pat Haugen  <pthaugen@us.ibm.com>
12708             Revital Eres  <eres@il.ibm.com>
12709
12710         * config.in (HAVE_AS_POPCNTD): Add default definition.
12711         (HAVE_AS_LWSYNC): Ditto.
12712
12713         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
12714         release number.
12715         (gcc_cv_as_powerpc_cmpb): Ditto.
12716         (gcc_cv_as_powerpc_dfp): Ditto.
12717         (gcc_cv_as_powerpc_vsx): Ditto.
12718         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
12719         supporting the popcntd/lwsync instructions.
12720         (gcc_cv_as_powerpc_lwsync): Ditto.
12721         * configure: Regenerate.
12722
12723         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
12724         -mcpu=native and -mcpu=power7.
12725         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
12726
12727         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
12728         a variable instead of a mask to reduce the number of mask bits.
12729         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
12730         (-mbit-word): Ditto.
12731         (-mregnames): Ditto.
12732         * config/rs6000/rs6000.opt (-mupdate): Ditto.
12733         (-mfused-madd): Ditto.
12734
12735         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
12736         2.06 instructions.
12737         (-mvsx): New switch for VSX instructions.
12738         (-misel): Move from a variable to a mask to allow it to be set by
12739         -mcpu=.
12740
12741         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
12742         function declaration to an array declaration.
12743         (rs6000_hard_regno_nregs): New external array declaration.
12744
12745         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
12746         files included by rs6000.md.
12747
12748         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
12749         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
12750
12751         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
12752         a target mask.
12753         (rs6000_debug_reg): New -mdebug= variables.
12754         (rs6000_debug_addr): Ditto.
12755         (rs6000_debug_cost): Ditto.
12756         (rs6000_pmode): New variable to hold Pmode.
12757         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
12758         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
12759         calculated at compiler start.
12760         (rs6000_hard_regno_nregs): Change function to an array which holds
12761         HARD_REGNO_NREGS calculated at compiler start.
12762         (rs6000_explicit_options): Delete isel field.
12763         (rs6000_vector_unit): New array to hold which vector unit
12764         supports arithmetic options for a given type.
12765         (rs6000_vector_mem): New array to hold which vector unit supports
12766         memory reference operations for a given type.
12767         (rs6000_vector_align): New array to given the alignment of each
12768         vector type.
12769         (power7_cost): New basic costs for power7.
12770         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
12771         (rs6000_hard_regno_nregs_internal): New function, moved from
12772         HARD_REGNO_NREGS, to calculate the number of registers each hard
12773         register takes for each type.
12774         (rs6000_debug_reg_print): New function for -mdebug=reg support.
12775         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
12776         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
12777         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
12778         unit information here so it is calculated once at compiler startup
12779         time.
12780         (rs6000_override_options): Make -misel a target mask.  Add more
12781         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
12782         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
12783         -mdebug=cost.
12784         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
12785         (rs6000_handle_option): Move -misel from variable to target mask.
12786         (rs6000_builtin_mask_for_load): Add VSX support.
12787         (rs6000_conditional_register_usage): Ditto.
12788         (USE_ALTIVEC_FOR_ARG_P): Ditto.
12789         (function_arg_boundary): Ditto.
12790         (rs6000_expand_builtin): Ditto.
12791         (def_builtin): Make abort message a little friendlier.
12792         (rs6000_emit_int_cmove): Add support for 64-bit isel.
12793
12794         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
12795         assembler support the popcntd instruction instead of a vsx
12796         instruction to enable power7 support.
12797         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
12798         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
12799         option to the assembler if -mcpu=native.
12800         (ASM_CPU_NATIVE_SPEC): Ditto.
12801         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
12802         ISA 2.06 features.
12803         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
12804         the lwsync instruction.
12805         (enum processor_type): Add PROCESSOR_POWER7.
12806         (rs6000_debug_reg): New -mdebug= options.
12807         (rs6000_debug_addr): Ditto.
12808         (rs6000_debug_cost): Ditto.
12809         (rs6000_isel): Delete.
12810         (enum rs6000_vector): New enum to say what vector unit we have.
12811         (VECTOR_UNIT_*): New macros to say which vector unit has
12812         arithmetic operations for a given type.
12813         (VECTOR_MEM_*): New macros to say which vector unit has memory
12814         operations for a given type.
12815         (TARGET_LDBRX): Whether the machine supports the ldbrx
12816         instruction.
12817         (TARGET_ISEL): Delete, -misel moved to be a mask.
12818         (TARGET_ISEL64): New macro for 64-bit isel support.
12819         (UNITS_PER_VSX_WORD): New macro.
12820         (POINTER_SIZE): Move to be an external variable, rather than
12821         calculating whether we are generating 32 ot 64-bit code.
12822         (Pmode): Ditto.
12823         (STACK_BOUNDARY): Add VSX support.
12824         (LOCAL_ALIGNMENT): Ditto.
12825         (SLOW_UNALIGNED_ACCESS): Ditto.
12826         (VSX_REGNO_P): New macro for VSX support.
12827         (VFLOAT_REGNO_P): Ditto.
12828         (VINT_REGNO_P): Ditto.
12829         (VLOGICAL_REGNO_P): Ditto.
12830         (VSX_VECTOR_MODE): Ditto.
12831         (VSX_SCALAR_MODE): Ditto.
12832         (VSX_MODE): Ditto.
12833         (VSX_MOVE_MODE): Ditto.
12834         (VSX_REG_CLASS_P): Ditto.
12835         (HARD_REGNO_NREGS): Instead of calling a function, use an array
12836         lookup.
12837         (UNITS_PER_SIMD_WORD): Add VSX support.
12838         (MODES_TIEABLE_P): Ditto.
12839         (STARTING_FRAME_OFFSET): Ditto.
12840         (STACK_DYNAMIC_OFFSET): Ditto.
12841         (EPILOGUE_USES): Ditto.
12842         (REGNO_REG_CLASS): Move to array lookup.
12843         (CLASS_MAX_NREGS): Ditto.
12844         (rs6000_vector_reg_class): Add declaration.
12845         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
12846         overlap with the floating point and Altivec registers.
12847
12848         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
12849
12850         * config/rs6000/driver-rs6000.c (asm_names): New static array to
12851         give the appropriate asm switches if -mcpu=native.
12852         (host_detect_local_cpu): Add support for "asm".
12853         (host_detect_local_cpu): Follow GNU code guidelines for name.
12854
12855         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
12856         -mbit-word to a variable instead of being a target mask.
12857
12858         * config/rs6000/sync.md (lwsync): If the assembler supports it,
12859         emit the lwsync instruction instead of emitting the instruction as
12860         an integer constant.
12861
12862         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
12863         fixuns_trundfsi2, move expander into rs6000.md.
12864
12865         * config/rs6000/rs6000.md (cpu): Add power7.
12866         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
12867         (logical predicate patterns): Change the single instruction
12868         primitives that set CR0 to be fast_compare instead of compare.
12869         (norsi*): Ditto.
12870         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
12871         (popcntddi2): Ditto.
12872         (popcount<mode>): Ditto.
12873         (floating multiply/add insns): Name the floating point
12874         multiply/add insns.
12875         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
12876         (isel_unsigned_<mode>): Ditto.
12877         (fixuns_trundfsi2): Move expander here from spe.md.
12878         (smindi3): Define if we have -misel on 64-bit systems.
12879         (smaxdi3): Ditto.
12880         (umindi3): Ditto.
12881         (umaxdi3): Ditto.
12882
12883 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
12884
12885         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
12886         extra_objs.
12887         * config/avr/avr.c (avr_current_device): New variable.
12888         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
12889         (avr_arch, mcu_type_s): Move to avr.h.
12890         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
12891         default_data_section_start fields.
12892         (avr_arch): Moved from avr.c.
12893         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
12894         library_name fields.
12895         (avr_current_device, avr_mcu_types, avr_arch_types,
12896         avr_device_to_arch, avr_device_to_data_start,
12897         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
12898         (EXTRA_SPEC_FUNCTIONS): Define.
12899         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
12900         options mapping. Use device_to_arch and device_to_data_start insted.
12901         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
12902         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
12903         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
12904         * config/avr/driver-avr.c: New file.
12905         * config/avr/avr-devices.c: New file.
12906
12907 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
12908
12909         * var-tracking.c (unshare_variable): Force initialized to
12910         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
12911         (set_variable_part): Likewise.
12912         (struct variable_union_info): Remove pos_src field.
12913         (vui_vec, vui_allocated): New variables.
12914         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
12915         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
12916         == 1 use a simpler sorting algorithm.  Compute pos field right
12917         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
12918         Avoid quadratic comparison if !flag_var_tracking_uninit.
12919         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
12920         unshare_variable unconditionally.
12921         (dataflow_set_different_2): Removed.
12922         (dataflow_set_different): Don't traverse second hash table.
12923         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
12924         unconditionally to var_reg_set or var_mem_set.
12925         (emit_notes_in_bb): Likewise.
12926         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
12927         unshare_variable.
12928         (emit_note_insn_var_location): Don't set initialized to
12929         VAR_INIT_STATUS_INITIALIZED early.
12930         (vt_finalize): Free vui_vec if needed, clear vui_vec and
12931         vui_allocated.
12932         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
12933
12934         * tree-object-size.c (addr_object_size): Instead of checking
12935         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
12936         are no FIELD_DECLs following it.
12937
12938 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
12939
12940         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
12941         order to match bswaps with signed source operands.
12942
12943 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
12944
12945         * sdbout.c (sdbout_one_type): Fix braces in switch.
12946
12947 2009-06-23  Richard Guenther  <rguenther@suse.de>
12948
12949         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
12950         member.
12951         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
12952         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
12953         var_callused, callused_tree, var_storedanything, storedanything_tree,
12954         var_integer, integer_tree): Remove global variables.
12955         (new_var_info): Do not pass new id, append the new var to the
12956         global variable vector.
12957         (do_ds_constraint): Use is_global_var member of the variable-info.
12958         (new_scalar_tmp_constraint_exp): Adjust.
12959         (create_function_info_for): Likewise.
12960         (create_variable_info_for): Likewise.
12961         (find_what_var_points_to): Remove dead code.
12962         (init_base_vars): Simplify.
12963         (compute_points_to_sets): Adjust.
12964
12965 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
12966
12967         * combine.c (try_combine): Dump information about the insns we're
12968         combining.
12969
12970 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
12971
12972         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
12973         check when calling force_to_mode on TRUNCATE's operand.
12974
12975 2009-06-22  Ian Lance Taylor  <iant@google.com>
12976
12977         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
12978
12979 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
12980
12981         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
12982
12983 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12984
12985         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
12986         override library linkage flags such as -static-libgcc or
12987         -shared-libgcc.
12988
12989 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
12990
12991         * config/m68k/m68k-devices.def: Add line for MCF5221x.
12992
12993 2009-06-22  Ian Lance Taylor  <iant@google.com>
12994
12995         * config/linux.opt: Put mglibc ahead of muclibc.
12996
12997         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
12998         for duplicate decls.
12999
13000 2009-06-22  Matthias Klose  <doko@ubuntu.com>
13001
13002         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
13003
13004 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
13005
13006         PR objc/28050
13007         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
13008         instead of NULL if a parser error occurs.
13009
13010 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
13011
13012         * dwarf2out.c (dwarf2_debug_hooks): Initialize
13013         non-DWARF2_DEBUGGING_INFO version.
13014
13015 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
13016
13017         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
13018         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
13019
13020         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
13021         (LIBGCC2_TF_CEXT): Define.
13022         (TF_SIZE): Define.
13023
13024 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13025
13026         PR target/40463
13027         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
13028
13029 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13030
13031         * config/arm/arm.c (arm_override_options): Disable
13032         -mcaller-super-interworking and -mcallee-super-interworking.
13033         * doc/invoke.texi (ARM Options): Document this.
13034
13035 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
13036
13037         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
13038         * config/arm/constraints.md (j): New constraint for movw operands.
13039         (N): Remove thumb2 meaning.
13040         * config/arm/arm.md (*arm_movw): Delete.
13041         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
13042         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
13043         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
13044
13045 2009-06-22  Martin Jambor  <mjambor@suse.cz>
13046
13047         PR tree-optimization/40492
13048         * tree-sra.c (sra_modify_assign): Pass zero offsets to
13049         build_ref_for_offset.
13050
13051 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
13052
13053         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
13054         JUMP_TABLE_DATA_P predicates where applicable.
13055         * auto-inc-dec.c: Ditto.
13056         * builtins.c: Ditto.
13057         * caller-save.c: Ditto.
13058         * calls.c: Ditto.
13059         * cfgcleanup.c: Ditto.
13060         * cfglayout.c: Ditto.
13061         * cfgrtl.c: Ditto.
13062         * combine.c: Ditto.
13063         * combine-stack-adj.c: Ditto.
13064         * cse.c: Ditto.
13065         * cselib.c: Ditto.
13066         * dbxout.c: Ditto.
13067         * df-scan.c: Ditto.
13068         * dse.c: Ditto.
13069         * dwarf2asm.c: Ditto.
13070         * dwarf2out.c: Ditto.
13071         * emit-rtl.c: Ditto.
13072         * except.c: Ditto.
13073         * explow.c: Ditto.
13074         * expmed.c: Ditto.
13075         * expr.c: Ditto.
13076         * final.c: Ditto.
13077         * function.c: Ditto.
13078         * fwprop.c: Ditto.
13079         * gcse.c: Ditto.
13080         * genpreds.c: Ditto.
13081         * genrecog.c: Ditto.
13082         * ifcvt.c: Ditto.
13083         * ira-costs.c: Ditto.
13084         * ira-lives.c: Ditto.
13085         * jump.c: Ditto.
13086         * loop-iv.c: Ditto.
13087         * lower-subreg.c: Ditto.
13088         * modulo-sched.c: Ditto.
13089         * optabs.c: Ditto.
13090         * postreload.c: Ditto.
13091         * print-rtl.c: Ditto.
13092         * recog.c: Ditto.
13093         * reginfo.c: Ditto.
13094         * regmove.c: Ditto.
13095         * reload1.c: Ditto.
13096         * reload.c: Ditto.
13097         * reorg.c: Ditto.
13098         * rtlanal.c: Ditto.
13099         * rtl.c: Ditto.
13100         * sched-vis.c: Ditto.
13101         * sdbout.c: Ditto.
13102         * sel-sched-ir.c: Ditto.
13103         * simplify-rtx.c: Ditto.
13104         * targhooks.c: Ditto.
13105         * var-tracking.c: Ditto.
13106         * vmsdbgout.c: Ditto.
13107
13108 2009-06-22  Matthias Klose  <doko@ubuntu.com>
13109
13110         * Makefile.in (install-plugin): Always use DESTDIR.
13111
13112 2009-06-22  Olivier Hainque  <hainque@adacore.com>
13113
13114         * config/pa/pa.c (output_call): Don't optimize post call jumps
13115         into return address adjustments if the call may throw.
13116
13117 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
13118
13119         * arm.c (thumb1_output_casesi): New function.
13120         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
13121         optimizing for size or PIC.
13122         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
13123         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
13124         (casesi): Handle Thumb-1 when optimizing for size or PIC.
13125         (thumb1_casesi_internal_pic): New expand rule.
13126         (thumb1_casesi_dispatch): New pattern.
13127         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
13128         thumb-1 mode.
13129         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
13130         in the text seciton when PIC or optimizing for size.
13131         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
13132         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
13133         preservation properties of code.
13134         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
13135         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
13136         (__gnu_thumb1_case_si): New function.
13137         * t-arm (LIB1ASMSRC): Define here.
13138         (LIB1ASMFUNCS): Add some common functions.
13139         * t-arm-elf (LIB1ASMSRC): Delete.
13140         (LIB1ASMFUNCS): Append to existing set.
13141         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
13142         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
13143         * t-symbian (LIB1ASMFUNCS): Likewise.
13144         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
13145         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
13146
13147 2009-06-21  Richard Guenther  <rguenther@suse.de>
13148
13149         PR tree-optimization/38729
13150         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
13151         to loops with a single exit if -fno-expensive-optimizations.
13152
13153 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
13154
13155         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
13156         (dataflow_set): Change vars type from htab_t to shared_hash.
13157         (shared_hash_pool, empty_shared_hash): New variables.
13158         (vars_clear): Removed.
13159         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
13160         shared_hash_find_slot_unshare, shared_hash_find_slot,
13161         shared_hash_find_slot_noinsert, shared_hash_find): New
13162         static inlines.
13163         (shared_hash_unshare, shared_hash_destroy): New functions.
13164         (unshare_variable): Unshare set->vars if shared, use
13165         shared_hash_htab.
13166         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
13167         (get_init_value, find_src_set_src, dump_dataflow_set,
13168         clobber_variable_part, emit_notes_for_differences): Use
13169         shared_hash_htab.
13170         (dataflow_set_init): Remove second argument, set vars to
13171         empty_shared_hash instead of creating a new htab.
13172         (dataflow_set_clear): Call shared_hash_destroy and set vars
13173         to empty_shared_hash instead of calling vars_clear.
13174         (dataflow_set_copy): Don't call vars_copy, instead just share
13175         the src htab with dst.
13176         (variable_union): Use shared_hash_*, use initially NO_INSERT
13177         lookup if set->vars is shared.  Don't keep slot cleared before
13178         calling unshare_variable.  Unshare set->vars if needed.
13179         Even ->refcount == 1 vars must be unshared if set->vars is shared
13180         and var needs to be modified.
13181         (variable_canonicalize): New function.
13182         (dataflow_set_union): If dst->vars is empty, just share src->vars
13183         with dst->vars and traverse with variable_canonicalize to canonicalize
13184         and unshare what is needed.
13185         (dataflow_set_different): If old_set and new_set use the same shared
13186         htab, they aren't different.  If number of htab elements is different,
13187         htabs are different.  Use shared_hash_*.
13188         (dataflow_set_destroy): Call shared_hash_destroy instead of
13189         htab_delete.
13190         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
13191         second argument to dataflow_set_init.
13192         (vt_initialize): Likewise.  Initialize shared_hash_pool and
13193         empty_shared_hash, move bb in/out initialization afterwards.
13194         Use variable_htab_free instead of NULL as changed_variables del hook.
13195         (variable_was_changed): Change type of second argument to pointer to
13196         dataflow_set.  When inserting var into changed_variables, bump
13197         refcount.  Unshare set->vars if set is shared htab and slot needs to
13198         be cleared.
13199         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
13200         lookup if set->vars is shared.  Unshare set->vars if needed.
13201         Even ->refcount == 1 vars must be unshared if set->vars is shared
13202         and var needs to be modified.  Adjust variable_was_changed caller.
13203         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
13204         vars must be unshared if set->vars is shared and var needs to be
13205         modified.  Adjust variable_was_changed caller.
13206         (emit_note_insn_var_location): Don't pool_free var.
13207         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
13208         instead of 1.
13209         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
13210         free_alloc_pool on shared_hash_pool.
13211
13212 2009-06-20  Anthony Green  <green@moxielogic.com>
13213
13214         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
13215         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
13216
13217 2009-06-20  Richard Guenther  <rguenther@suse.de>
13218
13219         * tree-ssa-structalias.c (find_func_aliases): For memset use
13220         a constraint from NULL if we memset to zero.
13221         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
13222         we explicitly handle that do not read from memory.
13223         (call_may_clobber_ref_p_1): Properly handle builtins that may
13224         set errno.
13225
13226 2009-06-20  Richard Guenther  <rguenther@suse.de>
13227
13228         PR tree-optimization/40495
13229         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
13230         (new_scalar_tmp_constraint_exp): New function.
13231         (process_constraint): Do not create temporary decls.
13232         (process_all_all_constraints): Likewise.
13233         (handle_const_call): Likewise.
13234         (create_function_info_for): Do not set decl.
13235
13236 2009-06-19  Ian Lance Taylor  <iant@google.com>
13237
13238         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
13239         (rs6000_attribute_table): Make static; move before use.
13240
13241 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
13242
13243         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
13244         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
13245         Propagate the TREE_READONLY flag without overwriting it.
13246         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
13247         Propagate the TREE_READONLY flag onto the result.
13248         (process_call_operands): Move around.  Use correct constant value.
13249
13250 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13251
13252         PR target/40482
13253         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
13254         * config/arm/arm.md: Likewise.
13255
13256 2009-06-19  Ian Lance Taylor  <iant@google.com>
13257
13258         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
13259         to GIMPLE_ERROR_MARK.
13260
13261         * c-typeck.c (build_conditional_expr): Add op1_original_type and
13262         op2_original_type parameters.  Warn about using different enum types.
13263         * c-parser.c (c_parser_conditional_expression): Pass original
13264         types to build_conditional_expr.
13265         * c-tree.h (build_conditional_expr): Update declaration.
13266
13267 2009-06-19  Ian Lance Taylor  <iant@google.com>
13268
13269         * config/i386/i386.c (ix86_function_specific_save): Test that
13270         fields match values, rather than testing the values are in a
13271         certain range.
13272
13273 2009-06-19  Richard Guenther  <rguenther@suse.de>
13274
13275         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
13276         ADDR_EXPR pointers.
13277         (ptr_derefs_may_alias_p): Likewise.
13278         (ptr_deref_may_alias_ref_p_1): New function.
13279         (ptr_deref_may_alias_ref_p): Likewise.
13280         (ref_maybe_used_by_call_p_1): Handle builtins that are not
13281         covered by looking at the ESCAPED solution.
13282         (call_may_clobber_ref_p_1): Likewise.
13283         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
13284         Handle NULL_TREE offset.  Do not produce redundant constraints.
13285         (process_all_all_constraints): New helper function.
13286         (do_structure_copy): Use it.
13287         (handle_lhs_call): Likewise.
13288         (find_func_aliases): Handle some builtins with pointer arguments
13289         and/or return values explicitly.
13290
13291 2009-06-19  Ian Lance Taylor  <iant@google.com>
13292
13293         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
13294
13295 2009-06-19  Ian Lance Taylor  <iant@google.com>
13296
13297         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
13298
13299 2009-06-19  Ian Lance Taylor  <iant@google.com>
13300
13301         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
13302         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
13303         version.
13304
13305         * c-decl.c (finish_decl): If -Wc++-compat, warn about
13306         uninitialized const.
13307
13308 2009-06-19  Ian Lance Taylor  <iant@google.com>
13309
13310         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
13311         all uses.
13312
13313         * c-decl.c (in_struct, struct_types): Remove.
13314         (struct c_binding): Add in_struct field.
13315         (c_binding_ptr): Define type, along with VEC.
13316         (struct c_struct_parse_info): Define.
13317         (struct_parse_info): New static variable.
13318         (bind): Initialize in_struct field.
13319         (start_struct): Remove enclosing_in_struct and
13320         enclosing_struct_types parameters.  Add
13321         enclosing_struct_parse_info parameter.  Change all callers.  Set
13322         struct_parse_info rather than in_struct and struct_types.
13323         (grokfield): If -Wc++-compat and there is a symbol binding for the
13324         field name, set the in_struct flag and push it on the
13325         struct_parse_info->fields vector.
13326         (warn_cxx_compat_finish_struct): New static function.
13327         (finish_struct): Remove enclosing_in_struct and
13328         enclosing_struct_types parameters.  Add
13329         enclosing_struct_parse_info parameter.  Change all callers.  Don't
13330         set C_TYPE_DEFINED_IN_STRUCT here.  Call
13331         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
13332         parameter.  Only push on struct_types if warn_cxx_compat.
13333         (finish_enum): Only push on struct_types if warn_cxx_compat.
13334         (declspecs_add_type): Add loc parameter.  Change all callers.
13335         Change all error calls to error_at.  Pass loc, not input_location,
13336         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
13337         defined in a struct.  If -Wc++-compat and parsing a struct, record
13338         that a typedef name was used.
13339         * c-parser.c (c_parser_declspecs): Get location to pass to
13340         declspecs_add_type.
13341         (c_parser_struct_or_union_specifier): Update calls to start_struct
13342         and finish_struct.
13343         * c-tree.h (struct c_struct_parse_info): Declare.
13344         (finish_struct, start_struct): Update declarations.
13345         (declspecs_add_type): Update declaration.
13346
13347 2009-06-19  Ian Lance Taylor  <iant@google.com>
13348
13349         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
13350         variable with an anonymous type.
13351
13352 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
13353
13354         * see.c: Remove for real.
13355
13356 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
13357
13358         * optabs.h (enum optab_index): Add new OTI_significand.
13359         (significand_optab): Define corresponding macro.
13360         * optabs.c (init_optabs): Initialize significand_optab.
13361         * genopinit.c (optabs): Implement significand_optab using
13362         significand?f2 patterns.
13363         * builtins.c (expand_builtin_mathfn): Handle
13364         BUILT_IN_SIGNIFICAND{,F,L}.
13365         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
13366         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
13367
13368         * config/i386/i386.md (significandxf2, significand<mode>2): New
13369         expanders to implement significandf, significand and significandl
13370         built-ins as inline x87 intrinsics.
13371
13372 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
13373
13374         * config/avr/avr.c (avr_override_options): Remove setting value of
13375         PARAM_INLINE_CALL_COST.
13376
13377 2009-06-18  Richard Henderson  <rth@redhat.com>
13378
13379         PR 40488
13380         * tree-pass.h (TDF_ASMNAME): New.
13381         * tree-dump.c (dump_options): Add asmname.
13382         * doc/invoke.texi: Document it.
13383
13384         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
13385         (dump_decl_name): ...here.
13386         (dump_function_name): New flags arg; mind TDF_ASMNAME.
13387         (dump_generic_node): Update dump_function_name calls.
13388         (print_call_name): New flags arg; update all dump calls.
13389         * diagnostic.h (print_call_name): Update.
13390         * gimple-pretty-print.c (dump_gimple_call): Update.
13391
13392 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
13393
13394         PR target/40470
13395         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
13396
13397 2009-06-18  Diego Novillo  <dnovillo@google.com>
13398
13399         * doc/plugins.texi: Document plugin_is_GPL_compatible.
13400         * plugin.c (str_license): Declare.
13401         (try_init_one_plugin): Assert that the symbol
13402         'plugin_is_GPL_compatible' exists.
13403
13404 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
13405
13406         * see.c: Remove.
13407         * Makefile.in (OBJS-common): Remove see.o.
13408         (see.o): Remove.
13409         * common.opt (fsee): Mark as preserved for backward compatibility.
13410         * opts.c (common_handle_option): Add OPT_fsee to the backward
13411         compatibility section.
13412         * passes.c (init_optimization_passes, pass_see): Remove pass.
13413         * timevar.def (TV_SEE): Remove.
13414         * tree-pass.h (pass_see): Remove declaration.
13415         * doc/invoke.texi (-fsee): Remove documentation.
13416
13417 2009-06-18  Martin Jambor  <mjambor@suse.cz>
13418
13419         * tree-sra.c: Include statistics.h
13420         (sra_stats): New variable.
13421         (sra_initialize): Clear sra_stats.
13422         (create_access_replacement): Increment sra_stats.replacements.
13423         (get_access_replacement): Do not return twice.
13424         (analyze_all_variable_accesses): Increment statistics counter by the
13425         number of scalarized aggregates.
13426         (generate_subtree_copies): Increment sra_stats.subtree_copies.
13427         (sra_modify_expr): Increment sra_stats.exprs.
13428         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
13429         (sra_modify_assign): Increment sra_stats.exprs,
13430         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
13431         (perform_intra_sra): Update statistics counters.
13432         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
13433
13434 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
13435
13436         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
13437         (arm_scalar_mode_supported_p): New function.
13438
13439 2009-06-18  Paul Brook  <paul@codesourcery.com>
13440             Sandra Loosemore  <sandra@codesourcery.com>
13441
13442         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
13443         (__extendhfsf2, __truncsfhf2): Define.
13444         * config/arm/fp16.c: New file.
13445         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
13446         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
13447
13448 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
13449
13450         * doc/extend.texi (Half-Precision): New section.
13451         * doc/invoke.texi (Option Summary): List -mfp16-format.
13452         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
13453         * config/arm/arm.opt (mfp16-format=): New.
13454         * config/arm/arm.c: Include intl.h.
13455         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
13456         (TARGET_INVALID_RETURN_TYPE): Redefine.
13457         (TARGET_PROMOTED_TYPE): Redefine.
13458         (TARGET_CONVERT_TO_TYPE): Redefine.
13459         (arm_fp16_format): Define.
13460         (all_fpus): Add entry for neon-fp16.
13461         (fp_model_for_fpu): Likewise.
13462         (struct fp16_format): Declare.
13463         (all_fp16_formats): Define.
13464         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
13465         functions.
13466         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
13467         and no ldrh.
13468         (arm_legitimate_index_p): Treat HFmode like HImode.
13469         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
13470         (coproc_secondary_reload_class): Special-case HFmode.
13471         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
13472         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
13473         (arm_init_fp16_builtins): New.
13474         (arm_init_builtins): Call it.
13475         (arm_invalid_parameter_type): New.
13476         (arm_invalid_return_type): New.
13477         (arm_promoted_type): New.
13478         (arm_convert_to_type).
13479         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
13480         format.
13481         (arm_emit_fp16_const): New function.
13482         (arm_mangle_type): Mangle __fp16 as "Dh".
13483         * config/arm/arm.h (TARGET_VFPD32): Make it know about
13484         FPUTYPE_NEON_FP16.
13485         (TARGET_NEON_FP16): New.
13486         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
13487         (enum fputype): Add FPUTYPE_NEON_FP16.
13488         (enum arm_fp16_format_type): Declare.
13489         (arm_fp16_format): Declare.
13490         (LARGEST_EXPONENT_IS_NORMAL): Define.
13491         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
13492         * config/arm/arm-modes.def (HFmode): Define.
13493         * config/arm/vfp.md (*movhf_vfp): New.
13494         (extendhfsf2): New.
13495         (truncsfhf2): New.
13496         * config/arm/arm.md (fpu): Add neon_fp16.
13497         (floatsihf2, floatdihf2): New.
13498         (fix_trunchfsi2, fix_trunchfdi2): New.
13499         (truncdfhf2): New.
13500         (extendhfdf2): New.
13501         (movhf): New.
13502         (*arm32_movhf): New.
13503         (*thumb1_movhf): New.
13504         (consttable_2): Add check for HFmode constants.
13505         (consttable_4): Handle HFmode constants.
13506
13507 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
13508
13509         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
13510
13511 2009-06-17  Olivier Hainque  <hainque@adacore.com>
13512
13513         * collect2.c (main): Use CONST_CAST2 to perform char ** to
13514         const char ** conversion in AIX specific section.
13515
13516 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
13517
13518         * config/i386/i386.c (ix86_special_builtin_type): Remove
13519         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
13520         (bdesc_special_args): Updated.
13521         (ix86_init_mmx_sse_builtins): Likewise.
13522         (ix86_expand_special_args_builtin): Likewise.
13523
13524 2009-06-17  Richard Henderson  <rth@redhat.com>
13525
13526         * tree-pretty-print.c (maybe_dump_asm_name): New.
13527         (dump_decl_name): Use it.
13528         (PRINT_FUNCTION_NAME): Merge into...
13529         (dump_function_name): ... here.  Use maybe_dump_asm_name.
13530
13531 2009-06-17  Cary Coutant  <ccoutant@google.com>
13532
13533         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
13534         Change caller.
13535         * debug.c (struct gcc_debug_hooks): Change placeholder for
13536         source_line hook.
13537         (debug_nothing_int_charstar_int): Replaced by...
13538         (debug_nothing_int_charstar_int_bool): ...this.
13539         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
13540         source_line prototype.
13541         (debug_nothing_int_charstar_int): Replaced by...
13542         (debug_nothing_int_charstar_int_bool): ...this.
13543         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
13544         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
13545         Output is_stmt operand when necessary.
13546         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
13547         (notice_source_line): Add is_stmt parameter.
13548         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
13549         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
13550         Change callers.
13551         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
13552         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
13553
13554 2009-06-17  Ian Lance Taylor  <iant@google.com>
13555
13556         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
13557         Change all uses.
13558         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
13559         call uses.
13560
13561 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
13562
13563         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
13564         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
13565         tree_strip_sign_nop_conversions and
13566         tree_ssa_strip_useless_type_conversions rather than stripping
13567         the operations here.
13568         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
13569         Declare them.
13570         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
13571         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
13572         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
13573         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
13574         functions.
13575
13576 2009-06-17  Michael Eager  <eager@eagercon.com>
13577
13578         * config/rs6000/constraints.md (register_constraint "d"): New.
13579         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
13580         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
13581         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
13582         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
13583         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
13584         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
13585         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
13586         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
13587         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
13588         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
13589         __fctiwz): Same.
13590         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
13591         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
13592         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
13593         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
13594         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
13595         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
13596         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
13597         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
13598         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
13599         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
13600         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
13601         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
13602         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
13603         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
13604
13605 2009-06-16  Ian Lance Taylor  <iant@google.com>
13606
13607         * profile.c (total_num_never_executed): Don't define.
13608         (compute_branch_probabilities): Don't count or print
13609         num_never_executed.
13610         (init_branch_prob): Don't set total_num_never_executed.
13611         (end_branch_prob): Don't print total_num_never_executed.
13612
13613 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
13614
13615         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
13616
13617 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
13618
13619         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
13620         (nabstd2_fpr): Same.
13621
13622 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
13623
13624         * expr.c (expand_assignment): Change complex type check.
13625
13626 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
13627
13628         * doc/plugins.texi (Building GCC plugins): Added new section.
13629
13630 2009-06-17  Ian Lance Taylor  <iant@google.com>
13631
13632         * c-pch.c (get_ident): Don't set size of templ array.
13633         (pch_init): Don't set size of partial_pch array.
13634
13635         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
13636         string constant to intialize an array whose size is the length of
13637         the string.
13638
13639 2009-06-17  Richard Guenther  <rguenther@suse.de>
13640
13641         PR tree-optimization/40389
13642         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
13643         to addressable types.
13644         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
13645
13646 2009-06-17  Richard Guenther  <rguenther@suse.de>
13647
13648         PR middle-end/40460
13649         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
13650         if there is no evolution of left in the loop bail out.
13651         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
13652         chrec_fold_multiply.
13653
13654 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
13655             Janis Johnson  <janis187@us.ibm.com>
13656
13657         PR target/39254
13658         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
13659         for the symbol ref of a constant that is the source of a move
13660         - nor for any other not-obvious-label-ref constants.
13661
13662 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
13663
13664         * plugin.c (position_pass): Skip newly inserted pass during list
13665         traversal to avoid repeated insertion.
13666
13667 2009-06-16  Ian Lance Taylor  <iant@google.com>
13668
13669         * vec.h (VEC_stack_alloc): Define different version if
13670         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
13671         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
13672         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
13673         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
13674
13675 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
13676
13677         * config.gcc (extra_headers): Add ia32intrin.h for x86.
13678
13679         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
13680         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
13681         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
13682         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
13683         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
13684         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
13685         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
13686         (bdesc_special_args): Add __builtin_ia32_rdtsc and
13687         __builtin_ia32_rdtscp.
13688         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
13689         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
13690         and __builtin_ia32_rorhi.
13691         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
13692         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
13693         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
13694         (ix86_expand_args_builtin): Likewise.
13695         (ix86_expand_special_args_builtin): Likewise.
13696
13697         * config/i386/i386.md (UNSPECV_RDTSCP): New.
13698         (UNSPECV_RDTSC): Likewise.
13699         (UNSPECV_RDPMC): Likewise.
13700         (*bsr): Renamed to ...
13701         (bsr): This
13702         (*bsr_rex64): Renamed to ...
13703         (bsr_rex64): This.
13704         (rdpmc): New.
13705         (*rdpmc): Likewise.
13706         (*rdpmc_rex64): Likewise.
13707         (rdtsc): Likewise.
13708         (*rdtsc): Likewise.
13709         (*rdtsc_rex64): Likewise.
13710         (rdtscp): Likewise.
13711         (*rdtscp): Likewise.
13712         (*rdtscp_rex64): Likewise.
13713
13714         * config/i386/ia32intrin.h: New.
13715
13716         * config/i386/x86intrin.h: Include <ia32intrin.h>.
13717
13718 2009-06-16  Ian Lance Taylor  <iant@google.com>
13719
13720         * ira-build.c (copy_info_to_removed_store_destinations):
13721         Initialize parent_a.
13722
13723 2009-06-16  Ian Lance Taylor  <iant@google.com>
13724
13725         * c-decl.c (grokdeclarator): Change size_varies to bool.
13726
13727 2009-06-16  Ian Lance Taylor  <iant@google.com>
13728
13729         * sel-sched.c: Make forward declarations of move_op_hooks and
13730         fur_hooks explicitly extern.
13731
13732 2009-06-16  Ian Lance Taylor  <iant@google.com>
13733
13734         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
13735         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
13736
13737 2009-06-16  Ian Lance Taylor  <iant@google.com>
13738
13739         * resource.c (mark_referenced_resources): Change
13740         include_delayed_effects parameter to bool.  Change all callers.
13741         (mark_end_of_function_resources): Likewise.
13742         * reorg.c (insn_references_resource_p): Likewise.
13743         (insn_sets_resource_p): Likewise.
13744         * resource.h (mark_referenced_resources): Update declaration.
13745         (mark_end_of_function_resources): Update declaration.
13746
13747 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
13748
13749         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
13750
13751 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
13752
13753         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
13754         GCC can bootstrap on AIX with GNU Binutils 2.20.
13755
13756 2009-06-16  Ian Lance Taylor  <iant@google.com>
13757
13758         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
13759
13760 2009-06-16  Ian Lance Taylor  <iant@google.com>
13761
13762         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
13763         inline, not extern inline.
13764         (exact_log2): Likewise.
13765         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
13766         test CLZ_HWI.
13767         (exact_log2): Likewise, but don't test CTZ_HWI.
13768
13769 2009-06-16  Ian Lance Taylor  <iant@google.com>
13770
13771         * bitmap.c (bitmap_clear): Don't declare as inline.
13772         * gimple.c (gimplify_assign): Likewise.
13773         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
13774         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
13775         (sched_scan_info): Remove duplicate definition.
13776
13777 2009-06-16  Ian Lance Taylor  <iant@google.com>
13778
13779         * c-common.c (skip_evaluation): Don't define.
13780         (c_inhibit_evaluation_warnings): Define global variable.
13781         (overflow_warning): Check c_inhibit_evaluation_warnings rather
13782         than skip_evaluation.
13783         (convert_and_check, warn_for_div_by_zero): Likewise.
13784         * c-common.h (skip_evaluation): Don't declare.
13785         (c_inhibit_evaluation_warnings): Declare.
13786         * c-parser.c (c_parser_typeof_specifier): Set
13787         c_inhibit_evaluation_warnings rather than skip_evaluation.
13788         (c_parser_conditional_expression): Likewise.
13789         (c_parser_binary_expression): Likewise.
13790         (c_parser_sizeof_expression): Likewise.
13791         (c_parser_alignof_expression): Likewise.
13792         * c-typeck.c (build_indirect_ref): Check
13793         c_inhibit_evaluation_warnings rather than skip_evaluation.
13794         (build_conditional_expr, build_binary_op): Likewise.
13795
13796 2009-06-16  Richard Guenther  <rguenther@suse.de>
13797
13798         * tree-ssa-alias.c (is_escape_site): Remove.
13799         * tree-ssa-alias.h (enum escape_type): Remove.
13800         (is_escape_site): Likewise.
13801         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
13802         via casts and asms without deferring to is_escape_site.
13803
13804 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
13805
13806         PR middle-end/40446
13807         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
13808         use gen_lowpart if op0 has complex mode.
13809
13810 2009-06-16  Richard Guenther  <rguenther@suse.de>
13811
13812         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
13813         variables add them to ESCAPED.
13814         (find_func_aliases): Do not make all indirectly stored values escaped.
13815
13816 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
13817
13818         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
13819         make_decl_one_only.
13820
13821 2009-06-16  Martin Jambor  <mjambor@suse.cz>
13822
13823         PR tree-optimization/40432
13824         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
13825         check whether we need to force gimple register operand.
13826
13827 2009-06-16  Martin Jambor  <mjambor@suse.cz>
13828
13829         PR tree-optimization/40413
13830         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
13831         build_ref_for_offset.
13832         (propagate_subacesses_accross_link): Fix a typo in a comment.
13833
13834 2009-06-16  Ira Rosen  <irar@il.ibm.com>
13835
13836         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
13837         with additional parameter.
13838         * tree-vectorizer.h (enum vect_def_type): Add new value
13839         vect_nested_cycle.
13840         (enum vect_relevant): Add comments.
13841         (vect_is_simple_reduction): Add new argument.
13842         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
13843         Detect nested cycles.
13844         (vect_is_simple_reduction): Update documentation, add an argument to
13845         distinguish inner-loop reduction from nested cycle, detect nested
13846         cycles, fix printings and indentation, don't swap operands in case
13847         of nested cycle.
13848         (get_initial_def_for_reduction): Handle subtraction.
13849         (vect_create_epilog_for_reduction): Add new argument to specify
13850         reduction variable.
13851         (vect_finalize_reduction): Handle subtraction, fix comments.
13852         (vectorizable_reduction): Handle nested cycles. In case of nested
13853         cycle keep track of the reduction variable position. Call
13854         vect_is_simple_reduction with additional parameter. Use original
13855         statement code in reduction epilogue for nested cycle. Call
13856         vect_create_epilog_for_reduction with additional parameter.
13857         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
13858         inner-loop vectorization.
13859         (vect_recog_widen_sum_pattern): Likewise.
13860         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
13861         and reductions.
13862         (vect_mark_stmts_to_be_vectorized): Likewise.
13863         (vect_get_vec_def_for_operand): Handle nested cycles.
13864
13865 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13866
13867         * doc/invoke.texi (Debugging Options): Fix option index entries
13868         for -fdump-statistics, -frandom-seed add entries for
13869         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
13870         (FRV Options): Fix entries for -mTLS, -mtls.
13871         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
13872         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
13873         (M68hc1x Options): Fix @itemx for -mnominmax.
13874         (MCore Options): Fix entry for -mno-lsim.
13875         (MMIX Options): Fix entry for -mabi=mmixware.
13876         (PDP-11 Options): Fix entry for -mbcopy-builtin.
13877
13878 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
13879
13880         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
13881         Mention the plugin mode of gengtype.
13882         * doc/gty.texi (Source Files Containing Type Information): Likewise.
13883         * gengtype.c: Updated copyright.
13884         (plugin_files, nb_plugin_files) Added new static variables.
13885         (measure_input_list) Care about plugin_files.
13886         (write_rtx_next): Added early return in plugin mode.
13887         (create_file): Updated copyright year in generated file. Added
13888         asserts.
13889         (oprintf): Added early return if NULL outf.
13890         (get_output_file_with_visibility): Care of plugin_files.
13891         (get_output_file_name): May return null.
13892         (write_local): Added early return.
13893         (put_mangled_filename): Ditto.
13894         (finish_root_table): Added check for base_files.
13895         (write_roots): Care about null when plugins.
13896         (main): Added plugin mode.
13897
13898 2009-06-15  Ian Lance Taylor  <iant@google.com>
13899
13900         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
13901         * gcov.c (read_count_file): Add braces around variables declared
13902         before label.
13903
13904         * c.opt (Wjump-misses-init): New warning.
13905         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
13906         -Wall and -Wc++-compat if not already set.
13907         (c_common_post_options): Clear warn_jump_misses_init if it was not
13908         set.
13909         * c-decl.c (struct c_binding): Change type field to a union with
13910         new label field.  Make it the first field in the struct.  Update
13911         references to type to use u.type instead.
13912         (struct c_spot_bindings): Define.
13913         (struct c_goto_bindings): Define.
13914         (c_goto_bindings_p): Define, along with VECs.
13915         (struct c_label_vars): Define.
13916         (struct c_scope): Add has_label_bindings field.
13917         (bind_label, set_spot_bindings): New static functions.
13918         (decl_jump_unsafe, update_spot_bindings): New static functions.
13919         (update_label_decls): New static function.
13920         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
13921         Update binding u.label field to shadowed field.
13922         (c_binding_start_stmt_expr): New function.
13923         (c_binding_end_stmt_expr): New function.
13924         (pushdecl): Don't call c_begin_vm_scope.
13925         (make_label): Add defining and p_label_vars parameters.  Change
13926         all callers.
13927         (lookup_label): Correct test for whether a label has not yet been
13928         defined.  Call bind_label rather than bind.
13929         (warn_about_goto): New static function.
13930         (lookup_label_for_goto): New function.
13931         (declare_label): Call bind_label rather than bind.
13932         (check_earlier_gotos): New static function.
13933         (define_label): Don't give errors about jumping into statement
13934         expressions or scopes of variably modified types.  Call
13935         set_spot_bindings and check_earlier_gotos.  Call bind_label
13936         instead of bind.  Don't set label_context_stack_se or
13937         label_context_stack_vm.
13938         (c_get_switch_bindings): New function.
13939         (c_release_switch_bindings): New function.
13940         (c_check_switch_jump_warnings): New function.
13941         (start_function): Don't set label_context_stack_se or
13942         label_context_stack_vm.
13943         (finish_function): Likewise.
13944         * c-typeck.c (label_context_stack_se): Don't define.
13945         (label_context_stack_vm): Don't define.
13946         (c_finish_goto_label): Call lookup_label_for_goto rather than
13947         lookup_label.  Don't give errors about jumping into a statement
13948         expression or the scope of a variably modified type.  Don't set
13949         label_context_stack_se or label_context_stack_vm.
13950         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
13951         fields.  Add bindings field.
13952         (c_start_case): Don't set deleted fields.  Set bindings field.
13953         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
13954         or blocked_vm.  Call c_check_switch_jump_warnings.
13955         (c_finish_case): Don't test blocked_stmt_expr field.  Call
13956         c_release_switch_bindings.
13957         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
13958         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
13959         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
13960         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
13961         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
13962         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
13963         (c_begin_vm_scope, c_end_vm_scope): Don't define.
13964         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
13965         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
13966         (C_DECL_UNJUMPABLE_VM): Don't define.
13967         (C_DECL_UNDEFINABLE_VM): Don't define.
13968         (struct c_label_list): Don't define.
13969         (struct c_label_context_se): Don't define.
13970         (struct c_label_context_vm): Don't define.
13971         (struct c_spot_bindings): Declare.
13972         (c_bindings_start_stmt_expr): Declare.
13973         (c_bindings_end_stmt_expr): Declare.
13974         (lookup_label_for_goto): Declare.
13975         (c_get_switch_bindings, c_release_switch_bindings): Declare.
13976         (c_check_switch_jump_warnings): Declare.
13977         (label_context_stack_se, label_context_stack_vm): Don't declare.
13978         (c_finish_goto_label): Update declaration.
13979         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
13980         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
13981         (Warning Options): Document -Wjump-misses-init.
13982
13983 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
13984
13985         * tree-object-size.c (addr_object_size): Fix a pasto in the last
13986         change.
13987
13988 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
13989
13990         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
13991
13992 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
13993
13994         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
13995
13996 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
13997
13998         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
13999
14000 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
14001
14002         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
14003         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
14004         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
14005         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
14006         * dwarf2asm.c (dw2_force_const_mem): Update call to
14007         make_decl_one_only.
14008         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
14009         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
14010         * langhooks.c (lhd_comdat_group): Remove.
14011         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
14012         * tree.h (DECL_COMDAT_GROUP): New.
14013         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
14014         (tree_decl_with_vis): Add comdat_group. Remove one_only.
14015         (make_decl_one_only): Change signature.
14016         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
14017         make_decl_one_only.
14018         (make_decl_one_only): Change signature.
14019         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
14020
14021 2009-06-15  Richard Guenther  <rguenther@suse.de>
14022
14023         PR middle-end/40439
14024         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
14025
14026 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
14027
14028         * tree-ssa-math-opts.c: Remove extra divide.
14029
14030 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
14031
14032         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
14033
14034 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
14035
14036         * passes.c: Add bswap pass.
14037         * tree-pass.h: Add pass_optimize_bswap declaration.
14038         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
14039         Include rtl.h, expr.h and optabs.h for optab_handler check.
14040         (struct symbolic_number, pass_optimize_bswap): New definition.
14041         (do_shift_rotate, verify_symbolic_number_p): New functions.
14042         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
14043         (gate_optimize_bswap): New function.
14044         * tree.c (widest_int_cst_value): New function.
14045         * tree.h (widest_int_cst_value): Prototype added.
14046
14047 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
14048
14049         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
14050         REG_EQUAL/REG_EQUIV notes.
14051
14052 2009-06-14  Richard Guenther  <rguenther@suse.de>
14053
14054         PR middle-end/40389
14055         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
14056         has its address taken if NRV was applied and it is addressable.
14057         * tree-ssa-structalias.c (get_constraint_for_address_of): New
14058         function split out from ...
14059         (get_constraint_for_1): ... here.
14060         (handle_rhs_call): Use it to mark the return slot escaped if
14061         it is addressable and NRV was applied.
14062
14063 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
14064
14065         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
14066         Change first argument type to location_t.
14067         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
14068         Do not set input_location.
14069         Use loc instead of input_location throughout.
14070
14071 2009-06-13  Richard Guenther  <rguenther@suse.de>
14072
14073         PR tree-optimization/40421
14074         * tree-predcom.c (should_unroll_loop_p): Remove.
14075         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
14076
14077 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
14078
14079         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
14080         Add location argument.
14081
14082 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
14083
14084         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
14085         build_decl.
14086         * config/s390/s390.c (s390_build_builtin_va_list): Same.
14087         (s390_gimplify_va_arg): Pass location to create_artificial_label.
14088         * config/spu/spu-protos.h: Add location to
14089         spu_resolve_overloaded_builtin.
14090         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
14091         spu_build_builtin_va_list.
14092         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
14093         argument.  Pass location to build_function_call_vec.
14094         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
14095         build_decl.
14096         (emit_fpu_switch): Same.
14097         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
14098         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
14099         to build_decl and create_artificial_label.
14100         (xtensa_gimplify_va_arg_expr): Same.
14101         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
14102         (xstormy16_gimplify_va_arg_expr): Same.
14103         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
14104         * config/arm/arm.c (arm_build_builtin_va_list): Same.
14105         * config/mips/mips.c (mips_build_builtin_va_list): Same.
14106         (mips16_build_function_stub): Same.
14107         (mips16_build_call_stub): Same.
14108
14109 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
14110
14111         PR target/40327
14112         * arm/constraints.md (Pa, Pb): New constraints.
14113         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
14114         split pattern to deal with them.
14115
14116 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
14117
14118         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
14119         fix index entry for -Xpreprocessor.
14120
14121 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
14122
14123         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
14124         Add location argument to build_decl call.
14125         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
14126         (rs6000_init_builtins): Same.
14127         (spe_init_builtins): Same.
14128         (rs6000_gimplify_va_arg): Add location argument to
14129         create_artificial_label call.
14130
14131 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
14132
14133         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
14134         * combine-stack-adj.c (pass_stack_adjustments): Use it.
14135         * Makefile.in: Fix GGC dependency for gcse.o.
14136
14137 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
14138
14139         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
14140         * gimple-pretty-print.c (dump_gimple_stmt): Same.
14141         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
14142         created.
14143         * c-parser.c (c_parser_binary_expression): Use current column while
14144         building binary operations.
14145         * common.opt (fshow-column): Enable by default.
14146         * tree-vrp.c (check_array_ref): Use warning_at.
14147         (check_array_bounds): Use location from call back if expr has no
14148         location.
14149         * tree.h: Add location argument to maybe_fold_*.
14150         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
14151         (maybe_fold_offset_to_array_ref): Add location argument and use it.
14152         (maybe_fold_offset_to_component_ref): Same.
14153         (maybe_fold_offset_to_reference): Same.
14154         (maybe_fold_offset_to_address): Same.
14155         (maybe_fold_stmt_indirect): Same.
14156         (maybe_fold_stmt_addition): Same.
14157         (fold_stmt_r): Pass location to maybe_fold_*.
14158         (fold_gimple_assign): Same.
14159         * c-tree.h: Add location argument to finish_decl,
14160         default_function_array_conversion, store_init_value.
14161         * c-decl.c (define_label): Use error_at.
14162         (c_make_fname_decl): Pass location to finish_decl.
14163         (finish_decl): New location argument.
14164         (build_compound_literal): Pass location to store_init_value.
14165         (grokdeclarator): Pass location to finish_decl.
14166         (grokfield): Same.
14167         * c-typeck.c (array_to_pointer_conversion): New location argument.
14168         (function_to_pointer_conversion): Same.
14169         (default_function_array_conversion): Same.
14170         (parser_build_unary_op): Pass location to overflow_warning.
14171         (parser_build_binary_op): Same.  Use warning_at.
14172         (build_unary_op): Pass location to array_to_pointer_conversion.
14173         (build_c_cast): Pass location to digest_init.
14174         (build_modify_expr): New location argument.
14175         (convert_for_assignment): Same.
14176         (store_init_value): Same.
14177         (digest_init): Same.
14178         (output_init_element): Pass location to digest_init and
14179         array_to_pointer_conversion.
14180         (c_finish_return): Pass location to convert_for_assignment.
14181         * gimplify.c (gimplify_conversion): Pass location to
14182         maybe_fold_offset_to_address.
14183         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
14184         to maybe_fold_stmt_addition.
14185         * c-omp.c (c_finish_omp_atomic): Pass new location to
14186         build_modify_expr.
14187         (c_finish_omp_for): Same.
14188         * c-common.c (overflow_warning): New argument.
14189         * c-common.h: New argument to build_modify_expr, overflow_warning.
14190         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
14191         finish_decl.
14192         (c_parser_initializer): Pass location to
14193         default_function_array_conversion.
14194         (c_parser_initelt): Same.
14195         (c_parser_initval): Same.
14196         (c_parser_asm_operands): Same.
14197         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
14198         (c_parser_conditional_expression): Same.
14199         (c_parser_binary_expression): Add location info to stack.  Use it.
14200         (c_parser_unary_expression): Pass location to
14201         default_function_array_conversion, parser_build_unary_op,
14202         build_indirect_ref, c_parser_postfix_expression_after_primary.
14203         (c_parser_postfix_expression_after_primary): New location argument.
14204         Use it.
14205         (c_parser_expression_conv): Pass location to
14206         default_function_array_conversion.
14207         (c_parser_expr_list): Same.
14208         (c_parser_omp_atomic): Same.
14209         (c_parser_omp_for_loop): Same.
14210         * c-tree.h (struct c_declarator): Add comment to id_loc.
14211         (build_array_declarator): New argument.
14212         * c-decl.c (build_array_declarator): Add location argument.
14213         (grokdeclarator): Set id_loc for cdk_array.
14214         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
14215         build_array_declarator.
14216         * tree.c (build_omp_clause): Add location argument.
14217         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
14218         (OMP_CLAUSE_LOCATION): New macro.
14219         (struct tree_omp_clause): Add location field.
14220         (build_omp_clause): Add argument.
14221         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
14222         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
14223         build_omp_clause.
14224         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
14225         (cp_parser_omp_clause_collapse): Same.
14226         (cp_parser_omp_clause_default): Same.
14227         (cp_parser_omp_clause_if): Same.
14228         (cp_parser_omp_clause_nowait): Same.
14229         (cp_parser_omp_clause_num_threads): Same.
14230         (cp_parser_omp_clause_ordered): Same.
14231         (cp_parser_omp_clause_schedule): Same.
14232         (cp_parser_omp_clause_untied): Same.
14233         (cp_parser_omp_for_loop): Same.
14234         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
14235         * c-tree.h (c_start_case): Add location argument.
14236         (c_process_expr_stmt): Same.
14237         (c_finish_goto_*): Same.
14238         * tree-parloops.c (initialize_reductions): Pass location to
14239         build_omp_clause.
14240         (create_parallel_loop): Same.
14241         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
14242         (gfc_trans_omp_reduction_list): Same.
14243         (gfc_trans_omp_clauses): Same.
14244         (gfc_trans_omp_do): Same.
14245         * c-typeck.c (c_finish_goto_label): Same.
14246         (c_finish_goto_ptr): New location argument.
14247         (c_start_case): Same.
14248         (emit_side_effect_warnings): Same.
14249         (c_process_expr_stmt): Same.
14250         (c_finish_stmt_expr): Same.
14251         (c_finish_omp_clauses): Use error_at instead of error.
14252         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
14253         build_omp_clause.
14254         * c-omp.c (c_split_parallel_clauses): New location argument.
14255         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
14256         to build_omp_clause.
14257         (convert_local_reference_stmt): Same.
14258         (convert_gimple_call): Same.
14259         * c-common.h (c_split_parallel_clauses): New argument.
14260         * c-parser.c (c_parser_statement_after_labels): Pass location to
14261         c_finish_goto_label.
14262         (c_parser_switch_statement): Pass location to c_start_case.
14263         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
14264         and c_process_expr_stmt.
14265         (c_parser_omp_variable_list): Add location argument.
14266         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
14267         (c_parser_omp_clause_default): Same.
14268         (c_parser_omp_clause_if): Same.
14269         (c_parser_omp_clause_num_threads): Same.
14270         (-c_parser_omp_clause_ordered): Same.
14271         (c_parser_omp_clause_reduction): Pass location to
14272         c_parser_omp_variable_list.
14273         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
14274         (c_parser_omp_clause_untied): Same.
14275         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
14276         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
14277
14278         * c-tree.h (check_for_loop_decls, undeclared_variable,
14279         build_component_ref, build_array_ref, build_external_ref,
14280         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
14281         build_conditional_expr, build_compound_expr, c_cast_expr,
14282         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
14283         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
14284         argument.
14285         * c-semantics.c (build_stmt): Same.
14286         (build_case_label): Same.
14287         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
14288         (undeclared_variable): New argument.
14289         (make_label): Same.
14290         (lookup_label): Pass location on down.
14291         (define_label): Same.
14292         (finish_decl): Same.
14293         (build_compound_literal): Same.
14294         (finish_struct): Same.
14295         (finish_function): Do not set location here.
14296         (check_for_loop_decls): New argument.
14297         * tree.c (save_expr): Set location.
14298         (build_empty_stmt): New argument.
14299         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
14300         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
14301         * builtins.c (gimplify_va_arg_expr): Use locations.
14302         (expand_builtin_sync_operation): Same.
14303         * c-typeck.c (build_component_ref): New argument.
14304         (build_array_ref): Same.
14305         (build_external_ref): Same.
14306         (c_expr_sizeof_expr): Same.
14307         (c_expr_sizeof_type): Same.
14308         (parser_build_unary_op): Same.
14309         (build_conditional_expr): Same.
14310         (build_compound_expr): Pass location on down.
14311         (build_compound_expr): New argument.
14312         (build_c_cast): Same.
14313         (c_cast_expr): Same.
14314         (build_asm_expr): Same.
14315         (c_finish_return): Same.
14316         (c_process_expr_stmt): Pass location on down.
14317         (c_finish_stmt_expr): New argument.
14318         (push_clenaup): Same.
14319         (c_finish_omp_parallel): Same.
14320         (c_finish_omp_task): Same.
14321         * gimplify.c (gimplify_call_expr): Pass location on down.
14322         * c-omp.c (c_finish_omp_master): New argument.
14323         (c_finish_omp_critical): Same.
14324         (c_finish_omp_ordered): Same.
14325         (c_finish_omp_barrier): Same.
14326         (-c_finish_omp_taskwait): Same.
14327         (c_finish_omp_atomic): Same.
14328         (c_finish_omp_flush): Same.
14329         * tree-inline.c (copy_tree_body_r): Pass location on down.
14330         (inline_forbidden_p): Remove use of input_location.
14331         * c-gimplify.c (c_build_bind_expr): New argument.
14332         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
14333         (c_sizeof_or_alignof_type): New argument.
14334         (c_alignof_expr): Same.
14335         (build_va_arg): Same.
14336         (c_add_case_label): Same.
14337         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
14338         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
14339         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
14340         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
14341         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
14342         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
14343         New argument.
14344         * stub-objc.c (objc_build_selector_expr): Same.
14345         (objc_build_throw_stmt): Same.
14346         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
14347         (c_parser_initelt): Same.
14348         (c_parser_compound_statement): Same.
14349         (c_parser_compound_statement_nostart): Same.
14350         (c_parser_label): Same.
14351         (c_parser_statement_after_labels): Same.
14352         (c_parser_if_body): Same.
14353         (c_parser_else_body): Same.
14354         (c_parser_if_statement): Same.
14355         (c_parser_switch_statement): Same.
14356         (c_parser_while_statement): Same.
14357         (c_parser_do_statement): Same.
14358         (c_parser_for_statement): Same.
14359         (c_parser_asm_statement): Same.
14360         (c_parser_conditional_expression): Same.
14361         (c_parser_binary_expression): Same.
14362         (c_parser_cast_expression): Same.
14363         (c_parser_unary_expression): Same.
14364         (c_parser_sizeof_expression): Same.
14365         (c_parser_alignof_expression): Same.
14366         (c_parser_postfix_expression): Same.
14367         (c_parser_expression): Same.
14368         (c_parser_objc_receiver): Same.
14369         (c_parser_omp_variable_list): Same.
14370         (c_parser_omp_structured_block): Same.
14371         (c_parser_omp_atomic): New argument.
14372         (c_parser_omp_barrier): Same.
14373         (c_parser_omp_critical): Same.
14374         (c_parser_omp_flush): Pass location on down.
14375         (c_parser_omp_for_loop): New argument.
14376         (c_parser_omp_for): Same.
14377         (c_parser_omp_master): Same.
14378         (c_parser_omp_ordered): Same.
14379         (c_parser_omp_sections_scope): Same.
14380         (c_parser_omp_sections): Same.
14381         (c_parser_omp_parallel): Same.
14382         (c_parser_omp_single): Same.
14383         (c_parser_omp_task): Same.
14384         (c_parser_omp_taskwait): Pass location on down.
14385         (c_parser_omp_construct): Same.
14386         (c_parser_omp_threadprivate): Same.
14387         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
14388         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
14389         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
14390         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
14391         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
14392         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
14393         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
14394         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
14395         config/i386/i386.c, stmt.c:
14396         Add location argument to the following function definitions and/or
14397         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
14398         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
14399         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
14400         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
14401         do_case, c_finish_bc_stmt, build_compound_literal,
14402         build_function_call.
14403         * c-decl.c (build_compound_literal): Add location argument.
14404         Make all diagnostic calls use location.
14405         (start_struct): Same.
14406         (finish_struct): Same.
14407         (start_enum): Same.
14408         (build_enumerator): Same.
14409         (start_function): Same.
14410         (grokdeclarator): Make all diagnostic calls use location.
14411         (store_parm_decls_oldstyle): Same.
14412         * c-typeck.c (build_function_call): Add location argument.
14413         Make all diagnostic calls use location.
14414         (do_case): Same.
14415         (c_finish_bc_stmt): Same.
14416         * tree-nested.c (get_trampoline_type): Add argument.
14417         Pass location to build_decl.
14418         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
14419         * rtl.h (RTL_LOCATION): New.
14420         * c-common.c (c_add_case_label): Add location argument.
14421         Make all diagnostic calls use location.
14422         * c-common.h: Add location argument to make_fname_decl, do_case,
14423         c_add_case_label, build_function_call, resolve_overloaded_builtin.
14424         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
14425         Set it appropriately for every case.  Pass enum_loc to start_enum
14426         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
14427         parser_xref_tag.
14428         (c_parser_struct_or_union_specifier): Save location.  Use it for
14429         start_struct, finish_struct, and parser_xref_tag.
14430
14431 2009-06-12  Ian Lance Taylor  <iant@google.com>
14432
14433         * fold-const.c (fold_unary): Rename local variable and to and_expr.
14434
14435         * c-opts.c (c_common_handle_option): For -Wc++-compat set
14436         cpp_opts->warn_cxx_operator_names.
14437
14438 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14439
14440         PR tree-opt/38865
14441         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
14442         is returns NULL and OP is a VCE, look through the VCE.
14443
14444 2009-06-12  Ian Lance Taylor  <iant@google.com>
14445
14446         PR bootstrap/40430
14447         * collect2.c (main): Use CONST_CAST2 in code inside #if
14448         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
14449
14450 2009-06-12  Joey Ye  <joey.ye@intel.com>
14451
14452         PR middle-end/39146
14453         * cfgexpand.c (get_decl_align_unit): Update
14454         max_used_stack_slot_alignment with align instead of
14455         stack_alignment_needed.
14456
14457         * function.c (assign_stack_local_1): Update
14458         max_used_stack_slot_alignment with alignment_in_bits instead
14459         of stack_alignment_needed.
14460         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
14461         here.
14462
14463 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
14464
14465         * dwarf2out.c (last_var_location_insn): New variable.
14466         (dwarf2out_end_epilogue): Clear last_var_location_insn.
14467         (dwarf2out_var_location): Don't record anything after last real
14468         insn.  Only change labels if there were any real instructions
14469         in between last note and this one, or if changed sections.
14470
14471 2009-06-11  Richard Henderson  <rth@redhat.com>
14472
14473         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
14474         note when storing the frame pointer in a register.
14475         (FRP): Don't redefine to nothing for epilogue.
14476         (alpha_expand_epilogue): Mark register and sp restores.
14477         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
14478
14479         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
14480         when gen_lowpart is needed.
14481
14482 2009-06-11  Richard Henderson  <rth@redhat.com>
14483
14484         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
14485
14486         * dwarf2out.c (need_data_align_sf_opcode): New.
14487         (div_data_align): Move earlier.
14488         (def_cfa_1, reg_save): Use it.
14489
14490 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
14491
14492         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
14493         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
14494         (ix86_handle_option): Handle OPT_mcrc32.
14495         (ix86_target_string): Add -mcrc32.
14496         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
14497
14498         * config/i386/i386.h (TARGET_CRC32): New.
14499
14500         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
14501         (sse4_2_crc32di): Likewise.
14502
14503         * config/i386/i386.opt (mcrc32): New.
14504
14505         * doc/invoke.texi: Document -mcrc32.
14506
14507 2009-06-11  Richard Henderson  <rth@redhat.com>
14508
14509         * common.opt (gdwarf-): Accept a version number.
14510         * doc/invoke.texi (gdwarf-): Update docs.
14511         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
14512         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
14513         version level, and record it.
14514
14515         * dwarf2.h (DW_CIE_VERSION): Remove.
14516         * dwarf2out.c (DWARF_VERSION): Remove.
14517         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
14518         (output_call_frame_info): Use CIE version 3 for dwarf3,
14519         or if the return register column is out of range for version 1.
14520         (dwarf_stack_op_name): Add all dwarf3 values.
14521         (DEBUG_PUBTYPES_SECTION): New.
14522         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
14523         encoding change for dwarf3.
14524         (output_die) [dw_val_class_die_ref]: Likewise.
14525         (output_compilation_unit_header): Emit correct version for dwarf3.
14526         (output_line_info): Likewise.
14527         (output_pubnames): Update for DWARF_VERSION removal.
14528         (output_aranges): Likewise.
14529         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
14530         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
14531         (dwarf2out_finish): Likewise.
14532
14533 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
14534
14535         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
14536         in r148403.
14537
14538 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
14539
14540         PR c/39252
14541         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
14542         * builtins.c (expand_builtin_unreachable): New function.
14543         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
14544         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
14545         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
14546         successors.
14547         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
14548         searching for missing barriers.
14549
14550 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
14551
14552         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
14553         when -fprofile-generate* was passed.
14554         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
14555
14556 2009-06-11  Anthony Green  <green@moxielogic.com>
14557
14558         * config/moxie/moxie.md: Define length attribute for all instructions.
14559         (rCC): Define.
14560         (*b<cond:code>): Support limited branch ranges for new PC-relative
14561         branch instructions.
14562         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
14563
14564 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
14565
14566         * config/i386/i386.c (min_insn_size): Use get_attr_length
14567         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
14568         For __asm return 0.
14569
14570         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
14571         instead of emit_insn_before.
14572
14573 2009-06-10  Ian Lance Taylor  <iant@google.com>
14574
14575         PR bootstrap/40408
14576         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
14577         GIMPLE_SWITCH.
14578
14579 2009-06-10  Revital Eres  <eres@il.ibm.com>
14580
14581         * passes.c (init_optimization_passes): Reschedule
14582         predictive-commoning pass before complete unroll pass.
14583
14584 2009-06-10  Martin Jambor  <mjambor@suse.cz>
14585
14586         * cgraph.c (cgraph_node_can_be_local_p): New function.
14587         (cgraph_make_node_local): New function.
14588         * cgraph.h (cgraph_node_can_be_local_p): Declare.
14589         (cgraph_make_node_local): Declare.
14590
14591 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
14592
14593         * tree.h (tree_base): Add packed_flag and user_align fields.
14594         Decrease size of spare field.
14595         (TYPE_USER_ALIGN): Use user_align from tree_base.
14596         (DECL_USER_ALIGN): Likewise.
14597         (TYPE_PACKED): Use packed_flag from tree_base.
14598         (DECL_PACKED): Likewise.
14599         (tree_type): Delete packed_flag and user_align fields.  Widen
14600         precision field.  Widen mode field and shuffle fields to align
14601         mode on an 8-bit boundary.
14602         (tree_decl_common): Delete decl_flag_1 and user_align fields.
14603         Renumber decl_flag_* fields.  Fix comments.  Widen
14604         decl_common_unused field.
14605         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
14606         (DECL_EXTERNAL): Likewise.
14607         (DECL_BIT_FIELD): Likewise.
14608         (DECL_NONADDRESSABLE_P): Likewise.
14609         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
14610         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
14611
14612 2009-06-10  Ian Lance Taylor  <iant@google.com>
14613
14614         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
14615         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
14616         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
14617         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
14618         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
14619         DEF_VEC_ALLOC_FUNC_P.
14620         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
14621         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
14622         DEF_VEC_ALLOC_FUNC_O.
14623         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
14624         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
14625         DEF_VEC_ALLOC_FUNC_I.
14626         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
14627         (vec_stack_p_reserve_exact_1): Declare.
14628         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
14629         (vec_stack_free): Declare.
14630         (VEC_stack_alloc): Define.
14631         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
14632         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
14633         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
14634         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
14635         for void_p.
14636         (stack_vecs): New static variable.
14637         (vec_stack_p_reserve_exact_1): New function.
14638         (vec_stack_o_reserve_1): New static function.
14639         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
14640         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
14641         (vec_stack_free): New function.
14642         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
14643         (VEC_df_ref_stack_alloc): Define.
14644         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
14645         DEF_VEC_ALLOC_P_STACK.
14646         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
14647         (struct df_collection_rec): Change _vec fields to VEC.  Remove
14648         _use fields.
14649         (df_free_collection_rec): Adjust for new fields.
14650         (df_insn_rescan): Use new df_collection_rec fields.
14651         (df_notes_rescan, df_canonize_collection_rec): Likewise.
14652         (df_ref_create_structure, df_ref_record): Likewise.
14653         (df_get_conditional_uses, df_get_call_refs): Likewise.
14654         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
14655         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
14656         (df_record_exit_block_uses, df_bb_verify): Likewise.
14657         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
14658         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
14659         Remove count parameter.  Change return type to void.  Change all
14660         callers.
14661         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
14662         Remove count parameter.  Change return type to void.  Change all
14663         callers.
14664         (df_install_refs): Change old_vec parameter to VEC.  Remove count
14665         parameter.  Change all callers.
14666         (df_install_mws): Change old_vec parameter to VEC.  Remove count
14667         parameter.  Change all callers.
14668         (df_refs_verify): Change new_rec parameter to VEC.  Change call
14669         callers.
14670         (df_mws_verify): Likewise.
14671
14672 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
14673
14674         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
14675
14676 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
14677
14678         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
14679
14680 2009-06-10  Anthony Green  <green@moxielogic.com>
14681
14682         * config/moxie/crti.asm: New file.
14683         * config/moxie/crtn.asm: New file.
14684         * config/moxie/moxie.c: New file.
14685         * config/moxie/moxie.h: New file.
14686         * config/moxie/sfp-machine.h: New file.
14687         * config/moxie/moxie-protos.h: New file.
14688         * config/moxie/t-moxie: Created.
14689         * config/moxie/t-moxie-softfp: Created.
14690         * config/moxie/moxie.md: Created.
14691         * config/moxie/constraints.md: Created.
14692         * config.gcc: Add moxie support.
14693         * doc/md.texi (Machine Constraints): Add moxie constraints.
14694         * doc/contrib.texi (Contributors): Mention moxie port.
14695         * doc/install.texi (Specific): Mention the moxie port.
14696
14697 2009-06-09  Ian Lance Taylor  <iant@google.com>
14698
14699         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
14700         compiling with C++.
14701         * optabs.c (optab_table): Only use designated initializers if
14702         HAVE_DESIGNATED_INITIALIZERS is defined.
14703         (convert_optab_table): Likewise.
14704         (init_optabs): Always call init_insn_codes if
14705         HAVE_DESIGNATED_INITIALIZERS is not defined.
14706
14707 2009-06-09  Ian Lance Taylor  <iant@google.com>
14708
14709         * targhooks.c (default_builtin_vectorized_function): Change fn
14710         parameter to unsigned int.
14711         (default_builtin_vectorized_conversion): Change code parameter to
14712         unsigned int.
14713         (default_builtin_reciprocal): Change fn parameter to unsigned int.
14714         * targhooks.h: Update declarations.
14715         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
14716         parameter to unsigned int.
14717
14718         * c-typeck.c (comptypes_check_enum_int): New static function.
14719         (comptypes_internal): Add enum_and_int_p parameter.  Change all
14720         callers.
14721         (comp_target_types): Add location parameter.  Change all callers.
14722         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
14723         Change all callers.
14724         (function_types_compatible_p, type_lists_compatible_p): Likewise.
14725         (build_conditional_expr): Add colon_loc parameter.  Change all
14726         callers.
14727         (convert_for_assignment): Add location parameter.  Change all callers.
14728         * c-parser.c (c_parser_conditional_expression): Pass location of
14729         colon to build_conditional_expr.
14730         * c-tree.h (build_conditional_expr): Update declaration.
14731
14732 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
14733
14734         * graphite.c: Revert previous patch.
14735
14736 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
14737
14738         PR bootstrap/40103
14739         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
14740
14741 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
14742
14743         * tree-ssa-loop-prefetch.c
14744         (loop_prefetch_arrays): Fixed a portability problem in printf format
14745         string.
14746
14747 2009-06-09  Martin Jambor  <mjambor@suse.cz>
14748
14749         PR tree-optimization/40351
14750         * tree-sra.c (propagate_subacesses_accross_link): Check that a
14751         refrence to a potential artifical subaccess can be constructed.
14752
14753 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
14754
14755         * config/sh/sh-protos.h (sh_optimization_options): Declare.
14756         (sh_override_options): Likewise.
14757         * config/sh/sh.c: Include params.h.
14758         (sh_optimization_options): New.
14759         (sh_override_options): Likewise.
14760         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
14761         (OVERRIDE_OPTIONS): Use sh_override_options.
14762
14763 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
14764
14765         * dwarf2out.c (emit_cfa_remember): New variable.
14766         (add_fde_cfi): If emit_cfa_remember, recurse to add
14767         DW_CFA_remember_state first.
14768         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
14769         instead just set emit_cfa_remember.
14770
14771 2009-06-08  Jan Hubicka  <jh@suse.cz>
14772
14773         PR debug/40126
14774         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
14775
14776 2009-06-08  Jan Hubicka  <jh@suse.cz>
14777
14778         PR middle-end/39834
14779         * cgraphunit.c (save_inline_function_body): Do not copy transform
14780         hooks for saved inline bodies.
14781         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
14782         for given function.
14783
14784 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
14785
14786         * jump.c (returnjump_p): Handle delayed branches.  Add missing
14787         function comment.
14788
14789 2009-06-08  Jan Hubicka  <jh@suse.cz>
14790
14791         PR middle-end/40102
14792         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
14793         original node might've been modified.
14794         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
14795
14796 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
14797
14798         * tree-object-size.c (addr_object_size): Add OSI argument.
14799         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
14800         (compute_builtin_object_size, expr_object_size): Adjust callers.
14801         (plus_stmt_object_size): Call addr_object_size instead of
14802         compute_builtin_object_size.
14803
14804 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
14805             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
14806
14807         * tree-ssa-loop-prefetch.c
14808         (gather_memory_references): Introduced a counter for the number of
14809         memory references.
14810         (anything_to_prefetch_p): Introduced a counter for the number of
14811         prefetches.
14812         (is_loop_prefetching_profitable): New function with a cost model
14813         for prefetching.
14814         (loop_prefetch_arrays): Use the new cost model to determine if
14815         prefetching is profitable.
14816         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
14817         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
14818         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
14819         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
14820         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
14821         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
14822
14823 2009-06-08  Michael Matz  <matz@suse.de>
14824
14825         PR debug/40012
14826         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
14827         partitions use the same.
14828         (expand_one_var): Deal with DECL_RTL sometimes begin set also
14829         for basevars of SSA_NAMEs.
14830         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
14831         to not expand them twice.
14832         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
14833         multiple places.
14834
14835 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
14836
14837         * common.opt (fcompare-debug=, fcompare-debug-second): New.
14838         (fdump-final-insns=, gtoggle): New.
14839         * doc/invoke.texi: Document them.
14840         * final.c (rest_of_clean_state): Dump final insn stream.
14841         * gcc.c (invoke_as): Hook in -fcompare-debug.
14842         (static_spec_functions): Add compare-debug-dump-opt,
14843         compare-debug-self-opt and compare-debug-auxbase-opt.
14844         (compare_debug, compare_debug_second, compare_debug_opt): New.
14845         (switches_debug_check, n_switches_debug_check): New.
14846         (debug_auxbase_opt, debug_check_temp_file): New.
14847         (process_command): Handle -fno-compare-debug, -fcompare-debug and
14848         -fcompare-debug=*.
14849         (do_self_spec): Handle arguments after switches.
14850         (do_spec_1): Add .gk extension to temp file basenames for compare.
14851         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
14852         (cc1_options): Use it instead of normal auxbase computation for
14853         the second compare-debug compilation.
14854         (compare_files): New.
14855         (main): Set up and implement compare debug mode.
14856         (compare_debug_dump_opt_spec_function): New.
14857         (compare_debug_self_opt_spec_function): New.
14858         (compare_debug_auxbase_opt_spec_function): New.
14859         * toplev.c (process_options): Handle flag_gtoggle,
14860         flag_dump_final_insns.
14861         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
14862         during -fcompare-debug-second compilation.
14863
14864 2009-06-07  Ian Lance Taylor  <iant@google.com>
14865
14866         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
14867         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
14868
14869         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
14870         with no default node.  Change warning with %H to warning_at.
14871         Don't clear warn_switch around case checking.
14872         * doc/invoke.texi (Warning Options): Clarify distinction between
14873         -Wswitch and -Wswitch-enum.
14874
14875 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14876
14877         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
14878
14879 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14880
14881         * gbl-ctors.h: Add header guard.
14882
14883 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14884
14885         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
14886         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
14887         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
14888         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
14889         prototypes for removed functions.
14890         (expressions_equal_p): Move to ...
14891         * tree-ssa-sccvn.h: ... here and ...
14892         * matrix-reorg.c: ... adjust includes.
14893
14894 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14895
14896         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
14897
14898 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14899
14900         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
14901         (finish_function): Remove erroneous whitespace.
14902
14903 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14904
14905         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
14906         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
14907
14908 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14909
14910         * errors.c (internal_error): Commentary typo fix.
14911         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
14912         * tree-ssa-pre.c: Ditto.
14913
14914 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14915
14916         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
14917         them is supposed to hold actual statements.
14918
14919 2009-06-06  Ian Lance Taylor  <iant@google.com>
14920
14921         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
14922         empty statements can now have attributes.
14923
14924 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
14925
14926         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
14927         * config/mips/mips.md: Ditto.
14928
14929 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
14930
14931         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
14932         _RELOCATABLE.
14933         (__eabi_uconvert): Likewise.
14934
14935 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
14936
14937         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
14938         CFI_* definitions with IN_GCC.
14939
14940 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
14941
14942         * xcoffout.h (xcoffout_source_line): Update prototype.
14943
14944 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14945
14946         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
14947         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
14948
14949 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
14950
14951         PR middle-end/40340
14952         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
14953         inlined_function_outer_scope_p blocks for artificial inlines
14954         even at -g0/-g1.
14955         * tree.c (tree_nonartificial_location): Rewrite using
14956         block_nonartificial_location.
14957
14958 2009-06-05  Revital Eres  <eres@il.ibm.com>
14959             Leehod Baruch  <leehod@il.ibm.com>
14960
14961         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
14962         (expand_expr_real_1): Remove comment.
14963         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
14964         Vectorize misaligned access when the target supports it.
14965         (vect_supportable_dr_alignment): Check for unaligned access support.
14966         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
14967         and remove asset.
14968
14969 2009-06-05  Julian Brown  <julian@codesourcery.com>
14970
14971         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
14972         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
14973
14974 2009-06-05  Richard Guenther  <rguenther@suse.de>
14975
14976         PR bootstrap/40350
14977         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
14978         as possibly unused.
14979
14980 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
14981
14982         * config/s390/s390.c (global_not_special_regno_p): New static inline.
14983         (save_gprs): Don't tell unwinder when a global register is saved.
14984         (s390_emit_epilogue): Emit needed epilogue unwind info.
14985
14986 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
14987
14988         * dwarf2out.c (deferred_asm_name): New.
14989         (add_name_and_src_coords_attributes): Defer creation of
14990         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
14991         computed yet.
14992         (move_linkage_attr): New.
14993         (dwarf2out_finish): Revisit deferrals and emit attributes at the
14994         right place.
14995
14996 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
14997
14998         * tree-nested.c (finalize_nesting_tree_1): Declare the
14999         frame_decl in the binding tree.
15000
15001 2009-06-04  Cary Coutant  <ccoutant@google.com>
15002
15003         * basic-block.h (struct basic_block_def): Add discriminator field.
15004         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
15005         callers.
15006         * debug.c (do_nothing_debug_hooks): Add additional entry.
15007         (debug_nothing_int_charstar_int): New function.
15008         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
15009         (debug_nothing_int_charstar_int): New declaration.
15010         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
15011         discriminator value in .loc directive.
15012         * final.c (last_discriminator): New variable.
15013         (discriminator): New variable.
15014         (final_start_function): Initialize above variables, pass current
15015         discriminator to debug hook.
15016         (notice_source_line): Check for discriminator change.
15017         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
15018         * sdbout.c (sdbout_source_line): New parameter.
15019         * tree-cfg.c (struct locus_discrim_map): New structure type.
15020         (discriminator_per_locus): New hash table.
15021         (build_gimple_cfg): Allocate and free discriminator hash table.
15022         (make_edges): Call assign_discriminator.
15023         (locus_map_hash): New function.
15024         (locus_map_eq): New function.
15025         (next_discriminator_for_locus): New function.
15026         (same_line_p): New function.
15027         (assign_discriminator): New function.
15028         (make_cond_expr_edges): Call assign_discriminator.
15029         (make_gimple_switch_edges): Likewise.
15030         (first_non_label_stmt): New function.
15031         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
15032         all callers.
15033         * xcoffout.c (xcoffout_source_line): Add new parameter.
15034
15035         * configure.ac (gcc_cv_as_discriminator): New configury check for
15036         gas support for discriminator.
15037         * configure: Regenerate.
15038         * config.in: Regenerate.
15039
15040 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15041
15042         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
15043         val after checking for integers.
15044
15045 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
15046
15047         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
15048         X64_REGPARM_MAX.
15049         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
15050         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
15051         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
15052         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
15053         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
15054         X64_SSE_REGPARM_MAX.
15055         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
15056         X64_SSE_REGPARM_MAX.
15057
15058 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
15059
15060         * gcc.c (report_times_to_file): New.
15061         (execute): Implement it.
15062         (process_command): Support -time=.
15063         * doc/invoke.texi: Document it.
15064
15065 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
15066
15067         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
15068         that have value exprs.
15069
15070 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
15071
15072         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
15073         declarations for constants until...
15074         (dw2_output_indirect_constant_1): ... this point.
15075
15076 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
15077
15078         PR target/10242
15079         * arm.md (arm_addsi3): Don't try to split an add with an
15080         eliminable register until after reload has completed.
15081
15082 2009-06-03  Ian Lance Taylor  <iant@google.com>
15083
15084         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
15085         * genattrtab.c (write_length_unit_log): Likewise.
15086         * genchecksum.c (dosum): Likewise.
15087         * gengtype.c (write_rtx_next): Likewise.
15088         (finish_root_table, write_roots): Likewise.
15089         * gimple.c (gimple_ops_offset_): Likewise.
15090         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
15091         * config/arc/arc.c (arc_attribute_table): Likewise.
15092         * config/arm/arm.c (arm_attribute_table): Likewise.
15093         * config/avr/avr.c (avr_attribute_table): Likewise.
15094         * config/crx/crx.c (crx_attribute_table): Likewise.
15095         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
15096         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
15097         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
15098         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
15099         * config/sh/sh.c (sh_attribute_table): Likewise.
15100         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
15101         * config/spu/spu.c (spu_attribute_table): Likewise.
15102         * config/v850/v850.c (v850_attribute_table): Likewise.
15103
15104         * config/alpha/alpha.c (vms_attribute_table): Make static.
15105         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
15106         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
15107         * config/mips/mips.c (mips_attribute_table): Likewise.
15108
15109         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
15110         $(SYSTEM_H).
15111         (cc1-checksum.o): Likewise.
15112
15113 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
15114
15115         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
15116
15117 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
15118
15119         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
15120         insn if it is changing sp.  Use gen_add3_insn instead of
15121         conditionally gen_addsi3 and gen_adddi3.
15122         (offset_below_red_zone_p): New static inline function.
15123         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
15124         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
15125         * config/rs6000/ppc-asm.h: Include auto-host.h.
15126         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
15127         CFI_RESTORE): Define.
15128         * config/rs6000/crtresxgpr.asm: Add unwind info.
15129         * config/rs6000/crtresxfpr.asm: Likewise.
15130         * config/rs6000/crtresgpr.asm: Likewise.
15131         * config/rs6000/crtresfpr.asm: Likewise.
15132         * config/rs6000/crtsavgpr.asm: Likewise.
15133         * config/rs6000/crtsavfpr.asm: Likewise.
15134
15135         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
15136         argument of DWARF2_FRAME_REG_OUT macros.
15137
15138 2009-06-03  Julian Brown  <julian@codesourcery.com>
15139
15140         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
15141         words or less (including TImode) in core registers.
15142
15143 2009-06-03  Richard Guenther  <rguenther@suse.de>
15144
15145         PR middle-end/40328
15146         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
15147
15148 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
15149
15150         * statistics.c (statistics_counter_event): Do not record event
15151         in pass dump if its number == -1.
15152         (curr_statistics_hash): Add assert that we never get passes
15153         with static number == -1.
15154
15155 2009-06-03  Richard Guenther  <rguenther@suse.de>
15156             Andrey Belevantsev  <abel@ispras.ru>
15157
15158         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
15159         non-BLKmode arrays addressable.
15160
15161 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
15162
15163         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
15164         * config/m68k/m68k.h: ... here.
15165
15166 2009-06-03  Martin Jambor  <mjambor@suse.cz>
15167
15168         PR tree-optimization/40323
15169         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
15170         assignment.
15171
15172 2009-06-03  Richard Guenther  <rguenther@suse.de>
15173
15174         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
15175         consistently.
15176
15177 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
15178
15179         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
15180         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
15181         JUMP_TABLE_DATA_P where applicable.
15182         * config/sh/sh.c: Ditto.
15183         * config/sh/sh.h: Ditto.
15184         * config/sh/sh.md: Ditto.
15185         * config/sh/symbian.c: Ditto.
15186
15187 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
15188
15189         * config/i386/driver-i386.c (describe_cache): Optimize
15190         concatenation of strings.  Use snprintf instead of sprintf.
15191         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
15192         target when not compiling with GCC.
15193
15194 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
15195
15196         * config/sh/sh.c: Revert last change.
15197         (sh_expand_epilogue): Emit a blockage insn before the frame
15198         pointer adjustment unconditionally.
15199
15200 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
15201
15202         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
15203         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
15204         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
15205         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
15206         to COLLECT_GCC_OPTIONS.
15207
15208 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
15209
15210         * collect2.c (target_system_root): New variable.
15211         (main): Handle --sysroot=.
15212         (ignore_library): Strip the sysroot from the library path.
15213
15214 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
15215
15216         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
15217         (collect2.o): Depend on collect2-aix.h.
15218         (collect2-aix.o): New rule.
15219         * collect2-aix.h: New file.
15220         * collect2-aix.c: Likewise.
15221         * collect2.c: Include collect2-aix.h.  Don't undefine
15222         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
15223         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
15224         Use TARGET_AIX_VERSION instead of _AIX51.
15225         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
15226         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
15227         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
15228         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
15229         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
15230
15231 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
15232
15233         * collect2.c (ignore_library): Avoid premature post-increment
15234         and null deference.
15235
15236 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
15237
15238         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
15239         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
15240         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
15241         CROSS_DIRECTORY_STRUCTURE too.
15242         (LINK_LIBG_SPEC): Likewise.
15243         (LIB_SPEC): Add %R to sysroot paths.
15244         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
15245         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
15246         * config/rs6000/aix51.h: As for aix43.h.
15247         * config/rs6000/aix52.h: Likewise.
15248         * config/rs6000/aix53.h: Likewise.
15249         * config/rs6000/aix61.h: Likewise.
15250         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
15251         to the beginning of sysroot paths.
15252
15253 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15254
15255         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
15256         INSN_LISTs that are out of the REG_NOTE range.
15257
15258 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15259
15260         * loop-unroll.c (struct iv_to_split): Add pointer to next.
15261         (struct var_to_expand): Likewise.
15262         (struct opt_info): Add head and tail for linked lists of the above.
15263         (analyze_insn_to_expand_var): Initialize next.
15264         (analyze_iv_to_split_insn): Likewise.
15265         (analyze_insns_in_loop): Create linked lists.
15266         (allocate_basic_variable): Simplify for use without hash table.
15267         (insert_var_expansion_initialization): Likewise, make it type-safer.
15268         (combine_var_copies_in_loop_exit): Likewise.
15269         (apply_opt_in_copies): Walk lists rather than hash tables.
15270         (release_var_copies): Simplified and inlined by hand into...
15271         (free_opt_info): ... this function.
15272
15273 2009-06-02  Richard Guenther  <rguenther@suse.de>
15274
15275         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
15276         for field decls.
15277
15278 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15279
15280         * cfgexpand.c (gimple_expand_cfg): Discard the source location
15281         only for builtins that are not overridden.
15282
15283 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15284
15285         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
15286         label string.
15287
15288 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15289
15290         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
15291
15292 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15293
15294         * combine.c (move_deaths): Compare LUIDs within the same BB only.
15295
15296 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15297
15298         * common.opt (fdump-unnumbered-links): New.
15299         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
15300         * print-rtl.c (flag_dump_unnumbered_links): New.
15301         (print_rtx): Test it.
15302
15303 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
15304
15305         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
15306         push/pop multiple to 8-byte alignment.
15307
15308 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
15309
15310         * config/i386/i386.c (queued_cfa_restores): New static variable.
15311         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
15312         functions.
15313         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
15314         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
15315         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
15316         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
15317         note unconditionally.
15318         (ix86_emit_restore_regs_using_mov): Likewise.
15319         (ix86_emit_restore_sse_regs_using_mov): Likewise.
15320         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
15321         it through to ix86_emit_restore_reg_using_pop.
15322         (ix86_emit_leave): Add RED_OFFSET argument.  Call
15323         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
15324         instead of adding REG_CFA_OFFSET note unconditionally.
15325         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
15326         the above functions.  Call ix86_add_queued_cfa_restore_notes when
15327         needed.
15328
15329         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
15330         force output of the label even for dwarf2out_do_cfi_asm.
15331         (add_fde_cfi): If -g2 and above and cfi might change CFA,
15332         force creation of CFI label and chain DW_CFA_set_loc jumping to it
15333         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
15334         caller.
15335         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
15336         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
15337         dwarf2out_cfi_label callers.
15338         * tree.h (dwarf2out_cfi_label): Adjust prototype.
15339         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
15340         Adjust dwarf2out_cfi_label callers.
15341         * config/vax/vax.c (vax_output_function_prologue): Likewise.
15342
15343         * config/i386/i386.h (struct machine_cfa_state,
15344         struct machine_function): Guard with ifndef USED_FOR_TARGET
15345         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
15346
15347         PR other/40024
15348         * emutls.c (__emutls_get_address): Change arr->size to mean number
15349         of allocated arr->data entries instead of # of slots + 1.
15350
15351         PR middle-end/40316
15352         * recog.c (peep2_reinit_state): New function.
15353         (peephole2_init_state): Use it at the end of a basic block and also
15354         when seeing a RTX_FRAME_RELATED_P insn.
15355
15356 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
15357
15358         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
15359         fixuns_truncrfdi2): New.
15360         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
15361         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
15362         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
15363         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
15364         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
15365         *recip_approx): Remove.
15366         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
15367         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
15368         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
15369         move to div.md.
15370         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
15371         setf_exp_rf): New.
15372
15373 2009-06-01  Ian Lance Taylor  <iant@google.com>
15374
15375         * attribs.c (register_attribute): Use CONST_CAST.
15376         * collect2.c (main): Use CONST_CAST2.
15377         (scan_prog_file): Likewise.
15378         * gcc.c (process_command, main): Likewise.
15379         * toplev.c (toplev_main): Likewise.
15380
15381         * c-typeck.c (handle_warn_cast_qual): New static function,
15382         partially broken out of build_c_cast.
15383         (build_c_cast): Call handle_warn_cast_qual.
15384         * doc/invoke.texi (Warning Options): Document new effect of
15385         -Wcast-qual.
15386
15387 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
15388
15389         * diagnostic.c (diagnostic_build_prefix): Always print columns.
15390         (diagnostic_report_current_module): Print columns.
15391         * common.opt (flag_show_column): Enable by default.
15392
15393 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
15394
15395         * alias.c (find_base_term): Check for NULL term before returning.
15396
15397 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
15398
15399         Revert due to PR40320:
15400         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
15401         * calls.c (emit_library_call_value_1): Don't force_operand for move
15402         and push insns.
15403
15404 2009-06-01  Olivier Hainque  <hainque@adacore.com>
15405             Eric Botcazou  <ebotcazou@adacore.com>
15406
15407         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
15408         to be processed as a bitfield for constructor output purposes.
15409         * output.h (initializer_constant_valid_for_bitfield_p): Declare
15410         new function.
15411         * varasm.c (oc_local_state): New type, output_constructor
15412         local state to support communication with helpers.
15413         (oc_outer_state): New type, output_constructor outer state of
15414         relevance in recursive calls.
15415         (output_constructor_array_range): New output_constructor helper,
15416         extracted code for an array range element.
15417         (output_constructor_regular_field): New output_constructor helper,
15418         extracted code for an element that is not a bitfield.
15419         (output_constructor_bitfield): New output_constructor helper,
15420         extracted code for a bitfield element.  Accept an OUTER state
15421         argument for recursive processing.  Recurse on record or array
15422         CONSTRUCTOR values, possibly past noop conversions.
15423         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
15424         VALUE is a valid constant-valued expression for use in a static
15425         bit-field initializer.
15426         (output_constructor): Rework to use helpers.  Accept and honor an
15427         OUTER state argument for recursive calls.  Return total size.  Be
15428         prepared for nested constructors initializing bitfields.
15429         (output_constant): Feed OUTER in calls to output_constructor.
15430
15431 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
15432
15433         * calls.c (emit_library_call_value_1): Don't force_operand for move
15434         and push insns.
15435
15436 2009-06-01  Nick Clifton  <nickc@redhat.com>
15437
15438         * doc/invoke.texi (IA-64 Options): Fix typo.
15439
15440 2009-06-01  Ira Rosen  <irar@il.ibm.com>
15441
15442         PR tree-optimization/39129
15443         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
15444         printed message.
15445         (vect_do_peeling_for_loop_bound): Use
15446         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
15447         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
15448         (vect_loop_versioning): Likewise.
15449         (vect_create_cond_for_alias_checks): Fix indentation.
15450         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
15451         macros.
15452         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
15453         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
15454         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
15455         "control flow in loop".
15456         (vect_estimate_min_profitable_iters): Use
15457         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
15458         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
15459         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
15460         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
15461         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
15462         statement belongs to a group of strided accesses with the exact code
15463         check.
15464         (vectorizable_load): Likewise.
15465         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
15466         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
15467
15468 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
15469
15470         * config/freebsd-stdint.h: New file.
15471         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
15472         Add freebsd-stdint.h to tm_file.
15473
15474 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
15475
15476         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
15477         (thumb2_extendhidi2): Likewise.
15478
15479 2009-05-31  Ian Lance Taylor  <iant@google.com>
15480
15481         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
15482
15483 2009-05-31  Ian Lance Taylor  <iant@google.com>
15484
15485         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
15486         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
15487         (ipa-reference.o): Depend upon gt-ipa-reference.h.
15488
15489 2009-05-31  Jason Merrill  <jason@redhat.com>
15490
15491         * tree-pretty-print.c (print_call_name): Take the callee, not the
15492         call itself.  Make non-static.  Use dump_function_name for functions.
15493         (dump_generic_node): Adjust.
15494         * diagnostic.h: Declare print_call_name.
15495         * gimple-pretty-print.c (dump_gimple_call): Use it.
15496
15497 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
15498
15499         * config/sh/sh.md (ashldi3_std): New define_expand.
15500         (ashldi3): Use it.
15501
15502 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
15503
15504         PR target/40313
15505         * config/sh/sh.c: Include debug.h.
15506         (sh_expand_epilogue): Emit a blockage insn before the frame
15507         pointer adjustment also when dwarf2out_do_frame returns true.
15508
15509 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
15510
15511         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
15512         (thumb2_extendqidi2): New pattern.
15513
15514 2009-05-31  Ira Rosen  <irar@il.ibm.com>
15515
15516         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
15517         mark phis for renaming.
15518         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
15519         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
15520         Call mark_sym_for_renaming.
15521         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
15522         * tree-vect-loop.c (vect_transform_loop): Remove
15523         vect_memsyms_to_rename initialization and a call to
15524         mark_set_for_renaming.
15525
15526 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
15527
15528         PR middle-end/40304
15529         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
15530         frame related even if !set_cfa && style < 0.
15531
15532 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
15533
15534         * config/i386/mingw-tls.c: New file.
15535         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
15536         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
15537         defining _WIN32 but not __CYGWIN__.
15538
15539 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15540
15541         * configure.ac: Add MPC support.
15542
15543         * config.in, configure: Regenerate.
15544
15545 2009-05-29  Richard Henderson  <rth@redhat.com>
15546
15547         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
15548         NOTE_INSN_BASIC_BLOCK.
15549         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
15550         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
15551         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
15552         to be deleted.
15553         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
15554         add in_use field.
15555         (add_cfi): Disable check redefining cfa away from drap.
15556         (lookup_cfa_1): Add remember argument; handle remember/restore.
15557         (lookup_cfa): Pass remember argument.
15558         (cfa_remember): New.
15559         (compute_barrier_args_size_1): Remove sibcall check.
15560         (dwarf2out_frame_debug_def_cfa): New.
15561         (dwarf2out_frame_debug_adjust_cfa): New.
15562         (dwarf2out_frame_debug_cfa_offset): New.
15563         (dwarf2out_frame_debug_cfa_register): New.
15564         (dwarf2out_frame_debug_cfa_restore): New.
15565         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
15566         (dwarf2out_begin_epilogue): New.
15567         (dwarf2out_frame_debug_restore_state): New.
15568         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
15569         DW_CFA_restore_state.
15570         (output_cfi_directive): Likewise.
15571         (convert_cfa_to_fb_loc_list): Likewise.
15572         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
15573         * dwarf2out.h: Update.
15574         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
15575         (copy_insn_1): Early out for null.
15576         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
15577         and dwarf2out_frame_debug_restore_state.
15578         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
15579         (prologue_insn_hash, epilogue_insn_hash): New.
15580         (free_after_compilation): Adjust freeing accordingly.
15581         (record_insns): Create hash table if needed; push insns into
15582         hash instead of array.
15583         (maybe_copy_epilogue_insn): New.
15584         (contains): Search hash table instead of array.
15585         (sibcall_epilogue_contains): Remove.
15586         (thread_prologue_and_epilogue_insns): Split eh_return insns
15587         and mark them as epilogues.
15588         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
15589         scanning in terms of basic blocks.
15590         * insn-notes.def (CFA_RESTORE_STATE): New.
15591         * jump.c (returnjump_p_1): Accept EH_RETURN.
15592         (eh_returnjump_p_1, eh_returnjump_p): New.
15593         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
15594         CFA_REGISTER, CFA_RESTORE): New.
15595         * rtl.def (EH_RETURN): New.
15596         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
15597
15598         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
15599         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
15600
15601         * config/i386/i386.c (gen_push): Update cfa state.
15602         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
15603         add a CFA_ADJUST_CFA note.
15604         (ix86_dwarf_handle_frame_unspec): Remove.
15605         (ix86_expand_prologue): Update cfa state.
15606         (ix86_emit_restore_reg_using_pop): New.
15607         (ix86_emit_restore_regs_using_pop): New.
15608         (ix86_emit_leave): New.
15609         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
15610         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
15611         * config/i386/i386.h (struct machine_cfa_state): New.
15612         (ix86_cfa_state): New.
15613         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
15614         (eh_return_internal): Merge from eh_return_<mode>,
15615         use eh_return rtx, split w/ epilogue.
15616
15617 2009-05-29  Ian Lance Taylor  <iant@google.com>
15618
15619         * builtins.c (validate_gimple_arglist): Don't use va_arg with
15620         enum type.
15621         * calls.c (emit_library_call_value_1): Likewise.
15622
15623         * c-typeck.c (c_build_va_arg): New function.
15624         * c-tree.h (c_build_va_arg): Declare.
15625         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
15626         instead of build_va_arg.
15627
15628 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
15629
15630         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
15631         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
15632         (ptr_difference_cost): Use affine combinations to compute it.
15633         (difference_cost): Likewise.
15634         (get_computation_cost_at): Compute more accurate cost for addresses
15635         if the ratio is a multiplier allowed in addresses.
15636         For non-addresses, consider that an additional offset or symbol is
15637         added only once.
15638
15639 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
15640
15641         * config/i386/i386.c (ix86_decompose_address): Avoid useless
15642         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
15643
15644         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
15645         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
15646         (prefix_rex): For UNIT_MMX don't imply the prefix by default
15647         if MODE_DI.
15648         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
15649         to 1 for TYPE_SSE{IADD1,CVT1}.
15650         (prefix_vex_imm8): Removed.
15651         (length_vex): Only pass 1 as second argument to
15652         ix86_attr_length_vex_default if prefix_extra is 0.
15653         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
15654         (length): For prefix vex computation use length_immediate
15655         attribute instead of prefix_vex_imm8.
15656         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
15657         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
15658         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
15659         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
15660         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
15661         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
15662         a space in between the operands.
15663         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
15664         if one operand is 0xff and the other one si, di, bp or sp.
15665         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
15666         other one si, di, bp or sp.
15667         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
15668         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
15669         type and mode attributes.
15670         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
15671         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
15672         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
15673         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
15674         prefix_data16 attribute iff MODE_DF.
15675         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
15676         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
15677         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
15678         constm128_operand in length_immediate computation.
15679         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
15680         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
15681         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
15682         length_immediate attribute to 1.
15683         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
15684         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
15685         for certain alternatives.
15686         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
15687         prefix_data16 attribute if MODE_V1DF.
15688         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
15689         length_immediate to 1.
15690         (set_got_rex64, set_rip_rex64): Remove length attribute, set
15691         length_address to 4, set mode attribute to MODE_DI.
15692         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
15693         (fxam<mode>2_i387): Set length attribute to 4.
15694         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
15695         *prefetch_3dnow_rex): Override length_address attribute.
15696         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
15697         attributes.
15698         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
15699         (constm128_operand): Removed.
15700         * config/i386/i386.c (memory_address_length): For
15701         disp && !index && !base in 64-bit mode account for SIB byte if
15702         print_operand_address can't optimize disp32 into disp32(%rip)
15703         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
15704         for fs: or gs: segment.
15705         (ix86_attr_length_immediate_default): When checking if shortform
15706         is possible, truncate immediate to the length of the non-shortened
15707         immediate.
15708         (ix86_attr_length_address_default): Ignore MEM_P operands
15709         with X constraint.
15710         (ix86_attr_length_vex_default): Only check for DImode on
15711         GENERAL_REG_P operands.
15712         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
15713         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
15714         (sse_cvttps2pi): Clear prefix_rep attribute.
15715         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
15716         attribute.
15717         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
15718         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
15719         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
15720         iff operand 2 is const_int_operand.
15721         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
15722         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
15723         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
15724         instead of vex.
15725         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
15726         prefix_data16.
15727         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
15728         prefix_data16 attribute for movlpd and movhpd instructions.
15729         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
15730         length_immediate for shufpd instruction.
15731         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
15732         (avx_cmpp<avxmodesuffixf2c><mode>3,
15733         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
15734         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
15735         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
15736         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
15737         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
15738         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
15739         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
15740         prefix_data16 attribute for the first alternative to 1.
15741         (*avx_loadlps): Override length_immediate for the first alternative.
15742         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
15743         attributes for second alternative.
15744         (*vec_concatv2sf_sse4_1): Override length_immediate and
15745         prefix_data16 attributes for second alternative.
15746         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
15747         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
15748         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
15749         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
15750         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
15751         prefix_data16 and length_immediate to 1.
15752         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
15753         to 1.
15754         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
15755         prefix_extra attribute for variants that don't have 0f prefix alone.
15756         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
15757         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
15758         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
15759         *sse4_1_pextrd): Set length_immediate to 1.
15760         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
15761         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
15762         to 1.
15763         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
15764         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
15765         length_immediate to 1 for second alternative.
15766         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
15767         prefix_extra and length_immediate attributes for the first
15768         alternative.
15769         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
15770         first alternative.
15771         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
15772         to 1 for the first and third alternative.
15773         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
15774         alternative.
15775         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
15776         attribute.
15777         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
15778         attribute to 0.
15779         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
15780         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
15781         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
15782         *avx_psign<mode>3): Set prefix_extra attribute to 1.
15783         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
15784         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
15785         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
15786         ssse3_psign<mode>3): Override prefix_rex attribute.
15787         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
15788         (ssse3_palignrti): Override length_immediate to 1.
15789         (ssse3_palignrdi): Override length_immediate to 1, override
15790         prefix_rex attribute.
15791         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
15792         (sse4a_extrqi): Override length_immediate to 2.
15793         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
15794         (sse4a_insertq): Override prefix_data16 to 0.
15795         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
15796         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
15797         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
15798         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
15799         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
15800         and length_immediate to 1.
15801         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
15802         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
15803         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
15804         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
15805         and length_immediate to 1.
15806         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
15807         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
15808         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
15809         avx_ptest256): Override prefix_extra to 1.
15810         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
15811         Override prefix_data16 and length_immediate to 1.
15812         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
15813         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
15814         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
15815         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
15816         prefix_data16 to 0 and prefix_extra to 2.
15817         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
15818         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
15819         attribute.
15820         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
15821         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
15822         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
15823         and prefix_extra to 2.
15824         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
15825         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
15826         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
15827         avx_vpermilvar<mode>3,
15828         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
15829         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
15830         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
15831         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
15832         Override prefix_extra to 1.
15833         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
15834         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
15835         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
15836         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
15837         prefix_extra and length_immediate to 1.
15838         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
15839         modrm to 0.
15840         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
15841         to 1 for the first alternative.
15842         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
15843         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
15844         cases.
15845         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
15846         *movv2sf_internal_avx, *movv2sf_internal): Override
15847         prefix_rep attribute for certain alternatives.
15848         (*mov<mode>_internal): Override prefix_rep or prefix_data16
15849         attributes for certain alternatives.
15850         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
15851         attributes for certain alternatives.
15852         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
15853         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
15854         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
15855         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
15856         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
15857         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
15858         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
15859         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
15860         length_immediate to 1 if operand 2 is const_int_operand.
15861         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
15862         *vec_extractv2si_1): Set length_immediate attribute to 1.
15863         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
15864         using old 3DNOW insn rather than SSE/3DNOW_A.
15865         (mmx_emms, mmx_femms): Clear modrm attribute.
15866
15867 2009-05-29  Martin Jambor  <mjambor@suse.cz>
15868
15869         * tree-sra.c:  New implementation of SRA.
15870
15871         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
15872         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
15873         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
15874         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
15875         (SRA_MAX_STRUCTURE_COUNT): Removed.
15876         (SRA_FIELD_STRUCTURE_RATIO): Removed.
15877         * doc/invoke.texi (sra-max-structure-size): Removed.
15878         (sra-field-structure-ratio): Removed.
15879
15880 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
15881
15882         PR middle-end/40291
15883         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
15884         before expansion.
15885
15886 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
15887
15888         PR rtl-optimization/40101
15889         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
15890         seqno.  Adjust comment.
15891         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
15892         inserting bookkeeping before a jump, the jump is not scheduled.
15893         When no positive seqno found, provide a value.  Add comment.
15894
15895 2009-05-29  Richard Guenther  <rguenther@suse.de>
15896
15897         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
15898         short-cutting on the first component.
15899
15900 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
15901
15902         PR middle-end/39958
15903         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
15904         for trees other than decls/types.
15905
15906 2009-05-29  Richard Guenther  <rguenther@suse.de>
15907
15908         * tree-ssa-operands.c (get_expr_operands): Do not handle
15909         INDIRECT_REFs in the handled-component case.  Remove
15910         unused get_ref_base_and_extent case.
15911         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
15912         tree_low_cst and host_integerp where possible.
15913         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
15914         codes for equivalence.
15915         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
15916
15917 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
15918
15919         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
15920         to tmake_file for i[34567]86-*-cygwin*.
15921
15922 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
15923
15924         PR target/40017
15925         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
15926         (altivec_categorize_keyword, init_vector_keywords,
15927         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
15928         similar to bool.
15929
15930 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
15931
15932         * tree.c (handle_dll_attribute): Check if node is
15933         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
15934
15935 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
15936
15937         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
15938         component.
15939         (thumb2_zero_extendqidi2): Likewise.
15940
15941 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
15942
15943         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
15944         instead of gen_movrt.
15945         * config/sh/sh.md (movrt): Remove.
15946
15947 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
15948
15949         * doc/invoke.texi (IA-64 Options):
15950         Add -msdata, -mfused-madd, -mno-inline-float-divide,
15951         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
15952         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
15953         -msched-prefer-non-control-spec-insns,
15954         -msched-stop-bits-after-every-cycle,
15955         -msched-count-spec-in-critical-path,
15956         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
15957         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
15958         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
15959         and -msched-spec-verbose.
15960
15961 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
15962
15963         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
15964         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
15965         error if used.
15966         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
15967
15968 2009-05-28  Richard Guenther  <rguenther@suse.de>
15969
15970         * tree-ssa-alias.c (ao_ref_init): New function.
15971         (ao_ref_base): Likewise.
15972         (ao_ref_base_alias_set): Likewise.
15973         (ao_ref_alias_set): Likewise.
15974         (refs_may_alias_p_1): Change signature.
15975         (refs_may_alias_p): Adjust.
15976         (refs_anti_dependent_p): Likewise.
15977         (refs_output_dependent_p): Likewise.
15978         (call_may_clobber_ref_p_1): Change signature.
15979         (call_may_clobber_ref_p): Adjust.
15980         (stmt_may_clobber_ref_p_1): New function split out from ...
15981         (stmt_may_clobber_ref_p): ... here.
15982         (maybe_skip_until): Adjust signature.
15983         (get_continuation_for_phi): Likewise.
15984         (walk_non_aliased_vuses): Likewise.
15985         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
15986         (ao_ref_init): Declare.
15987         (ao_ref_base): Likewise.
15988         (ao_ref_alias_set): Likewise.
15989         (stmt_may_clobber_ref_p_1): Likewise.
15990         (walk_non_aliased_vuses): Adjust.
15991         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
15992         (get_ref_from_reference_ops): remove.
15993         (vn_reference_lookup_2): Adjust signature.
15994         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
15995         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
15996         (vn_reference_lookup): Adjust.
15997         (vn_reference_insert): Likewise.
15998         (vn_reference_insert_pieces): Adjust signature.
15999         (visit_reference_op_call): Adjust.
16000         * tree-ssa-pre.c (get_expr_type): Simplify.
16001         (phi_translate_1): Adjust.
16002         (compute_avail): Likewise.
16003         (translate_vuse_through_block): Do not re-build trees.
16004         (value_dies_in_block_x): Likewise.
16005         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
16006         fields.
16007         (vn_reference_lookup_pieces): Adjust declaration.
16008         (vn_reference_insert_pieces): Likewise.
16009
16010 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
16011
16012         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
16013         with checking disabled.
16014
16015 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
16016
16017         PR target/37216
16018
16019         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
16020         macro definition for support of three-operand format aligned
16021         .comm directive in assembler on cygwin/pe/mingw target OS.
16022         * configure:  Regenerate.
16023         * config.h:  Regenerate.
16024
16025         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
16026         aligned form of .comm directive if -mpe-aligned-commons is in effect.
16027         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
16028
16029         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
16030         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
16031
16032 2009-05-28  Ira Rosen  <irar@il.ibm.com>
16033
16034         PR tree-optimization/40254
16035         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
16036         in analysis of basic blocks.
16037
16038 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
16039
16040         PR middle-end/33699
16041         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
16042         * target-def.h (TARGET_CONST_ANCHOR): New macro.
16043         (TARGET_INITIALIZER): Use it.
16044         * cse.c (CHEAPER): Move it up to the other macros.
16045         (insert): Rename this ...
16046         (insert_with_costs): ... to this.  Add cost parameters.  Update
16047         function comment.
16048         (insert): New function.  Call insert_with_costs.
16049         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
16050         find_reg_offset_for_const, try_const_anchors): New functions.
16051         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
16052         when using a const-anchor.  Call insert_const_anchors.
16053         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
16054         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
16055
16056 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
16057
16058         * tree-inline.c (remap_decls): Enable nonlocalized variables
16059         when not optimizing.
16060
16061 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
16062
16063         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
16064         Simplify other tests involving optimize.
16065
16066 2009-05-27  Tom Tromey  <tromey@redhat.com>
16067
16068         * unwind-dw2.c (_Unwind_DebugHook): New function.
16069         (uw_install_context): Call _Unwind_DebugHook.
16070
16071 2009-05-27  Tom Tromey  <tromey@redhat.com>
16072
16073         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
16074
16075 2009-05-27  Ian Lance Taylor  <iant@google.com>
16076
16077         * Makefile.in (LINKER, LINKER_FLAGS): Define.
16078         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
16079         (ALL_LINKERFLAGS): Define.
16080         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
16081         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
16082         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
16083         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
16084         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
16085         $(LINKER_FOR_BUILD).
16086         (build/gcov-iov$(build_exeext)): Likewise.
16087
16088 2009-05-27  Julian Brown  <julian@codesourcery.com>
16089
16090         * gcse.c (target.h): Include.
16091         (can_assign_to_reg_without_clobbers_p): Check that the target allows
16092         copy of argument to a pseudo register.
16093
16094 2009-05-27  Diego Novillo  <dnovillo@google.com>
16095
16096         * tree-ssa-live.c (dump_scope_block): Document arguments.
16097         (dump_scope_blocks): Document.
16098         (debug_scope_blocks): New.
16099         * tree-flow.h (debug_scope_blocks): Declare.
16100
16101 2009-05-21  Denis Chertykov  <denisc@overta.ru>
16102
16103         * doc/contrib.texi (Contributors): Add myself to the list.
16104
16105 2009-05-27  Olivier Hainque  <hainque@adacore.com>
16106
16107         * expr.c (target_align): New function.  Alignment the TARGET of an
16108         assignment may be assume to have.
16109         (highest_pow2_factor_for_target): Use it instead of relying on
16110         immediate tree attributes of TARGET, not necessarily honored when
16111         intermediate bitfields are involved.
16112
16113 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
16114
16115         PR target/40266
16116         * config/i386/driver-i386.c (host_detect_local_cpu): Support
16117         AVX, SSE4, AES, PCLMUL and POPCNT.
16118
16119 2009-05-27  Diego Novillo  <dnovillo@google.com>
16120
16121         * tree-pretty-print.c (dump_location): New.
16122         (dump_generic_node): Call it.
16123         Factor code to handle BLOCK nodes ...
16124         (dump_block_node): ... here.
16125
16126 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
16127
16128         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
16129         with it.
16130         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
16131         included.
16132         * gcc-plugin.h: Include config.h and system.h.
16133         (IN_GCC): Define if not defined.
16134
16135 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
16136
16137         PR middle-end/40249
16138         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
16139         with -fno-inline.
16140
16141 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
16142
16143         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
16144         applicable.
16145         * config/m32r/m32r.h: Ditto.
16146         * config/m32r/m32r.md: Ditto.
16147         * config/m32r/predicates.md: Ditto.
16148
16149 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
16150
16151         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
16152
16153 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
16154
16155         * doc/plugins.texi
16156         (Loading plugins): typo.
16157         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
16158         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
16159         (Interacting with the GCC Garbage Collector): Added new section.
16160         (Giving information about a plugin): Added new section for
16161         PLUGIN_INFO.
16162         * ggc.h (ggc_register_root_tab): Added declaration.
16163         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
16164         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
16165         (register_callback): Improved comment in declaration.
16166         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
16167         (extra_root_vec) Added static variable for dynamic roots registration.
16168         (ggc_register_root_tab) Added new routine.
16169         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
16170         PLUGIN_GGC_MARKING event.
16171         * ggc-zone.c: Include plugin.h.
16172         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
16173         * ggc-page.c: Include plugin.h.
16174         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
16175         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
16176         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
16177         (register_callback): check lack of callbacks for
16178         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
16179         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
16180         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
16181         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
16182         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
16183         dependency on plugin.h.
16184         (plugin.o): Added dependency on ggc.h...
16185
16186 2009-05-26  Richard Guenther  <rguenther@suse.de>
16187
16188         PR middle-end/40248
16189         Revert
16190         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
16191         with mismatched comparison modes.
16192
16193         * expr.c (expand_expr_real_1): Expand the operand of a
16194         VIEW_CONVERT_EXPR in its natural mode.
16195
16196 2009-05-26  Ian Lance Taylor  <iant@google.com>
16197
16198         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
16199         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
16200         (ALL_COMPILERFLAGS): Define.
16201         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
16202         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
16203         (collect2$(exeext), collect2.o): Likewise.
16204         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
16205         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
16206         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
16207         (libbackend.o, intl.o, cppdefault.o): Likewise.
16208         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
16209         (build/%.o): Use $(COMPILER_FOR_BUILD).
16210         (build/gen%$(build_exeext)): Likewise.
16211         (build/gcov-iov$(build_exeext)): LIkewise.
16212         * config/t-darwin (darwin.o): Use $(COMPILER).
16213         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
16214         * config/t-sol2 (sol2-c.o): Likewise.
16215         (sol2.o): Likewise.
16216         * config/t-vxworks (vxworks.o): Likewise.
16217         * config/x-darwin (host-darwin.o): Likewise.
16218         * config/x-hpux (host-hpux.o): Likewise.
16219         * config/x-linux (host-linux.o): Likewise.
16220         * config/x-solaris (host-solaris.o): Likewise.
16221         * config/alpha/x-alpha (driver-alpha.o): Likewise.
16222         * config/arm/t-arm (arm-c.o): Likewise.
16223         * config/arm/t-pe (pe.o): Likewise.
16224         * config/arm/t-wince-pe (pe.o): Likewise.
16225         * config/i386/t-cygming (winnt.o): Likewise.
16226         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
16227         * config/i386/t-cygwin (cygwin1.o): Likewise.
16228         (cygwin2.o): Likewise.
16229         * config/i386/t-i386 (i386-c.o): Likewise.
16230         * config/i386/t-interix (winnt.o): Likewise.
16231         * config/i386/t-netware (netware.o): Likewise.
16232         * config/i386/t-nwld (nwld.o): Likewise.
16233         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
16234         * config/i386/x-i386 (driver-i386.o): Likewise.
16235         * config/i386/x-cygwin (host-cygwin.o): Likewise.
16236         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
16237         * config/ia64/t-ia64 (ia64-c.o): Likewise.
16238         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
16239         * config/mips/x-native (driver-native.o): Likewise.
16240         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
16241         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
16242         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
16243         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
16244         * config/score/t-score-elf (score7.o): Likewise.
16245         (score3.o): Likewise.
16246         * config/sh/t-sh (sh-c.o): Likewise.
16247         * config/sh/t-symbian (sh-c.o): Likewise.
16248         (symbian.o): Likewise.
16249         * config/spu/t-spu-elf (spu-c.o): Likewise.
16250         * config/v850/t-v850 (v850-c.o): Likewise.
16251         * config/v850/t-v850e (v850-c.o): Likewise.
16252
16253 2009-05-26  Richard Guenther  <rguenther@suse.de>
16254
16255         PR tree-optimization/40122
16256         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
16257         VECTOR_CSTs if possible.
16258         (fold_gimple_assign): Likewise.
16259
16260 2009-05-26  Richard Guenther  <rguenther@suse.de>
16261
16262         PR middle-end/40252
16263         * fold-const.c (fold_binary): Use the correct types for building
16264         rotates.
16265
16266 2009-05-26  Richard Guenther  <rguenther@suse.de>
16267
16268         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
16269         redundant calls to merge_alias_info.
16270         (bump_vector_ptr): Likewise.
16271         * tree-ssa-copy.c (merge_alias_info): Remove.
16272         (replace_exp_1): Remove call to merge_alias_info.
16273         (propagate_tree_value): Likewise.
16274         (fini_copy_prop): Propagate points-to info.
16275         * tree-flow.h (merge_alias_info): Remove.
16276
16277 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
16278
16279         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
16280
16281 2009-05-25  Jan Hubicka  <jh@suse.cz>
16282
16283         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
16284         * cgraph.h (struct inline_summary): New filed self_wize,
16285         size_inlining_benefit, self_time and time_inlining_benefit.
16286         (struct cgraph_global_info): Replace insns by time ans size fields.
16287         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
16288         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
16289         (ipcp_update_callgraph): Do not touch function bodies.
16290         * ipa-inline.c: Include except.h
16291         (MAX_TIME): New constant.
16292         (overall_insns): Remove.
16293         (leaf_node_p): New.
16294         (overall_size, max_benefit): New static variables.
16295         (cgraph_estimate_time_after_inlining): New function.
16296         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
16297         (cgraph_clone_inlined_nodes): Update size.
16298         (cgraph_mark_inline_edge): Update size.
16299         (cgraph_estimate_growth): Use size info.
16300         (cgraph_check_inline_limits): Check size.
16301         (cgraph_default_inline_p): Likewise.
16302         (cgraph_edge_badness): Compute badness based on benefit and size cost.
16303         (cgraph_decide_recursive_inlining): Check size.
16304         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
16305         and times.
16306         (cgraph_decide_inlining): Likewise.
16307         (cgraph_decide_inlining_incrementally): Likewise; honor
16308         PARAM_EARLY_INLINING_INSNS.
16309         (likely_eliminated_by_inlining_p): New predicate.
16310         (estimate_function_body_sizes): New function.
16311         (compute_inline_parameters): Use it.
16312         * except.c (must_not_throw_labels): New function.
16313         * except.h (must_not_throw_labels): Declare.
16314         * tree-inline.c (init_inline_once): Kill inlining_weigths
16315         * tree-ssa-structalias.c: Avoid uninitialized warning.
16316         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
16317         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
16318         (PARAM_INLINE_CALL_COST): Remove.
16319         (PARAM_EARLY_INLINING_INSNS): New.
16320
16321 2009-05-25  Richard Guenther  <rguenther@suse.de>
16322
16323         PR tree-optimization/36327
16324         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
16325         callback for reference translation or lookup at the point of may-defs.
16326         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
16327         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
16328         for union COMPONENT_REFs.
16329         (vn_reference_lookup_3): New callback.  Lookup from memset
16330         and CONSTRUCTOR assignment, translate through struct copies.
16331         (vn_reference_lookup_pieces): Make sure to not free the
16332         passed operands array.  Adjust walk_non_aliased_vuses call.
16333         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
16334         make sure we do not leak memory.
16335
16336 2009-05-25  Richard Guenther  <rguenther@suse.de>
16337
16338         * tree-ssa-alias.h (dump_points_to_solution): Declare.
16339         * tree-inline.c (expand_call_inline): Reset the escaped and
16340         callused solutions.
16341         * tree-ssa-structalias.c (pass_build_ealias): New.
16342         * tree-pass.h (pass_build_ealias): Declare.
16343         * passes.c (init_optimization_passes): Add PTA during
16344         early optimizations.
16345         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
16346         and CALLUSED solutions.
16347         (dump_points_to_solution): New function, split out from ...
16348         (dump_points_to_info_for): ... here.
16349         * tree-parloops.c (parallelize_loops): Reset the escaped and
16350         callused solutions.
16351
16352 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
16353
16354         PR bootstrap/40027
16355         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
16356         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
16357
16358 2009-05-25  Ira Rosen  <irar@il.ibm.com>
16359
16360         PR tree-optimization/40238
16361         * tree-vect-stmts.c (vect_init_vector): Insert initialization
16362         statements after basic block's labels.
16363         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
16364         to free the allocated memory.
16365
16366 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
16367
16368         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
16369         return address with a USE.
16370
16371 2009-05-24  Richard Guenther  <rguenther@suse.de>
16372
16373         PR middle-end/40233
16374         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
16375         array type from the main variant of the inner type.
16376
16377 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
16378
16379         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
16380         definition to bool (from int) to un-break build.
16381         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
16382
16383 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
16384
16385         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
16386         discard_stmt_changes): Delete.
16387         * tree-ssa-operands.c (scb_stack): Delete.
16388         (init_ssa_operands): Do not initialize it.
16389         (fini_ssa_operands): Do not free it.
16390         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
16391
16392         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
16393         update_stmt, remove the others.  Fix comments.
16394         * tree-dfa.c (optimize_stack_restore): Likewise.
16395         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
16396         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
16397         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
16398         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
16399         Likewise.
16400         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
16401         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
16402         (dom_opt_finalize_block): Likewise, adjusting access to
16403         stmts_to_rescan.
16404         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
16405         (stmts_to_rescan): Change item type to gimple.
16406         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
16407
16408 2009-05-24  Ira Rosen  <irar@il.ibm.com>
16409
16410         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
16411         * tree-pass.h (pass_slp_vectorize): New pass.
16412         * params.h (SLP_MAX_INSNS_IN_BB): Define.
16413         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
16414         * tree-vectorizer.c (timevar.h): Include.
16415         (user_vect_verbosity_level): Declare.
16416         (vect_location): Fix comment.
16417         (vect_set_verbosity_level): Update user_vect_verbosity_level
16418         instead of vect_verbosity_level.
16419         (vect_set_dump_settings): Add an argument. Ignore user defined
16420         verbosity if dump flags require higher level of verbosity. Print to
16421         stderr only for loop vectorization.
16422         (vectorize_loops): Update call to vect_set_dump_settings.
16423         (execute_vect_slp): New function.
16424         (gate_vect_slp): Likewise.
16425         (struct gimple_opt_pass pass_slp_vectorize): New.
16426         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
16427         access its members.
16428         (vec_info_for_bb): New function.
16429         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
16430         (VECTORIZATION_ENABLED): New macro.
16431         (SLP_ENABLED, SLP_DISABLED): Likewise.
16432         (vect_is_simple_use): Add bb_vec_info argument.
16433         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
16434         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
16435         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
16436         vect_schedule_slp, vect_analyze_slp): Likewise.
16437         (vect_analyze_stmt): Add slp_tree argument.
16438         (find_bb_location): Declare.
16439         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
16440         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
16441         (vect_analyze_loop_operations, vect_analyze_loop,
16442         get_initial_def_for_induction, vect_create_epilog_for_reduction,
16443         vect_finalize_reduction, vectorizable_reduction,
16444         vectorizable_live_operation, vect_transform_loop): Likewise.
16445         * tree-data-ref.c (dr_analyze_innermost): Update comment,
16446         skip evolution analysis if analyzing a basic block.
16447         (dr_analyze_indices): Likewise.
16448         (initialize_data_dependence_relation): Skip the test whether the
16449         object is invariant for basic blocks.
16450         (compute_all_dependences): Skip dependence analysis for data
16451         references in basic blocks.
16452         (find_data_references_in_stmt): Don't fail in case of invariant
16453         access in basic block.
16454         (find_data_references_in_bb): New function.
16455         (find_data_references_in_loop): Move code to
16456         find_data_references_in_bb and add a call to it.
16457         (compute_data_dependences_for_bb): New function.
16458         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
16459         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
16460         that STEP is 0.
16461         (vect_analyze_data_ref_dependence): Check for interleaving in case of
16462         unknown dependence in basic block and fail in case of dependence in
16463         basic block.
16464         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
16465         dependence instances from either loop or basic block vectorization
16466         info.
16467         (vect_compute_data_ref_alignment): Check if it is loop vectorization
16468         before calling nested_in_vect_loop_p.
16469         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
16470         dependence instances from either loop or basic block vectorization
16471         info.
16472         (vect_verify_datarefs_alignment): Likewise.
16473         (vect_enhance_data_refs_alignment): Adjust function calls.
16474         (vect_analyze_data_refs_alignment): Likewise.
16475         (vect_analyze_group_access): Fix printing. Skip different checks if
16476         DR_STEP is 0. Keep strided stores either in loop or basic block
16477         vectorization data structure. Fix indentation.
16478         (vect_analyze_data_ref_access): Fix comments, allow zero step in
16479         basic blocks.
16480         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
16481         dependence instances from either loop or basic block vectorization
16482         info.
16483         (vect_analyze_data_refs): Update comment. Call
16484         compute_data_dependences_for_bb to analyze basic blocks.
16485         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
16486         case of loop vectorization. In case of basic block vectorization use
16487         data-ref itself as a base.
16488         (vect_create_data_ref_ptr): In case of basic block vectorization:
16489         don't advance the pointer, add new statements before the current
16490         statement.  Adjust function calls.
16491         (vect_supportable_dr_alignment): Support only aligned accesses in
16492         basic block vectorization.
16493         * common.opt (ftree-slp-vectorize): New flag.
16494         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
16495         (vect_pattern_recog_1): Likewise.
16496         * tree-vect-stmts.c (process_use): Likewise.
16497         (vect_init_vector): Add new statements in the beginning of the basic
16498         block in case of basic block SLP.
16499         (vect_get_vec_def_for_operand): Adjust function calls.
16500         (vect_finish_stmt_generation): Likewise.
16501         (vectorizable_call): Add assert that it is loop vectorization, adjust
16502         function calls.
16503         (vectorizable_conversion, vectorizable_assignment): Likewise.
16504         (vectorizable_operation): In case of basic block SLP, take
16505         vectorization factor from statement's type and skip the relevance
16506         check. Adjust function calls.
16507         (vectorizable_type_demotion): Add assert that it is loop
16508         vectorization, adjust function calls.
16509         (vectorizable_type_promotion): Likewise.
16510         (vectorizable_store): Check for outer loop only in case of loop
16511         vectorization. Adjust function calls. For basic blocks, skip the
16512         relevance check and don't advance pointers.
16513         (vectorizable_load): Likewise.
16514         (vectorizable_condition): Add assert that it is loop vectorization,
16515         adjust function calls.
16516         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
16517         that it is not reduction, get vector type, call only supported
16518         functions, skip loop specific parts.
16519         (vect_transform_stmt): Check for outer loop only in case of loop
16520         vectorization.
16521         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
16522         (vect_is_simple_use): Fix comment, add new argument, fix conditions
16523         for external definition.
16524         * passes.c (pass_slp_vectorize): New pass.
16525         * tree-vect-slp.c (find_bb_location): New function.
16526         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
16527         check for patterns only in loops.
16528         (vect_build_slp_tree): Add argument, adjust function calls, fail in
16529         case of multiple types in basic block SLP.
16530         (vect_mark_slp_stmts_relevant): New function.
16531         (vect_supported_load_permutation_p): Fix comment.
16532         (vect_analyze_slp_instance): Add argument. In case of basic block
16533         SLP, take vectorization factor from statement's type, check that
16534         unrolling factor is 1. Adjust function call. Save SLP instance in
16535         either loop or basic block vectorization structure. Return FALSE,
16536         if SLP failed.
16537         (vect_analyze_slp): Add argument. Get strided stores groups from
16538         either loop or basic block vectorization structure. Return FALSE
16539         if basic block SLP failed.
16540         (new_bb_vec_info): New function.
16541         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
16542         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
16543         (vect_schedule_slp): Add argument. Get SLP instances from either
16544         loop or basic block vectorization structure. Set vectorization factor
16545         to be 1 for basic block SLP.
16546         (vect_slp_transform_bb): New function.
16547         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
16548
16549 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
16550
16551         * final.c (shorten_branches): Do not align labels for jump tables.
16552         (final_scan_insn): Use JUMP_TABLE_DATA_P.
16553
16554 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
16555
16556         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
16557         Remove outdated reference to flow.c and fix nits.
16558         * doc/gccint.texi: Tweak RTL description.
16559         * doc/rtl.texi: Likewise.
16560
16561 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
16562
16563         * config/avr/avr.c: Change my email address.
16564         * config/avr/avr.h: Likewise.
16565         * config/avr/avr.md: Likewise.
16566         * config/avr/avr-protos.h: Likewise.
16567         * config/avr/libgcc.S: Likewise.
16568
16569 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
16570
16571         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
16572         (spu_split_load, spu_split_store): Change return type to int.
16573         (spu_split_convert): Declare.
16574         * config/spu/predicates.md (spu_mem_operand): Remove.
16575         (spu_mov_operand): Update.
16576         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
16577         * config/spu/spu.c (regno_aligned_for_load): Remove.
16578         (reg_aligned_for_addr, spu_expand_load): Define.
16579         (spu_expand_extv): Reimplement and handle MEM.
16580         (spu_expand_insv): Handle MEM.
16581         (spu_sched_reorder): Handle insn's with length 0.
16582         (spu_legitimate_address_p): Reimplement.
16583         (store_with_one_insn_p): Return TRUE for any mode with size
16584         larger than 16 bytes.
16585         (address_needs_split): Define.
16586         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
16587         operands.
16588         (spu_convert_move): Define.
16589         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
16590         (spu_split_store): Change all MEM's to TImode.
16591         (spu_init_expanders): Preallocate registers that correspond to
16592         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
16593         mark_reg_pointer.
16594         (spu_split_convert): Define.
16595         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
16596         (_move<mode>, _movdi, _movti): Update predicate and condition.
16597         (load, store): Change to define_split.
16598         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
16599         extend<mode>ti2.
16600         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
16601         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
16602         define_insn_and_split of lshr<mode>3.
16603         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
16604         (<v>ashr<mode>3_imm): Define.
16605         (extv, extzv, insv): Allow MEM operands.
16606         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
16607         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
16608         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
16609         (_spu_convert2): Change to define_insn_and_split and remove the
16610         corresponding define_peephole2.
16611         (stack_protect_set, stack_protect_test, stack_protect_test_si):
16612         Change predicates to memory_operand.
16613
16614 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
16615
16616         * config/arm/thumb2.md: Add 16-bit multiply instructions.
16617
16618 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
16619
16620         PR tree-optimization/40219
16621         * tree.c (iterative_hash_expr): Make sure the builtin function is
16622         a normal builtin function and not a front end or back end builtin
16623         before indexing into the built_in_decls array.
16624
16625 2009-05-22  Richard Guenther  <rguenther@suse.de>
16626
16627         PR middle-end/38964
16628         * alias.c (write_dependence_p): Do not use TBAA for answering
16629         anti-dependence or output-dependence.
16630         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
16631         (emit_pointer_definition): Remove.
16632         (emit_alias_warning): Likewise.
16633         (find_what_var_points_to): Remove TBAA pruning code.
16634         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
16635         violations.
16636         (compute_points_to_sets): Remove code computing the set of
16637         dereferenced pointers.
16638         * tree-data-ref.c (dr_may_alias_p): Properly use the split
16639         oracle for querying anti and output dependencies.
16640         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
16641         if TBAA may be applied.
16642         (refs_anti_dependent_p): New function.
16643         (refs_output_dependent_p): Likewise.
16644         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
16645         (refs_output_dependent_p): Likewise.
16646         * doc/tree-ssa.texi (Memory model): New section.
16647         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
16648         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
16649         * cfgexpand.c (expand_gimple_basic_block): Do not handle
16650         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
16651         * expr.c (expand_expr_real_1): Likewise.
16652         * gimple-low.c (lower_stmt): Likewise.
16653         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
16654         (dump_gimple_cdt): Remove.
16655         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
16656         (gimple_size): Likewise.
16657         (walk_gimple_op): Likewise.
16658         (is_gimple_stmt): Likewise.
16659         (walk_stmt_load_store_addr_ops): Likewise.
16660         (gimple_build_cdt): Remove.
16661         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
16662         * gimple.h (gimple_cdt_new_type): Remove.
16663         (gimple_cdt_new_type_ptr): Likewise.
16664         (gimple_cdt_set_new_type): Likewise.
16665         (gimple_cdt_location): Likewise.
16666         (gimple_cdt_location_ptr): Likewise.
16667         (gimple_cdt_set_location): Likewise.
16668         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
16669         * tree-cfg.c (remove_useless_stmts_1): Do not handle
16670         GIMPLE_CHANGE_DYNAMIC_TYPE.
16671         (verify_types_in_gimple_stmt): Likewise.
16672         * tree-inline.c (estimate_num_insns): Likewise.
16673         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
16674         (copy_decl_to_var): Likewise.
16675         (copy_result_decl_to_var): Likewise.
16676         * tree-pretty-print.c (dump_generic_node): Do not handle
16677         CHANGE_DYNAMIC_TYPE_EXPR.
16678         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
16679         * tree-ssa-operands.c (get_expr_operands): Likewise.
16680         * tree-ssa-structalias.c (struct variable_info): Remove
16681         no_tbaa_pruning member.
16682         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
16683         (unify_nodes): Do not copy it.
16684         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
16685         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
16686         (set_uids_in_ptset): Do not check it.
16687         (find_what_var_points_to): Likewise.
16688         (compute_tbaa_pruning): Remove.
16689         (compute_points_to_sets): Do not call it.
16690         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
16691         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
16692         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
16693         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
16694         (DECL_NO_TBAA_P): Likewise.
16695         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
16696         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
16697         (expand_omp_atomic_pipeline): Do not set it.
16698         * print-tree.c (print_node): Do not dump it.
16699         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
16700         redundant check.
16701
16702 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
16703
16704         PR target/39856
16705         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
16706         for clobber.
16707
16708 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
16709
16710         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
16711         non-external.
16712
16713 2009-05-22  Ben Elliston  <bje@au.ibm.com>
16714
16715         * Makefile.in (bversion.h, s-bversion): New targets.
16716         (TOPLEV_H): Add bversion.h.
16717         * toplev.h: Include "bversion.h".
16718         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
16719         the __format__ attribute only if compiling with the same version
16720         of GCC as the sources (the "build version").
16721
16722 2009-05-22  Ben Elliston  <bje@au.ibm.com>
16723
16724         * c-format.c (handle_format_attribute): Fix comment typo.
16725
16726 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
16727
16728         PR target/37846
16729         * config/ia64/ia64.opt (mfused-madd): New.
16730         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
16731         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
16732         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
16733         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
16734         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
16735         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
16736         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
16737         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
16738         instruction if !TARGET_FUSED_MADD.
16739         (fpma, fpms): Remove colon from name.
16740
16741 2009-05-22  Richard Guenther  <rguenther@suse.de>
16742
16743         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
16744         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
16745         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
16746         TARGET_MEM_REF.
16747         (create_expression_by_pieces): Only convert if necessary.
16748         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
16749         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
16750
16751 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
16752
16753         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
16754         regular pattern from a template and rename it ...
16755         (*extzv_truncsi_exts): ... to this.
16756
16757 2009-05-21  Richard Guenther  <rguenther@suse.de>
16758
16759         * cgraph.h (struct cgraph_node): Remove inline_decl member.
16760         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
16761         (cgraph_default_inline_p): Likewise.
16762         (cgraph_decide_inlining_incrementally): Likewise.
16763
16764 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16765             Uros Bizjak  <ubizjak@gmail.com>
16766
16767         * config/i386/cpuid.h (bit_MOVBE): New.
16768
16769         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
16770
16771         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
16772         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
16773         (ix86_handle_option): Handle OPT_mmovbe.
16774         (ix86_target_string): Add -mmovbe.
16775         (pta_flags): Add PTA_MOVBE.
16776         (processor_alias_table): Add PTA_MOVBE to "atom".
16777         (override_options): Handle PTA_MOVBE.
16778
16779         * config/i386/i386.h (TARGET_MOVBE): New.
16780
16781         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
16782         (*bswapsi_movbe): New.
16783         (*bswapdi_movbe): Likewise.
16784         (bswapdi2): Renamed to ...
16785         (*bswapdi_1): This.
16786         (bswapdi2): New expander.
16787
16788         * config/i386/i386.opt (mmovbe): New.
16789
16790         * doc/invoke.texi: Document -mmovbe.
16791
16792 2009-05-21  Taras Glek  <tglek@mozilla.com>
16793
16794         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
16795         * gcc-plugin.h (plugin_init): Updated signature.
16796         * gcc-plugin.h (plugin_name_args): Moved to this header.
16797         * doc/plugins.texi (plugin_init): Updated documention to reflect
16798         API change.
16799         * doc/plugins.texi (plugin_name_args): Added to documention.
16800
16801 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
16802
16803         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
16804         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
16805
16806 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
16807
16808         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
16809         JUMP_TABLE_DATA_P predicates where applicable.
16810         * config/i386/predicates.md: Ditto.
16811         * config/i386/sse.md: Ditto.
16812
16813 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
16814
16815         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
16816         operand2 -128 override length_immediate attribute to 1.
16817         * config/i386/predicates.md (constm128_operand): New predicate.
16818
16819         * config/i386/i386.c (memory_address_length): Handle %r12
16820         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
16821         also check REGNO.
16822         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
16823         mode look through optional ZERO_EXTEND and SUBREG.
16824         * config/i386/i386.md (R12_REG): New define_constant.
16825         (prefix_data16): For sse unit set also for MODE_TI insns.
16826         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
16827         insns set if operand 1 is ext_QIreg_operand.
16828         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
16829         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
16830         immediate.
16831         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
16832         mode from MODE_DI to MODE_SI.
16833         (movdi_1_rex64): Override modrm and length_immediate attributes
16834         only for movabs (TYPE_IMOV, alternative 2).
16835         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
16836         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
16837         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
16838         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
16839         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
16840         prefix_rex attribute if DImode.
16841         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
16842         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
16843         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
16844         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
16845         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
16846         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
16847         Likewise.  For TYPE_IMOV clear length_immediate attribute.
16848         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
16849         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
16850         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
16851         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
16852         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
16853         or one operand TYPE_ISHIFT.
16854         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
16855         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
16856         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
16857         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
16858         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
16859         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
16860         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
16861         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
16862         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
16863         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
16864         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
16865         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
16866         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
16867         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
16868         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
16869         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
16870         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
16871         set mode attribute, don't override length attribute.
16872         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
16873         to 1.
16874         (return_internal_long): Set length attribute to 2 instead of 1.
16875         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
16876         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
16877         prefix_rex attribute.
16878         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
16879         New predicates.
16880         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
16881
16882 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16883
16884         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
16885
16886 2009-05-20  Ian Lance Taylor  <iant@google.com>
16887
16888         * tree.c (build_tree_list_vec_stat): New function.
16889         (ctor_to_vec): New function.
16890         (build_nt_call_vec): New function.
16891         (build_call_array): Change args to be a const pointer.
16892         (build_call_vec): New function.
16893         * tree.h (build_nt_call_vec): Declare.
16894         (build_tree_list_vec_stat): Declare.
16895         (build_tree_list_vec): Define.
16896         (build_call_array): Update declaration.
16897         (build_call_vec): Declare.
16898         (ctor_to_vec): Declare.
16899         * c-common.c (tree_vector_cache): New static variable.
16900         (make_tree_vector): New function.
16901         (release_tree_vector): New function.
16902         (make_tree_vector_single): New function.
16903         (make_tree_vector_copy): New function.
16904         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
16905         (make_tree_vector_single, make_tree_vector_copy): Declare.
16906         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
16907         (c_parser_expr_list): Don't manage cache here, instead call
16908         make_tree_vector.
16909         (c_parser_release_expr_list): Remove static function.
16910         (c_parser_vec_to_tree_list): Remove static function.
16911         (c_parser_attributes): Call build_tree_list_vec instead of
16912         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
16913         c_parser_release_expr_list.
16914         (c_parser_postfix_expression_after_primary): Likewise.
16915         (c_parser_objc_keywordexpr): Likewise.
16916
16917 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
16918
16919         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
16920         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
16921         TARGET_CONVERT_TO_TYPE.
16922         * hooks.c (hook_tree_const_tree_null): Define.
16923         * hooks.h (hook_tree_const_tree_null): Declare.
16924         * target.h (struct gcc_target):  Add invalid_parameter_type,
16925         invalid_return_type, promoted_type, and convert_to_type fields.
16926         * target-def.h (TARGET_INVALID_PARAMETER_TYPE): Define.
16927         (TARGET_INVALID_RETURN_TYPE): Define.
16928         (TARGET_PROMOTED_TYPE): Define.
16929         (TARGET_CONVERT_TO_TYPE): Define.
16930         (TARGET_INITIALIZER): Update for new fields.
16931         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
16932         (grokparms): Check targetm.invalid_parameter_type.
16933         * c-typeck.c (default_conversion): Check targetm.promoted_type.
16934         * c-convert.c (convert): Check targetm.convert_to_type.
16935
16936 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
16937
16938         * config/mips/mips.md (*extenddi_truncate<mode>,
16939         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
16940         defintions.
16941         (*extendhi_truncateqi): New define_insn_and_sptit.
16942
16943 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
16944
16945         PR middle-end/40204
16946         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
16947         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
16948
16949 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
16950
16951         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
16952         the operand of VIEW_CONVERT_EXPR.
16953
16954 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
16955
16956         * config/i386/driver-i386.c (host_detect_local_cpu): Check
16957         extended family and model for Intel processors.  Support Intel Atom.
16958
16959 2009-05-20  Olivier Hainque  <hainque@adacore.com>
16960
16961         * gstab.h (stab_code_type): Define, to be used instead of the
16962         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
16963         notice.
16964         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
16965         occurrences by stab_code_type.
16966         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
16967
16968 2009-05-20  Martin Jambor  <mjambor@suse.cz>
16969
16970         * tree-flow.h (insert_edge_copies_seq): Undeclare.
16971         (sra_insert_before): Likewise.
16972         (sra_insert_after): Likewise.
16973         (sra_init_cache): Likewise.
16974         (sra_type_can_be_decomposed_p): Likewise.
16975         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
16976         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
16977         (sra_insert_before): Likewise.
16978         (sra_insert_after): Likewise.
16979         (sra_init_cache): Likewise.
16980         (insert_edge_copies_seq): Made static and moved upwards.
16981
16982         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
16983         case.
16984
16985         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
16986
16987         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
16988         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
16989         simple copies.
16990
16991 2009-05-20  Richard Guenther  <rguenther@suse.de>
16992
16993         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
16994         with mismatched comparison modes.
16995
16996 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16997
16998         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
16999         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
17000         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
17001         with shifts for Thumb2.
17002         (orsi_notsi): New for orn.
17003         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
17004         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
17005         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
17006         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
17007         Don't invert remainder for IOR.
17008
17009 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
17010
17011         PR tree-optimization/40087
17012         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
17013         number_of_iterations_ne): Rename never_infinite argument.
17014         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
17015         number_of_iterations_le): Handle pointer-type ivs when
17016         exit_must_be_taken is false.
17017         (number_of_iterations_cond):  Do not always assume that
17018         exit_must_be_taken if the control variable is a pointer.
17019
17020 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17021
17022         * c-typeck.c (build_binary_op): Allow % on integal vectors.
17023         * doc/extend.texi (Vector Extension): Document that % is allowed too.
17024
17025 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
17026
17027         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
17028         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
17029
17030 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
17031
17032         PR c/40172
17033         * c.opt (Wlogical-op): Disabled by default.
17034         * c-opt (c_common_post_options): Do not enable Wlogical-op with
17035         Wextra.
17036         * doc/invoke.texi (Wlogical-op): Likewise.
17037
17038 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
17039
17040         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
17041         into CASE_CONVERT.
17042         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
17043         Propagate the type of the first operand.
17044         <ASSERT_EXPR>: Simplify.
17045         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
17046         Rewrite using the RHS code as discriminant.
17047         <NOP_EXPR>: Turn into CASE_CONVERT.
17048         <PLUS_EXPR>: Propagate the type of the first operand.
17049
17050 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
17051
17052         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
17053         (ia64_dconst_0_375): New.
17054         * config/ia64/ia64.c (ia64_override_options): Remove
17055         -minline-sqrt-min-latency warning.
17056         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
17057         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
17058         * config/ia64/ia64.md (*sqrt_approx): Remove.
17059         (sqrtsf2): Remove #if 0.
17060         (sqrtsf2_internal_thr): Rewrite and move to div.md.
17061         (sqrtdf): Remove assert.
17062         (sqrtdf2_internal_thr): Rewrite and move to div.md.
17063         (sqrtxf2): Remove #if 0.
17064         (sqrtxf2_internal_thr): Rewrite and move to div.md.
17065         * div.md (sqrt_approx_rf): New.
17066         (sqrtsf2_internal_thr): New implementation.
17067         (sqrtsf2_internal_lat): New.
17068         (sqrtdf2_internal_thr: New implementation.
17069         (sqrtxf2_internal): New implementation.
17070
17071 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
17072             Hans-Peter Nilsson  <hp@axis.com>
17073
17074         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
17075         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
17076         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
17077         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
17078         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
17079         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
17080         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
17081         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
17082         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
17083         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
17084         * c-common.c: ...from here.
17085
17086 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
17087
17088         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
17089
17090 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17091
17092         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
17093
17094 2009-05-19  Ben Elliston  <bje@au.ibm.com>
17095
17096         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
17097         assignments with memcpy calls.
17098         (add_fdes): Likewise.
17099         (binary_search_unencoded_fdes): Likewise.
17100         (linear_search_fdes): Eliminate type puns.
17101
17102 2009-05-19  Richard Guenther  <rguenther@suse.de>
17103
17104         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
17105         not falsely claim to have propagated into all uses.
17106
17107 2009-05-19  Ben Elliston  <bje@au.ibm.com>
17108
17109         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
17110         version to v3.0.
17111
17112 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
17113
17114         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
17115         * config/sh/sh.c (sh_legitimate_address_p): Make static.
17116         (TARGET_LEGITIMATE_ADDRESS_P): New.
17117         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17118         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
17119
17120 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
17121
17122         PR debug/40109
17123         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
17124         child of the containing namespace's DIE.
17125
17126 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
17127
17128         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
17129         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
17130         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
17131         extend patterns.
17132
17133 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
17134
17135         PR target/39942
17136         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
17137         gen_align with gen_pad.
17138         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
17139         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
17140
17141         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
17142         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
17143
17144         * config/i386/i386.md (align): Renamed to ...
17145         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
17146         ASM_OUTPUT_MAX_SKIP_PAD.
17147
17148 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
17149
17150         * config.gcc: Fix variable syntax.
17151
17152         PR target/39531
17153         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
17154         before calling exact_log2.
17155         (output_iorsi3): Likewise.
17156         (output_xorsi3): Likewise.
17157
17158 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
17159
17160         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
17161         for the none zero constant operand except for EQ and NE
17162         comprisons even when the first operand is R0.
17163
17164 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
17165
17166         * config/s390/2064.md: Remove trailing whitespaces.
17167         * config/s390/2084.md: Likewise.
17168         * config/s390/constraints.md: Likewise.
17169         * config/s390/fixdfdi.h: Likewise.
17170         * config/s390/libgcc-glibc.ver: Likewise.
17171         * config/s390/s390-modes.def: Likewise.
17172         * config/s390/s390-protos.h: Likewise.
17173         * config/s390/s390.c: Likewise.
17174         * config/s390/s390.h: Likewise.
17175         * config/s390/s390.md: Likewise.
17176         * config/s390/tpf-unwind.h: Likewise.
17177
17178 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
17179
17180         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
17181
17182 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
17183
17184         M68K TLS support.
17185         * configure.ac (m68k-*-*): Check if binutils support TLS.
17186         * configure: Regenerate.
17187         * config/m68k/predicates.md (symbolic_operand): Extend comment.
17188         * config/m68k/constraints.md (Cu): New constraint.
17189         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
17190         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
17191         (movsi): Handle TLS symbols.
17192         (addsi3_5200): Handle XTLS symbols, indent.
17193         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
17194         (m68k_tls_reference_p): Declare.
17195         (m68k_legitimize_address): Declare.
17196         (m68k_unwrap_symbol): Declare.
17197         * config/m68k/m68k.opt (mxtls): New option.
17198         * config/m68k/m68k.c (ggc.h): Include.
17199         (m68k_output_dwarf_dtprel): Implement hook.
17200         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
17201         (m68k_expand_prologue): Load GOT pointer when function needs it.
17202         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
17203         (m68k_legitimate_constant_address_p): Same.
17204         (m68k_decompose_address): Handle TLS references.
17205         (m68k_get_gp): New static function.
17206         (enum m68k_reloc): New contants.
17207         (TLS_RELOC_P): New macro.
17208         (m68k_wrap_symbol): New static function.
17209         (m68k_unwrap_symbol): New function.
17210         (m68k_final_prescan_insn_1): New static function.
17211         (m68k_final_prescan_insn): New function.
17212         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
17213         functions.
17214         (legitimize_pic_address): Handle TLS references..
17215         (m68k_tls_get_addr, m68k_get_tls_get_addr)
17216         (m68k_libcall_value_in_a0_p)
17217         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
17218         (m68k_call_m68k_read_tp): Helper variables and functions for ...
17219         (m68k_legitimize_tls_address): Handle TLS references.
17220         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
17221         New functions.
17222         (m68k_legitimize_address): Handle TLS symbols.
17223         (m68k_get_reloc_decoration): New static function.
17224         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
17225         UNSPEC_RELOC32.
17226         (m68k_output_dwarf_dtprel): Implement hook.
17227         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
17228         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
17229         m68k_call_* routines.
17230         (sched_attr_op_type): Handle TLS symbols.
17231         (gt-m68k.h): Include.
17232         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
17233         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
17234
17235 2009-05-18  Martin Jambor  <mjambor@suse.cz>
17236
17237         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
17238         (visit_store_addr_for_mod_analysis): New function.
17239         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
17240         (determine_cst_member_ptr): Use gimple_assign_single_p.
17241         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
17242         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
17243         operands.  Don't check number of operands of a NOP_EXPR.
17244
17245 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
17246
17247         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
17248
17249 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
17250
17251         PR c/40172
17252         * c-common.c (warn_logical_operator): Don't warn if one of
17253         expression isn't always true or false.
17254
17255 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
17256
17257         * config/i386/biarch32.h: New file.
17258         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
17259
17260 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
17261
17262         * config/mips/mips.md (*zero_extend<mode>_trunchi,
17263         *zero_extend<mode>_truncqi): Merge these into ...
17264         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
17265         Name the pattern following this as *zero_extendhi_truncqi.
17266
17267 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
17268
17269         PR middle-end/39301
17270         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
17271         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
17272         (output_info): Make field HOST_WIDEST_INT.
17273         (print_statistics): Use HOST_WIDEST_INT_PRINT.
17274         (dump_bitmat_statistics): Same.
17275
17276 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
17277
17278         * config.gcc (use_gcc_stdint):  Set to wrap.
17279         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
17280         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
17281         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
17282         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
17283         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
17284         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
17285         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
17286         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
17287
17288 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
17289
17290         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
17291         tune_64.
17292         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
17293         Move definitions earlier.
17294         (OPT_ARCH64, OPT_ARCH32): Define.
17295         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
17296         and tune_64.
17297
17298 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
17299
17300         PR target/40153
17301         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
17302         implies.
17303
17304 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
17305
17306         * arm.md (movdi2): Copy non-reg values to DImode registers.
17307
17308 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
17309
17310         PR target/39942
17311         * final.c (label_to_max_skip): New function.
17312         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
17313         CODE_LABEL_NUMBER <= max_labelno.
17314         * output.h (label_to_max_skip): New prototype.
17315         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
17316         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
17317         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
17318         Handle CODE_LABELs with >= 16 byte alignment or with
17319         max_skip == (1 << align) - 1.
17320         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
17321         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
17322
17323         PR target/39942
17324         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
17325         .p2align 3 if MAX_SKIP is smaller than 7.
17326         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
17327
17328 2009-05-15  Ian Lance Taylor  <iant@google.com>
17329
17330         * alias.c (struct alias_set_entry_d): Rename from struct
17331         alias_set_entry.  Change all uses.
17332         * except.c (struct call_site_record_d): Rename from struct
17333         call_site_record.  Change all uses.
17334         * except.h (struct eh_region_d): Rename from struct eh_region.
17335         Change all uses.
17336         * gcse.c (struct hash_table_d): Rename from struct hash_table.
17337         Change all uses.
17338         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
17339         ivtype_map_elt.  Change all uses.
17340         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
17341         Change all uses.
17342         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
17343         * graphite.h (struct name_tree_d): Rename from struct name_tree.
17344         Change all uses.
17345         (struct sese_d): Rename from struct sese.  Change all uses.
17346         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
17347         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
17348         * optabs.h (struct optab_d): Rename from struct optab.  Change all
17349         uses.
17350         (struct convert_optab_d): Rename from struct convert_optab.
17351         Change all uses.
17352         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
17353         ipa_opt_pass.  Change all uses.
17354         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
17355         all uses.
17356
17357         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
17358         defined as a typedef.
17359         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
17360         defined as a tag.
17361
17362 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
17363
17364         PR 16302
17365         * fold-const.c (make_range,build_range_check,merge_ranges): Move
17366         declaration to...
17367         (merge_ranges): Returns bool.
17368         * tree.h (make_range): .. to here.
17369         (build_range_check): Likewise.
17370         (merge_ranges): Likewise. Renamed from merge_ranges.
17371         * c-typeck.c (parser_build_binary_op): Update calls to
17372         warn_logical_operator.
17373         * c-common.c (warn_logical_operator): Add new warning.
17374         * c-common.h (warn_logical_operator): Update declaration.
17375
17376 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
17377
17378         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
17379
17380 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17381
17382         * doc/install.texi: Document MPC requirements, flags etc.
17383
17384         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
17385         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
17386         Evaluate constant arguments.
17387         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
17388         (fold_builtin_1): Likewise, also evaluate constant arguments.
17389         Remove superfluous break.
17390         (do_mpc_ckconv): New.
17391         * real.h: Include mpc.h.
17392         * toplev.c (print_version): Output MPC version info if available.
17393
17394 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
17395
17396         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
17397
17398 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
17399
17400         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
17401         only once.
17402
17403 2009-05-15  Jan Hubicka  <jh@suse.cz>
17404
17405         * doc/invoke.texi (max-early-inliner-iterations): New flag.
17406         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
17407         (try_inline): Fix return value.
17408         (cgraph_decide_inlining_incrementally): Honor new value.
17409         (cgraph_early_inlining): Handle indirect inlining.
17410         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
17411
17412 2009-05-15  Jan Hubicka  <jh@suse.cz>
17413
17414         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
17415         * cgraphunit.c (cgraph_finalize_function): Set it.
17416         (cgraph_expand_function): Use it.
17417
17418 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
17419
17420         * real.c (encode_ieee_half): Define.
17421         (decode_ieee_half): Define.
17422         (ieee_half_format): Define.
17423         (arm_half_format): Define.
17424         * real.h (ieee_half_format): Declare.
17425         (arm_half_format): Declare.
17426
17427 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
17428
17429         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
17430         swapped, and reversed optabs exist before trying to use them.
17431
17432 2009-05-15  Paul Brook  <paul@codesourcery.com>
17433             Sandra Loosemore  <sandra@codesourcery.com>
17434
17435         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
17436         loads.  Allow PRE_DEC.
17437         (output_move_neon): Handle PRE_DEC.
17438         (arm_print_operand): Add 'A' for neon structure loads.
17439         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
17440         * config/arm/neon.md (neon_mov): Update comment.
17441         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
17442         calls.
17443         (Um): New constraint.
17444
17445 2009-05-15  Jan Hubicka  <jh@suse.cz>
17446
17447         Revert the following patch until testsuite fallout is fixed:
17448         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
17449         * cgraph.h (struct inline_summary): New filed self_wize,
17450         size_inlining_benefit, self_time and time_inlining_benefit.
17451         (struct cgraph_global_info): Replace insns by time ans size fields.
17452         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
17453         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
17454         (ipcp_update_callgraph): Do not touch function bodies.
17455         * ipa-inline.c: Include except.h
17456         (MAX_TIME): New constant.
17457         (overall_insns): Remove
17458         (overall_size, max_benefit): New static variables.
17459         (cgraph_estimate_time_after_inlining): New function.
17460         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
17461         (cgraph_clone_inlined_nodes): Update size.
17462         (cgraph_mark_inline_edge): Update size.
17463         (cgraph_estimate_growth): Use size info.
17464         (cgraph_check_inline_limits): Check size.
17465         (cgraph_default_inline_p): Likewise.
17466         (cgraph_edge_badness): Compute badness based on benefit and size cost.
17467         (cgraph_decide_recursive_inlining): Check size.
17468         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
17469         and times.
17470         (cgraph_decide_inlining): Likewise.
17471         (cgraph_decide_inlining_incrementally): Likewise; honor
17472         PARAM_EARLY_INLINING_INSNS.
17473         (likely_eliminated_by_inlining_p): New predicate.
17474         (estimate_function_body_sizes): New function.
17475         (compute_inline_parameters): Use it.
17476         * except.c (must_not_throw_labels): New function.
17477         * except.h (must_not_throw_labels): Declare.
17478         * tree-inline.c (init_inline_once): Kill inlining_weigths
17479         * tree-ssa-structalias.c: Avoid uninitialized warning.
17480         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
17481         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
17482         (PARAM_INLINE_CALL_COST): Remove.
17483         (PARAM_EARLY_INLINING_INSNS): New.
17484
17485 2009-05-15  Richard Guenther  <rguenther@suse.de>
17486
17487         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
17488         not TODO_update_ssa.
17489
17490 2009-05-15  Richard Guenther  <rguenther@suse.de>
17491
17492         PR tree-optimization/39999
17493         * gimple.h (gimple_expr_type): Use the expression type looking
17494         through useless conversions.
17495         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
17496         (vn_nary_op_insert_stmt): Likewise.
17497         (simplify_binary_expression): Likewise.
17498
17499 2009-05-15  Richard Guenther  <rguenther@suse.de>
17500
17501         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
17502         New options, enabled by default.
17503         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
17504         Document.
17505         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
17506         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
17507         * tree-ssa-structalias.c (gate_tree_pta): New function.
17508         (pass_build_alias): Use it.
17509
17510 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
17511
17512         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
17513         recurse on an invariant address if a conversion from a pointer
17514         type to a wider integer type is involved.
17515
17516 2009-05-15  Jan Hubicka  <jh@suse.cz>
17517
17518         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
17519         * cgraph.h (struct inline_summary): New filed self_wize,
17520         size_inlining_benefit, self_time and time_inlining_benefit.
17521         (struct cgraph_global_info): Replace insns by time ans size fields.
17522         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
17523         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
17524         (ipcp_update_callgraph): Do not touch function bodies.
17525         * ipa-inline.c: Include except.h
17526         (MAX_TIME): New constant.
17527         (overall_insns): Remove
17528         (overall_size, max_benefit): New static variables.
17529         (cgraph_estimate_time_after_inlining): New function.
17530         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
17531         (cgraph_clone_inlined_nodes): Update size.
17532         (cgraph_mark_inline_edge): Update size.
17533         (cgraph_estimate_growth): Use size info.
17534         (cgraph_check_inline_limits): Check size.
17535         (cgraph_default_inline_p): Likewise.
17536         (cgraph_edge_badness): Compute badness based on benefit and size cost.
17537         (cgraph_decide_recursive_inlining): Check size.
17538         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
17539         and times.
17540         (cgraph_decide_inlining): Likewise.
17541         (cgraph_decide_inlining_incrementally): Likewise; honor
17542         PARAM_EARLY_INLINING_INSNS.
17543         (likely_eliminated_by_inlining_p): New predicate.
17544         (estimate_function_body_sizes): New function.
17545         (compute_inline_parameters): Use it.
17546         * except.c (must_not_throw_labels): New function.
17547         * except.h (must_not_throw_labels): Declare.
17548         * tree-inline.c (init_inline_once): Kill inlining_weigths
17549         * tree-ssa-structalias.c: Avoid uninitialized warning.
17550         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
17551         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
17552         (PARAM_INLINE_CALL_COST): Remove.
17553         (PARAM_EARLY_INLINING_INSNS): New.
17554         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
17555         (inline-call-cost): Remove.
17556         (early-inlining-insns): New.
17557
17558 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
17559
17560         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
17561         for bounds.
17562         (print_int_cst_bounds_in_octal_p): Likewise.
17563         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
17564         with subtypes.
17565         * dwarf2out.c (base_type_die): Likewise.
17566         (is_subrange_type): Delete.
17567         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
17568         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
17569         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
17570         if the destination type is boolean.
17571         (build_range_check): Do not special-case subtypes.
17572         (fold_sign_changed_comparison): Likewise.
17573         (fold_unary): Likewise.
17574         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
17575         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
17576         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
17577         * tree.c (subrange_type_for_debug_p): New predicate based on the
17578         former is_subrange_type.
17579         * tree.h (subrange_type_for_debug_p): Declare.
17580         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
17581         (convert_affine_scev): Remove call to above function.
17582         (chrec_convert_aggressive): Likewise.
17583         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
17584         false for conversions involving subtypes.
17585         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
17586         (vrp_val_min): Likewise.
17587         (needs_overflow_infinity): Likewise.
17588         (extract_range_from_unary_expr): Likewise.
17589
17590 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
17591
17592         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
17593         * config/frv/frv.c: Likewise.
17594         * config/s390/s390.c: Likewise.
17595         * config/sparc/sparc.h: Likewise.
17596         * config/i386/i386.h: Likewise.
17597         * config/i386/i386.c: Likewise.
17598         * config/crx/crx.c: Likewise.
17599         * config/m68hc11/m68hc11.h: Likewise.
17600         * config/iq2000/iq2000.c: Likewise.
17601         * config/mn10300/mn10300.h: Likewise.
17602         * config/mn10300/mn10300.c: Likewise.
17603         * config/m68k/m68k.c: Likewise.
17604         * config/rs6000/rs6000.c: Likewise.
17605         * config/rs6000/xcoff.h: Likewise.
17606         * config/rs6000/linux64.h: Likewise.
17607         * config/rs6000/sysv4.h: Likewise.
17608         * config/score/score3.c: Likewise.
17609         * config/score/score7.c: Likewise.
17610         * config/score/score.c: Likewise.
17611         * config/arm/arm.md: Likewise.
17612         * config/mips/mips.c: Likewise.
17613         * config/mips/mips.md: Likewise.
17614         * config/bfin/bfin.h: Likewise.
17615         * config/pa/pa.c: Likewise.
17616         * config/pa/constraints.md: Likewise.
17617
17618         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
17619         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
17620         * config/pdp11/pdp11.h: Use memory_address_p instead.
17621
17622 2009-05-14  Ian Lance Taylor  <iant@google.com>
17623
17624         * passes.c (finish_optimization_passes): Change i to int.
17625         * plugin.c (plugins_active_p): Change event to int.
17626         (dump_active_plugins): Likewise.
17627         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
17628         Add cast.
17629         * tree.c (tree_range_check_failed): Change c to unsigned int.
17630         (omp_clause_range_check_failed): Likewise.
17631         (build_common_builtin_nodes): Change mode to int.  Add cast.
17632         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
17633         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
17634
17635         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
17636         ++ or -- with a variable of enum type.
17637
17638 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
17639
17640         PR driver/40144
17641         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
17642
17643 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
17644
17645         * store-motion.c: Do not include params.h
17646         * Makefile.in: Fix dependencies for various files.
17647
17648 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
17649
17650         * auto-inc-dec.c: Fix pass description, remove apparent
17651         accidental duplication.
17652
17653 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
17654
17655         PR middle-end/40147
17656         * ipa-utils.h (memory_identifier_string): Moved to ...
17657         * tree.h (memory_identifier_string): Here.  Add GTY(()).
17658
17659 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
17660
17661         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
17662         in the former documentation of...
17663         (GO_IF_LEGITIMATE_ADDRESS): ... this.
17664         * ira-conflicts.c (get_dup_num): Use address_operand.
17665         * targhooks.c (default_legitimate_address_p): New.
17666         * targhooks.h (default_legitimate_address_p): New.
17667         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
17668         Call hook.
17669         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
17670         * target.h (struct target): Add legitimate_address_p.
17671         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
17672         (TARGET_INITIALIZER): Include it.
17673
17674         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17675         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
17676         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
17677         (TARGET_LEGITIMATE_ADDRESS_P): New.
17678
17679         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17680         (REG_OK_STRICT_P): Delete.
17681         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
17682         (frv_legitimate_address_p_1): ... this.
17683         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
17684         (frv_legitimate_address_p_1): ... the renamed old
17685         frv_legitimate_address_p.
17686         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
17687         (TARGET_LEGITIMATE_ADDRESS_P): New.
17688
17689         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17690         * config/s390/s390-protos.h (legitimate_address_p): Remove.
17691         * config/s390/s390.c (legitimate_address_p): Rename to...
17692         (s390_legitimate_address_p): ... this, make static.
17693         (legitimize_address): Adjust call.
17694         (TARGET_LEGITIMATE_ADDRESS_P): New.
17695         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
17696
17697         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17698         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
17699         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
17700         (TARGET_LEGITIMATE_ADDRESS_P): New.
17701
17702         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17703         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
17704         * config/spu/spu.c (spu_legitimate_address): Rename to...
17705         (spu_legitimate_address_p): ... this, make static.
17706         (TARGET_LEGITIMATE_ADDRESS_P): New.
17707
17708         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17709         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
17710         * config/sparc/sparc.c (legitimate_address_p): Rename to...
17711         (sparc_legitimate_address_p): ... this, make static and return bool.
17712         (legitimize_address): Adjust call.
17713         (TARGET_LEGITIMATE_ADDRESS_P): New.
17714
17715         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17716         * config/i386/i386-protos.h (legitimate_address_p): Remove.
17717         * config/i386/i386.c (legitimate_address_p): Rename to...
17718         (ix86_legitimate_address_p): ... this, make static.
17719         (constant_address_p): Move after it, adjust call.
17720         (TARGET_LEGITIMATE_ADDRESS_P): New.
17721
17722         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17723         * config/avr/avr-protos.h (legitimate_address_p): Remove.
17724         * config/avr/avr.c (legitimate_address_p): Rename to...
17725         (avr_legitimate_address_p): ... this, make static.
17726         (legitimize_address): Adjust call.
17727         (TARGET_LEGITIMATE_ADDRESS_P): New.
17728
17729         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17730         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
17731         * config/crx/crx.c (crx_legitimate_address_p): Make static.
17732         (TARGET_LEGITIMATE_ADDRESS_P): New.
17733
17734         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17735         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
17736         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
17737         (TARGET_LEGITIMATE_ADDRESS_P): New.
17738
17739         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17740         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
17741         Remove.
17742         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
17743         Make static.
17744         (TARGET_LEGITIMATE_ADDRESS_P): New.
17745
17746         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17747         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
17748         Remove.
17749         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
17750         Rename to...
17751         (m68hc11_legitimate_address_p): ... this, make static.
17752         (go_if_legitimate_address_internal): Rename to...
17753         (m68hc11_legitimate_address_p_1): ... this.
17754         (legitimize_address): Adjust call.
17755         (TARGET_LEGITIMATE_ADDRESS_P): New.
17756
17757         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17758         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
17759         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
17760         (TARGET_LEGITIMATE_ADDRESS_P): New.
17761
17762         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17763         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
17764         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
17765         (mn10300_legitimate_address_p): ... this, make static.
17766         (TARGET_LEGITIMATE_ADDRESS_P): New.
17767
17768         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17769         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
17770         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
17771         (TARGET_LEGITIMATE_ADDRESS_P): New.
17772
17773         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17774         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
17775         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
17776         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17777         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
17778         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
17779         (rs6000_legitimate_address_p): ... this, make static.
17780         (TARGET_LEGITIMATE_ADDRESS_P): New.
17781         (REG_MODE_OK_FOR_BASE_P): Delete.
17782         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
17783
17784         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17785         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
17786         Delete.
17787         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
17788         static, adjust types.
17789         (TARGET_LEGITIMATE_ADDRESS_P): New.
17790
17791         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17792         * config/score/score.c (score_address_p): Rename to...
17793         (score_legitimate_address_p): ... this.
17794         (TARGET_LEGITIMATE_ADDRESS_P): New.
17795         * config/score/score3.c (score3_address_p): Rename to...
17796         (score3_legitimate_address_p): ... this.
17797         * config/score/score7.c (score7_address_p): Rename to...
17798         (score7_legitimate_address_p): ... this.
17799
17800         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
17801         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
17802         GO_IF_LEGITIMATE_ADDRESS): Delete.
17803         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
17804         thumb2_legitimate_address_p): Delete.
17805         (arm_legitimate_address_p): Rename to...
17806         (arm_legitimate_address_outer_p): ... this.
17807         * config/arm/constraints.md ("Uq"): Adjust call.
17808         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
17809         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
17810         to...
17811         (arm_legitimate_address_outer_p): ... this.
17812         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
17813         static.
17814         (TARGET_LEGITIMATE_ADDRESS_P): New.
17815
17816         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17817         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
17818         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
17819         (TARGET_LEGITIMATE_ADDRESS_P): New.
17820
17821         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17822         * config/vax/vax-protos.h (legitimate_address_p): Remove.
17823         * config/vax/vax.c (legitimate_address_p): Rename to...
17824         (vax_legitimate_address_p): ... this, make static.
17825         (TARGET_LEGITIMATE_ADDRESS_P): New.
17826
17827         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17828         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
17829         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
17830         (TARGET_LEGITIMATE_ADDRESS_P): New.
17831
17832         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17833         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
17834         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
17835         (mmix_legitimate_address_p): ... this, make static.
17836         (TARGET_LEGITIMATE_ADDRESS_P): New.
17837
17838         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17839         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
17840         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
17841         (TARGET_LEGITIMATE_ADDRESS_P): New.
17842
17843 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
17844
17845         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
17846         of MODE_COMPLEX_INT.
17847
17848 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
17849
17850         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
17851         LCT_NORMAL in function call.
17852         * mips-tdump.c (print_file_desc): Add cast to enum type.
17853         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
17854         (mark_stabs): Add casts to enum types.
17855         (parse_stabs_common): Add casts to enum types.
17856
17857 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
17858
17859         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
17860         Check for invalid values of LETTER.
17861
17862 2009-05-13  Taras Glek  <tglek@mozilla.com>
17863
17864         * attribs.c (register_attribute): moved out attribute registration
17865         into register_attribute.
17866         * doc/plugins.texi: Documented register_attribute and
17867         PLUGIN_ATTRIBUTES.
17868         * gcc-plugin.h: Added forward decl for register_attribute.
17869         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
17870         * plugin.c (register_callback, invoke_plugin_callbacks): Added
17871         PLUGIN_ATTRIBUTES boilerplate.
17872
17873 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
17874
17875         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
17876         values even in sentinel and empty entries.
17877         (ms_printf_flag_specs):  Likewise.
17878         (ms_scanf_flag_specs):  Likewise.
17879         (ms_strftime_flag_specs):  Likewise.
17880         (ms_print_char_table):  Likewise.
17881         (ms_scan_char_table):  Likewise.
17882         (ms_time_char_table):  Likewise.
17883
17884 2009-05-13  Doug Kwan  <dougkwan@google.com>
17885
17886         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
17887
17888 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
17889
17890         * config/mips/mips.md (store): Add attributes for QI and HI.
17891         Update comment.
17892         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
17893         (truncdi<mode>2): ... this new pattern.
17894
17895 2009-05-13  Brad Hards  <bradh@kde.org>
17896
17897         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
17898
17899 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
17900             Ben Elliston <bje@au.ibm.com>
17901
17902         PR middle-end/40035
17903         * dse.c (check_mem_read_rtx): Guard against width == -1.
17904
17905 2009-05-13  Michael Matz  <matz@suse.de>
17906
17907         PR middle-end/39976
17908         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
17909         (trivially_conflicts_p): New function.
17910         (insert_backedge_copies): Use it.
17911
17912 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
17913
17914         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
17915         (handle_stdc_pragma): Use new enum constant names.
17916         (handle_pragma_float_const_decimal64): Ditto.
17917
17918 2009-05-13  Ian Lance Taylor  <iant@google.com>
17919
17920         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
17921         tree.def.
17922
17923 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
17924
17925         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
17926         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
17927         multilibs.
17928         * config/m68k/m68k.h (FL_UCLINUX): Define.
17929
17930 2009-05-13  Jan Hubicka  <jh@suse.cz>
17931
17932         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
17933
17934 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
17935
17936         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
17937         unless -fschedule-insns is specified.
17938
17939 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
17940
17941         PR target/39561
17942         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
17943         TARGET_EXPAND_CBRANCHDI4.
17944         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
17945         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
17946         (cmpeqdi): Fix comment.
17947
17948 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
17949
17950         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
17951         (sh_legitimate_address_p): Likewise.
17952         * config/sh/sh.c (sh_legitimate_index_p): New.
17953         (sh_legitimate_address_p): Likewise.
17954         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
17955         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
17956         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
17957         (MAYBE_BASE_REGISTER_RTX_P): New macro.
17958         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
17959         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
17960         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
17961         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
17962         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
17963
17964 2009-05-12  Jan Hubicka  <jh@suse.cz>
17965
17966         * tree-inline.c (estimate_operator_cost): Add operands;
17967         when division happens by constant, it is cheap.
17968         (estimate_num_insns): Loads and stores are not having cost of 0;
17969         EH magic stuff is cheap; when computing runtime cost of switch,
17970         use log2 base of amount of its cases; builtin_expect has cost of 0;
17971         compute cost for moving return value of call.
17972         (init_inline_once): Initialize time_based flags.
17973         * tree-inline.h (eni_weights_d): Add time_based flag.
17974
17975 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
17976
17977         * df-core.c: Update head documentation.
17978
17979 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
17980
17981         PR bootstrap/40118
17982         * rs6000.c (rs6000_generate_compare): Use op1b instead of
17983         shadowing exisiting variable op1.
17984
17985 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
17986
17987         PR target/37179
17988         * config/i386/driver-i386.c (processor_signatures): New enum.
17989         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
17990         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
17991         processor signature to detect geode processor.
17992
17993 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
17994
17995         Revert:
17996
17997         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
17998
17999         * optabs.c (prepare_cmp_insn): Temporarily disable test that
18000         causes spurious differences between trunk and cond-optab branch.
18001
18002 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
18003
18004         * dojump.c (compare_from_rtx): Delete.
18005         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
18006         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
18007         if the comparison does not satisfy the predicate; test predicates for
18008         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
18009         further if one existing pattern fails.
18010         * expr.h (compare_from_rtx): Delete.
18011         (prepare_operand): Declare it.
18012         * optabs.c: Change "lib call" to "libcall" throughout.
18013         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
18014         HAVE_conditional_trap, emit_cmp_insn): Delete.
18015         (can_compare_p): Delete cmp_optab case.
18016         (prepare_float_lib_cmp): Return an rtx and a machine mode.
18017         Accept other parameters by value.
18018         (prepare_operand): Make non-static.
18019         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
18020         other parameters by value.  Try to widen operands here based on
18021         an optab_methods argument and looking at cbranch_optab.
18022         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
18023         loop.  Use cbranch_optab directly.
18024         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
18025         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
18026         assertion.
18027         (emit_conditional_move, emit_conditional_add): Inline what's needed
18028         of compare_from_rtx, using new prepare_cmp_insn for the rest.
18029         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
18030         with COMPARE.  Move cmov_optab and cstore_optab above
18031         with cbranch_optab, move cmp_optab down with ucmp_optab,
18032         remove tst_otpab.  Do not initialize trap_rtx.
18033         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
18034         for trap code.  Do not check HAVE_conditional_trap.  Use
18035         prepare_cmp_insn.  Accept no predicate for operand 3.
18036         * optabs.h (OTI_cmp): Mark as used only for libcalls.
18037         (OTI_ctrap, ctrap_optab): New.
18038         (tst_optab): Delete.
18039         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
18040         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
18041         with lookup of ctrap_optab.
18042         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
18043         Delete.
18044         (ctrap_optab): New.
18045
18046         * combine.c (combine_simplify_rtx, simplify_set): Do not
18047         special case comparing against zero for cc0 machines.
18048         * simplify-rtx.c (simplify_binary_operation_1): Never remove
18049         COMPARE on cc0 machines.
18050         (simplify_relational_operation): Return a new expression when
18051         a COMPARE could be removed.
18052         * final.c (final_scan_insn): Compare cc_status values
18053         against LHS of a (compare FOO (const_int 0)) cc0 source.
18054         Also check if cc_status.value is the full compare.
18055
18056         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
18057         (cstoreMM4): Document.
18058         (conditional_trap): Document ctrapMM4 instead.
18059         (sync_compare_and_swapMM): Refer to cbranchcc4.
18060         (Dependent Patterns): Eliminate obsolete information referring to
18061         the old jump optimization phase.
18062         (Canonicalization): Include cbranchcc4 case, omit canonicalization
18063         of compares with 0 on cc0 machines.
18064         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
18065         avoiding references to cc0.  Remove text about storing operands
18066         in cmpMM.
18067         * doc/tm.texi (Condition Codes): Include blurb on different
18068         condition code representations, separate into subsections for
18069         CC0, MODE_CC and conditional execution.
18070
18071         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
18072         alpha_emit_setcc): Accept operands and a machine mode.
18073         * config/alpha/alpha.c (alpha_emit_conditional_branch):
18074         Get code/op0/op1 from operands, use machine mode argument
18075         instead of alpha_compare.fp_p.  Emit the branch here.
18076         (alpha_emit_setcc): Likewise, and return boolean.
18077         (alpha_emit_conditional_move): Likewise.  Assert that
18078         cmp_op_mode == cmp_mode, and simplify accordingly.
18079         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
18080         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
18081         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
18082         Delete.
18083         (stack probe test): Use cbranchdi4.
18084         * config/alpha/predicates.md (alpha_cbranch_operator): New.
18085
18086         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
18087         * config/arc/arc.h (movsicc, movsfcc): Use it.
18088         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
18089         (cbranchsi4, cstoresi4): New.
18090         (cmpsi, bCC and sCC expanders): Remove.
18091
18092         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
18093         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
18094         * config/arm/predicates.md (arm_comparison_operator): Only include
18095         floating-point operators if there is a hardware floating-point unit.
18096         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
18097         deferring to cbranch_cc and cstore_cc respectively.
18098         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
18099         cbranch_cc, cstore_cc): New.
18100         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
18101         arm_compare_op1.
18102         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
18103
18104         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
18105         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
18106         as an argument.
18107         (adjust_insn_length): Adjust calls.
18108         (avr_reorg): Handle (compare (foo) (const_int 0)).
18109         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
18110         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
18111         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
18112         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
18113         (bCC): Remove.
18114         (cbranchqi4, cbranchhi4, cbranchsi4): New.
18115         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
18116
18117         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
18118         (cbranchsi4, cstorebi4, cstoresi4): New.
18119         (movbisi): This insn is duplicate, split it to zero_extend.
18120         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
18121         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
18122         (bfin_optimize_loop): Use cbranch expander.
18123         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
18124         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
18125         (bfin_bimode_comparison_operator): ... this.
18126         (bfin_direct_comparison_operator): New.
18127
18128         * config/cris/cris.c (cris_normal_notice_update_cc): Look
18129         inside (compare FOO (const_int 0)).
18130         (cris_rtx_costs): Handle ZERO_EXTRACT.
18131         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
18132         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
18133         (*tstdi_v32): Delete.
18134         (*cmpdi_non_v32): Add M alternative for operand 1.
18135         (cmpsi, cmp<mode>): Make private.
18136         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
18137         with COMPARE.
18138         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
18139
18140         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
18141         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
18142         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
18143         (cc_reg_operand): New.
18144         (any_cond): Delete.
18145         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
18146         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
18147         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
18148         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
18149         crx_expand_scond): Delete.
18150
18151         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
18152         (cbranchsi4): New.
18153         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
18154         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
18155
18156         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
18157         cstoresi4, cstoresf4, cstoredf4): New.
18158         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
18159         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
18160         Receive the entire operands array.
18161         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
18162         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
18163         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
18164         Get test/op0/op1 from the operands array.
18165         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
18166
18167         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
18168         (h8300_expand_store): New.
18169         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
18170         (const_int 0)).
18171         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
18172         (h8300_expand_store): New.
18173         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
18174         or do not try to produce (set (cc0) REG).
18175         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
18176         change a compare into a move to a scratch register.  Disable some
18177         peepholes when comparing with zero.
18178         (tstsi, tsthi, tstsi, cmpqi): Make private.
18179         (cmphi): Delete.
18180         (bCC, sCC): Delete.
18181         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
18182         cstoresi4): New.
18183
18184         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
18185         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
18186         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
18187         (ix86_emit_i387_log1p): Use cbranchxf2.
18188         (ix86_expand_setcc): Return void.
18189         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
18190         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
18191         cmp<MODEF>, cmpcc): Remove.
18192         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
18193         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
18194         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
18195         (sCC and bCC expanders): Remove.
18196         (stack_protect_test): Use cbranchcc4.
18197
18198         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
18199         Delete.
18200         (ia64_expand_compare): Accept three rtx by reference and return void.
18201         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
18202         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
18203         from *expr.  Update *expr with the BImode comparison to do.
18204         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
18205         cmptf, bCC, sCC, conditional_trap): Delete.
18206         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
18207         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
18208         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
18209         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
18210         * config/ia64/predicates.md (ia64_cbranch_operator): New.
18211
18212         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
18213         type of last argument.
18214         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
18215         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
18216         use machine mode argument instead of branch_type.  Remove dead
18217         code for floating-point comparisons.
18218         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
18219         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
18220         Remove.
18221         (cbranchsi4, cstoresi4): New.
18222         * config/iq2000/predicates.md (reg_or_const_operand): New.
18223
18224         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
18225         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
18226         (b<code>_op): Rewrite to...
18227         (bcc_op): ... this, using match_operator.
18228         (s<code>_op): Rewrite to...
18229         (scc_op): ... this, using match_operator.
18230         (s<code>_24_op): Rewrite to...
18231         (scc_op_24): ... this, using match_operator.
18232         (s<code>_<mode>): Rewrite to...
18233         (cstore<mode>4): ... this, using match_operator.
18234         (s<code>_<mode>_24): Rewrite to...
18235         (cstore<mode>4_24): ... this, using match_operator.
18236         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
18237         m32c_unpend_compare, m32c_expand_scc): Delete.
18238         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
18239         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
18240         (m32c_expand_movcc): Change NE to EQ if necessary.
18241         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
18242
18243         * config/m32r/m32r-protos.h (gen_cond_store): New.
18244         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
18245         (gen_cond_store): New, from sCC patterns.
18246         (m32r_expand_block_move): Use cbranchsi4.
18247         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
18248         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
18249         (cbranchsi4, cstoresi4): New.
18250
18251         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
18252         Delete.
18253         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
18254         (m68hc11_notice_update_cc): Look into a compare with 0.
18255         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
18256         Delete.
18257         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
18258         cmphi, cmpqi, bCC): Delete.
18259         (cbranchsi4, cbranchhi4, cbranchqi4): New.
18260         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
18261         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
18262         sets with COMPARE.
18263
18264         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
18265         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
18266         * config/m68k/constraints.md (H): New.
18267         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
18268         the define_insn below.
18269         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
18270         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
18271         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
18272         patterns): Wrap RHS with COMPARE.
18273         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
18274         (*cmpdi_internal): Name this pattern.
18275         (cmpdi): Change to define_insn.
18276         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
18277         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
18278         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
18279         predicate.
18280         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
18281         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
18282         (conditional_trap): Change to...
18283         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
18284         (*conditional_trap): Use the ordered_comparison_operator and
18285         const1_operand predicates.
18286         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
18287         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
18288         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
18289         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
18290
18291         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
18292         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
18293         (mcore_gen_compare): New.
18294         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
18295         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
18296         (mcore_gen_compare): ... this.
18297         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
18298         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
18299         (stack probe pattern): Use cbranchsi4.
18300
18301         * config/mips/predicates.md (mips_cstore_operator): New.
18302         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
18303         * config/mips/mips.md (any_cond): Delete.
18304         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
18305         always succeed.
18306         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
18307         fixuns_truncsfdi2): Use cbranch patterns.
18308         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
18309         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
18310         Adjust call to mips_expand_conditional_branch.
18311         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
18312         cstore<GPR:mode>4.
18313         * config/mips/mips-protos.h (mips_expand_conditional_branch,
18314         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
18315         * config/mips/mips.c (cmp_operands): Delete.
18316         (mips_emit_compare): Get comparison operands from *op0/*op1.
18317         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
18318         that it succeeds.  Use op0/op1 instead of cmp_operands.
18319         (mips_expand_conditional_branch, mips_expand_conditional_move,
18320         mips_expand_conditional_trap): Likewise.
18321         (mips_block_move_loop): Use cbranch patterns.
18322         * config/mips/mips.h (cmp_operands): Delete.
18323
18324         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
18325         (mmix_gen_compare_reg): Just return a register in the right CC mode.
18326         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
18327         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
18328         (*cmpcc_folded): Rename to...
18329         (*cmpdi_folded): this.
18330         (*cmpcc): Rename to...
18331         (*cmps): ... this.
18332         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
18333         (bCC): Remove.
18334         (cbranchdi4): New.
18335         (cbranchdf4): New.  Handle invalid comparisons here.
18336         * config/mmix/predicates.md (float_comparison_operator): New.
18337
18338         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
18339         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
18340         * config/mn10300/mn10300.md (tst): Delete.
18341         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
18342         Name these patterns and wrap RHS in a compare.
18343         (*cmpsi): Make this pattern private.  Include tst.
18344         (*cmpsf): Make this pattern private.
18345         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
18346         (compare with zero peepholes): Likewise.
18347         (bCC): Remove.
18348         (cbranchsi4, cbranchsf4): New.
18349         (casesi): Use cbranchsi4.
18350
18351         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
18352         hppa_branch_type): Delete.
18353         (return_addr_rtx): Use cbranchsi4.
18354         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
18355         Emit CCFPmode comparison here.
18356         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
18357         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
18358         hppa_branch_type): Delete.
18359         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
18360         (movsicc, movdicc): Remove references to hppa_compare_op0,
18361         hppa_compare_op1 and compare_from_rtx.
18362         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
18363         (casesi): Use cbranchsi4.
18364
18365         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
18366         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
18367         * config/pdp11/pdp11.md (register_or_const0_operand): New.
18368         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
18369         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
18370         (bCC): Delete.
18371         (cbranchdf4, cbranchhi4, cbranchqi4): New.
18372         (*branch, *branch_inverted): New.
18373
18374         * config/picochip/picochip.md (cbranchhi4): Use
18375         ordered_comparison_operator.
18376         (cmphi, bCC): Remove.
18377
18378         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
18379         (trap_comparison_operator): Delete.
18380         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
18381         rs6000_emit_cbranch): Accept mode and operands.
18382         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
18383         rs6000_compare_fp_p): Delete.
18384         (rs6000_generate_compare): Accept mode and comparison.  Extract code
18385         and op0/op1 from there.  Replace references to rs6000_compare_op0
18386         and rs6000_compare_op1.
18387         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
18388         extract result from passed operands.
18389         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
18390         extract loc from passed operands.
18391         (rs6000_emit_cmove): Likewise.
18392         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
18393         rs6000_compare_fp_p): Delete.
18394         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
18395         (cbranch<GPR>4, cbranch<FP>4): New.
18396         (cstore<mode>4): New.  Consolidate here all choices about when to use
18397         portable or specialized sCC sequences.
18398         (stack_protect_test): Use cbranchsi4.
18399         (conditional_trap): Replace with ctrap<GPR>4.
18400         (conditional trap insn): Replace trap_comparison_operator with
18401         ordered_comparison_operator.
18402
18403         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
18404         (s390_emit_prologue): Use ctrap.
18405         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
18406         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
18407         New predicates replacing...
18408         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
18409         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
18410         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
18411         (add<mode>cc): Do not use s390_compare_op0/op1.
18412         (s<code>): Change to...
18413         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
18414         (seq): Change to...
18415         (cstorecc4): ... this.  Handle EQ or NE equally.
18416         (*sne): Un-privatize for use in cstorecc4.
18417         (b<code>): Change to...
18418         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
18419         (conditional_trap): Replace with...
18420         (ctrap<GPR>4, ctrap<FP>4): ... these.
18421         (stack_protect): Use cbranchcc4.
18422
18423         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
18424         * config/score/score-protos.h (score_gen_cmp): Delete.
18425         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
18426         (score_block_move-loop): Use cbranchsi4.
18427         * config/score/score.md (cbranchsi4): New.
18428         (cmpsi, bCC): Delete.
18429         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
18430         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
18431         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
18432         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
18433         * config/score/score3.h (score3_gen_cmp): Delete.
18434         * config/score/score7.h (score7_gen_cmp): Delete.
18435
18436         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
18437         (sh_emit_scc_to_t): ... this.  Return void.
18438         (from_compare): Rename to...
18439         (sh_emit_compare_and_branch): ... this.
18440         (sh_emit_compare_and_set): New.
18441         (sh_expand_t_scc): Accept operands.
18442         * config/sh/predicates.md (sh_float_comparison_operator): New.
18443         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
18444         (prepare_scc_operands): Rename to...
18445         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
18446         arguments.
18447         (sh_emit_cheap_store_flag): New.
18448         (sh_emit_set_t_insn): New.
18449         (from_compare): Rename to...
18450         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
18451         handling of TARGET_SH2E floating point to avoid recursive call.
18452         Generate branch here.
18453         (sh_emit_compare_and_set): New.
18454         (sh_expand_t_scc): Get op0/op1 from arguments.
18455         (sh_emit_cheap_store_flag): New.
18456         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
18457         cases.
18458         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
18459         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
18460         (movsicc, movdicc): Do nothing when it recreated operands from
18461         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
18462         prepare_scc_operands (now sh_emit_scc_to_t).
18463         (udivdi3): Use cstoresi4.
18464         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
18465         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
18466         (cbranchint4_media, cbranchfp4_media): New.
18467         (casesi): Use cbranchdi4.
18468         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
18469         Delete.
18470         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
18471         (movnegt): Remove second operand.
18472         (cbranchsf4, cbranchdf4): New.
18473         (stack_protect): Use cbranchdi4/cbranchsi4.
18474
18475         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
18476         (gen_compare_reg): Accept comparison, extract part of it to...
18477         (gen_compare_reg_1): ... this.
18478         (gen_compare_operator): Delete.
18479         (gen_v9_scc): Accept separate destination, comparison code and arms.
18480         Do not use sparc_compare_op0/sparc_compare_op1.
18481         (emit_scc_insn, emit_conditional_branch_insn): New.
18482         (emit_v9_brxx): Make static.  Remove useless assertion.
18483         (sparc_emit_float_lib_cmp): Return RTL instead of calling
18484         emit_cmp_insn.
18485         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
18486         * config/sparc/sparc-protos.h (gen_compare_reg,
18487         sparc_emit_float_lib_cmp): Adjust prototype.
18488         (emit_scc_insn, emit_conditional_branch_insn): New.
18489         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
18490         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
18491         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
18492         iterators to the top.
18493         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
18494         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
18495         snedi_special_trunc): Delete.
18496         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
18497         and snedi_special_trunc.
18498         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
18499         cbranchdi4, cbranch<F:mode>4): New.
18500         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
18501         here.  Use gen_compare_reg instead of gen_compare_operator.
18502         (conditional_trap): Replace with...
18503         (ctrapsi4, ctrapdi4): ... this.
18504         (stack_protect_test): Use cbranchcc4.
18505
18506         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
18507         argument to rtx.
18508         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
18509         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
18510         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
18511         from operands[0] or operands[3] depending on is_set.
18512         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
18513         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
18514         cmpdf, bCC), sCC: Remove.
18515         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
18516         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
18517         cstoredf4): New.
18518         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
18519         spu_emit_branch_or_set.
18520
18521         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
18522         Add two arguments.
18523         * config/stormy16/stormy16.h (xstormy16_compare_op0,
18524         xstormy16_compare_op1): Delete.
18525         * config/stormy16/stormy16.c (xstormy16_compare_op0,
18526         xstormy16_compare_op1): Delete.
18527         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
18528         Adjust calls.
18529         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
18530         (cmphi, cmpsi, bCC): Remove.
18531
18532         * config/v850/v850.md (tstsi, cmpsi): Fold into...
18533         (*cmpsi): ... this one.
18534         (cbranchsi4, cstoresi4): New.
18535         (bCC expanders): Delete.
18536         (sCC insns): Fold into...
18537         (*setcc): ... this one.
18538         (casesi): Do not use gen_cmpsi and gen_bgtu.
18539         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
18540         (movsicc): Simplify.
18541         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
18542
18543         * config/vax/vax-protos.h (cond_name): New.
18544         (vax_output_conditional_branch): Remove.
18545         * config/vax/vax.c (cond_name): New.
18546         (vax_output_conditional_branch): Remove.
18547         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
18548         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
18549         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
18550         (bit<VAXint>): Wrap source with (compare).
18551         (b<code> and following unnamed pattern): Rename to *branch and
18552         *branch_reversed.  Change macroization to match_operator.
18553         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
18554
18555         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
18556         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
18557         Change last argument to machine_mode.
18558         (xtensa_expand_scc): Add machine_mode argument.
18559         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
18560         (gen_conditional_move, xtensa_expand_conditional_branch,
18561         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
18562         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
18563         Adjust operand numbers.
18564         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
18565         Delete.
18566         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
18567         (cmpsi, cmpsf, b<code>, s<code>): Delete.
18568         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
18569
18570 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
18571
18572         * optabs.c (prepare_cmp_insn): Temporarily disable test that
18573         causes spurious differences between trunk and cond-optab branch.
18574
18575 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
18576
18577         PR target/37137
18578         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
18579
18580 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
18581
18582         * tree.c (iterative_hash_pointer): Delete.
18583         (iterative_hash_expr): Short-circuit handling of NULL pointer.
18584         Hash UIDs and versions of SSA names.  Don't special-case built-in
18585         function declarations.
18586
18587 2009-05-11  Ian Lance Taylor  <iant@google.com>
18588
18589         PR bootstrap/40103
18590         * graphite.c: Force -Wc++-compat to only be a warning before
18591         #including "cloog/cloog.h".
18592
18593 2009-05-11  Martin Jambor  <mjambor@suse.cz>
18594
18595         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
18596
18597 2009-05-11  Jan Hubicka  <jh@suse.cz>
18598
18599         * tree-ssa-loop-ivcanon.c: Include target.h
18600         (struct loop_size): new structure.
18601         (constant_after_peeling): New predicate.
18602         (tree_estimate_loop_size): New function.
18603         (estimated_unrolled_size): Rewrite for new estimates.
18604         (try_unroll_loop_completely): Use new estimates.
18605         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
18606
18607 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18608
18609         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
18610         libcpp interface change.
18611         (spu_macro_to_expand): Likewise.
18612
18613 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
18614
18615         PR tree-optimization/40026
18616         * gimplify.c (gimplify_init_constructor): Change initial conditional
18617         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
18618         optimize_compound_literals_in_ctor.
18619
18620 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
18621
18622         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
18623         New devices.
18624         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
18625
18626 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
18627
18628         * tree-vect-data-refs.c (vect_analyze_group_access): Use
18629         HOST_WIDE_INT for gap.
18630
18631 2009-05-11  Ira Rosen  <irar@il.ibm.com>
18632
18633         PR tree-optimization/40074
18634         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
18635         account in group size and step comparison.
18636
18637 2009-05-11  Richard Guenther  <rguenther@suse.de>
18638
18639         * passes.c (init_optimization_passes): Strip now incorrect comment.
18640         (execute_function_todo): Do not set PROP_alias.
18641         * tree-pass.h (PROP_alias): Remove.
18642         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
18643         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
18644         * tree-nrv.c (pass_return_slot): Likewise.
18645         * tree-object-size.c (pass_object_sizes): Likewise.
18646         * tree-ssa-dom.c (pass_dominator): Likewise.
18647         (pass_phi_only_cprop): Likewise.
18648         * tree-ssa-dse.c (pass_dse): Likewise.
18649         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
18650         (pass_cselim): Likewise.
18651         * tree-ssa-pre.c (pass_pre): Likewise.
18652         (pass_fre): Likewise.
18653         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
18654         * tree-ssa-sink.c (pass_sink_code): Likewise.
18655         * tree-stdarg.c (pass_stdarg): Likewise.
18656         * tree-tailcall.c (pass_tail_calls): Likewise.
18657         * tree-vrp.c (pass_vrp): Likewise.
18658
18659 2009-05-10  Ian Lance Taylor  <iant@google.com>
18660
18661         * basic-block.h (enum profile_status): Break out of struct
18662         control_flow_graph.
18663         * cgraph.h (struct inline_summary): Break out of struct
18664         cgraph_local_info.
18665         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
18666         of struct cgraph_order_sort.
18667         * combine.c (enum undo_kind): New enum, broken out of struct undo.
18668         * cse.c (struct branch_path): Break out of struct
18669         cse_basic_block_data.
18670         * except.h (enum eh_region_type): Break out of struct eh_region.
18671         * gcc.c (enum add_del): Break out of struct modify_target.
18672         * genrecog.c (enum decision_type): Break out of struct decision_test.
18673         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
18674         ggc_pch_data.
18675         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
18676         * regmove.c (enum match_use): New enum, broken out of struct match.
18677         * sched-int.h (enum post_call_group): New enum, broken out of
18678         struct deps.
18679         (struct deps_reg): Break out of struct deps.
18680         * target.h (struct asm_int_op): Break out of struct gcc_target.
18681         * tree-eh.c (struct goto_queue_node): Break out of struct
18682         leh_tf_state.
18683         * tree-inline.h (enum copy_body_cge_which): Break out of
18684         copy_body_data.
18685         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
18686
18687         * c-decl.c (in_struct, struct_types): New static variables.
18688         (pushtag): Add loc parameter.  Change all callers.
18689         (lookup_tag): Add ploc parameter.  Change all callers.
18690         (check_compound_literal_type): New function.
18691         (parser_xref_tag): Add loc parameter.  Change all callers.  If
18692         -Wc++-compat, warn about struct/union/enum types defined within a
18693         struct or union.
18694         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
18695         and loc parameters.  Change all callers.  Change error calls to
18696         error_at, using loc.  For a redefinition, if the location of the
18697         original definition is known, report it.  Set in_struct and
18698         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
18699         (finish_struct): Add new parameters enclosing_in_struct and
18700         enclosing_struct_types.  Change all callers.  Set
18701         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
18702         in the struct.  If in a struct, add this struct to struct_types.
18703         (start_enum): Add loc parameter.  Change all callers.  Use
18704         error_at for errors, using loc.  For a redefinition, if the
18705         location of the original definition is known, report it.  If in a
18706         struct, add this enum type to struct_types.  If -Wc++-compat warn
18707         if in sizeof, typeof, or alignof.
18708         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
18709         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
18710         (c_parser_enum_specifier): Get enum location for start_enum.
18711         (c_parser_struct_or_union_specifier): Get struct location for
18712         start_struct.  Save in_struct and struct_types status between
18713         start_struct and finish_struct.
18714         (c_parser_cast_expression): Get location of cast.
18715         (c_parser_alignof_expression): Get location of type.
18716         (c_parser_postfix_expression): Likewise.
18717         (c_parser_postfix_expression_after_paren_type): Add type_loc
18718         parameter.  Change all callers.  Call check_compound_literal_type.
18719         Use type_loc for error about variable size type.
18720         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
18721         of an enum constant from an enum type defined in a struct or union.
18722         (c_cast_expr): Add loc parameter.  Change all callers.  If
18723         -Wc++-compat, warn about defining a type in a cast.
18724         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
18725         (start_enum, start_struct, finish_struct): Update declarations.
18726         (parser_xref_tag, c_cast_expr): Update declarations.
18727         (check_compound_literal_type): Declare.
18728
18729 2009-05-11  Ben Elliston  <bje@au.ibm.com>
18730
18731         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
18732         for recent libcpp interface change.
18733         (rs6000_macro_to_expand): Likewise.
18734
18735 2009-05-10  Michael Matz  <matz@suse.de>
18736
18737         PR target/40031
18738         * config/arm/arm.c (require_pic_register): Emit on entry edge,
18739         not at entry of function.
18740
18741 2009-05-10  Richard Guenther  <rguenther@suse.de>
18742
18743         PR tree-optimization/40081
18744         Revert
18745         * tree-sra.c (instantiate_element): Instantiate scalar replacements
18746         using the main variant of the element type.  Do not fiddle with
18747         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
18748
18749         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
18750         structs with volatile fields.
18751
18752 2009-05-10  Jan Hubicka  <jh@suse.cz>
18753
18754         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
18755         (estimate_move_cost): Assert that it does not get called for
18756         VOID_TYPE_P.
18757         (estimate_num_insns): Skip VOID types in argument handling.
18758         (optimize_inline_calls): Delete unreachable blocks and verify that
18759         callgraph is valid.
18760
18761 2009-05-10  Jan Hubicka  <jh@suse.cz>
18762
18763         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
18764         * cgraph.c (cgraph_mark_address_taken_node): New function.
18765         (dump_cgraph_node): Dump new flag.
18766         * cgraph.h (struct cgraph_node): Add address_taken.
18767         (cgraph_mark_address_taken_node): New function.
18768         * ipa.c (cgraph_postorder): Prioritize functions with address taken
18769         since new direct calls can be born.
18770
18771 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
18772
18773         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
18774         tok->val.node.node.
18775
18776 2009-05-10  Jan Hubicka  <jh@suse.cz>
18777
18778         PR middle-end/40084
18779         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
18780         argument; rewrite.
18781         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
18782         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
18783         * tree-inline.c (copy_bb): Set frequency correctly.
18784         (fold_marked_statements): Update call to
18785         cgraph_update_edges_for_call_stmt.
18786
18787 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
18788
18789         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
18790         identifiers in diagnostics.
18791         * config/arm/arm.c (arm_handle_fndecl_attribute,
18792         arm_handle_isr_attribute): Likewise.
18793         * config/avr/avr.c (avr_handle_progmem_attribute,
18794         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
18795         * config/bfin/bfin.c (handle_int_attribute,
18796         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
18797         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
18798         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
18799         Likewise.
18800         * config/darwin.c (darwin_handle_kext_attribute,
18801         darwin_handle_weak_import_attribute): Likewise.
18802         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
18803         h8300_handle_eightbit_data_attribute,
18804         h8300_handle_tiny_data_attribute): Likewise.
18805         * config/i386/i386.c (ix86_handle_cconv_attribute,
18806         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
18807         * config/i386/winnt.c (ix86_handle_shared_attribute,
18808         ix86_handle_selectany_attribute): Likewise.
18809         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
18810         * config/m32c/m32c.c (function_vector_handler): Likewise.
18811         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
18812         m68hc11_handle_fntype_attribute): Likewise.
18813         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
18814         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
18815         * config/mips/mips.c (mips_insert_attributes,
18816         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
18817         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
18818         rs6000_handle_struct_attribute): Likewise.
18819         * config/sh/sh.c (sh_insert_attributes,
18820         sh_handle_resbank_handler_attribute,
18821         sh_handle_interrupt_handler_attribute,
18822         sh2a_handle_function_vector_handler_attribute,
18823         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
18824         Likewise.
18825         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
18826         * config/spu/spu.c (spu_handle_fndecl_attribute,
18827         spu_handle_vector_attribute): Likewise.
18828         * config/stormy16/stormy16.c
18829         (xstormy16_handle_interrupt_attribute): Likewise.
18830         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
18831         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
18832
18833 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
18834
18835         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
18836         (pp_translate_identifiers): New.
18837         (pp_identifier): Only conditionally translate identifier to locale
18838         character set.
18839         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
18840         (pp_base_tree_identifier): Only conditionally translate identifier
18841         to locale character set.
18842         * c-pretty-print.c (M_): Define.
18843         (pp_c_type_specifier, pp_c_primary_expression): Mark English
18844         fragments for conditional translation with M_.
18845         * tree-pretty-print.c (maybe_init_pretty_print): Disable
18846         identifier translation.
18847
18848 2009-05-10  Richard Guenther  <rguenther@suse.de>
18849
18850         PR tree-optimization/40081
18851         * tree-sra.c (instantiate_element): Instantiate scalar replacements
18852         using the main variant of the element type.  Do not fiddle with
18853         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
18854
18855 2009-05-09  Jan Hubicka  <jh@suse.cz>
18856
18857         PR middle-end/40080
18858         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
18859         indirect calls; verify cgraph afterwards.
18860
18861 2009-05-09  Jan Hubicka  <jh@suse.cz>
18862
18863         PR bootstrap/40082
18864         * ipa.c (update_inlined_to_pointer): New function.
18865         (cgraph_remove_unreachable_nodes): Use it.
18866
18867 2009-05-09  Jan Hubicka  <jh@suse.cz>
18868
18869         * tree-eh.c (struct leh_state): Remove prev_try.
18870         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
18871         not track prev_try.
18872         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
18873         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
18874         remove_eh_handler_and_replace, foreach_reachable_handler,
18875         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
18876         * except.h (struct eh_region): Remove eh_region_u_cleanup.
18877         (gen_eh_region_cleanup): Update prototype.
18878
18879 2009-05-09  Jan Hubicka  <jh@suse.cz>
18880
18881         PR middle-end/40043
18882         * except.c (copy_eh_region): Always set prev_try.
18883         (redirect_eh_edge_to_label): Find outer try.
18884         (foreach_reachable_handler): When looking for prev try
18885         handle case where previous try is not going to be taken.
18886
18887 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
18888
18889         PR tree-optimization/40049
18890         * tree-vect-stmts.c (vectorizable_operation): If the machine has
18891         only vector/vector shifts, convert the type of the constant to the
18892         appropriate type to avoid building incorrect trees, which
18893         eventually have problems with garbage collection.
18894
18895 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
18896
18897         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
18898         -1 for complex floating-point types if honoring signed zeros.
18899
18900 2009-05-08  Jan Hubicka  <jh@suse.cz>
18901
18902         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
18903         argument; handle correctly when profile is absent.
18904         (build_cgraph_edges): Update.
18905         (rebuild_cgraph_edges): Update.
18906         * cgraph.c: Do not include varray.h.
18907         (cgraph_set_call_stmt_including_clones): New function.
18908         (cgraph_create_edge_including_clones): Likewise
18909         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
18910         (cgraph_update_edges_for_call_stmt): Handle clones.
18911         (cgraph_remove_node): Handle clone tree.
18912         (cgraph_remove_node_and_inline_clones): New function.
18913         (dump_cgraph_node): Dump clone tree.
18914         (cgraph_clone_node): Handle clone tree.
18915         (clone_function_name): Bring here from tree-inline.c.
18916         (cgraph_create_virtual_clone): New function.
18917         * cgraph.h (ipa_replace_map): Move here from ipa.h.
18918         (cgraph_clone_info): New function.
18919         (strut cgraph_node): Add clone_info and new clone tree pointers.
18920         (cgraph_remove_node_and_inline_clones,
18921         cgraph_set_call_stmt_including_clones,
18922         cgraph_create_edge_including_clones,
18923         cgraph_create_virtual_clone): Declare.
18924         (cgraph_function_versioning): Use VEC argument.
18925         (compute_call_stmt_bb_frequency): Update prototype.
18926         (cgraph_materialize_all_clones): New function.
18927         * ipa-cp.c (ipcp_update_cloned_node): Remove.
18928         (ipcp_create_replace_map): Update to VECtors.
18929         (ipcp_update_callgraph): Use virtual clones.
18930         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
18931         (ipcp_update_profiling): Do not update local profiling.
18932         (ipcp_insert_stage): Use VECtors and virtual clones.
18933         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
18934         (clone_of_p): New function.
18935         (cgraph_preserve_function_body_p): Use clone tree.
18936         (cgraph_optimize): Materialize clones.
18937         (cgraph_function_versioning): Update for VECtors.
18938         (save_inline_function_body): Use clone tree.
18939         (cgraph_materialize_clone): New function.
18940         (cgraph_materialize_all_clones): Likewise.
18941         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
18942         * ipa.c: Include gimple.h.
18943         (cgraph_remove_unreachable_nodes): Use clone tree.
18944         * ipa-prop.c (ipa_note_param_call): Update call to
18945         compute_call_stmt_bb_frequencycall.
18946         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
18947         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
18948         (copy_bb): Handle updating of clone tree; add new edge when new call
18949         appears.
18950         (expand_call_inline): Be strict about every call having edge.
18951         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
18952         (delete_unreachable_blocks_update_callgraph): New function.
18953         (tree_function_versioning): Use VECtors; always remove unreachable
18954         blocks and fold conditionals.
18955         * tree-inline.h: Do not include varray.h.
18956         (tree_function_versioning): Remove.
18957         * Makefile.in (GTFILES): Remove tree-inline.c
18958         * passes.c (do_per_function): Do only functions having body.
18959         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
18960         tree.
18961
18962 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
18963             Andrew Morrow  <acm@google.com>
18964
18965         PR c/36892
18966         * c-common.c (c_common_attribute_table): Permit deprecated
18967         attribute to take an optional argument.
18968         (handle_deprecated_attribute): If the optional argument to
18969         __attribute__((deprecated)) is not a string ignore the attribute
18970         and emit a warning.
18971
18972         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
18973         * c-typeck.c (build_component_ref): Likewise.
18974         (build_external_ref): Likewise.
18975
18976         * toplev.c (warn_deprecated_use): Add an attribute argument.
18977         Emit the message associated with __attribute__((deprecated)).
18978
18979         * toplev.h (warn_deprecated_use): Updated.
18980
18981         * doc/extend.texi: Document new optional parameter to
18982         __attribute__((deprecated))
18983
18984 2009-05-08  Michael Eager <eager@eagercon.com>
18985
18986         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
18987         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
18988
18989 2009-05-08  Richard Guenther  <rguenther@suse.de>
18990
18991         PR tree-optimization/40062
18992         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
18993         Avoid exponential behavior.
18994
18995 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
18996
18997         PR rtl-optimization/33928
18998         PR 26854
18999         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
19000         process_uses, build_single_def_use_links): New.
19001         (update_df): Update use_def_ref.
19002         (forward_propagate_into): Use get_def_for_use instead of use-def
19003         chains.
19004         (fwprop_init): Call build_single_def_use_links and let it initialize
19005         dataflow.
19006         (fwprop_done): Free use_def_ref.
19007         (fwprop_addr): Eliminate duplicate call to df_set_flags.
19008         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
19009         df_rd_simulate_one_insn): New.
19010         (df_rd_bb_local_compute_process_def): Update head comment.
19011         (df_chain_create_bb): Use the new RD simulation functions.
19012         * df.h (df_rd_simulate_artificial_defs_at_top,
19013         df_rd_simulate_one_insn): New.
19014         * opts.c (decode_options): Enable fwprop at -O1.
19015         * doc/invoke.texi (-fforward-propagate): Document this.
19016
19017 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
19018
19019         PR c/24581
19020         * c-typeck.c (build_binary_op): Handle arithmetic between one real
19021         and one complex operand specially.
19022         * tree-complex.c (some_nonzerop): Do not identify a real value as
19023         zero if flag_signed_zeros.
19024
19025 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
19026
19027         PR rtl-optimization/33928
19028         * loop-invariant.c (record_use): Fix && vs. || mishap.
19029
19030 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
19031
19032         PR rtl-optimization/33928
19033         * loop-invariant.c (struct use): Add addr_use_p.
19034         (struct def): Add n_addr_uses.
19035         (struct invariant): Add cheap_address.
19036         (create_new_invariant): Set cheap_address.
19037         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
19038         (record_uses): Pass df_ref to record_use.
19039         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
19040         used only as such.
19041
19042 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
19043
19044         * config/sh/sh.c: Do not include c-pragma.h.
19045
19046 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19047
19048         * config/spu/spu.c: Remove include of c-common.h.
19049
19050 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
19051
19052         PR c/39037
19053         * c-common.h (mark_valid_location_for_stdc_pragma,
19054         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
19055         clear_float_const_decimal64, float_const_decimal64_p): New.
19056         * c.opt (Wunsuffixed-float-constants): New.
19057         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
19058         unsuffixed float constant, handle new warning.
19059         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
19060         * c-decl.c (c_scope): New flag float_const_decimal64.
19061         (set_float_const_decimal64, clear_float_const_decimal64,
19062         float_const_decimal64_p): New.
19063         (push_scope): Set new flag.
19064         * c-parser.c (c_parser_translation_unit): Mark when it's valid
19065         to use STDC pragmas.
19066         (c_parser_external_declaration): Ditto.
19067         (c_parser_compound_statement_nostart): Ditto.
19068         * c-pragma.c (valid_location_for_stdc_pragma,
19069         mark_valid_location_for_stdc_pragma,
19070         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
19071         handle_pragma_float_const_decimal64): New.
19072         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
19073         * cp/semantics.c (valid_location_for_stdc_pragma_p,
19074         set_float_const_decimal64, clear_float_const_decimal64,
19075         float_const_decimal64_p): New dummy functions.
19076         * doc/extend.texi (Decimal Float): Remove statement that the
19077         pragma, and suffix for double constants, are not supported.
19078         * doc/invoke.texi (Warning Options): List new option.
19079         (-Wunsuffixed-float-constants): New.
19080
19081 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
19082
19083         * config/i386/i386.c: Do not include c-common.h.
19084
19085 2009-05-07  Mark Heffernan  <meheff@google.com>
19086
19087         * doc/invoke.texi (Debugging Options): Document change of debugging
19088         dump location.
19089         * opts.c (decode_options): Make dump_base_name relative to
19090         aux_base_name directory.
19091
19092 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
19093
19094         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
19095         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
19096
19097 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
19098
19099         * Makefile.in (install-plugin): Simplify a bit.
19100
19101 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
19102
19103         * Makefile.in (OBJS-common): Add regcprop.o.
19104         (regcprop.o): New.
19105         * timevar.def (TV_CPROP_REGISTERS): New.
19106         * regrename.c (regrename_optimize): Return 0.
19107         (rest_of_handle_regrename): Delete.
19108         (pass_rename_registers): Point to regrename_optimize.
19109         (struct value_data_entry, struct value_data,
19110         kill_value_one_regno, kill_value_regno, kill_value,
19111         set_value_regno, init_value_data, kill_clobbered_value,
19112         kill_set_value, kill_autoinc_value, copy_value,
19113         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
19114         replace_oldest_value_reg, replace_oldest_value_addr,
19115         replace_oldest_value_mem, copyprop_hardreg_forward_1,
19116         debug_value_data, validate_value_data): Move...
19117         * regcprop.c: ... here.
19118         (rest_of_handle_cprop): Delete.
19119         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
19120
19121 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
19122
19123         PR middle-end/40057
19124         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
19125         GEN_INT for 1 << bitnum.
19126         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
19127         build_int_cst_type.
19128
19129 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
19130
19131         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
19132         Remove wrong description of "nand" operation.
19133
19134 2009-05-06  Richard Guenther  <rguenther@suse.de>
19135             Adam Nemet  <anemet@caviumnetworks.com>
19136
19137         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
19138         comment.  Add that if LHS is not a gimple register, then RHS1 has
19139         to be a single object (GIMPLE_SINGLE_RHS).
19140
19141 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
19142
19143         * expr.c (get_def_for_expr): Move it up in the file.
19144         (store_field): When expanding a bit-field store, look at the
19145         defining gimple stmt for the masking conversion.
19146
19147 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
19148
19149         PR middle-end/39986
19150         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
19151         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
19152         32-bit memcpy into long.
19153
19154 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
19155
19156         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
19157         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
19158         new_reg_loc_descr.
19159         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
19160         instead of appending DW_OP_deref*.
19161
19162 2009-05-06  Michael Matz  <matz@suse.de>
19163
19164         PR middle-end/40021
19165         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
19166         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
19167
19168 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
19169
19170         * Makefile.in (install-plugin): Fix srcdir handling.
19171
19172 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
19173
19174         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
19175         when processing for not_regs_needed bitmap.
19176         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
19177         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
19178         handling it for rhs.
19179
19180 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
19181
19182         * config/i386/i386.md (unnamed inc/dec peephole): Use
19183         optimize_insn_for_size_p instead of optimize_size.
19184         * config/i386/predicates.md (incdec_operand): Likewise.
19185         (aligned_operand): Likewise.
19186         * config/i386/sse.md (divv8sf3): Likewise.
19187         (sqrtv8sf2): Likewise.
19188
19189 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
19190
19191         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
19192
19193         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
19194
19195 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
19196
19197         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
19198         ssemodesuffixf2c with avxmodesuffixf2c.
19199
19200 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
19201
19202         PR c/40032
19203         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
19204
19205 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
19206
19207         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
19208         (struct tree_base): Adjust spacing for 8 bit boundaries.
19209         (struct tree_decl_common): Add decl_by_reference_flag bit.
19210         (DECL_BY_REFERENCE): Adjust.
19211         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
19212         print DECL_BY_REFERENCE bit.
19213         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
19214         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
19215         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
19216         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
19217         unconditionally.
19218
19219         PR middle-end/39666
19220         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
19221         range of the type, but default label is missing, add it with one
19222         of the existing labels instead of adding a new label for it.
19223
19224 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
19225
19226         * dwarf.h: Remove.
19227
19228 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
19229
19230         * Makefile.in (enable_plugin, plugin_includedir): New.
19231         (install): Depend on install-plugin.
19232         (PLUGIN_HEADERS): New.
19233         (install-plugin): New.
19234         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
19235
19236 2009-05-05  Richard Guenther  <rguenther@suse.de>
19237
19238         PR tree-optimization/40022
19239         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
19240         the only vuse.
19241         (phivn_valid_p): Fix tuplification error, simplify.
19242         (phiprop_insert_phi): Add dumps.
19243         (propagate_with_phi): Simplify.
19244
19245 2009-05-05  Richard Guenther  <rguenther@suse.de>
19246
19247         PR middle-end/40023
19248         * builtins.c (gimplify_va_arg_expr): Properly build the address.
19249
19250 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
19251
19252         * tree.h (strip_float_extensions): Remove duplicate declaration.
19253         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
19254         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
19255         block_ultimate_origin): Rearrange the declarations line to match the
19256         comment that indicates the .c file which the functions are defined.
19257         (dwarf2out_*, set_decl_rtl): Add comment.
19258         (get_base_address): Adjust comment.
19259         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
19260         declarations line and add comment.
19261         (is_builtin_name): Add blank after function name, for clarity.
19262
19263 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
19264
19265         * attribs.c (decl_attributes): Use %qE for identifiers in
19266         diagnostics.
19267         * cgraphunit.c (verify_cgraph_node): Translate function names to
19268         locale character set in diagnostics.
19269         * coverage.c (get_coverage_counts): Use %qE for identifiers in
19270         diagnostics.
19271         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
19272         Document that functions are named in UTF-8.
19273         * expr.c (expand_expr_real_1): Translate function names to locale
19274         character set in diagnostics.
19275         * gimplify.c (omp_notice_variable, omp_is_private,
19276         gimplify_scan_omp_clauses): Use %qE for identifiers in
19277         diagnostics.
19278         * langhooks.c (lhd_print_error_function): Translate function names
19279         to locale character set.
19280         * langhooks.h (decl_printable_name): Document that return value is
19281         in internal character set.
19282         * stmt.c: Include pretty-print.h
19283         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
19284         diagnostics.
19285         (resolve_operand_name_1): Translate named operand name to locale
19286         character set.
19287         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
19288         diagnostics.
19289         * toplev.c (announce_function): Translate function names to locale
19290         character set.
19291         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
19292         (default_tree_printer): Use pp_identifier or translate identifiers
19293         to locale character set.  Mark "<anonymous>" for translation.
19294         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
19295         for identifiers in diagnostics.
19296         * tree.c (handle_dll_attribute): Use %qE for identifiers in
19297         diagnostics.
19298         * varasm.c (output_constructor): Use %qE for identifiers in
19299         diagnostics.
19300
19301 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
19302
19303         * configure.ac: use ` ` instead of $()
19304         * configure: Regenerate.
19305
19306 2009-05-05  Ben Elliston  <bje@au.ibm.com>
19307
19308         * config/pa/linux-atomic.c: Eliminate conditional include of
19309         errno.h on non-LP64 systems to simplify build requirements.
19310
19311 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
19312
19313         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
19314         diagnostics.
19315         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
19316         and pass value to identifier_to_locale.
19317         (warn_variable_length_array): Make name a tree.
19318         (grokdeclarator): Separate diagnostic texts for named and unnamed
19319         declarators.  Use %qE for named declarators.
19320         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
19321         diagnostics.
19322         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
19323         identifiers in diagnostics.
19324         * c-typeck.c (push_member_name, start_init): Pass identifiers to
19325         identifier_to_locale.  Mark "anonymous" strings for translation.
19326
19327 2009-05-04  Michael Eager <eager@eagercon.com>
19328
19329         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
19330         address for DImode/DFmode only if double-precision FP regs.
19331
19332 2009-05-04  Michael Eager <eager@eagercon.com>
19333
19334         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
19335         TARGET_SINGLE_FLOAT check.
19336
19337 2009-05-04  Michael Eager <eager@eagercon.com>
19338
19339         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
19340
19341 2009-05-04  Michael Eager <eager@eagercon.com>
19342
19343         * gcc/config.gcc (powerpc-xilinx-eabi*): Add tm t-xilinx
19344         * config/rs6000/t-xilinx: New
19345
19346 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
19347
19348         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
19349         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
19350         * gcc/explow.c (memory_address): Use target hook.
19351         * gcc/targhooks.c (default_legitimize_address): New.
19352         * gcc/targhooks.h (default_legitimize_address): New.
19353         * gcc/target.h (legitimize_address): New.
19354         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
19355         (TARGET_INITIALIZER): Include it.
19356         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
19357
19358         * config/bfin/bfin-protos.h (legitimize_address): Remove.
19359         * config/bfin/bfin.c (legitimize_address): Remove.
19360         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
19361         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
19362         Remove.
19363         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
19364         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
19365
19366         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
19367         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
19368         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
19369         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
19370         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
19371         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
19372         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
19373         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
19374         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
19375         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
19376         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
19377         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
19378         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
19379         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
19380         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
19381         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
19382         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
19383         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
19384         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
19385         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
19386         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
19387         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
19388         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
19389
19390         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
19391         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
19392         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
19393         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
19394         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
19395         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
19396         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
19397         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
19398         (thumb_legitimize_address): Delete.
19399         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
19400         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
19401         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
19402         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
19403         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
19404         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
19405         Delete.
19406         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
19407         Delete.
19408
19409         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
19410         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
19411         * config/m32r/m32r.c (m32r_legitimize_address): New.
19412         * config/m68k/m68k.c (m68k_legitimize_address): New.
19413         * config/score/score.c (score_legitimize_address): Standardize.
19414         * config/score/score3.c (score3_legitimize_address): Standardize.
19415         * config/score/score3.h (score3_legitimize_address): Adjust.
19416         * config/score/score7.c (score7_legitimize_address): Standardize.
19417         * config/score/score7.h (score7_legitimize_address): Adjust.
19418         * config/sh/sh.c (sh_legitimize_address): New.
19419         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
19420
19421         * gcc/config/s390/s390.c (legitimize_address): Rename to...
19422         (s390_legitimize_address): ... this.
19423         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
19424         (sparc_legitimize_address): ... this.
19425         * gcc/config/i386/i386.c (legitimize_address): Rename to...
19426         (ix86_legitimize_address): ... this.
19427         * gcc/config/avr/avr.c (legitimize_address): Rename to...
19428         (avr_legitimize_address): ... this.
19429         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
19430         (mn10300_legitimize_address): ... this.
19431         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
19432         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
19433         (alpha_expand_mov): Adjust call.
19434
19435         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
19436         * config/spu/spu.c (spu_legitimize_address): Likewise.
19437         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
19438         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
19439
19440 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
19441
19442         * intl.c (locale_encoding, locale_utf8): New.
19443         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
19444         * intl.h (locale_encoding, locale_utf8): Declare.
19445         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
19446         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
19447         New.
19448         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
19449         argument.
19450         (pp_tree_identifier): Define to call pp_base_tree_identifier.
19451         (pp_base_tree_identifier): Declare as function.
19452         (identifier_to_locale): Declare.
19453         * Makefile.in (pretty-print.o): Update dependencies.
19454         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
19455
19456 2009-05-04  Richard Guenther  <rguenther@suse.de>
19457
19458         PR middle-end/40015
19459         * builtins.c (fold_builtin_memory_op): Do not decay to element
19460         type if the size matches the whole array.
19461
19462 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
19463
19464         * expmed.c (synth_mult): When trying out a shift, pass the result
19465         of a signed shift.
19466
19467 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
19468
19469         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
19470         (shiftsub1_cost): New.
19471         (init_expmed): Compute shiftsub1_cost.
19472         (synth_mult): Optimize multiplications by constants of the form
19473         -(2^^m-1) for some constant positive integer m.
19474
19475 2009-05-03  Richard Guenther  <rguenther@suse.de>
19476
19477         PR c/39983
19478         * c-typeck.c (array_to_pointer_conversion): Do not built
19479         ADDR_EXPRs of arrays of pointer-to-element type.
19480         * c-gimplify.c (c_gimplify_expr): Revert change fixing
19481         up wrong ADDR_EXPRs after-the-fact.
19482         * c-common.c (strict_aliasing_warning): Strip pointer
19483         conversions for obtaining the original type.
19484         * builtins.c (fold_builtin_memset): Handle array types.
19485         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
19486         and array types
19487
19488 2009-05-03  Richard Guenther  <rguenther@suse.de>
19489
19490         PR middle-end/23329
19491         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
19492         Do not lose casts from array types with unknown extent to array
19493         types with known extent.
19494         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
19495         alias set compatibility.
19496
19497 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19498
19499         * flags.h (extra_warnings): Delete.
19500         * toplev.c (process_options): Handle Wuninitialized here.
19501         * opts.c (extra_warnings): Delete.
19502         (set_Wextra): Delete.
19503         (common_handle_option): -Wextra can be handled automatically.
19504         * c-opts.c (c_common_handle_option): Delete obsolete code.
19505         (c_common_post_options): Simplify comment.
19506         * common.opt (W): Add Var.
19507         (Wextra): Add Var.
19508         (Wuninitialized): Initialize to -1.
19509
19510 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
19511             Richard Guenther  <rguenther@suse.de>
19512
19513         * expr.c (get_def_for_expr): New function.
19514         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
19515         SSA rather than trees.
19516         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
19517         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
19518
19519 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
19520
19521         * c-common.c (reswords): Add _Imaginary.
19522         * c-common.c (enum rid): Add RID_IMAGINARY.
19523
19524 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
19525
19526         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
19527         Patch by Richard Guenther.
19528
19529 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
19530
19531         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
19532         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
19533         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
19534         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
19535         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
19536         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
19537         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
19538         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
19539         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
19540         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
19541         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
19542         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
19543         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
19544         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
19545         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
19546         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
19547         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
19548         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
19549
19550 2009-05-02  Richard Guenther  <rguenther@suse.de>
19551
19552         PR tree-optimization/39940
19553         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
19554         doing so.
19555
19556 2009-05-02  Richard Guenther  <rguenther@suse.de>
19557
19558         PR middle-end/40001
19559         * tree-ssa.c (execute_update_addresses_taken): Properly check
19560         if we can mark a variable DECL_GIMPLE_REG_P.
19561         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
19562         back to the end of the function.
19563         (is_gimple_reg_type): Remove complex type special casing.
19564         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
19565         if not optimizing.
19566
19567 2009-05-02  Ben Elliston  <bje@au.ibm.com>
19568
19569         * doc/collect2.texi (Collect2): Document search path behaviour
19570         when configured with --with-ld.
19571
19572 2009-05-02  Jan Hubicka  <jh@suse.cz>
19573
19574         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
19575         parameter; update callers.
19576         (coalesce_cost_edge): EH edges are costier because they needs
19577         splitting even if not critical and even more costier when there are
19578         multiple EH predecestors.
19579
19580 2009-05-02  Jan Hubicka  <jh@suse.cz>
19581
19582         * except.c (remove_eh_handler_and_replace): Handle updating after
19583         removing TRY blocks.
19584
19585 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
19586
19587         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
19588
19589 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
19590
19591         * varasm.c: Do not include c-pragma.h.
19592         * attribs.c: Do not incude c-common.h.
19593
19594 2009-05-01  Michael Matz  <matz@suse.de>
19595
19596         * calls.c (initialize_argument_information): Handle SSA names like
19597         decls with a non MEM_P DECL_RTL.
19598
19599 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
19600
19601         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
19602         * ipa-utils.c: Likewise.
19603         * ipa-type-escape.c: Likewise.
19604         * cgraphunit.c Do not include c-common.h.
19605         * ipa-pure-const.c: Likewise.
19606         * tree-if-conv.c: Likewise.
19607         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
19608         * ipa-struct-reorg.c: Likewise.
19609         * tree-nomudflap.c: Likewise.
19610         * tree-ssa-structalias.c: Likewise.
19611
19612 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
19613
19614         * store-motion.c: Many cleanups to make this pass a first-class
19615         citizen instead of an appendix to gcse load motion.  Add TODO list
19616         to make this pass faster/cleaner/better.
19617
19618         (struct ls_expr): Post gcse.c-split cleanups.
19619         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
19620         "stores" field to "avail_stores".
19621         (pre_ldst_mems): Rename to store_motion_mems.
19622         (pre_ldst_table): Rename to store_motion_mems_table.
19623         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
19624         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
19625         (ldst_entry): Rename to st_expr_entry, update users.
19626         (free_ldst_entry): Rename to free_st_expr_entry, update users.
19627         (free_ldst_mems): Rename to free_store_motion_mems, update users.
19628         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
19629         update caller.
19630         (first_ls_expr): Rename to first_st_expr, update users.
19631         (next_ls_expr): Rename to next_st_expr, update users.
19632         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
19633         fields properly for store motion instead of names inherited from load
19634         motion in gcse.c.
19635         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
19636         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
19637         are done with it.
19638
19639         (ae_kill): Rename to st_kill, update users.
19640         (ae_gen): Rename to st_avloc, update users.
19641         (transp): Rename to st_transp, update users.
19642         (pre_insert_map): Rename to st_insert_map, update users.
19643         (pre_delete_map): Rename to st_delete_map, update users.
19644         (insert_store, build_store_vectors, free_store_memory,
19645         one_store_motion_pass): Update for abovementioned changes.
19646
19647         (gcse_subst_count, gcse_create_count): Remove.
19648         (one_store_motion_pass): New statistics counters "n_stores_deleted"
19649         and "n_stores_created", local variables.
19650
19651         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
19652         use for_each_rtx.
19653
19654         (regvec, compute_store_table_current_insn): Remove.
19655         (reg_set_info, reg_clear_last_set): Remove.
19656         (compute_store_table): Use DF caches instead of local dataflow
19657         solvers.
19658
19659 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
19660
19661         * c-objc-common.c (c_tree_printer): Print identifiers with
19662         pp_identifier, not pp_string.  Mark "({anonymous})" for
19663         translation.
19664         * c-pretty-print.c (pp_c_ws_string): New.
19665         (pp_c_cv_qualifier, pp_c_type_specifier,
19666         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
19667         pp_c_storage_class_specifier, pp_c_function_specifier,
19668         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
19669         pp_c_primary_expression, pp_c_postfix_expression,
19670         pp_c_unary_expression, pp_c_shift_expression,
19671         pp_c_relational_expression, pp_c_equality_expression,
19672         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
19673         use pp_string and pp_c_ws_string in place of pp_identifier and
19674         pp_c_identifier for non-identifiers.  Mark English strings for
19675         translation.
19676         * c-pretty-print.h (pp_c_ws_string): Declare.
19677
19678 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
19679             Roland McGrath <roland@redhat.com>
19680
19681         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
19682         (ENABLE_LD_BUILDID): New configuration option.
19683         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
19684         (LINK_BUILDID_SPEC): New macro.
19685         (init_spec): If defined, prepend it between LINK_EH_SPEC and
19686         link_spec.
19687         * doc/install.texi: Document --enable-linker-build-id option.
19688         * configure: Rebuild.
19689         * config.in: Rebuild.
19690
19691 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
19692
19693         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
19694         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
19695         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
19696         MIPS_GP_SAVE_AREA_SIZE.
19697         * config/mips/mips.c (struct mips_frame_info): Update comment
19698         before arg_pointer_offset and hard_frame_pointer_offset.
19699         (mips_compute_frame_info): Update diagram before function: to
19700         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
19701         indicate the position of frame_pointer_rtx with -fstack-protector and
19702         to show args_size.  Don't allocate cprestore area for leaf functions
19703         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
19704         cprestore_size.
19705         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
19706
19707 2009-04-30  Michael Matz  <matz@suse.de>
19708
19709         PR tree-optimization/39955
19710         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
19711
19712 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
19713
19714         * ira.c (setup_cover_and_important_classes):  Use safe macro
19715         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
19716         directly.
19717         * genpreds.c (write_tm_preds_h):  Output suitable definition of
19718         REG_CLASS_FOR_CONSTRAINT.
19719
19720 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
19721
19722         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
19723         instead of an int.
19724         * bitmap.c (bitmap_descriptor): Likewise.
19725         * ggc-common.c (loc_descriptor): Likewise.
19726         * varray.c (varray_descriptor): Likewise.
19727         * vec.c (vec_descriptor): Likewise.
19728
19729 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
19730
19731         * Makefile.in (dce.o): Add $(EXCEPT_H).
19732         * dce.c: Include except.h and delete redundant vector definitions.
19733         (deletable_insn_p): Return false for non-call insns that can throw
19734         if DF is running.
19735
19736 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
19737
19738         * gcse.c (ae_gen): Remove.
19739         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
19740         and make non-static function to make it available in store-motion.c.
19741         Update call sites with search-and-replace.
19742         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
19743         extract_mentioned_regs, extract_mentioned_regs_helper,
19744         find_moveable_store, compute_store_table, load_kills_store, find_loads,
19745         store_killed_in_insn, store_killed_after, store_killed_before,
19746         build_store_vectors, insert_insn_start_basic_block, insert-store,
19747         remove_reachable_equiv_notes, replace_store_insn, delete_store,
19748         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
19749         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
19750         * store-motion.c: ...new file.  Also copy data structures from gcse.c
19751         and clean up to remove parts not used by store motion.
19752         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
19753         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
19754
19755 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19756
19757         PR target/38571
19758         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
19759         when optimizing for size.
19760
19761 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
19762
19763         * gcse.c (gcse_constant_p): Fix typo in last change.
19764
19765 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
19766
19767         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
19768
19769 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
19770
19771         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
19772
19773 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
19774
19775         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
19776         CONST_HIGH_PART result.
19777
19778 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
19779
19780         * config/avr/avr.c (initial_elimination_offset): Rename to
19781         avr_initial_elimination_offset.
19782         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
19783         change return type to bool.
19784         (avr_can_eliminate): New function.
19785         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
19786         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
19787         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
19788         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
19789         avr_initial_elimination_offset.
19790         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
19791         (avr_initial_elimination_offset): Define.
19792
19793 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
19794             Steven Bosscher  <steven@gcc.gnu.org>
19795
19796         PR rtl-optimization/39938
19797         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
19798         * cfgrtl.c: Include insn-attr.h.
19799         (rest_of_pass_free_cfg): New function.
19800         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
19801         * resource.c (init_resource_info): Remove call to df_analyze.
19802
19803 2009-04-29  Richard Guenther  <rguenther@suse.de>
19804
19805         PR target/39943
19806         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
19807         allow conversion to signed integers.
19808
19809 2009-04-29  Richard Guenther  <rguenther@suse.de>
19810
19811         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
19812         shifts of floating point vectors if the shift amount is
19813         a constant multiple of the element size.
19814
19815 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
19816             Michael Matz  <matz@suse.de>
19817
19818         PR middle-end/39927
19819         PR bootstrap/39929
19820         * tree-outof-ssa.c (emit_partition_copy): New function.
19821         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
19822         insert_part_to_rtx_on_edge): Perform the partition base var
19823         copy using emit_partition_copy.
19824         (insert_value_copy_on_edge): Convert constants to the right mode.
19825         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
19826         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
19827
19828 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
19829
19830         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
19831         scan backwards to try to find a constant to initialize it.
19832
19833         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
19834         insn before the loop_end instruction, don't look past labels.
19835
19836 2009-04-29  Richard Guenther  <rguenther@suse.de>
19837
19838         PR middle-end/39937
19839         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
19840         loose type conversions.
19841         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
19842         stmts only if there are no uses of its definition.
19843
19844 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
19845
19846         * config/bfin/bfin.h (splitting_loops): Declare.
19847         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
19848         Reorder bit definitions to be ascending.
19849         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
19850         * config/bfin/bfin.c (splitting_loops): New variable.
19851         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
19852         (struct loop_info): Remove members INIT and LOOP_INIT.
19853         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
19854         the LSETUP sequence.  Allow LC to be loaded from any register, but
19855         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
19856         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
19857         set to 1.
19858         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
19859         of reload_completed.
19860
19861         From Jie Zhang:
19862         * config/bfin/bfin.md (movsi_insn): Refine constraints.
19863
19864 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
19865
19866         * Makefile.in (PLUGIN_VERSION_H): New.
19867         (OBJS-common): Remove plugin-version.o.
19868         (plugin.o): Depend on (PLUGIN_VERSION_H).
19869         (plugin-version.o): Remove.
19870         * configure: Regenerate
19871         * configure.ac: Create plugin-version.h.
19872         * gcc-plugin.h (plugin_gcc_version): Remove.
19873         (plugin_default_version_check): Change signature.
19874         * plugin-version.c: Remove.
19875         * plugin.c: Include plugin-version.h.
19876         (str_plugin_gcc_version_name): Remove.
19877         (try_init_one_plugin): Pass gcc version to plugin_init.
19878         (plugin_default_version_check): Both gcc and plugin versions are now
19879         arguments.
19880
19881 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
19882
19883         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
19884         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
19885         Remove special case testing for last insn of inner loops. Don't fail
19886         if the loop ends with a jump, emit an extra nop instead.
19887
19888         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
19889         DREGS rather than comparing directly.  Remove code that tries to
19890         account for latencies.
19891
19892 2009-04-29  Richard Guenther  <rguenther@suse.de>
19893
19894         PR tree-optimization/39941
19895         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
19896         eliminating an indirect call.
19897
19898 2009-04-29  Richard Guenther  <rguenther@suse.de>
19899
19900         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
19901         parameter.  Allow invariants as base if !require_lvalue.
19902         (verify_gimple_assign_single): Adjust.
19903
19904 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
19905
19906         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
19907         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
19908         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
19909         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
19910         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
19911         a VEC_SELECT.
19912         * config/bfin/bfin.c (bfin_expand_builtin,
19913         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
19914
19915 2009-04-28  Richard Guenther  <rguenther@suse.de>
19916
19917         * tree-vect-loop.c (get_initial_def_for_induction): Use
19918         correct types for pointer increment.
19919
19920 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19921
19922         * toplev.c (print_version): Update GMP version string calculation.
19923
19924 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
19925
19926         PR rtl-optimization/39938
19927         * resource.c (init_resource_info): Add call to df_analyze.
19928
19929 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
19930
19931         * config/alpha/alpha.md (usegp): Cast the result of
19932         alpha_find_lo_sum_using_gp to enum attr_usegp.
19933         * config/alpha/alpha.c (override_options): Remove end-of-structure
19934         marker element from cpu_table.  Use array size of cpu_table to handle
19935         -mcpu and -mtune options.
19936         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
19937
19938 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
19939
19940         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
19941         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
19942         tune_32 and tune_64.
19943         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
19944         support on PowerPC.
19945         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
19946         * config/rs6000/option-defaults.h: ... here.  New file.
19947         (OPT_64, OPT_32): Define.
19948         (MASK_64BIT): Define to 0 if not already defined.
19949         (OPT_ARCH64, OPT_ARCH32): Define.
19950         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
19951         and tune_64.
19952
19953 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19954
19955         * config/arm/arm.c (arm_override_options): Emit error on using
19956         fpa with AAPCS.
19957
19958 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
19959
19960         PR rtl-optimization/39914
19961         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
19962         registers for allocnos created from user-defined variables only
19963         when not optimizing.
19964
19965 2009-04-28  Richard Guenther  <rguenther@suse.de>
19966
19967         PR middle-end/39937
19968         * fold-const.c (fold_binary): Use distribute_real_division only
19969         on float types.
19970
19971 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
19972
19973         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
19974         add hpux-stdint.h to tm_file.
19975         (hppa[12]*-*-hpux11*): Ditto.
19976         (ia64*-*-hpux*): Ditto.
19977         * config/hpux-stdint.h: New.
19978         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
19979         __STDC_EXT__ for all compiles.
19980         * config/pa/pa-hpux.h: Ditto.
19981         * config/pa/pa-hpux10.h: Ditto.
19982         * config/pa/pa-hpux11.h: Ditto.
19983
19984 2009-04-28  Catherine Moore  <clm@codesourcery.com>
19985
19986         * debug.h (set_name): Add comment.
19987
19988 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
19989
19990         PR target/39929
19991         * config/darwin.c (machopic_gen_offset): Check
19992         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
19993         * config/arm/arm.c (require_pic_register): Likewise.
19994
19995 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
19996
19997         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
19998         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
19999         m32c_promote_prototypes): Delete.
20000
20001 2009-04-28  Michael Matz  <matz@suse.de>
20002
20003         PR middle-end/39922
20004         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
20005         constants.
20006
20007 2009-04-28  Richard Guenther  <rguenther@suse.de>
20008
20009         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
20010
20011 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
20012
20013         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
20014         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
20015         * config/arm/arm-tune.md: Regenerate.
20016
20017 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
20018
20019         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
20020         block if there are complex incoming edges.
20021         (sel_merge_blocks): Remove useless assert.
20022         (sel_redirect_edge_and_branch): Check that edge was redirected.
20023         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
20024         (sel_find_rgns): Delete declaration.
20025         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
20026         the region when it is not a preheader.
20027
20028 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
20029
20030         PR c/39323
20031         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
20032
20033 2009-04-28  Richard Guenther  <rguenther@suse.de>
20034
20035         * tree.h (SSA_NAME_VALUE): Remove.
20036         (struct tree_ssa_name): Remove value_handle member.
20037         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
20038         array for jump threading.
20039         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
20040         SSA_NAME_VALUEs.
20041         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
20042         * tree-flow.h (threadedge_initialize_values): Declare.
20043         (threadedge_finalize_values): Likewise.
20044         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
20045         (SSA_NAME_VALUE): Define.
20046         (threadedge_initialize_values): New function.
20047         (threadedge_finalize_values): Likewise.
20048         * tree-ssa-dom.c (ssa_name_values): New global variable.
20049         (SSA_NAME_VALUE): Define.
20050         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
20051
20052 2009-04-28  Ira Rosen  <irar@il.ibm.com>
20053
20054         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
20055         Use REPORT_VECTORIZED_LOCATIONS instead
20056         REPORT_VECTORIZED_LOOPS.
20057         * tree-vectorizer.c (vect_verbosity_level): Make static.
20058         (vect_loop_location): Rename to vect_location.
20059         (vect_set_verbosity_level): Update comment.
20060         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
20061         and vect_location.
20062         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
20063         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
20064         instead REPORT_UNVECTORIZED_LOOPS.
20065         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
20066         and vect_loop_def to vect_external_def and vect_internal_def.
20067         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
20068         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
20069         REPORT_UNVECTORIZED_LOCATIONS.
20070         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
20071         and vect_used_in_loop and to vect_unused_in_scope and
20072         vect_used_in_scope.
20073         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
20074         (vect_verbosity_level): Remove declaration.
20075         (vect_analyze_operations): Likewise.
20076         (vect_analyze_stmt): Declare.
20077         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
20078         REPORT_UNVECTORIZED_LOCATIONS.
20079         (vect_get_loop_niters): Fix indentation.
20080         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
20081         (vect_analyze_loop_operations): New function.
20082         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
20083         vect_analyze_operations.
20084         (vect_is_simple_reduction): Use new names.
20085         (vectorizable_live_operation, vect_transform_loop): Likewise.
20086         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
20087         to specify whether the data references can be a part of interleaving
20088         chain.
20089         (vect_analyze_data_ref_dependence): Use new names.
20090         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
20091         (vect_create_addr_base_for_vector_ref): Remove redundant code.
20092         * tree-vect-patterns.c (widened_name_p): Use new names.
20093         (vect_recog_dot_prod_pattern): Likewise.
20094         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
20095         (process_use, vect_mark_stmts_to_be_vectorized,
20096         vect_model_simple_cost, vect_model_store_cost,
20097         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
20098         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
20099         vectorizable_operation, vectorizable_type_demotion,
20100         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
20101         vectorizable_condition): Likewise.
20102         (vect_analyze_operations): Split into vect_analyze_loop_operations
20103         and ...
20104         (vect_analyze_stmt): ... new function.
20105         (new_stmt_vec_info): Use new names.
20106         (vect_is_simple_use): Use new names and fix comment.
20107         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
20108         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
20109
20110 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
20111
20112         PR target/39911
20113         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
20114         and integer modes for x87 operands.  Do not ICE for unsupported size,
20115         generate error instead.  Generate error for unsupported operand types.
20116         ['z']: Do not handle HImode memory operands specially.  Warning
20117         for floating-point operands.  Fallthru to 'Z' for unsupported operand
20118         types.  Do not ICE for unsupported size, generate error instead.
20119         (output_387_binary_op): Use %Z to output operands.
20120         (output_fp_compare): Ditto.
20121         (output_387_reg_move): Ditto.
20122
20123 2009-04-28  Ben Elliston  <bje@au.ibm.com>
20124
20125         PR c++/35652
20126         Revert:
20127
20128         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20129
20130         * builtins.c (c_strlen): Do not warn here.
20131         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
20132         * c-common.c (pointer_int_sum): Take an explicit location.
20133         Warn about offsets out of bounds.
20134         * c-common.h (pointer_int_sum): Adjust declaration.
20135
20136 2009-04-27  Ian Lance Taylor  <iant@google.com>
20137
20138         * collect2.c (is_ctor_dtor): Change type of ret field in struct
20139         names to symkind.
20140         * dce.c (run_fast_df_dce): Change type of old_flags to int.
20141         * df-core.c (df_set_flags): Change return type to int.  Change
20142         type of old_flags to int.
20143         (df_clear_flags): Likewise.
20144         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
20145         (df_get_conditional_uses): Likewise.
20146         * df.h (df_set_flags, df_clear_flags): Update declarations.
20147         * dwarf2out.c (struct indirect_string_node): Change type of form
20148         field to enum dwarf_form.
20149         (AT_string_form): Change return type to enum dwarf_form.
20150         * fixed-value.c (fixed_compare): Add cast to enum type.
20151         * fwprop.c (update_df): Change 0 to VOIDmode.
20152         * gensupport.c: Change 0 to UNKNOWN.
20153         * gimple.h (gimple_cond_code): Add cast to enum type.
20154         * haifa-sched.c (reemit_notes): Add cast to enum type.
20155         * hooks.c (hook_int_void_no_regs): Remove function.
20156         * hooks.h (hook_int_void_no_regs): Remove declaration.
20157         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
20158         * predict.c (combine_predictions_for_insn): Add casts to enum type.
20159         * real.c (real_arithmetic): Add cast to enum type.
20160         (real_compare): Likewise.
20161         * target.h (struct gcc_target): Change return type of
20162         branch_target_register_class to enum reg_class.
20163         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
20164         default_branch_target_register_class.
20165         * targhooks.c (default_branch_target_register_class): New function.
20166         * targhooks.h (default_branch_target_register_class): Declare.
20167         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
20168         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
20169         cast to int.
20170         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
20171         ERROR_MARK.
20172         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
20173         vect_uninitialized_def.  Change 0 to ERROR_MARK.
20174         * tree-vect-stmts.c (supportable_widening_operation): Don't
20175         initialize icode1 and icode2.
20176         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
20177         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
20178         and to STD_C89.
20179         (cmn_err_flag_specs): Change 0 to STD_C89.
20180         (cmn_err_char_table): Likewise.
20181         * config/arm/arm.c (get_arm_condition_code): Change type of code
20182         to enum arm_cond_code.
20183         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
20184         (IWMMXT_BUILTIN2): Likewise.
20185         (neon_builtin_type_bits): Don't define typedef.
20186         (neon_builtin_datum): Change type of bits field to int.
20187         (arm_expand_neon_args): Add cast to enum type.
20188         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
20189         TLS_MODEL_NONE.
20190         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
20191         casts to enum type.
20192         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
20193         MIPS_FP_COND_f.
20194         * config/mips/mips.md (jal_macro): Return enum constant.
20195         (single_insn): Likewise.
20196         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
20197         CODE_FOR_nothing.
20198         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
20199         casts to enum type.
20200         * config/s390/s390.c (s390_tune_flags): Change type to int.
20201         (s390_arch_flags): Likewise.
20202         (s390_handle_arch_option): Change flags field of struct pta to int.
20203         * config/s390/s390.h (s390_tune_flags): Update declaration.
20204         (s390_arch_flags): Likewise.
20205         * config/sh/sh.c (prepare_move_operands): Compare
20206         tls_symbolic_operand result with enum constant.
20207         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
20208         (sh_expand_prologue): Add cast to enum type.
20209         (sh_expand_epilogue): Likewise.
20210         (tls_symbolic_operand): Change return type to enum tls_model.
20211         (fpscr_set_from_mem): Add cast to enum type.
20212         (legitimize_pic_address): Compare tls_symbolic_operand result with
20213         enum constant.
20214         (sh_target_reg_class): Change return type to enum reg_class.
20215         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
20216         PROCESSOR_xxx.
20217         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
20218         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
20219         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
20220         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
20221         (delayed_branch, tls_call_delay): Likewise.
20222         (eligible_for_sibcall_delay): Likewise.
20223         (eligible_for_return_delay): Likewise.
20224         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
20225         (spu_expand_builtin_1): Likewise.
20226
20227         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
20228         for all types of conversions.
20229         (output_init_element): Issue -Wc++-compat warning if needed when
20230         initializing a bitfield with enum type.
20231         * c-parser.c (c_parser_expression): Set original_type to
20232         original_type of right hand operand of comma operator.
20233
20234 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20235
20236         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
20237         grammar nits.
20238         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
20239         * doc/cpp.texi (Standard Predefined Macros)
20240         (Implementation-defined behavior): Likewise.
20241         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
20242         * doc/gimple.texi (GIMPLE Exception Handling)
20243         (@code{GIMPLE_ASSIGN}): Likewise.
20244         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
20245         * doc/invoke.texi (Warning Options, Optimize Options)
20246         (AVR Options, Darwin Options): Likewise.
20247         (Optimize Options): Reformulate -fwhole-program description.
20248         * doc/loop.texi (Lambda): Likewise.
20249         * doc/md.texi (Output Template, Define Constraints)
20250         (Standard Names, Insn Splitting): Likewise.
20251         * doc/options.texi (Option properties): Likewise.
20252         * doc/passes.texi (Tree-SSA passes): Likewise.
20253         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
20254         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
20255         (File Names and DBX): Likewise.
20256         * doc/trouble.texi (Incompatibilities): Likewise.
20257
20258 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
20259
20260         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
20261         instruction is correct.
20262
20263 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
20264
20265         Allow non-constant arguments to conversion intrinsics.
20266         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
20267         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
20268         * spu.c (print_operand): Handle 'v' and 'w'.
20269         (exp2_immediate_p, spu_gen_exp2): Define.
20270         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
20271         spu_convtf_1): Update parameter descriptions.
20272         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
20273         * constraints.md ('v', 'w'): New.
20274         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
20275         Remove.
20276         (i2f, I2F): New define_mode_attr.
20277         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
20278         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
20279         fixuns_truncv4sfv4si2):  Update to use mode attribute.
20280         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
20281         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
20282         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
20283         patterns for combine.
20284
20285 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
20286
20287         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
20288         (cprop, hoist, pre, store_motion): New debug counters.
20289         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
20290         is not an RTL pass anymore.
20291         (pass_profiling): Remove extern decl for pass removed in 2005.
20292         (pass_gcse, pass_jump_bypass): Remove.
20293         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
20294         to 0 for clean state.
20295         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
20296         * cse.c (gate_handle_cse_after_global_opts,
20297         rest_of_handle_cse_after_global_opts): New functions.
20298         (pass_cse_after_global_opts): New pass, does local CSE.
20299         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
20300         (TV_CPROP): New timevar.
20301         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
20302         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
20303         (gcse_main, recompute_all_luids): Remove.
20304         (compute_hash_table_work): Call max_reg_num instead of reading
20305         max_gcse_regno.
20306         (cprop_jump): Don't set run_jump_opt_after_gcse.
20307         (constprop_register): Always allow to alter jumps.
20308         (cprop_insn): Likewise.
20309         (do_local_cprop): Likewise.
20310         (local_cprop_pass): Likewise.  Return non-zero if something changed.
20311         (cprop): Remove function, fold interesting bits into one_cprop_pass.
20312         (find_implicit_sets): Add note about missed optimization opportunity.
20313         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
20314         pass_rtl_cprop execute function.
20315         Don't bother tracking the pass number, each pass gets its own dumpfile
20316         now anyway.
20317         Always allow to alter jumpsand bypass jumps.
20318         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
20319         will just find no suitable set.
20320         (pre_edge_insert): Fix dumping, this function is for PRE only.
20321         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
20322         pass_rtl_pre execute function.
20323         (hoist_code): Return non-zero if something changed.  Keep track of
20324         substitutions and insertions for statistics gathering similar to PRE.
20325         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
20326         called from the pass_rtl_hoist execute function.  Show pass statistics.
20327         (compute_store_table): Use max_reg_num directly instead of using the
20328         formerly global max_gcse_regno.
20329         (build_store_vectors): Likewise.
20330         (replace_store_insn): Fix dumping.
20331         (store_motion): Rename to ...
20332         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
20333         pass, called from the pass_rtl_store_motion execute function.  Keep
20334         track of substitutions and insertions for statistics gathering similar
20335         to PRE.
20336         (bypass_jumps): Remove, fold interesting bits into ...
20337         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
20338         from the pass_rtl_cprop execute function.
20339         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
20340         pass_jump_bypass): Remove.
20341         (gate_handle_gcse, rest_of_handle_gcse): Remove.
20342         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
20343         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
20344         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
20345         (gate_rtl_store_motion, execute_rtl_store_motion,
20346         pass_rtl_store_motion): New.
20347         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
20348         make it clear that -fcse-skip-blocks is a no-op for backward compat.
20349         * passes.c (init_optimization_passes): Remove pass_gcse and
20350         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
20351         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
20352         instead of pass_jump_bypass.
20353
20354 2009-04-27  Richard Guenther  <rguenther@suse.de>
20355
20356         PR middle-end/39928
20357         * gimplify.c (gimplify_expr): If we are required to create
20358         a temporary make sure it ends up as register.
20359
20360 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
20361
20362         PR target/39903
20363         * config/i386/i386.c (construct_container): Don't call
20364         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
20365         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
20366
20367 2009-04-27  Michael Matz  <matz@suse.de>
20368
20369         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
20370         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
20371         * tree-ssa-live.h (find_replaceable_exprs): Return a bitmap.
20372         (dump_replaceable_exprs): Take a bitmap.
20373         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
20374         array.
20375         (expand_gimple_basic_block): Likewise.
20376         * tree-ssa-ter.c (struct temp_expr_table_d): Make
20377         replaceable_expressions member a bitmap.
20378         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
20379         (mark_replaceable): Likewise.
20380         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
20381         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
20382
20383 2009-04-27  Richard Guenther  <rguenther@suse.de>
20384
20385         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
20386         (verify_stmts): Dispatch to gimple/type verification code.
20387         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
20388         issue with call argument types.
20389
20390 2009-04-27  Michael Matz  <matz@suse.de>
20391
20392         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
20393         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
20394         to above.
20395
20396 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
20397             Eric Botcazou  <ebotcazou@adacore.com>
20398
20399         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
20400         a label's basic block.
20401         (mark_target_live_regs): Tidy and rework obsolete comments.
20402         Change back DF problem to LIVE.  If a label starts a basic block,
20403         assume that all registers that used to be live then still are.
20404         (init_resource_info): If a label starts a basic block, set its
20405         BLOCK_FOR_INSN accordingly.
20406         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
20407
20408 2009-04-27  Richard Guenther  <rguenther@suse.de>
20409
20410         * tree-flow-inline.h (function_ann): Remove.
20411         (get_function_ann): Likewise.
20412         * tree-dfa.c (create_function_ann): Remove.
20413         * tree-flow.h (struct static_var_ann_d): Remove.
20414         (struct function_ann_d): Likewise.
20415         (union tree_ann_d): Remove fdecl member.
20416         (function_ann_t): Remove.
20417         (function_ann, get_function_ann, create_function_ann): Remove
20418         declarations.
20419
20420 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
20421
20422         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
20423
20424 2009-04-27  Jan Hubicka  <jh@suse.cz>
20425
20426         * ipa-pure-const.c (struct funct_state_d): New fields
20427         state_previously_known, looping_previously_known; remove
20428         state_set_in_source.
20429         (analyze_function): Use new fields.
20430         (propagate): Avoid assumption that state_set_in_source imply
20431         nonlooping.
20432
20433         * tree-ssa-loop-niter.c (finite_loop_p): New function.
20434         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
20435         * cfgloop.h (finite_loop_p): Declare.
20436
20437 2009-04-26  Michael Matz  <matz@suse.de>
20438
20439         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
20440
20441 2009-04-26  Michael Matz  <matz@suse.de>
20442
20443         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
20444         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
20445         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
20446         pass_mark_used_blocks): Remove.
20447         * tree-optimize.c (pass_free_datastructures,
20448         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
20449         * passes.c (init_optimization_passes): Don't call
20450         pass_mark_used_blocks, remove dead code.
20451
20452 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
20453
20454         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
20455         * tree-ssa-live.h (register_ssa_partition): Likewise.
20456
20457 2009-04-26  Michael Matz  <matz@suse.de>
20458
20459         Expand from SSA.
20460         * builtins.c (fold_builtin_next_arg): Handle SSA names.
20461         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
20462         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
20463         SSA names.
20464         (compare_pairs): Swap cost comparison.
20465         (coalesce_ssa_name): Don't use change_partition_var.
20466         * tree-nrv.c (struct nrv_data): Add modified member.
20467         (finalize_nrv_r): Set it.
20468         (tree_nrv): Use it to update statements.
20469         (pass_nrv): Require PROP_ssa.
20470         * tree-mudflap.c (mf_decl_cache_locals,
20471         mf_build_check_statement_for): Use make_rename_temp.
20472         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
20473         * alias.c (find_base_decl): Handle SSA names.
20474         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
20475         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
20476         * rtl.h (set_reg_attrs_for_parm): Declare.
20477         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
20478         to "optimized", remove unused locals at finish.
20479         (execute_free_datastructures): Make global, call
20480         delete_tree_cfg_annotations.
20481         (execute_free_cfg_annotations): Don't call
20482         delete_tree_cfg_annotations.
20483
20484         * ssaexpand.h: New file.
20485         * expr.c (toplevel): Include ssaexpand.h.
20486         (expand_assignment): Handle SSA names the same as register variables.
20487         (expand_expr_real_1): Expand SSA names.
20488         * cfgexpand.c (toplevel): Include ssaexpand.h.
20489         (SA): New global variable.
20490         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
20491         (SSAVAR): New macro.
20492         (set_rtl): New helper function.
20493         (add_stack_var): Deal with SSA names, use set_rtl.
20494         (expand_one_stack_var_at): Likewise.
20495         (expand_one_stack_var): Deal with SSA names.
20496         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
20497         before unique numbers.
20498         (expand_stack_vars): Use set_rtl.
20499         (expand_one_var): Accept SSA names, add asserts for them, feed them
20500         to above subroutines.
20501         (expand_used_vars): Expand all partitions (without default defs),
20502         then only the local decls (ignoring those expanded already).
20503         (expand_gimple_cond): Remove edges when jumpif() expands an
20504         unconditional jump.
20505         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
20506         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
20507         SSA name.
20508         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
20509         members of SA; deal with PARM_DECL partitions here; expand
20510         all PHI nodes, free tree datastructures and SA.  Commit instructions
20511         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
20512         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
20513         info and statements at start, collect garbage at finish.
20514         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
20515         (VAR_ANN_PARTITION) Remove.
20516         (change_partition_var): Don't declare.
20517         (partition_to_var): Always return SSA names.
20518         (var_to_partition): Only accept SSA names.
20519         (register_ssa_partition): Only check argument.
20520         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
20521         member.
20522         (delete_var_map): Don't free it.
20523         (var_union): Only accept SSA names, simplify.
20524         (partition_view_init): Mark only useful SSA names as used.
20525         (partition_view_fini): Only deal with SSA names.
20526         (change_partition_var): Remove.
20527         (dump_var_map): Use ssa_name instead of partition_to_var member.
20528         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
20529         basic blocks.
20530         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
20531         (struct _elim_graph): New member const_dests; nodes member vector of
20532         ints.
20533         (set_location_for_edge): New static helper.
20534         (create_temp): Remove.
20535         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
20536         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
20537         (new_elim_graph): Allocate const_dests member.
20538         (clean_elim_graph): Truncate const_dests member.
20539         (delete_elim_graph): Free const_dests member.
20540         (elim_graph_size): Adapt to new type of nodes member.
20541         (elim_graph_add_node): Likewise.
20542         (eliminate_name): Likewise.
20543         (eliminate_build): Don't take basic block argument, deal only with
20544         partition numbers, not variables.
20545         (get_temp_reg): New static helper.
20546         (elim_create): Use it, deal with RTL temporaries instead of trees.
20547         (eliminate_phi): Adjust all calls to new signature.
20548         (assign_vars, replace_use_variable, replace_def_variable): Remove.
20549         (rewrite_trees): Only do checking.
20550         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
20551         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
20552         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
20553         contains_tree_r, MAX_STMTS_IN_LATCH,
20554         process_single_block_loop_latch, analyze_edges_for_bb,
20555         perform_edge_inserts): Remove.
20556         (expand_phi_nodes): New global function.
20557         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
20558         functions, initialize new parameter, remember partitions having a
20559         default def.
20560         (finish_out_of_ssa): New global function.
20561         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
20562         don't reset in_ssa_p here, don't disable TER when mudflap.
20563         (pass_del_ssa): Remove.
20564         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
20565         partition members.
20566         (execute_free_datastructures): Declare.
20567         * Makefile.in (SSAEXPAND_H): New variable.
20568         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
20569         * basic-block.h (commit_one_edge_insertion): Declare.
20570         * passes.c (init_optimization_passes): Move pass_nrv and
20571         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
20572         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
20573         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
20574         (redirect_branch_edge): Deal with super block when expanding, split
20575         out jump patching itself into ...
20576         (patch_jump_insn): ... here, new static helper.
20577
20578 2009-04-26  Michael Matz  <matz@suse.de>
20579
20580         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
20581         beyond num_ssa_names.
20582         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
20583         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
20584
20585 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
20586
20587         PR inline-asm/39543
20588         * fwprop.c (forward_propagate_asm): New function.
20589         (forward_propagate_and_simplify): Propagate also into __asm, if it
20590         doesn't increase the number of referenced registers.
20591
20592         PR c/39889
20593         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
20594
20595 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
20596
20597         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
20598         note_nonlocal_vla_type for nonlocal VLAs.
20599         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
20600         contains_remapped_vars, remap_vla_decls): New functions.
20601         (convert_nonlocal_reference_stmt): If not optimizing, call
20602         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
20603         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
20604         if it wasn't found in var_map.
20605         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
20606         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
20607         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
20608         declare_vars.
20609         * gimplify.c (nonlocal_vlas): New variable.
20610         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
20611         referenced VLAs.
20612         (gimplify_body): Create and destroy nonlocal_vlas.
20613
20614         * dwarf2out.c (loc_descr_plus_const): New function.
20615         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
20616         mem_loc_descriptor, loc_descriptor_from_tree_1,
20617         descr_info_loc, gen_variable_die): Use it.
20618
20619         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
20620         !TREE_STATIC VAR_DECLs.
20621         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
20622         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
20623         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
20624         DECL_BY_REFERENCE is valid.
20625         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
20626         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
20627         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
20628         Copy DECL_BY_REFERENCE.
20629         (struct nesting_copy_body_data): New type.
20630         (nesting_copy_decl): New function.
20631         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
20632         if they have variable length.
20633
20634 2009-04-26  Michael Matz  <matz@suse.de>
20635
20636         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
20637         mark new temporaries for renaming.
20638
20639 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
20640
20641         PR c/39581
20642         * c-decl.c (global_bindings_p): Return negative value.
20643         (c_variable_size): New.  Based on variable_size from
20644         stor-layout.c.
20645         (grokdeclarator): Call c_variable_size not variable_size.
20646
20647 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
20648
20649         * config/i386/i386.c (print_operand) ['z']: Fix typo.
20650
20651 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
20652
20653         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
20654         Redefine it to just use mingw/include.
20655         (ASM_SPEC): Rules for -m32 and -m64.
20656         (LINK_SPEC): Use Likewise.
20657         (SPEC_32): New define.
20658         (SPEC_64): Likewise.
20659         (SUB_LINK_SPEC): Likewise.
20660         (MULTILIB_DEFAULTS): New define.
20661         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
20662         Add multilib options.
20663         (MULTILIB_DIRNAMES): Likewise.
20664         (MULTILIB_OSDIRNAMES): Likewise.
20665         (LIBGCC): Likewise.
20666         (INSTALL_LIBGCC): Likewise.
20667
20668 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
20669
20670         PR c/39556
20671         * c-tree.h (enum c_inline_static_type): New.
20672         (record_inline_static): Declare.
20673         * c-decl.c (struct c_inline_static, c_inline_statics,
20674         record_inline_static, check_inline_statics): New.
20675         (pop_file_scope): Call check_inline_statics.
20676         (start_decl): Call record_inline_static instead of pedwarning
20677         directly for static in inline function.
20678         * c-typeck.c (build_external_ref): Call record_inline_static
20679         instead of pedwarning directly for static referenced in inline
20680         function.
20681
20682 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
20683
20684         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
20685         not new but only being rescanned.
20686         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
20687         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
20688         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
20689         record_set_info, compute_set, grealloc): Remove.
20690         (recompute_all_luids): New function.
20691         (gcse_main): Don't compute sets, and don't do related memory
20692         allocations/free-ing.  If something changed before the end of the
20693         pass, update LUIDs using recompute_all_luids.
20694         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
20695         (free_gcse_mem): Don't free it either.
20696         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
20697         Use the df insn LUIDs.
20698         (load_killed_in_block): Likewise.
20699         (compute_hash_table_work): Don't compute reg_set_in_block.
20700         (compute_transp): Use DF_REG_DEF_CHAINs.
20701         (local_cprop_pass): Don't use compute_sets and related functions.
20702         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
20703         Use get_max_uid() instead of max_cuid.
20704         (insert_insn_end_basic_block, pre_insert_copy_insn,
20705         update_ld_motion_stores): Don't try to
20706         keep reg_set tables up to date.
20707         (pre_insert_copies): Use df insn LUIDs.
20708         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
20709         (reg_set_info): Don't use extra bitmap argument.
20710         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
20711         information to compute regs_set_in_block.
20712         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
20713         (bypass_jumps): Don't use compute_sets and friends.
20714
20715 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20716
20717         PR testsuite/39710
20718         * opts.c (undocumented_msg): Do not leave blank even with
20719         ENABLE_CHECKING.
20720
20721 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
20722
20723         * c-decl.c (build_enumerator): Allow values folding to integer
20724         constants but not integer constant expressions with a pedwarn if
20725         pedantic.
20726
20727 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
20728
20729         PR c/39582
20730         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
20731         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
20732         type is an integer constant.
20733
20734 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
20735
20736         PR target/39897
20737         * config/i386/i386.c (print_operand) ['z']: Revert handling of
20738         HImode operands.
20739
20740 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
20741
20742         PR c/39564
20743         * c-decl.c (grokdeclarator): Diagnose declarations of functions
20744         with variably modified return type and no storage class
20745         specifiers, except for the case of nested functions.  Distinguish
20746         extern declarations of functions with variably modified return
20747         types from those of objects with variably modified types.
20748
20749 2009-04-25  Jan Hubicka  <jh@suse.cz>
20750
20751         * tree.c (list_equal_p): New function.
20752         * tree.h (list_equal_p): Declare.
20753         * coretypes.h (edge_def, edge, const_edge, basic_block_def
20754         basic_block_def, basic_block, const_basic_block): New.
20755         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
20756         (redirect_eh_edge): New function.
20757         (make_eh_edge_update_phi): EH edges are not abnormal.
20758         * except.c: Include tree-flow.h.
20759         (list_match): New function.
20760         (eh_region_replaceable_by_p): New function.
20761         (replace_region): New function.
20762         (hash_type_list): New function.
20763         (hash_eh_region): New function.
20764         (eh_regions_equal_p): New function.
20765         (merge_peers): New function.
20766         (remove_unreachable_regions): Verify EH tree when checking;
20767         merge peers.
20768         (copy_eh_region_1): New function.
20769         (copy_eh_region): New function.
20770         (push_reachable_handler): New function.
20771         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
20772         regions without label but with live RESX.
20773         * except.h (redirect_eh_edge_to_label): New.
20774         * tree-flow.h (redirect_eh_edge): New.
20775         * coretypes.h (edge_def, edge, const_edge, basic_block_def
20776         basic_block_def, basic_block, const_basic_block): Remove.
20777         * Makefile.in (except.o): Add dependency on tree-flow.h
20778         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
20779         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
20780         Remove.
20781
20782 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
20783
20784         PR bootstrap/39645
20785         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
20786         on the destination of memcpy.
20787
20788 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
20789
20790         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
20791         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
20792         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
20793
20794 2009-04-25  Jan Hubicka  <jh@suse.cz>
20795
20796         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
20797         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
20798         to be reached by different label than left.
20799         (update_eh_edges): Update comment; remove edge_to_remove if possible
20800         and return true if suceeded.
20801         (cleanup_empty_eh): Accept sharing map; handle shared regions.
20802         (cleanup_eh): Compute sharing map.
20803         * except.c (remove_eh_handler_and_replace): Add argument if we should
20804         update regions.
20805         (remove_unreachable_regions): Update for label sharing.
20806         (label_to_region_map): Likewise.
20807         (get_next_region_sharing_label): New function.
20808         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
20809         prev_try pointers.
20810         (remove_eh_handler): Update.
20811         (remove_eh_region_and_replace_by_outer_of): New function.
20812         * except.h (struct eh_region): Add next_region_sharing_label.
20813         (remove_eh_region_and_replace_by_outer_of,
20814         get_next_region_sharing_label): Declare.
20815         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
20816
20817 2009-04-25  Jan Hubicka  <jh@suse.cz>
20818
20819         * tree-cfg.c (split_critical_edges): Split also edges where we can't
20820         insert code even if they are not critical.
20821
20822 2009-04-25  Jan Hubicka  <jh@suse.cz>
20823
20824         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
20825         (gimple_can_remove_branch_p): EH edges won't remove branch by
20826         redirection.
20827         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
20828         updating of non-abnormal EH edges.
20829         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
20830         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
20831         (split_critical_edges): Split also edges where emitting code on them
20832         will lead to splitting later.
20833
20834 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
20835             H.J. Lu  <hongjiu.lu@intel.com>
20836
20837         PR target/39590
20838         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
20839         the configured assembler supports fildq and fistpq mnemonics.
20840         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
20841         * configure: Regenerated.
20842         * config.in: Ditto.
20843
20844         * config/i386/i386.c (print_operand): Handle 'Z'.
20845         ['z']: Remove handling of special fild/fist suffixes.
20846         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
20847         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
20848         suffix of fild insn.
20849         (*floatsi<mode>2_vector_mixed): Ditto.
20850         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
20851         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
20852         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
20853         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
20854         * config/i386/gas.h (GAS_MNEMONICS): Remove.
20855
20856 2009-04-25  Ben Elliston  <bje@au.ibm.com>
20857
20858         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
20859         the source of a set operation.
20860
20861 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
20862
20863         * target.h (struct gcc_target): Add case_values_threshold field.
20864         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
20865         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
20866         * targhooks.c (default_case_values_threshold): New function.
20867         * targhooks.h (default_case_values_threshold): Declare function.
20868         * stmt.c (expand_case): Use case_values_threshold target hook.
20869         * expr.h (case_values_threshold): Remove declartation.
20870         * expr.c (case_values_threshold): Remove function.
20871         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
20872
20873         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
20874         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
20875         (avr_case_values_threshold): Declare as static.
20876         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
20877
20878         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
20879         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
20880         (mn10300_case_values_threshold): New function.
20881
20882 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
20883
20884         * ira.c (setup_cover_and_important_classes): Add enum cast.
20885
20886 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
20887
20888         * genpreds.c (write_enum_constraint_num): Output definition of
20889         CONSTRAINT_NUM_DEFINED_P macro.
20890         * ira.c (setup_cover_and_important_classes): Use
20891         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
20892
20893 2009-04-24  DJ Delorie  <dj@redhat.com>
20894
20895         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
20896         __SH2A_SINGLE_ONLY__ also.
20897
20898 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
20899
20900         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
20901         (movdf_internal): Ditto.
20902         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
20903         SFmode and DFmode constants.
20904         (ia64_print_operand): Add 'G' format for printing
20905         floating point constants.
20906
20907 2009-04-24  Richard Guenther  <rguenther@suse.de>
20908
20909         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
20910         from unsigned additions.
20911
20912 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
20913
20914         * c-typeck.c (set_init_index): Allow array designators that are
20915         not integer constant expressions with a pedwarn if pedantic.
20916
20917 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
20918
20919         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
20920         zero if no overlap in nonzero bits between the operands.
20921
20922 2009-04-24  Ian Lance Taylor  <iant@google.com>
20923
20924         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
20925         (record_dead_and_set_regs): Likewise.
20926         * df.h (struct df_mw_hardreg): Change flags field to int.
20927         (struct df_base_ref): Likewise.
20928         (struct df): Change changeable_flags field to int.
20929         * df-scan.c (df_defs_record): Change clobber_flags to int.
20930         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
20931         constants rather than #define macros.
20932         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
20933         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
20934         (enum dwarf_calling_convention): Likewise.
20935         (enum dwarf_line_number_x_ops): Likewise.
20936         (enum dwarf_call_frame_info): Likewise.
20937         (enum dwarf_source_language): Likewise.
20938         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
20939         (add_calling_convention_attribute): Likewise.
20940         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
20941         (combine_comparisons): Change compcode to int.  Add cast to enum type.
20942         * genrecog.c (maybe_both_true_2): Change c to int.
20943         (write_switch): Likewise.  Add cast to enum type.
20944         * gimplify.c (gimplify_omp_for): Handle return values from
20945         gimplify_expr using MIN rather than bitwise or.
20946         (gimplify_expr): Add cast to enum type.
20947         * ipa-prop.c (update_jump_functions_after_inlining): Change
20948         IPA_BOTTOM to IPA_JF_UNKNOWN.
20949         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
20950         Add casts to enum type.
20951         (setup_cover_and_important_classes): Change cl to int.  Add casts
20952         to enum type.
20953         (setup_class_translate): Change cl and mode to int.
20954         (ira_init_once): Change mode to int.
20955         (free_register_move_costs): Likewise.
20956         (setup_prohibited_mode_move_regs): Add casts to enum type.
20957         * langhooks.c (add_builtin_function_common): Rework assertion that
20958         value fits bitfield.
20959         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
20960         * omega.c (omega_do_elimination): Avoid math on enum types.
20961         * optabs.c (expand_vec_shift_expr): Remove casts to int.
20962         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
20963         int local to handle integral_argment value.
20964         * regmove.c (try_auto_increment): Change PUT_MODE to
20965         PUT_REG_NOTE_KIND.
20966         * reload.c (push_secondary_reload): Add casts to enum type.
20967         (secondary_reload_class, find_valid_class): Likewise.
20968         * reload1.c (emit_input_reload_insns): Likewise.
20969         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
20970         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
20971         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
20972         constant.
20973         * tree.c (build_common_builtin_nodes): Add casts to enum type.
20974         * tree-complex.c (complex_lattice_t): Typedef to int rather than
20975         enum type.
20976         (expand_complex_libcall): Add casts to enum type.
20977         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
20978         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
20979         with ERROR_MARK, not NUM_TREE_CODES.
20980         (vect_create_epilog_for_reduction): Likewise.
20981         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
20982         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
20983         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
20984         enum machine_mode.
20985         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
20986         vect_unused_in_loop.  Change 0 to loop_vect.
20987         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
20988         * var-tracking.c (get_init_value): Change return type to enum
20989         var_init_status.
20990         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
20991         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
20992         arm_fp_model.
20993         (arm_override_options): Add casts to enum type.
20994         (arm_emit_tls_decoration): Likewise.
20995         * config/i386/i386.c (ix86_function_specific_restore): Add casts
20996         to enum type.
20997         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
20998         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
20999         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
21000         enum type.
21001         * config/s390/s390.c (code_for_builtin_64): Change to array of
21002         enum insn_code.
21003         (code_for_builtin_31): Likewise.
21004         (s390_expand_builtin): Change code_for_builtin to enum insn_code
21005         const *.
21006         * config/sparc/sparc.c (sparc_override_options): Change value
21007         field in struct code_model to enum cmodel.  In initializer change
21008         0 to NULL and add cast to enum type.
21009
21010         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
21011         Change all callers.  Issue a -Wc++-compat warning using
21012         lhs_origtype if necessary.
21013         (convert_for_assignment): Issue -Wc++-compat warnings about
21014         invalid conversions to enum type on assignment.
21015         * c-common.h (build_modify_expr): Update declaration.
21016
21017 2009-04-24  Nick Clifton  <nickc@redhat.com>
21018
21019         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
21020         (function_arg_advance): Likewise.
21021         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
21022         5th alternative.
21023
21024 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
21025
21026         * config/s390/constraints.md ('I', 'J'): Fix condition.
21027
21028 2009-04-24  Diego Novillo  <dnovillo@google.com>
21029
21030         * gengtype-parse.c (parse_error): Add newline after message.
21031
21032 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
21033
21034         * config/i386/sse.md (avxmodesuffixs): Removed.
21035         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
21036         (*avx_pinsr<ssevecsize>): This.
21037
21038 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
21039
21040         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
21041         follow chains of regs with a single definition, and allow expressions
21042         that are function_invariant_p.
21043         (simple_rhs_p): Allow expressions that are function_invariant_p.
21044
21045 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
21046
21047         PR middle-end/39867
21048         * fold-const.c (fold_cond_expr_with_comparison): When folding
21049         > and >= to MAX, make sure the MAX uses the same type as the
21050         comparison's operands.
21051
21052 2009-04-24  Nick Clifton  <nickc@redhat.com>
21053
21054         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
21055         addressing for DImode accesses.
21056         (frv_print_operand_address): Handle PLUS case.
21057         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
21058
21059 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
21060
21061         PR rtl-optimization/39794
21062         * alias.c (canon_true_dependence): Add x_addr argument.
21063         * rtl.h (canon_true_dependence): Adjust prototype.
21064         * cse.c (check_dependence): Adjust canon_true_dependence callers.
21065         * cselib.c (cselib_invalidate_mem): Likewise.
21066         * gcse.c (compute_transp): Likewise.
21067         * dse.c (scan_reads_nospill): Likewise.
21068         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
21069         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
21070         canon_base_addr of the group, plus optional offset.
21071         (struct group_info): Rename canon_base_mem to
21072         canon_base_addr.
21073         (get_group_info): Set canon_base_addr to canon_rtx of base, not
21074         canon_rtx of base_mem.
21075
21076 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
21077
21078         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
21079         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
21080
21081 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
21082
21083         * config/spu/spu-builtins.h: Delete file.
21084
21085         * config/spu/spu.h (enum spu_builtin_type): Move here from
21086         spu-builtins.h.
21087         (struct spu_builtin_description): Likewise.  Add GTY marker.
21088         Do not use enum spu_function_code or enum insn_code.
21089         (spu_builtins): Add extern declaration.
21090
21091         * config/spu/spu.c: Do not include "spu-builtins.h".
21092         (enum spu_function_code, enum spu_builtin_type_index,
21093         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
21094         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
21095         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
21096         unsigned_V2DI_type_node): Move here from spu-builtins.h.
21097         (spu_builtin_types): Make static.  Add GTY marker.
21098         (spu_builtins): Add extern declaration with GTY marker.
21099         Include "gt-spu.h".
21100
21101         * config/spu/spu-c.c: Do not include "spu-builtins.h".
21102         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
21103         Check programmatically whether all parameters are scalar.
21104
21105         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
21106
21107 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
21108
21109         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
21110         assignment from the constructor either if the target is volatile.
21111
21112 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
21113
21114         * config/arm/arm.md (insv): Do not share operands[0].
21115
21116 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
21117
21118         * config/vxlib-tls.c (active_tls_threads): Delete.
21119         (delete_hook_installed): New.
21120         (tls_delete_hook): Don't delete the delete hook.
21121         (tls_destructor): Delete it here.
21122         (__gthread_set_specific): Adjust installing the delete hook.
21123         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
21124         __gthread_leave_tsd_dtor_context.
21125
21126 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
21127
21128         * c-format.c (gcc_tdiag_char_table): Add support for %E.
21129
21130 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
21131
21132         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
21133         enum type.
21134         (alpha_rtx_costs): Ditto.
21135         (emit_unlikely_jump): Use add_reg_note.
21136         (emit_frame_store_1): Ditto.
21137         (alpha_expand_prologue): Ditto.
21138         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
21139         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
21140
21141 2009-04-23  Nick Clifton  <nickc@redhat.com>
21142
21143         * config/v850/v850.md (epilogue): Remove suppressed code.
21144         (return): Rename to return_simple and remove test of frame size.
21145         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
21146         to gen_return_simple.
21147
21148 2009-04-22  Jing Yu  <jingyu@google.com>
21149
21150         PR testsuite/39781
21151         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
21152
21153 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21154
21155         PR C/31499
21156         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
21157         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
21158         value is a VECTOR_CST, the element type is the element type of the
21159         vector.
21160
21161 2009-04-22  DJ Delorie  <dj@redhat.com>
21162
21163         * config/m32c/m32c.h: Update GTY annotations to new syntax.
21164
21165 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
21166
21167         * alias.c (find_base_term): Move around LO_SUM case, so that
21168         CONST falls through into PLUS/MINUS handling.
21169
21170         PR c/39855
21171         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
21172         into 0, use omit_one_operand.
21173
21174 2009-04-23  Ben Elliston  <bje@au.ibm.com>
21175
21176         * config/rs6000/linux-unwind.h (get_regs): Remove type
21177         puns. Change the type of `pc' to an array of unsigned ints and
21178         update all users.  Constify frame24.
21179
21180 2009-04-22  DJ Delorie  <dj@redhat.com>
21181
21182         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
21183         declarations before code.
21184         (current_function_special_page_vector): Likewise.
21185         (m32c_expand_insv): Silence a warning.
21186
21187 2009-04-21  Taras Glek  <tglek@mozilla.com>
21188
21189         * alias.c: Update GTY annotations to new syntax.
21190         * basic-block.h: Likewise.
21191         * bitmap.h: Likewise.
21192         * c-common.h: Likewise.
21193         * c-decl.c: Likewise.
21194         * c-parser.c: Likewise.
21195         * c-pragma.c: Likewise.
21196         * c-tree.h: Likewise.
21197         * cfgloop.h: Likewise.
21198         * cgraph.h: Likewise.
21199         * config/alpha/alpha.c: Likewise.
21200         * config/arm/arm.h: Likewise.
21201         * config/avr/avr.h: Likewise.
21202         * config/bfin/bfin.c: Likewise.
21203         * config/cris/cris.c: Likewise.
21204         * config/darwin.c: Likewise.
21205         * config/frv/frv.c: Likewise.
21206         * config/i386/i386.c: Likewise.
21207         * config/i386/i386.h: Likewise.
21208         * config/i386/winnt.c: Likewise.
21209         * config/ia64/ia64.h: Likewise.
21210         * config/iq2000/iq2000.c: Likewise.
21211         * config/mips/mips.c: Likewise.
21212         * config/mmix/mmix.h: Likewise.
21213         * config/pa/pa.c: Likewise.
21214         * config/pa/pa.h: Likewise.
21215         * config/rs6000/rs6000.c: Likewise.
21216         * config/s390/s390.c: Likewise.
21217         * config/sparc/sparc.c: Likewise.
21218         * config/xtensa/xtensa.c: Likewise.
21219         * cselib.h: Likewise.
21220         * dbxout.c: Likewise.
21221         * dwarf2out.c: Likewise.
21222         * except.c: Likewise.
21223         * except.h: Likewise.
21224         * fixed-value.h: Likewise.
21225         * function.c: Likewise.
21226         * function.h: Likewise.
21227         * gimple.h: Likewise.
21228         * integrate.c: Likewise.
21229         * optabs.c: Likewise.
21230         * output.h: Likewise.
21231         * real.h: Likewise.
21232         * rtl.h: Likewise.
21233         * stringpool.c: Likewise.
21234         * tree-data-ref.c: Likewise.
21235         * tree-flow.h: Likewise.
21236         * tree-scalar-evolution.c: Likewise.
21237         * tree-ssa-address.c: Likewise.
21238         * tree-ssa-alias.h: Likewise.
21239         * tree-ssa-operands.h: Likewise.
21240         * tree.c: Likewise.
21241         * tree.h: Likewise.
21242         * varasm.c: Likewise.
21243         * varray.h: Likewise.
21244         * vec.h: Likewise.
21245         * coretypes.h: Do not define GTY macro if it is already defined.
21246         * doc/gty.texi: Update GTY documentation to new syntax.
21247         * gengtype-lex.l: Enforce attribute-like syntax for GTY
21248         annotations on structs.
21249         * gengtype-parse.c: Likewise.
21250
21251 2009-04-22  Mark Heffernan  <meheff@google.com>
21252
21253         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
21254
21255 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
21256
21257         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
21258         where appropriate.
21259
21260 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
21261
21262         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
21263         the same as a PLUS without a shift.  Increase the cost of a
21264         CONST_INT in MULT.
21265
21266 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21267
21268         * Makefile.in: Update dependencies.
21269         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
21270         * errors.h: Remove bogus comment about compatibility.
21271         (warning): Update declaration.
21272         * genautomata.c: Update all calls to warning.
21273         * gimple.c: Do not include errors.h. Include toplev.h.
21274         * tree-ssa-structalias.c: Do not include errors.h.
21275         * omega.c: Likewise.
21276         * tree-ssa-reassoc.c: Likewise.
21277         * config/spu/spu-c.c: Likewise.
21278         * config/spu/t-spu-elf: Update dependencies.
21279
21280 2009-04-22  Richard Guenther  <rguenther@suse.de>
21281
21282         PR tree-optimization/39824
21283         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
21284         make sure the types are compatible.
21285
21286 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21287
21288         PR c++/14875
21289         * c-common.c (c_parse_error): Take a token_flags parameter.
21290         Use token_type for the token type instead.
21291         Pass token_flags to cpp_type2name.
21292         * c-common.h (c_parse_error): Update declaration.
21293         * c-parser.c (c_parser_error): Pass 0 as token flags.
21294
21295 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
21296
21297         PR rtl-optimization/39580
21298         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
21299
21300 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
21301
21302         * function.c (expand_function_end): Do not emit a jump to the "naked"
21303         return label for fall-through returns.
21304         * except.c (sjlj_emit_function_exit): Always place the call to the
21305         unregister function at the location installed by expand_function_end.
21306
21307 2009-04-22  Richard Guenther  <rguenther@suse.de>
21308
21309         PR tree-optimization/39845
21310         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
21311         (gen_inbound_check): Likewise.
21312
21313 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
21314
21315         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
21316         padding for PPC.
21317         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
21318         * config/vxlib.c (__gthread_once): Add race guard for PPC.
21319
21320 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
21321
21322         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
21323         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
21324         shift counts to avoid out-of-bounds array accesses.
21325
21326 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
21327
21328         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
21329         (Pmode): Move above.
21330
21331 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
21332
21333         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
21334         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
21335         GET_CODE macro.  Use IN_RANGE macro where appropriate.
21336         * config/alpha/alpha.h: Ditto.
21337         * config/alpha/alpha.md: Ditto.
21338         * config/alpha/constraints.md: Ditto.
21339         * config/alpha/predicates.md: Ditto.
21340
21341 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
21342
21343         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
21344         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21345         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21346         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21347         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21348         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21349         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21350         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21351         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21352         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21353         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21354         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21355         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21356         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21357         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21358         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21359         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21360         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21361         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21362         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21363         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21364         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21365         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21366         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21367         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21368         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21369         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21370
21371 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
21372
21373         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
21374         references from comments.
21375         * cfgbuild.c (count_basic_blocks): Delete.
21376         (find_basic_blocks_1): Delete.
21377         (find_basic_blocks): Delete.
21378         * except.c (finish_eh_generation): Make static.  Move comment from
21379         except.h here.  Remove find_basic_blocks references from comments.
21380         * except.h (finish_eh_generation): Delete.
21381         * basic-block.h (find_basic_blocks): Delete.
21382         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
21383
21384 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
21385
21386         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
21387         (sdbout_parms):  Likewise.
21388
21389 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
21390
21391         * config/sh/sh.c (prepare_cbranch_operands): Use
21392         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
21393         (expand_cbranchdi4): Likewise.
21394         (from_compare): Add cast to enum type.
21395         (expand_cbranchsi4): Use add_reg_note.
21396         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
21397         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
21398         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
21399         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
21400         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
21401         instead of CODE_FOR_nothing.
21402         (cbranchdi4): Likewise.  Fix the order of arguments for
21403         gen_rtx_fmt_ee.
21404         (push_fpscr): Use add_reg_note.
21405         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
21406         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
21407
21408 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
21409
21410         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
21411         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
21412         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
21413         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
21414         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
21415         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
21416         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
21417         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
21418         config/alpha/x-vms, config/arc/t-arc,
21419         config/arm/README-interworking, config/arm/arm-c.c,
21420         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
21421         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
21422         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
21423         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
21424         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
21425         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
21426         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
21427         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
21428         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
21429         config/cris/t-elfmulti, config/crx/t-crx,
21430         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
21431         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
21432         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
21433         config/h8300/t-h8300, config/i386/athlon.md,
21434         config/i386/darwin-libgcc.10.4.ver,
21435         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
21436         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
21437         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
21438         config/i386/t-linux64, config/i386/t-nwld,
21439         config/i386/t-rtems-i386, config/i386/t-sol2-10,
21440         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
21441         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
21442         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
21443         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
21444         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
21445         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
21446         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
21447         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
21448         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
21449         config/m68k/t-uclinux, config/mcore/t-mcore,
21450         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
21451         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
21452         config/mips/crtn.asm, config/mips/irix-crti.asm,
21453         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
21454         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
21455         config/mips/mips-fixed.md, config/mips/sb1.md,
21456         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
21457         config/mips/t-iris6, config/mips/t-isa3264,
21458         config/mips/t-libgcc-mips16, config/mips/t-linux64,
21459         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
21460         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
21461         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
21462         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
21463         config/mn10300/t-linux, config/mn10300/t-mn10300,
21464         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
21465         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
21466         config/picochip/libgccExtras/clzsi2.asm,
21467         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
21468         config/rs6000/darwin-libgcc.10.4.ver,
21469         config/rs6000/darwin-libgcc.10.5.ver,
21470         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
21471         config/rs6000/t-aix43, config/rs6000/t-aix52,
21472         config/rs6000/t-darwin, config/rs6000/t-fprules,
21473         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
21474         config/rs6000/t-lynx, config/rs6000/t-netbsd,
21475         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
21476         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
21477         config/rs6000/t-rtems, config/rs6000/t-spe,
21478         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
21479         config/score/t-score-elf, config/sh/divcost-analysis,
21480         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
21481         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
21482         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
21483         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
21484         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
21485         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
21486         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
21487         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
21488         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
21489         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
21490         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
21491         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
21492         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
21493         limitx.h, version.c, xcoff.h: Add copyright and license notices.
21494         * config/h8300/genmova.sh: Include copyright and license notices
21495         in generated output.
21496         * config/h8300/mova.md: Regenerate.
21497         * doc/install.texi2html: Include word "Copyright" in copyright
21498         notice and use name "Free Software Foundation, Inc.".
21499         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
21500         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
21501         ChangeLog-2007, ChangeLog-2008: Correct dates.
21502
21503 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
21504
21505         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
21506         NE_EXPR operations as well.
21507         * c-parser.c (c_parser_condition): Do not set location information on
21508         the condition.
21509         (c_parser_conditional_expression): Likewise.
21510         (c_parser_binary_expression): Set location information on operators.
21511         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
21512         TRUTH_NOT_EXPR has been folded.
21513         * fold-const.c (fold_truth_not_expr): Copy location information from
21514         the incoming expression to the outgoing one.
21515         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
21516         recursive calls on the LHS of the operator but pass that of the
21517         operator to recursive calls on the RHS of the operator.  Set it
21518         on the COND_EXPR.
21519         (shortcut_cond_expr): Set the locus of the operator on the second
21520         COND_EXPR and that of the expression on the first in degenerate cases.
21521         Pass the locus of the expression to calls to shortcut_cond_r.
21522         Set the locus of the 'then' block on the associated jump, if any.
21523         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
21524         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
21525         expression to call to gimplify_boolean_expr.
21526
21527 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
21528
21529         * config.gcc: Add additional configuration for
21530         i686-w64-mingw* and x86_64-w64-mingw* triplet.
21531         * config/i386/mingw-w64.h: New mingw-w64 specific header.
21532         (CPP_SPEC): Redefine for allowing -municode option.
21533         (STARTFILE_SPEC): Likewise.
21534         * config/i386/t-mingw-w64: New.
21535         * config/i386/mingw-w64.opt: New.
21536         (municode): Add new target option.
21537         * doc/invoke.texi (municode): Add documentation for new option.
21538
21539 2009-04-21  Ian Lance Taylor  <iant@google.com>
21540
21541         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
21542         Correct test for number of arguments.
21543         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
21544
21545 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
21546
21547         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
21548         argument of emit_library_call.
21549
21550 2009-04-21  Richard Guenther  <rguenther@suse.de>
21551
21552         PR middle-end/39829
21553         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
21554         inside VIEW_CONVERT_EXPRs.
21555
21556 2009-04-21  Martin Jambor  <mjambor@suse.cz>
21557
21558         * tree-switch-conversion.c (build_constructors): Split a long line.
21559         (constructor_contains_same_values_p): New function.
21560         (build_one_array): Create assigns of constants if possible, do not
21561         call mark_sym_for_renaming, call update_stmt.
21562         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
21563         make_rename_temp.  Do not call mark_symbols_for_renaming, call
21564         update_stmt.
21565         (gen_def_assigns): Do not call mark_symbols_for_renaming or
21566         find_new_referenced_vars, call update_stmt.
21567         (gen_inbound_check): Use create_tmp_var and create ssa names manually
21568         instead of calling make_rename_temp.  Do not call
21569         find_new_referenced_vars or mark_symbols_for_renaming, call
21570         update_stmt.
21571
21572 2009-04-21  Richard Guenther  <rguenther@suse.de>
21573
21574         PR tree-optimization/39827
21575         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
21576         (tree_ssa_phiprop): Pass the correct array size.
21577
21578 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
21579
21580         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
21581
21582 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21583
21584         PR 16202
21585         * c-typeck.c (lvalue_p): Move declaration ...
21586         * c-common.h (lvalue_p): ... to here.
21587         * c-common.c (candidate_equal_p): New.
21588         (add_tlist): Use it.
21589         (merge_tlist): Use it.
21590         (warn_for_collisions_1): Likewise.
21591         (warning_candidate_p): Accept more candidates.
21592         (verify_tree): A warning candidate can be an expression. Use
21593         candidate_equal_p.
21594
21595 2009-04-21  Ben Elliston  <bje@au.ibm.com>
21596
21597         PR target/5267
21598         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
21599         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
21600         options.  Remove -mcall-solaris documentation.
21601
21602 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21603
21604         PR c++/13358
21605         * doc/invoke.texi (-Wlong-long): Update description.
21606         * c-lex (interpret_integer): Only warn if there was no previous
21607         overflow and -Wlong-long is enabled.
21608         * c-decl.c (declspecs_add_type): Drop redundant flags.
21609         * c.opt (Wlong-long): Init to -1.
21610         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
21611         and front-end warn_long_long. Wlong-long only depends on other
21612         flags if it is uninitialized.
21613         * c-parser.c (disable_extension_diagnostics): warn_long_long is
21614         the same for CPP and FE.
21615         (restore_extension_diagnostics): Likewise.
21616
21617 2009-04-20  Ian Lance Taylor  <iant@google.com>
21618
21619         Fix enum conversions which are invalid in C++:
21620         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
21621         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
21622         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
21623         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
21624         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
21625         (dbxout_parms): Likewise.
21626         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
21627         (df_clear_flags): Likewise.
21628         * df-problems.c (df_rd_bb_local_compute_process_def): Change
21629         top_flag parameter to int.
21630         (df_chain_create_bb_process_use): Likewise.
21631         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
21632         Remove cast.
21633         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
21634         (df_ref_create_structure, df_def_record_1): Likewise.
21635         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
21636         (df_notes_rescan): Change 0 to VOIDmode in function call.
21637         (df_get_call_refs, df_insn_refs_collect): Likewise.
21638         (df_bb_regs_collect): Likewise.
21639         (df_entry_block_defs_collect): Likewise.
21640         (df_exit_block_uses_collect): Likewise.
21641         * df.h: Update declarations.
21642         * double-int.c (double_int_divmod): Add cast to enum type.
21643         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
21644         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
21645         (based_loc_descr): Likewise.
21646         (loc_descriptor_from_tree_1): Change first_op and second_op to
21647         enum dwarf_location_atom.  Add cast to enum type.
21648         * expmed.c (init_expmed): Change 0 to SET in function call.
21649         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
21650         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
21651         (do_store_flag): Likewise.
21652         * fixed-value.h (struct fixed_value): Change mode to enum
21653         machine_mode.
21654         * function.c (assign_parms): Change 0 to VOIDmode in function call.
21655         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
21656         function call.
21657         (insert_insn_decl, insert_decl, insert_state): Likewise.
21658         (automata_list_finish): Likewise.
21659         * genrecog.c (process_define_predicate): Add cast to enum type.
21660         * gensupport.c (init_predicate_table): Add cast to enum type.
21661         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
21662         function call.
21663         (gimple_build_call_1, gimple_build_label): Likewise.
21664         (gimple_build_goto, gimple_build_asm_1): Likewise.
21665         (gimple_build_switch_1, gimple_build_cdt): Likewise.
21666         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
21667         (enum fallback): Rename from enum fallback_t.
21668         (fallback_t): Typedef as int.
21669         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
21670         GSI_SAME_STMT in function call.
21671         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
21672         enum type.
21673         (setup_reg_class_relations): Likewise.
21674         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
21675         (setup_prohibited_class_mode_regs): Add cast to enum type.
21676         (setup_prohibited_mode_move_regs): Likewise.
21677         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
21678         (record_address_regs): Change i to enum reg_class.
21679         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
21680         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
21681         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
21682         (GET_MODE_2XWIDER_MODE): Likewise.
21683         (GET_CLASS_NARROWEST_MODE): Likewise.
21684         * omp-low.c (expand_omp_for): Add cast to enum type.
21685         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
21686         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
21687         * postreload.c (reload_cse_simplify_operands): Change rclass local
21688         to enum reg_class.
21689         * predict.c (combine_predictions_for_insn): Change best_predictor
21690         and predictor to enum br_predictor.
21691         (combine_predictions_for_bb): Likewise.
21692         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
21693         use SET_PREDICT_EXPR_OUTCOME.
21694         * real.c (real_arithmetic): Change icode to code in function call.
21695         * reginfo.c (init_move_cost): Add casts to enum type.
21696         (init_reg_sets_1, init_fake_stack_mems): Likewise.
21697         * regmove.c (regclass_compatible_p): Change class0 and class1 to
21698         enum reg_class.
21699         * reload.c (find_valid_class): Add casts to enum type.
21700         (push_reload): Change 0 to NO_REGS in function call.
21701         (find_reloads): Change this_alternative to array of enum
21702         reg_class.  Remove some now-unnecessary casts.
21703         (make_memloc): Change 0 to VOIDmode in function call.
21704         * reload1.c (reload): Change 0 to VOIDmode in function call.
21705         (eliminate_regs_1, elimination_effects): Likewise.
21706         (eliminate_regs_in_insn): Likewise.
21707         (emit_input_reload_insns): Add cast to enum type.
21708         (delete_output_reload): Change 0 to VOIDmode in function call.
21709         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
21710         to enum type in function call.
21711         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
21712         (SET_PREDICT_EXPR_OUTCOME): Define.
21713         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
21714         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
21715         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
21716         (dump_function): Likewise.
21717         * tree-dump.h: Update declarations.
21718         * tree-pass.h: Update declarations.
21719         * varasm.c (assemble_integer): Change mclass to enum mode_class.
21720         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
21721         enum type.
21722         (arm_rtx_costs_1): Correct parenthesization.
21723         (arm_rtx_costs): Add casts to enum type.
21724         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
21725         (vfp_emit_fstmd): Use add_rg_note.
21726         (emit_multi_reg_push, emit_sfm): Likewise.
21727         (thumb_set_frame_pointer): Likewise.
21728         (arm_expand_prologue): Likewise.
21729         (arm_regno_class): Change return type to enum reg_class.
21730         (thumb1_expand_prologue): Use add_reg_note.
21731         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
21732         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
21733         in function call.
21734         * config/arm/gentune.sh: Add cast to enum type.
21735         * config/arm/arm-tune.md: Rebuild.
21736         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
21737         (ix86_split_fp_branch, predict_jump): Likewise.
21738         (ix86_expand_multi_arg_builtin): Change sub_code from enum
21739         insn_code to enum rtx_code.
21740         (ix86_builtin_vectorized_function): Add cast to enum type.
21741         * config/i386/i386.md (truncdfsf2): Change slot to enum
21742         ix86_stack_slot.
21743         (truncxf<mode>2, isinf<mode>2): Likewise.
21744         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
21745         enum type.
21746         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
21747         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
21748         (insert_bundle_state): Change 1 to INSERT in function call.
21749         (ia64_add_bundle_selector_before): Likewise.
21750         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
21751         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
21752         (restore_stack_nonlocal): Likewise.
21753         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
21754         function call.
21755         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
21756         function call.
21757         (mips_rtx_costs): Likewise.
21758         (mips_override_options): Add casts to enum type.
21759         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
21760         in function call.
21761         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
21762         (store_reg, set_reg_plus_d): Likewise.
21763         (hppa_expand_prologue, hppa_profile_hook): Likewise.
21764         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
21765         cast to enum type.
21766         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
21767         function call.
21768         (emit_unlikely_jump): Use add_reg_note.
21769         (rs6000_emit_allocate_stack): Likewise.
21770         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
21771         (output_toc): Change 1 to INSERT in function call.
21772         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
21773         (rs6000_initialize_trampoline): Likewise.
21774         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
21775         function call.
21776         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
21777         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
21778         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
21779         (save_gprs): Use add_reg_note.
21780         (s390_emit_prologue): Likewise.
21781         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
21782         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
21783         (sparc_fold_builtin): Add cast to enum type.
21784         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
21785         enum insn_code.
21786         (spu_expand_prologue): Use add_reg_note.
21787         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
21788
21789 2009-04-20  Ian Lance Taylor  <iant@google.com>
21790
21791         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
21792         (c_parser_postfix_expression_after_primary): Get VEC for list of
21793         arguments.  Get original types of arguments.  Call
21794         build_function_call_vec.
21795         (cached_expr_list_1, cached_expr_list_2): New static variables.
21796         (c_parser_expr_list): Change return type to VEC *.  Add
21797         p_orig_types parameter.  Change all callers.
21798         (c_parser_release_expr): New static function.
21799         (c_parser_vec_to_tree_list): New static function.
21800         * c-typeck.c (build_function_call): Rewrite to build a VEC and
21801         call build_function_call_vec.
21802         (build_function_call_vec): New function, based on old
21803         build_function_call.
21804         (convert_arguments): Remove nargs and argarray parameters.  Change
21805         values to a VEC.  Add origtypes parameter.
21806         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
21807         (convert_for_assignment): Add origtype parameter.  Change all
21808         callers.  If warn_cxx_compat, check for conversion to an enum
21809         type when calling a function.
21810         (store_init_value): Add origtype parameter.  Change all callers.
21811         (digest_init): Likewise.
21812         (struct init_node): Add origtype field.
21813         (add_pending_init): Add origtype parameter.  Change all callers.
21814         (output_init_element): Likewise.
21815         (output_pending_init_elements): Pass origtype from init_node to
21816         output_init_element.
21817         (process_init_element): Pass origtype from c_expr to
21818         output_init_element.
21819         (c_finish_return): Add origtype parameter.  Change all callers.
21820         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
21821         caller.
21822         (sync_resolve_params): Likewise.
21823         (sync_resolve_return): Change params to first_param.  Change caller.
21824         (resolve_overloaded_builtins): Change params to VEC *.  Change
21825         callers.  Save first parameter around call to build_function_call_vec.
21826         * c-decl.c (finish_decl): Add origtype parameter.  Change all
21827         callers.  Call build_function_call_vec rather than
21828         build_function_call for cleanup.
21829         * c-tree.h: Update declarations.
21830         * c-common.h: Update declarations.
21831         * stub-objc.c (objc_rewrite_function_call): Change parameter from
21832         params to first_param.
21833         * target.h (struct gcc_target): Change resolve_overloaded_builtin
21834         params parameter from tree to void *.
21835         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
21836         Change arglist parameter to have type void *, and to be a pointer
21837         to a VEC.
21838         * config/rs6000/rs6000-protos.h
21839         (altivec_resolve_overloaded_builtin): Update declaration.
21840         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
21841         fnargs parameter to have type void *, and to be a pointer to a
21842         VEC.  Call build_function_call_vec instead of
21843         build_function_call.
21844         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
21845
21846 2009-04-20  Joey Ye  <joey.ye@intel.com>
21847             Xuepeng Guo  <xuepeng.guo@intel.com>
21848             H.J. Lu  <hongjiu.lu@intel.com>
21849
21850         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
21851
21852         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
21853         (IX86_LEA_PRIORITY): Likewise.
21854         (distance_non_agu_define): New function.
21855         (distance_agu_use): Likewise.
21856         (ix86_lea_for_add_ok): Likewise.
21857         (ix86_dep_by_shift_count): Likewise.
21858
21859         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
21860         should split for LEA.
21861
21862         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
21863         function.
21864         (ix86_dep_by_shift_count): Likewise.
21865
21866 2009-04-20  Richard Guenther  <rguenther@suse.de>
21867
21868         * expr.c (handled_component_p): Move ...
21869         * tree.h (handled_component_p): ... here.
21870         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
21871         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
21872         and REALPART_EXPR to be in one group.
21873
21874 2009-04-20  Richard Guenther  <rguenther@suse.de>
21875
21876         * basic-block.h (get_all_dominated_blocks): Declare.
21877         * dominance.c (get_all_dominated_blocks): New function.
21878         * tree-cfg.c (get_all_dominated_blocks): Remove.
21879         (remove_edge_and_dominated_blocks): Adjust.
21880         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
21881         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
21882         instead of recursing.
21883
21884 2009-04-20  Doug Kwan  <dougkwan@google.com>
21885
21886         * cgraph.h (cgraph_node_ptr): New type for vector functions.
21887         (struct cgraph_node_set_def): New type.
21888         (cgraph_node_set) New type. Also declare vector functions.
21889         (struct cgraph_node_set_element_def): New type.
21890         (cgraph_node_set_element): Ditto.
21891         (cgraph_node_set_iterator): New iterator type.
21892         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
21893         cgraph_node_set_remove, dump_cgraph_node_set,
21894         debug_cgraph_node_set): New prototypes.
21895         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
21896         cgraph_node_set_size): New inlines.
21897         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
21898         including cgraph.h.
21899         (struct ipa_opt_pass): Add struct cgraph_node_set_def
21900         argument to function 'write_summary'.
21901         * ipa.c: Include ggc.h.
21902         (hash_cgraph_node_set_element,
21903         eq_cgraph_node_set_element, cgraph_node_set_new,
21904         cgraph_node_set_add, cgraph_node_set_remove,
21905         cgraph_node_set_find, dump_cgraph_node_set,
21906         debug_cgraph_node_set): New functions.
21907         * Makefile.in (ipa.o): Add dependency on GGC_H.
21908
21909 2009-04-20  Ira Rosen  <irar@il.ibm.com>
21910
21911         PR tree-optimization/39675
21912         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
21913         check of the return code of vect_schedule_slp. Check that
21914         stmt_vec_info still exists for the statement, before checking its
21915         vectorization type.
21916
21917 2009-04-20  Michael Matz  <matz@suse.de>
21918
21919         * Makefile.in (generated_files): Take out $(simple_generated_c).
21920
21921 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
21922
21923         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
21924         (UINTPTR_TYPE):  Likewise.
21925
21926 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
21927
21928         PR c/37481
21929         * c-typeck.c (digest_init): Check for initializing an array with a
21930         string literal.
21931
21932 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
21933
21934         PR c/19771
21935         * c-semantics.c (pop_stmt_list): Propagate
21936         STATEMENT_LIST_HAS_LABEL to parent statement list.
21937
21938 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
21939
21940         * config/mips/mips.h (mips_tune_attr): New macro.
21941         * config/mips/mips.md (cpu): Use it.
21942
21943 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
21944
21945         PR c/38243
21946         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
21947         declaring a tag.
21948
21949 2009-04-19  Diego Novillo  <dnovillo@google.com>
21950
21951         * toplev.c (compile_file): Move call to coverage_finish ...
21952         * cgraphunit.c (ipa_passes): ... here.
21953         Call cgraph_process_new_functions.
21954         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
21955         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
21956
21957 2009-04-19  Jan Hubicka  <jh@suse.cz>
21958
21959         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
21960         cfun.
21961         (dump_cgraph_node): Dump can throw external flag.
21962         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
21963
21964 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21965
21966         PR c/32061
21967         PR c++/36954
21968         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
21969         * common.opt (Wlogical-op): Move from here...
21970         * c.opt (Wlogical-op): ... to here.
21971         * c-typeck.c (parser_build_binary_op): Update call to
21972         warn_logical_operator.
21973         * c-opts.c (c_common_post_options): Enable warn_logical_op with
21974         extra_warnings.
21975         * c-common.c (warn_logical_op): Update.
21976         * c-common.h (warn_logical_op): Update declaration.
21977
21978 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
21979
21980         * tree.c (protected_set_expr_location): Fix formatting.
21981
21982 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
21983
21984         PR c/27676
21985         * c-typeck.c (readonly_warning): new.
21986         (build_unary_op, build_modify_expr): Use readonly_warning for
21987         storing into something readonly but not const-qualified.
21988
21989 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
21990
21991         PR c/22367
21992         * c-typeck.c (build_unary_op): Check for taking address of
21993         expression of type void.
21994
21995 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
21996
21997         PR c/35210
21998         * c-typeck.c (build_function_call): Check for calling a function
21999         with qualified void return types.  Call require_complete_type when
22000         generating a trap.
22001
22002 2009-04-18  Jan Hubicka  <jh@suse.cz>
22003
22004         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
22005         Set nothrow flag.
22006         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
22007         can_throw_external flag.
22008         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
22009         * ipa-pure-const.c (ignore_edge): New function.
22010         (propagate): Compute order for NOTHROW computation; set NOTHROWs
22011         only over can_throw_external edges.
22012         (local_pure_const): Add nothrow flag.
22013         * ipa-utils.c (searchc): Add ignore_edge callback.
22014         (ipa_utils_reduced_inorder): Add ignore_edge callback.
22015         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
22016         (set_nothrow_function_flags): Update cgraph.
22017         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
22018
22019 2009-04-18  Richard Guenther  <rguenther@suse.de>
22020
22021         PR middle-end/39804
22022         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
22023         (fold_stmt): ... this and ...
22024         (fold_stmt_inplace): ... this.
22025         (fold_stmt_1): Fold references in calls and asms.
22026         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
22027
22028 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
22029
22030         * tree-vrp.c (ssa_name_nonzero_p): Remove.
22031         * tree.h: Remove the prototype for ssa_name_nonzero_p.
22032
22033 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
22034
22035         * tree.c (function_args_count): Remove.
22036         * tree.h: Remove the prototype for function_args_count.
22037
22038 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
22039
22040         * tree-iterator.c (expr_only): Remove.
22041         * tree.h: Remove the prototype for expr_only.
22042
22043 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
22044
22045         * reginfo.c (cannot_change_mode_set_regs): Remove.
22046         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
22047
22048 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
22049
22050         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
22051         whether operands 0 and 1 overlaps.
22052
22053 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
22054
22055         PR middle-end/36902
22056         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
22057         pointer. Use warning_at instead of warning.
22058         (search_for_addr_array): Likewise.
22059         (check_array_bounds): Likewise.
22060         (check_all_array_refs): Check that the incoming edge is not in the
22061         list of edges to be removed.
22062         (check_all_array_refs): Avoid the temporal pointer.
22063         (vrp_visit_cond_stmt): Fix typo.
22064         (simplify_switch_using_ranges): Handle the case where the switch
22065         index is an integer constant.
22066
22067 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
22068
22069         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
22070
22071 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
22072
22073         * doc/extend.texi, doc/invoke.texi: Fix typos.
22074
22075 2009-04-17  Cary Coutant  <ccoutant@google.com>
22076
22077         * tree-flow-inline.h (get_lineno): Fix inverted test.
22078
22079 2009-04-17  Diego Novillo  <dnovillo@google.com>
22080
22081         * tree-ssa-pre.c (create_expression_by_pieces): Remove
22082         assertion for AVAIL_OUT.
22083
22084 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
22085
22086         PR target/38627
22087         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
22088         * config/sh/linux-atomic.asm: Likewise.
22089
22090 2009-04-17  Diego Novillo  <dnovillo@google.com>
22091
22092         * except.c (debug_eh_tree): New.
22093         (struct eh_region, struct eh_status): Move ...
22094         * except.h: ... here.
22095         (add_type_for_runtime): Declare extern.
22096         (lookup_type_for_runtime): Likewise.
22097         (debug_eh_tree): Declare.
22098         * Makefile.in (GTFILES): List except.h before except.c
22099
22100 2009-04-17  Diego Novillo  <dnovillo@google.com>
22101
22102         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
22103         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
22104         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
22105         (find_vars_r): ... here.
22106         * tree-flow.h (find_referenced_vars_in): Declare.
22107         * tree-ssa-pre.c (create_expression_by_pieces): Assert
22108         that AVAIL_OUT exists for BLOCK.
22109         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
22110         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
22111         (tree-parloops.o): Likewise.
22112
22113 2009-04-17  Simon Baldwin  <simonb@google.com>
22114
22115         * toplev.c (default_tree_printer): Add handling for %E format.
22116
22117 2009-04-17  Diego Novillo  <dnovillo@google.com>
22118
22119         * tree-pretty-print.c (dump_generic_node): Add break after
22120         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
22121         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
22122         FUNCTION_TYPE together.  Call print_struct_decl when printing
22123         structures and TDF_SLIM is not given.
22124         (print_struct_decl): Fix logic for detecting recursion.
22125
22126 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
22127
22128         PR 31567
22129         * gcc.c (create_at_file): New.
22130         (compile_input_file_p): New.
22131         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
22132         * main.c (main): Update call to toplev_main.
22133         * toplev.c (toplev_main): Change signature. Call expandargv.
22134         * toplev.h (toplev_main): Change signature.
22135
22136 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
22137
22138         * dwarf2out.c (field_byte_offset): Use the type size as the field size
22139         if the latter is not constant.
22140
22141 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
22142
22143         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
22144
22145 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
22146
22147         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
22148         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
22149
22150 2009-04-17  Richard Guenther  <rguenther@suse.de>
22151
22152         * tree-ssa-structalias.c (get_constraint_for_component_ref):
22153         Handle component references view-converting an invariant address.
22154
22155 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
22156
22157         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
22158         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
22159         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
22160         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
22161         Use @deftypevr rather than @deftypevar.
22162
22163 2009-04-17  Richard Guenther  <rguenther@suse.de>
22164
22165         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
22166         (get_prop_source_stmt): Likewise.
22167         (can_propagate_from): Likewise.
22168
22169 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
22170
22171         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
22172         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
22173         (--with-multilib-list): Add default value.
22174         * configure: Regenerate.
22175         * Makefile.in (TM_ENDIAN_CONFIG): Define.
22176         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
22177         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
22178         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
22179         Don't add default cpu to multilib list unnecessarily, but do enable
22180         the relevant compiler option..
22181         Add support for --with-multilib-list=<blank> and
22182         --with-multilib-list=!<somelib> to supress unwanted multilibs.
22183         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
22184         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
22185         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
22186         TM_MULTILIB_CONFIG.
22187         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
22188         (MULTILIB_OSDIRNAMES): New variable.
22189         * config/sh/t-1e: Delete file.
22190         * config/sh/t-mlib-sh1: Delete file.
22191         * config/sh/t-mlib-sh2: Delete file.
22192         * config/sh/t-mlib-sh2a: Delete file.
22193         * config/sh/t-mlib-sh2a-nofpu: Delete file.
22194         * config/sh/t-mlib-sh2a-single: Delete file.
22195         * config/sh/t-mlib-sh2a-single-only: Delete file.
22196         * config/sh/t-mlib-sh2e: Delete file.
22197         * config/sh/t-mlib-sh3e: Delete file.
22198         * config/sh/t-mlib-sh4: Delete file.
22199         * config/sh/t-mlib-sh4-nofpu: Delete file.
22200         * config/sh/t-mlib-sh4-single: Delete file.
22201         * config/sh/t-mlib-sh4-single-only: Delete file.
22202         * config/sh/t-mlib-sh4a: Delete file.
22203         * config/sh/t-mlib-sh4a-nofpu: Delete file.
22204         * config/sh/t-mlib-sh4a-single: Delete file.
22205         * config/sh/t-mlib-sh4a-single-only: Delete file.
22206         * config/sh/t-mlib-sh4al: Delete file.
22207         * config/sh/t-mlib-sh5-32media: Delete file.
22208         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
22209         * config/sh/t-mlib-sh5-64media: Delete file.
22210         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
22211         * config/sh/t-mlib-sh5-compact: Delete file.
22212         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
22213         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
22214         * doc/install.texi (Options specification): Add
22215         --with-multilib-list and --with-endian.
22216
22217 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
22218
22219         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
22220         REVISION_c.
22221         (OBJS-common): Add plugin-version.o.
22222         (plugin-version.o): New.
22223         * gcc-plugin.h (plugin_gcc_version): New.
22224         (plugin_default_version_check): New.
22225         (plugin_init_func, plugin_init): Add version argument.
22226         * plugin-version.c: New.
22227         * plugin.c (str_plugin_gcc_version_name): New.
22228         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
22229         pass it to the init function.
22230         (plugin_default_version_check): New.
22231
22232 2009-04-17  Richard Guenther  <rguenther@suse.de>
22233
22234         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
22235         for decl-vs-decl disambiguation.
22236
22237 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
22238
22239         * config/s390/s390.h (s390_tune_attr): New macro definition.
22240         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
22241
22242 2009-04-17  Richard Guenther  <rguenther@suse.de>
22243
22244         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
22245         (fold_stmt_r): Likewise.
22246         (maybe_fold_reference): New function.
22247         (fold_gimple_assign): Handle cases fold_stmt_r did.
22248         (fold_stmt): Do not use fold_stmt_r.
22249         (fold_stmt_inplace): Likewise.
22250
22251 2009-04-17  Richard Guenther  <rguenther@suse.de>
22252
22253         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
22254         (record_equivalences_from_stmt): Remove useless checks and
22255         simplifications.
22256         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
22257         the type is already suitable.
22258
22259 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
22260
22261         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
22262
22263 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
22264
22265         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
22266         (CMPtype): Define as __gcc_CMPtype.
22267
22268 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
22269
22270         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
22271         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
22272
22273 2009-04-17  Richard Guenther  <rguenther@suse.de>
22274
22275         PR tree-optimization/39746
22276         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
22277         special-casing for builtins and static variable use/def.
22278         (call_may_clobber_ref_p_1): Likewise.
22279
22280 2009-04-16  Ian Lance Taylor  <iant@google.com>
22281
22282         * df.h: Include "timevar.h".
22283         (struct df_problem): Change tv_id field to timevar_id_t.
22284         * tree-pass.h: Include "timevar.h".
22285         (struct opt_pass): Change tv_id field to timevar_id_t.
22286         * timevar.h (timevar_id_t): Define TV_NONE.
22287         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
22288         TV_NONE rather than tv_id != 0.
22289         (execute_one_pass): Likewise.
22290         * Makefile.in (DF_H): Add $(TIMEVAR_H).
22291         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
22292         dependencies to $(TREE_PASS_H).
22293         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
22294         to TV_NONE.
22295         (pass_branch_target_load_optimize2): Likewise.
22296         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
22297         (pass_outof_cfg_layout_mode): Likewise.
22298         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
22299         (pass_rebuild_cgraph_edges): Likewise.
22300         (pass_remove_cgraph_callee_edges): Likewise.
22301         * df-core.c (pass_df_initialize_opt): Likewise.
22302         (pass_df_initialize_no_opt): Likewise.
22303         (pass_df_finish): Likewise.
22304         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
22305         * except.c (pass_set_nothrow_function_flags): Likewise.
22306         (pass_convert_to_eh_region_ranges): Likewise.
22307         * final.c (pass_compute_alignments): Likewise.
22308         * function.c (pass_instantiate_virtual_regs): Likewise.
22309         (pass_init_function): Likewise.
22310         (pass_leaf_regs): Likewise.
22311         (pass_match_asm_constraints): Likewise.
22312         * gimple-low.c (pass_lower_cf): Likewise.
22313         (pass_mark_used_blocks): Likewise.
22314         * init-regs.c (pass_initialize_regs): Likewise.
22315         * integrate.c (pass_initial_value_sets): Likewise.
22316         * ira.c (pass_ira): Likewise.
22317         * jump.c (pass_cleanup_barriers): Likewise.
22318         * omp-low.c (pass_expand_omp): Likewise.
22319         (pass_lower_omp): Likewise.
22320         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
22321         * recog.c (pass_split_all_insns): Likewise.
22322         (pass_split_after_reload): Likewise.
22323         (pass_split_before_regstack): Likewise.
22324         (pass_split_before_sched2): Likewise.
22325         (pass_split_for_shorten_branches): Likewise.
22326         * reginfo.c (pass_reginfo_init): Likewise.
22327         (pass_subregs_of_mode_init): Likewise.
22328         (pass_subregs_of_mode_finish): Likewise.
22329         * passes.c (pass_postreload): Likewise.
22330         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
22331         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
22332         (pass_warn_function_return): Likewise.
22333         (pass_warn_function_noreturn): Likewise.
22334         * tree-complex.c (pass_lower_complex): Likewise.
22335         (pass_lower_complex_O0): Likewise.
22336         * tree-if-conv.c (pass_if_conversion): Likewise.
22337         * tree-into-ssa.c (pass_build_ssa): Likewise.
22338         * tree-mudflap.c (pass_mudflap_1): Likewise.
22339         (pass_mudflap_2): Likewise.
22340         * tree-nomudflap.c (pass_mudflap_1): Likewise.
22341         (pass_mudflap_2): Likewise.
22342         * tree-nrv.c (pass_return_slot): Likewise.
22343         * tree-object-size.c (pass_object_sizes): Likewise.
22344         * tree-optimize.c (pass_all_optimizations): Likewise.
22345         (pass_early_local_passes): Likewise.
22346         (pass_all_early_optimizations): Likewise.
22347         (pass_cleanup_cfg): Likewise.
22348         (pass_cleanup_cfg_post_optimizing): Likewise.
22349         (pass_free_datastructures): Likewise.
22350         (pass_free_cfg_annotations): Likewise.
22351         (pass_fixup_cfg): Likewise.
22352         (pass_init_datastructures): Likewise.
22353         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
22354         (pass_late_warn_uninitialized): Likewise.
22355         (pass_update_address_taken): Likewise.
22356         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
22357         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
22358         (pass_cse_sincos): Likewise.
22359         (pass_convert_to_rsqrt): Likewise.
22360         * tree-ssa-structalias.c (pass_build_alias): Likewise.
22361         * tree-stdarg.c (pass_stdarg): Likewise.
22362         * tree-tailcall.c (pass_tail_recursion): Likewise.
22363         (pass_tail_calls): Likewise.
22364         * tree-vect-generic.c (pass_lower_vector): Likewise.
22365         (pass_lower_vector_ssa): Likewise.
22366         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
22367
22368 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
22369
22370         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
22371         XLR entry.
22372         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
22373         Handle -march=xlr.
22374         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
22375         logical and signext.
22376
22377 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
22378
22379         PR target/39767
22380         * config/sh/predicates.md (arith_operand): Check if the operand
22381         of TRUNCATE is a REG.
22382
22383 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22384
22385         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
22386         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
22387
22388 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22389
22390         * tree-iterator.c (tsi_split_statement_list_after,
22391         tsi_split_statement_list_before): Remove.
22392         * tree-iterator.h: Remove the prototypes for
22393         tsi_split_statement_list_after and tsi_split_statement_list_before.
22394
22395 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22396
22397         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
22398         * tree-ssa-propagate.h: Remove the prototype for
22399         stmt_makes_single_load.
22400
22401 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22402
22403         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
22404         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
22405
22406 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22407
22408         * tree-iterator.c (EXPR_LAST_BODY): Remove.
22409
22410 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22411
22412         * except.c (eh_region_outer_p): Remove.
22413         * except.h: Remove the prototype for eh_region_outer_p.
22414
22415 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22416
22417         * function.c (current_function_assembler_name): Remove.
22418         * function.h: Remove the prototype for
22419         current_function_assembler_name.
22420
22421 2009-04-16  Ian Lance Taylor  <iant@google.com>
22422
22423         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
22424         (add_reg_note): Call alloc_reg_note.
22425         * rtl.h (alloc_reg_note): Declare.
22426         * combine.c (try_combine): Use alloc_reg_note.
22427         (recog_for_combine, move_deaths): Likewise.
22428         (distribute_notes): Use alloc_reg_note and add_reg_note.
22429         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
22430         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
22431         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
22432
22433 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
22434
22435         PR rtl-optimization/39762
22436         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
22437         ira_may_move_out_cost): Add comments about way of their usage.
22438         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
22439
22440         * ira-conflicts.c (process_regs_for_copy): Use function
22441         ira_get_register_move_cost instead of global
22442         ira_register_move_cost.
22443
22444         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
22445         color_pass, move_spill_restore, update_curr_costs): Ditto.
22446
22447         * ira-lives.c (process_single_reg_class_operands): Ditto.
22448
22449         * ira-emit.c (emit_move_list): Ditto.
22450
22451         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
22452         (record_reg_classes): Ditto.  Use functions
22453         ira_get_register_move_cost and ira_get_may_move_cost instead of
22454         global vars ira_register_move_cost, ira_may_move_out_cost and
22455         ira_may_move_in_cost.
22456         (record_address_regs): Don't call ira_init_register_move_cost.
22457         Use function ira_get_may_move_cost instead of global
22458         ira_may_move_in_cost.
22459         (process_bb_node_for_hard_reg_moves): Use function
22460         ira_get_register_move_cost instead of global ira_register_move_cost.
22461         (ira_costs): Don't call ira_init_register_move_cost.
22462
22463 2009-04-16  Richard Guenther  <rguenther@suse.de>
22464
22465         * tree-cfg.c (verify_gimple_assign_binary):
22466         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
22467         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
22468         (create_general_new_stmt): Note that this function is broken.
22469
22470 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
22471
22472         * common.opt (fhelp): Add Var(help_flag).
22473         * gcc-plugin.h (plugin_info): Add help.
22474         * plugin.c (plugin_name_args): Add help.
22475         (register_plugin_info): Set plugin->help.
22476         (print_help_one_plugin): New.
22477         (print_plugins_help): New.
22478         * plugin.h (print_plugins_help): New.
22479         * toplev.c (toplev_main): Call print_plugins_help if needed.
22480
22481 2009-04-16  Richard Guenther  <rguenther@suse.de>
22482
22483         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
22484         (gimple_ior_addresses_taken_1): New function.
22485         (gimple_ior_addresses_taken): Likewise.
22486         * gimple.h (struct gimple_statement_with_ops_base): Remove
22487         addresses_taken member.
22488         (gimple_ior_addresses_taken): Declare.
22489         (gimple_addresses_taken, gimple_addresses_taken_ptr,
22490         gimple_set_addresses_taken): Remove.
22491         * ipa-reference.c (mark_address): New function.
22492         (scan_stmt_for_static_refs): Use it for marking addresses taken.
22493         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
22494         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
22495         (gimple_add_to_addresses_taken): Remove.
22496         (get_tmr_operands): Call mark_address_taken.
22497         (get_asm_expr_operands): Likewise.
22498         (get_expr_operands): Likewise.
22499         (build_ssa_operands): Do not clear the addresses_taken bitmap.
22500         (free_stmt_operands): Do not free it.
22501         * tree-ssa.c (delete_tree_ssa): Likewise.
22502         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
22503
22504 2009-04-16  Richard Guenther  <rguenther@suse.de>
22505
22506         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
22507         (walk_stmt_load_store_ops): Likewise.
22508         * gimple.c (get_base_loadstore): New function.
22509         (walk_stmt_load_store_addr_ops): Likewise.
22510         (walk_stmt_load_store_ops): Likewise.
22511         * ipa-pure-const.c (check_op): Simplify.
22512         (check_load, check_store): New functions.
22513         (check_stmt): Use walk_stmt_load_store_ops.
22514         * ipa-reference.c (mark_load): Adjust signature.
22515         (mark_store): Likewise.
22516         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
22517
22518 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
22519
22520         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
22521         (plugin_info): New.
22522         * opts.c (common_handle_option): Don't call print_version.
22523         * plugin.c (plugin_name_args): Add version.
22524         (register_plugin_info): New.
22525         (register_callback): Handle PLUGIN_INFO.
22526         (try_init_one_plugin): New.
22527         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
22528         if failed to init.
22529         (finalize_one_plugin): New.
22530         (finalize_plugins): New.
22531         (print_one_plugin): New.
22532         (print_plugins_versions): New.
22533         * plugin.h (print_plugins_versions): New.
22534         (finalize_plugins): New.
22535         * toplev.c (compile_file): Don't call initialize_plugins.
22536         (print_version): Call print_plugins_versions.
22537         (toplev_main): Call initialize_plugins. Print version if needed.
22538         Call finalize_plugins.
22539
22540 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
22541
22542         * common.opt (fversion): New.
22543         * gcc.c (print_version): New.
22544         (process_command): Don't print the version. Just set print_version.
22545         (main): Print version. Call subprocesses if print_version and
22546         verbose_flag are set.
22547         * opts.c (common_handle_option): Handle OPT_fversion.
22548
22549 2009-04-16  Richard Guenther  <rguenther@suse.de>
22550             Ira Rosen  <irar@il.ibm.com>
22551
22552         PR tree-optimization/39698
22553         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
22554         type of the reduction variable.  Only generate the def if
22555         it is needed.
22556
22557         * omp-low.c (expand_omp_for_generic): When converting to a pointer
22558         make sure to first convert to an integer of the same precision.
22559         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
22560         the type of the evolution correctly in computing the new
22561         induction variable base.
22562
22563 2009-04-16  Richard Guenther  <rguenther@suse.de>
22564
22565         PR middle-end/39625
22566         * tree-cfg.c (make_blocks): Split statements with to-be
22567         abnormal SSA names on the lhs.
22568
22569 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
22570
22571         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
22572         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
22573         * c-typeck.c (really_start_incremental_init): Likewise.
22574         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
22575         (TARGET_INITIALIZER): Remove it.
22576         * target.h (struct target): Remove vector_opaque_p.
22577         * tree.c (build_opaque_vector_type): New.
22578         * tree.h (TYPE_VECTOR_OPAQUE): New.
22579         (build_opaque_vector_type): Declare.
22580         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
22581         * config/rs6000/rs6000.c (build_opaque_vector_type,
22582         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
22583         (rs6000_init_builtins): Use build_opaque_vector_type for
22584         opaque_V4SI_type_node.
22585
22586 2009-04-15  Catherine Moore  <clm@codesourcery.com>
22587
22588         * debug.h (set_name):  Declare.
22589         * dwarf2out.c (dwarf2out_set_name): Declare.
22590         (dwarf2_debug_hooks): Add set_name.
22591         (find_AT_string): New.
22592         (add_AT_string): Call find_AT_string.
22593         (dwarf2out_set_name): New.
22594         * cp/decl.c (grokdeclarator): Call set_name.
22595         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
22596         * debug.c (do_nothing_debug_hooks):  Likewise.
22597         * dbxout.c (dbx_debug_hooks): Likewise.
22598         * sdbout.c (sdb_debug_hooks): Likewise.
22599
22600 2009-04-15  Michael Eager  <eager@eagercon.com>
22601
22602         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
22603         reg for single-precision FPU.
22604         * config/rs6000/rs6000.md (movsi_internal1): Only for
22605         !TARGET_SINGLE_FPU.
22606         (movsi_internal1_single): New. Add pattern to move SI values to/from
22607         single-precision FP regs.
22608
22609 2009-04-15  Richard Guenther  <rguenther@suse.de>
22610
22611         * omp-low.c (lower_rec_input_clauses): Build correct address
22612         expressions.
22613         (expand_omp_for_generic): Fix multiplication type.
22614         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
22615         (generate_memset_zero): Fix types.
22616         * tree-profile.c (prepare_instrumented_value): Correctly
22617         widen a pointer.
22618
22619 2009-04-15  Ian Lance Taylor  <iant@google.com>
22620
22621         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
22622         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
22623         for -Wall and for -Wc++-compat.
22624         (c_common_post_options): For C++, set warn_enum_compare if not
22625         already set.
22626         * c-tree.h (struct c_expr): Add field original_type.
22627         (build_external_ref): Update declaration.
22628         * c-parser.c (c_parser_braced_init): Set original_type.
22629         (c_parser_initelt): Likewise.
22630         (c_parser_expr_no_commas): Likewise.
22631         (c_parser_conditional_expression): Likewise.
22632         (c_parser_cast_expression): Likewise.
22633         (c_parser_unary_expression): Likewise.  Pull setting of
22634         original_code to top of function.
22635         (c_parser_sizeof_expression): Set original_type.
22636         (c_parser_alignof_expression): Likewise.
22637         (c_parser_postfix_expression): Likewise.  Pull setting of
22638         original_code to top of function.
22639         (c_parser_postfix_expression_after_paren_type): Set original_type.
22640         (c_parser_postfix_expression_after_primary): Likewise.
22641         (c_parser_expression): Likewise.
22642         * c-typeck.c (build_external_ref): Add type parameter.  Change all
22643         callers.
22644         (c_expr_sizeof_expr): Set original_type field.
22645         (parser_build_unary_op): Likewise.
22646         (parser_build_binary_op): Likewise.  Optionally warn about
22647         comparisons of enums of different types.
22648         (digest_init): Set original_type field.
22649         (really_start_incremental_init): Likewise.
22650         (push_init_level, pop_init_level): Likewise.
22651         * doc/invoke.texi (Warning Options): -Wenum-compare now
22652         supported in C.
22653
22654 2009-04-15  Richard Guenther  <rguenther@suse.de>
22655
22656         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
22657         out a necessary conversion.
22658         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
22659         names we didn't value number.
22660         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
22661
22662 2009-04-15  Richard Guenther  <rguenther@suse.de>
22663
22664         PR tree-optimization/39764
22665         * tree-ssa-ccp.c (get_value): Canonicalize value with
22666         canonicalize_float_value.
22667
22668 2009-04-15  Jan Hubicka  <jh@suse.cz>
22669
22670         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
22671         Wrong version of patch.
22672
22673 2009-04-15  Jan Hubicka  <jh@suse.cz>
22674
22675         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
22676
22677 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
22678
22679         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
22680         our distinct integral and vector types.
22681
22682 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
22683
22684         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
22685         * init.c (build_vtbl_address): Remove call to assemble_external.
22686
22687 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
22688
22689         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
22690         output for other floating point modes.
22691
22692 2009-04-14  Diego Novillo  <dnovillo@google.com>
22693
22694         * diagnostic.c (diagnostic_report_diagnostic): Do not
22695         warn about loaded plugins for DK_ERROR and DK_WARNING.
22696         * c-decl.c (declspecs_add_type): Move call to
22697         invoke_plugin_callbacks ...
22698         * c-parser.c (c_parser_declspecs): ... here.
22699         * plugin.c (dump_active_plugins): Tidy output.
22700
22701 2009-04-14  Diego Novillo  <dnovillo@google.com>
22702             Le-Chun Wu  <lcwu@google.com>
22703
22704         * configure.ac: Add --enable-plugin support.
22705         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
22706         * Makefile.in (PLUGIN_H): Define.
22707         Export ENABLE_PLUGIN and GMPINC to site.exp.
22708         Add PLUGINLIBS to link command.
22709         Add/modify dependencies for plugin.o and files including plugin.h.
22710         (plugin.o): New.
22711         * config.in: Regenerate.
22712
22713         * opts.c (common_handle_option): Handle OPT_fplugin_ and
22714         OPT_fplugin_arg_.
22715
22716 2009-04-14  Le-Chun Wu  <lcwu@google.com>
22717
22718         * tree-pass.h (register_one_dump_file): Add a prototype for
22719         register_one_dump_file.
22720         * toplev.c (compile_file): Call initialize_plugins.
22721         (do_compile): Call invoke_plugin_callbacks.
22722         (toplev_main): Call invoke_plugin_callbacks.
22723         * common.opt: Add -fplugin= and -fplugin-arg-.
22724         * gcc-plugin.h: New public header file for plugins to include.
22725         * plugin.c: New source file.
22726         * plugin.h: New internal header file.
22727         * passes.c (register_one_dump_file): Make it external.
22728
22729         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
22730
22731 2009-04-14  Diego Novillo  <dnovillo@google.com>
22732
22733         * doc/plugins.texi: New.
22734         * doc/gccint.texi: Add reference to Plugins chapter.
22735         * doc/invoke.texi: Document -fplugin and -fplugin-arg
22736         * diagnostic.c (diagnostic_report_diagnostic): Warn about
22737         loaded plugins, if any.
22738         * timevar.def (TV_PLUGIN_INIT): Define.
22739         (TV_PLUGIN_RUN): Define.
22740         * plugin.c: Include timevar.h
22741         (plugins_active_p): New.
22742         (dump_active_plugins): New.
22743         (debug_active_plugins): New.
22744
22745 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
22746
22747         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
22748         library paths.
22749         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
22750
22751 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
22752
22753         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
22754         the same as a minus without a shift.
22755
22756 2009-04-14  Nick Clifton  <nickc@redhat.com>
22757
22758         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
22759         comparisons with small integers will always produce a short
22760         branch.
22761
22762 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
22763
22764         Merge:
22765         2008-12-19  Diego Novillo  <dnovillo@google.com>
22766
22767         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
22768
22769 2009-04-14  Richard Guenther  <rguenther@suse.de>
22770
22771         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
22772         verification.
22773         (verify_gimple_assign_binary): Likewise.  Handle shifts and
22774         rotates correctly.
22775         (verify_gimple_phi): Print the mismatched argument position.
22776         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
22777         Fix types.
22778         (vect_update_init_of_dr): Likewise.
22779         * matrix-reorg.c (transform_access_sites): Do what the
22780         comment suggests.
22781         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
22782
22783 2009-04-13  Michael Eager  <eager@eagercon.com>
22784
22785         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
22786         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
22787         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
22788         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
22789         remove duplicate config
22790
22791 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
22792
22793         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
22794         file_name:line_number type locator of the call site.
22795
22796 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
22797
22798         * genautomata.c: Put blank after comma.
22799         (automaton_decls): New.
22800         (struct unit_usage): Add comments to member next.
22801         (store_alt_unit_usage): Keep the list ordered.
22802         (unit_present_on_list_p, equal_alternatives_p): New.
22803         (check_regexp_units_distribution): Check units distribution
22804         correctness correctly.
22805         (main): Don't write automata if error is found.  Return correct
22806         exit code.
22807
22808         * config/m68k/cf.md (cfv4_ds): Remove.
22809         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
22810         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
22811
22812         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
22813         power4-load-ext, power4-store, power4-store-update,
22814         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
22815         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
22816         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
22817         power4-sqrt, power4-isync): Modify reservation to make correct
22818         unit distribution to automata.
22819
22820         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
22821         power5-store-update, power5-two, power5-three, power5-lmul,
22822         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
22823
22824 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
22825
22826         * except.c (pass_set_nothrow_function_flags): Set name and add
22827         TODO_dump_func.
22828         (set_nothrow_function_flags): Mention in the dump file when
22829         changing a function to nothrow.
22830
22831 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
22832
22833         PR/39066
22834         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
22835         instead of unsigned long.
22836
22837 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22838
22839         * config/arm/arm.c (return_used_this_function): Remove.
22840         (arm_output_function_prologue): Remove use of
22841         return_used_this_function.
22842         (output_return_instruction): Replace use of
22843         return_used_this_function
22844         by cfun->machine->return_used_this_function.
22845         (arm_output_epilogue): Likewise.
22846         (arm_output_function_epilogue): Likewise.
22847         (thumb_unexpanded_epilogue): Likewise.
22848         * config/arm/arm.h (struct machine_function):
22849         New member return_used_this_function.
22850
22851 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
22852
22853         * doc/install.texi: Correct description of default directory for
22854         --with-gxx-include-dir.
22855
22856 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
22857
22858         * fold-const.c (build_range_check): Properly deal with enumeral and
22859         boolean base types.
22860
22861 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
22862
22863         * doc/invoke.texi (max_gcse_passes): Remove documentation.
22864         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
22865         * params.h (MAX_GCSE_PASSES): Remove.
22866         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
22867         in sequence.  Remove ability to run multiple passes.
22868         (bypass_jumps): Report run as third CPROP pass.
22869
22870 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
22871
22872         PR middle-end/39651
22873         * except.c (can_throw_external): Look at each insn in a SEQUENCE
22874         when deciding whether the whole SEQUENCE can throw.
22875
22876 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
22877
22878         PR target/39740
22879         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
22880         offseted label references.
22881
22882 2009-04-11  Jan Hubicka  <jh@suse.cz>
22883
22884         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
22885
22886 2009-04-11  Richard Guenther  <rguenther@suse.de>
22887
22888         PR middle-end/39732
22889         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
22890         return variables as TREE_ADDRESSABLE.
22891
22892 2009-04-11  Richard Guenther  <rguenther@suse.de>
22893
22894         PR tree-optimization/39713
22895         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
22896         reference trees have SSA_NAME operands.
22897
22898 2009-04-11  Richard Guenther  <rguenther@suse.de>
22899
22900         PR c/39712
22901         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
22902         address expressions.
22903
22904 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
22905
22906         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
22907         match changes in Cygwin 1.7
22908         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
22909         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
22910
22911 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
22912
22913         PR tree-optimization/39701
22914         * doc/invoke.texi (Optimization Options): Document change in
22915         meaning and initialization of -fdelete-null-pointer-checks.
22916
22917 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
22918
22919         PR middle-end/39701
22920         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
22921
22922         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
22923         here.
22924
22925         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
22926
22927 2009-04-10  Chao-ying Fu  <fu@mips.com>
22928
22929         * doc/tm.texi (Instruction Output): Document
22930         TARGET_ASM_FINAL_POSTSCAN_INSN.
22931         * target.h (final_postscan_insn): New field in asm_out.
22932         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
22933         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
22934         * final.c (final_scan_insn): Call
22935         targetm.asm_out.final_postscan_insn after outputting
22936         an asm macro and a normal instruction.
22937
22938         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
22939         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
22940         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
22941         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
22942         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
22943
22944 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
22945
22946         PR middle-end/39701
22947         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
22948         variables as non-NULL even with -fdelete-null-pointer-checks.
22949
22950 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
22951
22952         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
22953
22954 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
22955
22956         PR target/39678
22957         * config/i386/i386.c (classify_argument): Handle SCmode with
22958         (bit_offset % 64) != 0.
22959
22960 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
22961
22962         * doc/invoke.texi (Optimize Options): Add cross-reference to
22963         -Q --help=optimizers examples.
22964
22965 2009-04-10  Ben Elliston  <bje@au.ibm.com>
22966
22967         PR target/36800
22968         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
22969         regalign for the reg == fpr and TDmode case.
22970
22971 2009-04-09  David Ayers  <ayers@fsfe.org>
22972
22973         PR objc/29200
22974         * objc/objc-act.c (warn_with_method): Remove helper function.
22975         (check_duplicates): Call warning and inform directly.
22976         (really_start_method): Likewise.
22977
22978 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
22979
22980         * expmed.c (expand_divmod): Always use a comparison for a division
22981         by a large unsigned integer.
22982
22983         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
22984         for things others than variables or functions as nonzero.
22985
22986 2009-04-09  Nick Clifton  <nickc@redhat.com>
22987
22988         * unwind-compat.c: Change copyright header to refer to version
22989         3 of the GNU General Public License with version 3.1 of the
22990         GCC Runtime Library Exception and to point readers at the
22991         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
22992         * config/alpha/crtfastmath.c: Likewise.
22993         * config/alpha/linux-unwind.h: Likewise.
22994         * config/alpha/qrnnd.asm: Likewise.
22995         * config/alpha/vms-crt0-64.c: Likewise.
22996         * config/alpha/vms-crt0.c: Likewise.
22997         * config/alpha/vms-dwarf2.asm: Likewise.
22998         * config/alpha/vms-dwarf2eh.asm: Likewise.
22999         * config/alpha/vms-psxcrt0-64.c: Likewise.
23000         * config/alpha/vms-psxcrt0.c: Likewise.
23001         * config/alpha/vms_tramp.asm: Likewise.
23002         * config/arc/initfini.c: Likewise.
23003         * config/arc/lib1funcs.asm: Likewise.
23004         * config/arm/bpabi-v6m.S: Likewise.
23005         * config/arm/bpabi.S: Likewise.
23006         * config/arm/bpabi.c: Likewise.
23007         * config/arm/crti.asm: Likewise.
23008         * config/arm/crtn.asm: Likewise.
23009         * config/arm/ieee754-df.S: Likewise.
23010         * config/arm/ieee754-sf.S: Likewise.
23011         * config/arm/lib1funcs.asm: Likewise.
23012         * config/arm/libunwind.S: Likewise.
23013         * config/arm/linux-atomic.c: Likewise.
23014         * config/arm/mmintrin.h: Likewise.
23015         * config/arm/pr-support.c: Likewise.
23016         * config/arm/unaligned-funcs.c: Likewise.
23017         * config/arm/unwind-arm.c: Likewise.
23018         * config/arm/unwind-arm.h: Likewise.
23019         * config/avr/libgcc.S: Likewise.
23020         * config/bfin/crti.s: Likewise.
23021         * config/bfin/crtlibid.s: Likewise.
23022         * config/bfin/crtn.s: Likewise.
23023         * config/bfin/lib1funcs.asm: Likewise.
23024         * config/bfin/linux-unwind.h: Likewise.
23025         * config/cris/arit.c: Likewise.
23026         * config/cris/cris_abi_symbol.c: Likewise.
23027         * config/darwin-64.c: Likewise.
23028         * config/darwin-crt2.c: Likewise.
23029         * config/darwin-crt3.c: Likewise.
23030         * config/darwin.h: Likewise.
23031         * config/dbxelf.h: Likewise.
23032         * config/dfp-bit.c: Likewise.
23033         * config/dfp-bit.h: Likewise.
23034         * config/elfos.h: Likewise.
23035         * config/fixed-bit.c: Likewise.
23036         * config/fixed-bit.h: Likewise.
23037         * config/fp-bit.c: Likewise.
23038         * config/fp-bit.h: Likewise.
23039         * config/fr30/crti.asm: Likewise.
23040         * config/fr30/crtn.asm: Likewise.
23041         * config/fr30/lib1funcs.asm: Likewise.
23042         * config/freebsd-spec.h: Likewise.
23043         * config/frv/cmovd.c: Likewise.
23044         * config/frv/cmovh.c: Likewise.
23045         * config/frv/cmovw.c: Likewise.
23046         * config/frv/frvbegin.c: Likewise.
23047         * config/frv/frvend.c: Likewise.
23048         * config/frv/lib1funcs.asm: Likewise.
23049         * config/glibc-stdint.h: Likewise.
23050         * config/h8300/clzhi2.c: Likewise.
23051         * config/h8300/crti.asm: Likewise.
23052         * config/h8300/crtn.asm: Likewise.
23053         * config/h8300/ctzhi2.c: Likewise.
23054         * config/h8300/fixunssfsi.c: Likewise.
23055         * config/h8300/lib1funcs.asm: Likewise.
23056         * config/h8300/parityhi2.c: Likewise.
23057         * config/h8300/popcounthi2.c: Likewise.
23058         * config/i386/ammintrin.h: Likewise.
23059         * config/i386/att.h: Likewise.
23060         * config/i386/avxintrin.h: Likewise.
23061         * config/i386/biarch64.h: Likewise.
23062         * config/i386/bmmintrin.h: Likewise.
23063         * config/i386/cpuid.h: Likewise.
23064         * config/i386/cross-stdarg.h: Likewise.
23065         * config/i386/crtfastmath.c: Likewise.
23066         * config/i386/crtprec.c: Likewise.
23067         * config/i386/cygming-crtbegin.c: Likewise.
23068         * config/i386/cygming-crtend.c: Likewise.
23069         * config/i386/cygwin.asm: Likewise.
23070         * config/i386/emmintrin.h: Likewise.
23071         * config/i386/gmm_malloc.h: Likewise.
23072         * config/i386/gthr-win32.c: Likewise.
23073         * config/i386/i386.h: Likewise.
23074         * config/i386/immintrin.h: Likewise.
23075         * config/i386/linux-unwind.h: Likewise.
23076         * config/i386/linux64.h: Likewise.
23077         * config/i386/mm3dnow.h: Likewise.
23078         * config/i386/mmintrin-common.h: Likewise.
23079         * config/i386/mmintrin.h: Likewise.
23080         * config/i386/nmmintrin.h: Likewise.
23081         * config/i386/pmm_malloc.h: Likewise.
23082         * config/i386/pmmintrin.h: Likewise.
23083         * config/i386/smmintrin.h: Likewise.
23084         * config/i386/sol2-c1.asm: Likewise.
23085         * config/i386/sol2-ci.asm: Likewise.
23086         * config/i386/sol2-cn.asm: Likewise.
23087         * config/i386/sol2-gc1.asm: Likewise.
23088         * config/i386/tmmintrin.h: Likewise.
23089         * config/i386/unix.h: Likewise.
23090         * config/i386/w32-unwind.h: Likewise.
23091         * config/i386/wmmintrin.h: Likewise.
23092         * config/i386/x86-64.h: Likewise.
23093         * config/i386/x86intrin.h: Likewise.
23094         * config/i386/xmmintrin.h: Likewise.
23095         * config/ia64/crtbegin.asm: Likewise.
23096         * config/ia64/crtend.asm: Likewise.
23097         * config/ia64/crtfastmath.c: Likewise.
23098         * config/ia64/crti.asm: Likewise.
23099         * config/ia64/crtn.asm: Likewise.
23100         * config/ia64/fde-glibc.c: Likewise.
23101         * config/ia64/lib1funcs.asm: Likewise.
23102         * config/ia64/linux-unwind.h: Likewise.
23103         * config/ia64/quadlib.c: Likewise.
23104         * config/ia64/unwind-ia64.c: Likewise.
23105         * config/linux.h: Likewise.
23106         * config/m32c/m32c-lib1.S: Likewise.
23107         * config/m32c/m32c-lib2-trapv.c: Likewise.
23108         * config/m32c/m32c-lib2.c: Likewise.
23109         * config/m32r/initfini.c: Likewise.
23110         * config/m68hc11/larith.asm: Likewise.
23111         * config/m68hc11/m68hc11-crt0.S: Likewise.
23112         * config/m68k/cf.md: Likewise.
23113         * config/m68k/crti.s: Likewise.
23114         * config/m68k/crtn.s: Likewise.
23115         * config/m68k/lb1sf68.asm: Likewise.
23116         * config/m68k/linux-unwind.h: Likewise.
23117         * config/mcore/crti.asm: Likewise.
23118         * config/mcore/crtn.asm: Likewise.
23119         * config/mcore/lib1.asm: Likewise.
23120         * config/mips/linux-unwind.h: Likewise.
23121         * config/mips/loongson.h: Likewise.
23122         * config/mips/mips16.S: Likewise.
23123         * config/mmix/crti.asm: Likewise.
23124         * config/mmix/crtn.asm: Likewise.
23125         * config/pa/fptr.c: Likewise.
23126         * config/pa/hpux-unwind.h: Likewise.
23127         * config/pa/lib2funcs.asm: Likewise.
23128         * config/pa/linux-atomic.c: Likewise.
23129         * config/pa/linux-unwind.h: Likewise.
23130         * config/pa/milli64.S: Likewise.
23131         * config/pa/quadlib.c: Likewise.
23132         * config/pa/stublib.c: Likewise.
23133         * config/picochip/libgccExtras/adddi3.asm: Likewise.
23134         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
23135         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
23136         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
23137         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
23138         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
23139         * config/picochip/libgccExtras/divmod15.asm: Likewise.
23140         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
23141         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
23142         * config/picochip/libgccExtras/longjmp.asm: Likewise.
23143         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
23144         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
23145         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
23146         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
23147         * config/picochip/libgccExtras/setjmp.asm: Likewise.
23148         * config/picochip/libgccExtras/subdi3.asm: Likewise.
23149         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
23150         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
23151         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
23152         * config/rs6000/750cl.h: Likewise.
23153         * config/rs6000/altivec.h: Likewise.
23154         * config/rs6000/biarch64.h: Likewise.
23155         * config/rs6000/crtresfpr.asm: Likewise.
23156         * config/rs6000/crtresgpr.asm: Likewise.
23157         * config/rs6000/crtresxfpr.asm: Likewise.
23158         * config/rs6000/crtresxgpr.asm: Likewise.
23159         * config/rs6000/crtsavfpr.asm: Likewise.
23160         * config/rs6000/crtsavgpr.asm: Likewise.
23161         * config/rs6000/darwin-asm.h: Likewise.
23162         * config/rs6000/darwin-fallback.c: Likewise.
23163         * config/rs6000/darwin-fpsave.asm: Likewise.
23164         * config/rs6000/darwin-ldouble.c: Likewise.
23165         * config/rs6000/darwin-tramp.asm: Likewise.
23166         * config/rs6000/darwin-unwind.h: Likewise.
23167         * config/rs6000/darwin-vecsave.asm: Likewise.
23168         * config/rs6000/darwin-world.asm: Likewise.
23169         * config/rs6000/e500crtres32gpr.asm: Likewise.
23170         * config/rs6000/e500crtres64gpr.asm: Likewise.
23171         * config/rs6000/e500crtres64gprctr.asm: Likewise.
23172         * config/rs6000/e500crtrest32gpr.asm: Likewise.
23173         * config/rs6000/e500crtrest64gpr.asm: Likewise.
23174         * config/rs6000/e500crtresx32gpr.asm: Likewise.
23175         * config/rs6000/e500crtresx64gpr.asm: Likewise.
23176         * config/rs6000/e500crtsav32gpr.asm: Likewise.
23177         * config/rs6000/e500crtsav64gpr.asm: Likewise.
23178         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
23179         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
23180         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
23181         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
23182         * config/rs6000/eabi-ci.asm: Likewise.
23183         * config/rs6000/eabi-cn.asm: Likewise.
23184         * config/rs6000/eabi.asm: Likewise.
23185         * config/rs6000/linux-unwind.h: Likewise.
23186         * config/rs6000/linux64.h: Likewise.
23187         * config/rs6000/paired.h: Likewise.
23188         * config/rs6000/paired.md: Likewise.
23189         * config/rs6000/ppc64-fp.c: Likewise.
23190         * config/rs6000/ppu_intrinsics.h: Likewise.
23191         * config/rs6000/rs6000.h: Likewise.
23192         * config/rs6000/si2vmx.h: Likewise.
23193         * config/rs6000/sol-ci.asm: Likewise.
23194         * config/rs6000/sol-cn.asm: Likewise.
23195         * config/rs6000/spe.h: Likewise.
23196         * config/rs6000/spu2vmx.h: Likewise.
23197         * config/rs6000/sysv4.h: Likewise.
23198         * config/rs6000/tramp.asm: Likewise.
23199         * config/rs6000/vec_types.h: Likewise.
23200         * config/s390/linux-unwind.h: Likewise.
23201         * config/s390/tpf-unwind.h: Likewise.
23202         * config/score/crti.asm: Likewise.
23203         * config/score/crtn.asm: Likewise.
23204         * config/sh/crt1.asm: Likewise.
23205         * config/sh/crti.asm: Likewise.
23206         * config/sh/crtn.asm: Likewise.
23207         * config/sh/divtab-sh4-300.c: Likewise.
23208         * config/sh/divtab-sh4.c: Likewise.
23209         * config/sh/divtab.c: Likewise.
23210         * config/sh/lib1funcs-4-300.asm: Likewise.
23211         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
23212         * config/sh/lib1funcs.asm: Likewise.
23213         * config/sh/lib1funcs.h: Likewise.
23214         * config/sh/linux-atomic.asm: Likewise.
23215         * config/sh/linux-unwind.h: Likewise.
23216         * config/sh/shmedia.h: Likewise.
23217         * config/sh/sshmedia.h: Likewise.
23218         * config/sh/ushmedia.h: Likewise.
23219         * config/sparc/crtfastmath.c: Likewise.
23220         * config/sparc/linux-unwind.h: Likewise.
23221         * config/sparc/sol2-c1.asm: Likewise.
23222         * config/sparc/sol2-ci.asm: Likewise.
23223         * config/sparc/sol2-cn.asm: Likewise.
23224         * config/spu/divmodti4.c: Likewise.
23225         * config/spu/divv2df3.c: Likewise.
23226         * config/spu/float_disf.c: Likewise.
23227         * config/spu/float_unsdidf.c: Likewise.
23228         * config/spu/float_unsdisf.c: Likewise.
23229         * config/spu/float_unssidf.c: Likewise.
23230         * config/spu/mfc_multi_tag_release.c: Likewise.
23231         * config/spu/mfc_multi_tag_reserve.c: Likewise.
23232         * config/spu/mfc_tag_release.c: Likewise.
23233         * config/spu/mfc_tag_reserve.c: Likewise.
23234         * config/spu/mfc_tag_table.c: Likewise.
23235         * config/spu/multi3.c: Likewise.
23236         * config/spu/spu_internals.h: Likewise.
23237         * config/spu/spu_intrinsics.h: Likewise.
23238         * config/spu/spu_mfcio.h: Likewise.
23239         * config/spu/vec_types.h: Likewise.
23240         * config/spu/vmx2spu.h: Likewise.
23241         * config/stormy16/stormy16-lib2.c: Likewise.
23242         * config/svr4.h: Likewise.
23243         * config/sync.c: Likewise.
23244         * config/v850/lib1funcs.asm: Likewise.
23245         * config/vxlib-tls.c: Likewise.
23246         * config/vxlib.c: Likewise.
23247         * config/vxworks-dummy.h: Likewise.
23248         * config/xtensa/crti.asm: Likewise.
23249         * config/xtensa/crtn.asm: Likewise.
23250         * config/xtensa/ieee754-df.S: Likewise.
23251         * config/xtensa/ieee754-sf.S: Likewise.
23252         * config/xtensa/lib1funcs.asm: Likewise.
23253         * config/xtensa/lib2funcs.S: Likewise.
23254         * config/xtensa/linux-unwind.h: Likewise.
23255         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
23256         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
23257         * coretypes.h: Likewise.
23258         * crtstuff.c: Likewise.
23259         * defaults.h: Likewise.
23260         * dwarf2.h: Likewise.
23261         * emutls.c: Likewise.
23262         * gbl-ctors.h: Likewise.
23263         * gcov-io.h: Likewise.
23264         * ginclude/float.h: Likewise.
23265         * ginclude/iso646.h: Likewise.
23266         * ginclude/stdarg.h: Likewise.
23267         * ginclude/stdbool.h: Likewise.
23268         * ginclude/stddef.h: Likewise.
23269         * ginclude/stdfix.h: Likewise.
23270         * ginclude/stdint-gcc.h: Likewise.
23271         * ginclude/tgmath.h: Likewise.
23272         * gthr-aix.h: Likewise.
23273         * gthr-dce.h: Likewise.
23274         * gthr-gnat.c: Likewise.
23275         * gthr-gnat.h: Likewise.
23276         * gthr-lynx.h: Likewise.
23277         * gthr-mipssde.h: Likewise.
23278         * gthr-nks.h: Likewise.
23279         * gthr-posix.c: Likewise.
23280         * gthr-posix.h: Likewise.
23281         * gthr-posix95.h: Likewise.
23282         * gthr-rtems.h: Likewise.
23283         * gthr-single.h: Likewise.
23284         * gthr-solaris.h: Likewise.
23285         * gthr-tpf.h: Likewise.
23286         * gthr-vxworks.h: Likewise.
23287         * gthr-win32.h: Likewise.
23288         * gthr.h: Likewise.
23289         * libgcc2.c: Likewise.
23290         * libgcc2.h: Likewise.
23291         * libgcov.c: Likewise.
23292         * tsystem.h: Likewise.
23293         * typeclass.h: Likewise.
23294         * unwind-c.c: Likewise.
23295         * unwind-compat.h: Likewise.
23296         * unwind-dw2-fde-compat.c: Likewise.
23297         * unwind-dw2-fde-darwin.c: Likewise.
23298         * unwind-dw2-fde-glibc.c: Likewise.
23299         * unwind-dw2-fde.c: Likewise.
23300         * unwind-dw2-fde.h: Likewise.
23301         * unwind-dw2.c: Likewise.
23302         * unwind-dw2.h: Likewise.
23303         * unwind-generic.h: Likewise.
23304         * unwind-pe.h: Likewise.
23305         * unwind-sjlj.c: Likewise.
23306         * unwind.inc: Likewise.
23307         * config/arm/neon-gen.ml: Change generated copyright header to
23308         refer to version 3 of the GNU General Public License with
23309         version 3.1 of the GCC Runtime Library Exception and to point
23310         readers at the COPYING3 and COPYING3.RUNTIME files and the
23311         FSF's license web page.
23312         * config/arm/arm_neon.h: Regenerate.
23313
23314 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
23315
23316         * config/cris/cris.md: Change copyright header to refer to version
23317         3 of the GNU General Public License.
23318         * doc/install.texi2html: Change copyright header to refer to version
23319         3 of the GNU General Public License and to point readers at the
23320         COPYING3 file and the FSF's license web page.
23321         * config/vax/linux.h: Likewise.
23322
23323 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
23324
23325         * config/i386/i386.md (cmpcc): New.
23326         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
23327         (sync_compare_and_swap_cc*): Delete.
23328
23329         * config/s390/s390.c (s390_compare_emitted): Remove.
23330         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
23331         s390_compare_emitted used to be handled.  Assert that modes match.
23332         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
23333         refer to sync_compare_and_swap_ccsi.
23334         * config/s390/s390.h (s390_compare_emitted): Remove.
23335         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
23336         instead of s390_compare_emitted.
23337         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
23338         instead of s390_compare_emitted.
23339         * config/s390/s390.md (cmpcc): New.
23340         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
23341         CC_REGNUM, do not pretend it's set.
23342         (sync_compare_and_swap_cc*): Delete.
23343         * config/s390/predicates.md (cc_reg_operand): New.
23344
23345         * expr.c (sync_compare_and_swap_cc): Delete.
23346         * optabs.h (sync_compare_and_swap_cc): Delete.
23347         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
23348         is being used with can_compare_p.
23349         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
23350         (find_cc_set): New.
23351         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
23352         look for a MODE_CC set instead.  Use emit_store_flag.
23353         (expand_compare_and_swap_loop): Likewise, with some additional
23354         complication to avoid a force_reg when useless.  Use
23355         emit_cmp_and_jump_insns.
23356         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
23357         * doc/md.texi (sync_compare_and_swap_cc): Merge with
23358         sync_compare_and_swap documentation.
23359
23360 2009-04-09  Jan Hubicka  <jh@suse.cz>
23361
23362         * except.c (find_prev_try): Break out from ....
23363         (duplicate_eh_regions): ... here; properly update prev_try pointers
23364         when duplication part of tree.
23365         (dump_eh_tree): Improve dumping.
23366         (verify_eh_region): New.
23367         (verify_eh_tree): Use it.
23368
23369 2009-04-06  Richard Guenther  <rguenther@suse.de>
23370
23371         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
23372         &ARRAY addresses by adjusting their types and prepending
23373         a conversion.
23374         * tree-cfg.c (verify_gimple_assign_single): Verify that
23375         addresses are correct.
23376
23377 2009-04-09  Richard Guenther  <rguenther@suse.de>
23378
23379         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
23380         indices into an array reference if possible.
23381         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
23382         Fold POINTER_PLUS_EXPR statements with invariant address.
23383
23384 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
23385
23386         PR target/39634
23387         * config.gcc (powerpc64-*-linux*): Always build biarch.
23388
23389 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
23390
23391         PR c/39613
23392         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
23393         it and pedwarn if this results in an INTEGER_CST.
23394
23395 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23396
23397         * doc/install.texi: Update minimum GMP version.  Remove obsolete
23398         text in MPFR section.
23399
23400 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
23401
23402         * dwarf2out.c (class_scope_p): New static inline.
23403         (class_or_namespace_scope_p): Use it.
23404         (gen_variable_die): Use DW_TAG_member tag for static data member
23405         declarations instead of DW_TAG_variable.
23406
23407         PR middle-end/39573
23408         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
23409         variables.
23410
23411 2009-04-08  Richard Guenther  <rguenther@suse.de>
23412
23413         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
23414         valueize random data.
23415
23416 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
23417
23418         * config.gcc (aix tm_file):  Add aix-stdint.h.
23419         (aix tm clause use_gcc_stdint):  Set to wrap.
23420         * config/rs6000/aix-stdint.h:  New file.
23421
23422 2009-04-08  Richard Guenther  <rguenther@suse.de>
23423
23424         PR middle-end/36291
23425         * tree-dfa.c (add_referenced_var): Do not recurse into
23426         global initializers.
23427         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
23428         exposed variables.
23429         (fold_const_aggregate_ref): Likewise.
23430
23431 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
23432
23433         * recog.c (ordered_comparison_operator): New.
23434         * gensupport.c (std_preds): Add it.
23435         * doc/md.texi (Machine-Independent Predicates): Document it.
23436
23437 2009-04-08  Jan Hubicka  <jh@suse.cz>
23438
23439         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
23440         * function.h (rtl_eh): Remove exception_handler_label_map.
23441         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
23442         remove_exception_handler_label, for_each_eh_label_1): Remove.
23443         (rtl_remove_unreachable_regions): Remove.
23444         (convert_from_eh_region_ranges): Do not remove unreachable regions.
23445         (find_exception_handler_labels): Don't build the hashtable.
23446         (maybe_remove_eh_handler): Remove.
23447         (for_each_eh_label): Rewrite to walk the tree.
23448         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
23449         * except.h (maybe_remove_eh_handler): Remove.
23450         * passes.c (init_optimization_passes): Schedule second EH cleanup
23451         before out-of-ssa.
23452         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
23453         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
23454
23455 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
23456
23457         * genoutput.c (validate_optab_operands): New.
23458         (gen_insn, gen_expand): Call it.
23459
23460         * genflags.c (gen_insn): Detect misused iterators.
23461         (main): Pass line_no to gen_insn, exit with status 1 on error.
23462
23463         * genextract.c (line_no): Make global.
23464         (VEC_safe_set_locstr): Change assertion to error message.
23465         (main): Exit with status 1 on error.
23466
23467 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
23468
23469         PR c/39614
23470         PR c/39673
23471         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
23472         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
23473         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
23474         * c-convert.c (convert): Do not call fold on results of conversion
23475         functions when the result is a C_MAYBE_CONST_EXPR.
23476         * c-parser.c (c_parser_postfix_expression): Do not fold condition
23477         of __builtin_choose_expr.
23478         * c-typeck.c (remove_c_maybe_const_expr): New.
23479         (build_unary_op, build_conditional_expr, build_compound_expr,
23480         build_binary_op, c_objc_common_truthvalue_conversion): Call
23481         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
23482         integer operands.
23483
23484 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
23485
23486         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
23487         CODE to produce a new one. Add a prototype to use fold_convert_const
23488
23489 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
23490
23491         PR bootstrap/39660
23492         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
23493         mix declarations and code.
23494
23495 2009-04-08  Ben Elliston  <bje@au.ibm.com>
23496
23497         * gcc.c: Replace `CC' with `GCC' throughout.
23498
23499 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
23500
23501         * doc/invoke.texi: Document Atom support.
23502
23503 2009-04-07  Jason Merrill  <jason@redhat.com>
23504
23505         PR c++/25185
23506         * c-common.h, c-common.c: Add flag_pretty_templates.
23507         * c-opts.c (c_common_handle_option): Set it.
23508         * c.opt: Add -fno-pretty-templates.
23509         * doc/invoke.texi (C++ Dialect Options): Likewise.
23510
23511 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
23512
23513         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
23514         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
23515         (ia64_expand_builtin): Likewise.
23516
23517 2009-04-07  Martin Jambor  <mjambor@suse.cz>
23518
23519         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
23520         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
23521         ADDR_EXPRS are include too.
23522
23523 2009-04-07  Richard Guenther  <rguenther@suse.de>
23524
23525         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
23526         decls are only used if passes as parameters or if they are
23527         local statics and the call is not to a builtin.
23528         (call_may_clobber_ref_p_1): Likewise.
23529
23530 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
23531
23532         * expr.c (do_store_flag): Remove last argument.  Simplify code
23533         to avoid duplication of tests already done by can_compare_p.
23534         (expand_expr_real_1): Adjust caller.
23535
23536 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
23537
23538         * optabs.c (can_compare_p): Test the predicate of a
23539         cbranch and cstore pattern.
23540
23541 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
23542
23543         * expr.c (convert_move): Use emit_store_flag instead of
23544         "emulating" it.
23545
23546 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
23547
23548         * config/i386/i386.c (ix86_compare_emitted): Remove.
23549         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
23550         ix86_compare_op0 like ix86_compare_emitted used to be handled.
23551         * config/i386/i386.h (ix86_compare_emitted): Remove.
23552         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
23553         instead of ix86_compare_emitted.
23554         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
23555
23556 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
23557
23558         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
23559         Add t-sysroot-suffix to tmake_file.
23560         * config/print-sysroot-suffix.sh: New file.
23561         * config/t-sysroot-suffix: New file.
23562
23563 2009-04-07  Ben Elliston  <bje@au.ibm.com>
23564
23565         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
23566         as the latter produces a warning when the target does not support
23567         infinity.
23568
23569 2009-04-07  Ben Elliston  <bje@au.ibm.com>
23570
23571         * dfp.c: Replace type punning assignments with memcpy throughout.
23572         * Makefile.in (dfp.o-warn): Remove.
23573
23574 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
23575
23576         PR target/39634
23577         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
23578         Include soft-fp/t-softfp after rs6000/t-linux64.
23579
23580 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
23581
23582         * stor-layout.c (set_sizetype): Use the full precision of their
23583         machine mode for bitsize types.
23584
23585 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
23586
23587         * config/i386/i386.md: Revert 2 accidental checkins.
23588
23589 2009-04-06  Joey Ye  <joey.ye@intel.com>
23590             Xuepeng Guo  <xuepeng.guo@intel.com>
23591             H.J. Lu  <hongjiu.lu@intel.com>
23592
23593         Atom pipeline model, tuning and insn selection.
23594         * config.gcc (atom): Add atom config options and target.
23595
23596         * config/i386/atom.md: New.
23597
23598         * config/i386/i386.c (atom_cost): New cost.
23599         (m_ATOM): New macro flag.
23600         (initial_ix86_tune_features): Set m_ATOM.
23601         (x86_accumulate_outgoing_args): Likewise.
23602         (x86_arch_always_fancy_math_387): Likewise.
23603         (processor_target): Add Atom cost.
23604         (cpu_names): Add Atom cpu name.
23605         (override_options): Set Atom ISA.
23606         (ix86_issue_rate): New case PROCESSOR_ATOM.
23607         (ix86_adjust_cost): Likewise.
23608
23609         * config/i386/i386.h (TARGET_ATOM): New target macro.
23610         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
23611         (TARGET_OPT_AGU): New target option.
23612         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
23613         (processor_type): Add PROCESSOR_ATOM.
23614
23615         * config/i386/i386.md (cpu): Add new value "atom".
23616         (use_carry, movu): New attr.
23617         (atom.md): Include atom.md.
23618         (adddi3_carry_rex64): Set attr "use_carry".
23619         (addqi3_carry): Likewise.
23620         (addhi3_carry): Likewise.
23621         (addsi3_carry): Likewise.
23622         (*addsi3_carry_zext): Likewise.
23623         (subdi3_carry_rex64): Likewise.
23624         (subqi3_carry): Likewise.
23625         (subhi3_carry): Likewise.
23626         (subsi3_carry): Likewise.
23627         (x86_movdicc_0_m1_rex64): Likewise.
23628         (*x86_movdicc_0_m1_se): Likewise.
23629         (x86_movsicc_0_m1): Likewise.
23630         (*x86_movsicc_0_m1_se): Likewise.
23631         (*adddi_1_rex64): Emit add insn as much as possible.
23632         (*addsi_1): Likewise.
23633         (return_internal): Set atom_unit.
23634         (return_internal_long): Likewise.
23635         (return_pop_internal): Likewise.
23636         (*rcpsf2_sse): Set atom_sse_attr attr.
23637         (*qrt<mode>2_sse): Likewise.
23638         (*prefetch_sse): Likewise.
23639
23640         * config/i386/i386-c.c (ix86_target_macros_internal): New case
23641         PROCESSOR_ATOM.
23642         (ix86_target_macros_internal): Likewise.
23643
23644         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
23645         (*prefetch_sse_rex): Likewise.
23646         (sse_rcpv4sf2): Likewise.
23647         (sse_vmrcpv4sf2): Likewise.
23648         (sse_sqrtv4sf2): Likewise.
23649         (<sse>_vmsqrt<mode>2): Likewise.
23650         (sse_ldmxcsr): Likewise.
23651         (sse_stmxcsr): Likewise.
23652         (*sse_sfence): Likewise.
23653         (sse2_clflush): Likewise.
23654         (*sse2_mfence): Likewise.
23655         (*sse2_lfence): Likewise.
23656         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
23657         (<sse>_movup<ssemodesuffixf2c>): Likewise.
23658         (avx_movdqu<avxmodesuffix>): Likewise.
23659         (avx_lddqu<avxmodesuffix>): Likewise.
23660         (sse2_movntv2di): Change attr "type" to "ssemov".
23661         (sse2_movntsi): Likewise.
23662         (rsqrtv8sf2): Change attr "type" to "sseadd".
23663         (sse3_addsubv2df3): Set attr "atom_unit".
23664         (sse3_h<plusminus_insn>v4sf3): Likewise.
23665         (*sse2_pmaddwd): Likewise.
23666         (*vec_extractv2di_1_rex64): Likewise.
23667         (*vec_extractv2di_1_avx): Likewise.
23668         (sse2_psadbw): Likewise.
23669         (ssse3_phaddwv8hi3): Likewise.
23670         (ssse3_phaddwv4hi3): Likewise.
23671         (ssse3_phadddv4si3): Likewise.
23672         (ssse3_phadddv2si3): Likewise.
23673         (ssse3_phaddswv8hi3): Likewise.
23674         (ssse3_phaddswv4hi3): Likewise.
23675         (ssse3_phsubwv8hi3): Likewise.
23676         (ssse3_phsubwv4hi3): Likewise.
23677         (ssse3_phsubdv4si3): Likewise.
23678         (ssse3_phsubdv2si3): Likewise.
23679         (ssse3_phsubswv8hi3): Likewise.
23680         (ssse3_phsubswv4hi3): Likewise.
23681         (ssse3_pmaddubsw128): Likewise.
23682         (sse3_pmaddubsw: Likewise.
23683         (ssse3_palignrti): Likewise.
23684         (ssse3_palignrdi): Likewise.
23685
23686 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
23687
23688         * doc/install.texi (Specific): Fix two cross-references to MinGW.
23689
23690 2009-04-06  Richard Guenther  <rguenther@suse.de>
23691
23692         PR tree-optimization/28868
23693         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
23694         of which PHI results we inserted.
23695         (insert_into_preds_of_block): Record inserted PHIs.
23696         (eliminate): Eliminate redundant PHI nodes.
23697         (init_pre): Init inserted_phi_names.
23698
23699 2009-04-06  Richard Guenther  <rguenther@suse.de>
23700
23701         PR tree-optimization/39643
23702         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
23703         IMAGPART_EXPRs of complex constants.
23704         (execute_fold_all_builtins): If we folded a call queue
23705         TODO_update_address_taken.
23706
23707 2009-04-06  Jan Hubicka  <jh@suse.cz>
23708
23709         PR middle-end/39659
23710         * except.c (remove_unreachable_regions): Propagate may_contain_throw
23711         flag.
23712
23713 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
23714
23715         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
23716         delay slot.
23717         (ic_invalidate_array): Likewise.
23718
23719 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
23720
23721         * calls.c (emit_library_call_value_1): Fix a problem with parameter
23722         alignment for library calls.
23723
23724 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
23725
23726         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
23727         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
23728         * config/i386/mingw-stdint.h:  New file.
23729
23730 2009-04-05  Richard Guenther  <rguenther@suse.de>
23731
23732         PR tree-optimization/39648
23733         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
23734         our &A vs. &A[0] IL deficiencies.
23735
23736 2009-04-04  Jan Hubicka  <jh@suse.cz>
23737
23738         * except.c (sjlj_find_directly_reachable_regions): Be ready for
23739         removed toplevel regions.
23740         (sjlj_mark_call_sites): Likewise.
23741
23742 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
23743
23744         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
23745         (cygwin tm clause use_gcc_stdint):  Set to wrap.
23746         * config/i386/cygwin-stdint.h:  New file.
23747
23748 2009-04-04  Richard Guenther  <rguenther@suse.de>
23749
23750         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
23751         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
23752         single-argument PHIs if we are in loop-closed SSA form.
23753         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
23754         for the pre-condition.
23755         (slpeel_tree_peel_loop_to_edge): Likewise.
23756         (vect_build_loop_niters): Take an optional sequence to append stmts.
23757         (vect_generate_tmps_on_preheader): Likewise.
23758         (vect_do_peeling_for_loop_bound): Take extra guards for the
23759         pre-condition.
23760         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
23761         the cost model check.
23762         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
23763         guards if we are going to peel.  Do not apply versioning in that case.
23764         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
23765         (vect_do_peeling_for_loop_bound): Likewise.
23766         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
23767         loop bound only record extra pre-conditions, do not apply loop
23768         versioning.
23769
23770 2009-04-04  Richard Guenther  <rguenther@suse.de>
23771
23772         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
23773         renaming code.
23774
23775 2009-04-04  Jan Hubicka  <jh@suse.cz>
23776
23777         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
23778         last_basic_block for size of bb->index indexed array.
23779         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
23780         compute_out, link_btr_uses, build_btr_def_use_webs,
23781         build_btr_def_use_webs, migrate_btr_defs): Likewise.
23782
23783 2009-04-04  Jan Hubicka  <jh@suse.cz>
23784
23785         * except.c (remove_eh_handler_and_replace): Break out from ...
23786         (remove_eh_handler): ... here.
23787         (bring_to_root): New function.
23788         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
23789         handled ones, bring others to root of tree.
23790
23791 2009-04-04  Jan Hubicka  <jh@suse.cz>
23792
23793         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
23794         (all_phis_safe_to_merge): New function.
23795         (update_info): New structure.
23796         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
23797         (cleanup_empty_eh): Update SSA if possible.
23798
23799 2009-04-04  Richard Guenther  <rguenther@suse.de>
23800
23801         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
23802         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
23803         (append_vuse): Likewise.
23804
23805 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
23806
23807         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
23808         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
23809         instead of REG_UNSAVED for DW_CFA_undefined.
23810         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
23811         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
23812         outermost frame.
23813
23814 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
23815
23816         PR target/39501
23817         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
23818
23819 2009-04-04  Richard Guenther  <rguenther@suse.de>
23820
23821         PR tree-optimization/8781
23822         PR tree-optimization/37892
23823         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
23824         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
23825         (valueize_refs): Call it for *& valueizations.
23826         (shared_reference_ops_from_ref): Rename to ...
23827         (valueize_shared_reference_ops_from_ref): ... this and valueize.
23828         (shared_reference_ops_from_call): Rename to ...
23829         (valueize_shared_reference_ops_from_call): ... this and valueize.
23830         (vn_reference_lookup): Update.
23831         (visit_reference_op_call): Likewise.
23832         * tree-ssa-pre.c (phi_translate_1): Fold *&.
23833         (eliminate): Value-replace the call address in call statements.
23834
23835 2009-04-04  Richard Guenther  <rguenther@suse.de>
23836
23837         PR tree-optimization/39636
23838         * tree-ssa-forwprop.c
23839         (forward_propagate_addr_into_variable_array_index): Check for
23840         GIMPLE_ASSIGN before accessing the rhs code.
23841
23842 2009-04-03  Jason Merrill  <jason@redhat.com>
23843
23844         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
23845
23846 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
23847
23848         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
23849         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
23850         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
23851         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
23852         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
23853         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
23854         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
23855         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
23856         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
23857         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
23858         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
23859         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
23860         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
23861         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
23862         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
23863         Use fr_reg_or_fp01_operand instead of fr_register_operand
23864
23865         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
23866         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
23867         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
23868
23869 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
23870
23871         PR rtl-optimization/39607
23872         PR rtl-optimization/39631
23873
23874         Revert:
23875
23876         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
23877         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
23878         instead of DF_LR_OUT.
23879         * ira-lives.c (process_bb_node_lives): Ditto.
23880         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
23881         instead of DF_LR_{OUT,IN}.
23882         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
23883         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
23884
23885 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
23886
23887         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
23888         (execute_lower_omp): Always run but take the short way out if -fopenmp
23889         is not given.
23890         (gate_lower_omp): Remove, forcing the pass manager to always run the
23891         pass and always set PROP_gimple_lomp.
23892         (pass_lower_omp): Remove gate function.
23893         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
23894         PROP_trees.  Instead, require it.
23895         * ipa-cp.c (pass_ipa_cp): Likewise.
23896         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
23897         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
23898         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
23899         and PROP_gimple_leh.
23900
23901 2009-04-03  Richard Guenther  <rguenther@suse.de>
23902
23903         PR middle-end/13146
23904         PR tree-optimization/23940
23905         PR tree-optimization/33237
23906         PR middle-end/33974
23907         PR middle-end/34093
23908         PR tree-optimization/36201
23909         PR tree-optimization/36230
23910         PR tree-optimization/38049
23911         PR tree-optimization/38207
23912         PR tree-optimization/38230
23913         PR tree-optimization/38301
23914         PR tree-optimization/38585
23915         PR middle-end/38895
23916         PR tree-optimization/38985
23917         PR tree-optimization/39299
23918         * tree-ssa-structalias.h: Remove.
23919         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
23920         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
23921         (struct vuse_element_d): Remove.
23922         (struct vuse_vec_d): Likewise.
23923         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
23924         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
23925         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
23926         VUSE_ELEMENT_VAR): Likewise.
23927         (struct voptype_d): Likewise.
23928         (NUM_VOP_FREE_BUCKETS): Likewise.
23929         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
23930         (struct stmt_operands_d): Remove.
23931         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
23932         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
23933         VDEF_NUM, VDEF_VECT): Likewise.
23934         (copy_virtual_operands): Remove.
23935         (operand_build_cmp): Likewise.
23936         (create_ssa_artificial_load_stmt): Likewise.
23937         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
23938         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
23939         vuse_index and mayuse_index members.  Pack and move done and iter_type
23940         members to the front.
23941         (SSA_OP_VMAYUSE): Remove.
23942         (SSA_OP_VIRTUAL_USES): Adjust.
23943         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
23944         (unlink_stmt_vdef): Declare.
23945         (add_to_addressable_set): Remove.
23946         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
23947         (vrp_visit_stmt): Likewise.
23948         * doc/tree-ssa.texi (Alias analysis): Update.
23949         * doc/invoke.texi (max-aliased-vops): Remove docs.
23950         (avg-aliased-vops): Likewise.
23951         * tree-into-ssa.c (syms_to_rename): Remove.
23952         (need_to_update_vops_p): Likewise.
23953         (need_to_initialize_update_ssa_p): Rename to ...
23954         (update_ssa_initialized_fn): ... this.  Track function we are
23955         initialized for.
23956         (symbol_marked_for_renaming): Simplify.
23957         (add_new_name_mapping): Do not set need_to_update_vops_p.
23958         (dump_currdefs): Use SYMS_TO_RENAME.
23959         (rewrite_update_stmt): Always walk all uses/defs.
23960         (dump_update_ssa): Adjust.
23961         (init_update_ssa): Take function argument.  Track what we are
23962         initialized for.
23963         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
23964         (create_new_def_for): Initialize for cfun, assert we are initialized
23965         for cfun.
23966         (mark_sym_for_renaming): Simplify.
23967         (mark_set_for_renaming): Do not initialize update-ssa.
23968         (need_ssa_update_p): Simplify.  Take function argument.
23969         (name_mappings_registered_p): Assert we ask for the correct function.
23970         (name_registered_for_update_p): Likewise.
23971         (ssa_names_to_replace): Likewise.
23972         (release_ssa_name_after_update_ssa): Likewise.
23973         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
23974         (dump_decl_set): Do not print a newline.
23975         (debug_decl_set): Do it here.
23976         (dump_update_ssa): And here.
23977         * tree-ssa-loop-im.c (move_computations): Adjust.
23978         (movement_possibility): Likewise.
23979         (determine_max_movement): Likewise.
23980         (gather_mem_refs_stmt): Likewise.
23981         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
23982         or NAME_MEMORY_TAG.
23983         * tree-complex.c (update_all_vops): Remove.
23984         (expand_complex_move): Adjust.
23985         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
23986         Simplify test for memory referencing statement.  Exclude
23987         non-invariant ADDR_EXPRs.
23988         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
23989         * tree-loop-distribution.c (generate_memset_zero): Adjust.
23990         (rdg_flag_uses): Likewise.
23991         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
23992         related code.
23993         (tree_optimize_tail_calls_1): Also split the
23994         edge from the entry block if we have degenerate PHI nodes in
23995         the first basic block.
23996         * tree.c (init_ttree): Remove memory-tag related code.
23997         (tree_code_size): Likewise.
23998         (tree_node_structure): Likewise.
23999         (build7_stat): Re-write to be build6_stat.
24000         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
24001         (SSA_VAR_P): Adjust.
24002         (struct tree_memory_tag): Remove.
24003         (struct tree_memory_partition_tag): Likewise.
24004         (union tree_node): Adjust.
24005         (build7): Re-write to be build6.
24006         * tree-pass.h (pass_reset_cc_flags): Remove.
24007         (TODO_update_address_taken): New flag.
24008         (pass_simple_dse): Remove.
24009         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
24010         * params.h (MAX_ALIASED_VOPS): Remove.
24011         (AVG_ALIASED_VOPS): Likewise.
24012         * omp-low.c (expand_omp_taskreg): Update SSA form.
24013         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
24014         aliases the lhs in a copy stmt.
24015         * tree-ssa-dse.c (struct address_walk_data): Remove.
24016         (memory_ssa_name_same): Likewise.
24017         (memory_address_same): Likewise.
24018         (get_kill_of_stmt_lhs): Likewise.
24019         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
24020         unused stores.  Look through PHI nodes into post-dominated regions.
24021         (dse_optimize_stmt): Simplify.  Properly remove stores.
24022         (tree_ssa_dse): Compute dominators.
24023         (execute_simple_dse): Remove.
24024         (pass_simple_dse): Likewise.
24025         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
24026         gimple_loaded_syms and gimple_stored_syms computation.
24027         * toplev.c (dump_memory_report): Dump alias and pta stats.
24028         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
24029         (vn_reference_eq): Likewise.
24030         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
24031         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
24032         valueize_vuses): Remove.
24033         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
24034         (get_def_ref_stmt_vuse): ... this.
24035         (vn_reference_lookup_2): New function.
24036         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
24037         walking equivalent vuses.  Simplify.
24038         (vn_reference_lookup): Likewise.
24039         (vn_reference_insert): Likewise.
24040         (vn_reference_insert_pieces): Likewise.
24041         (visit_reference_op_call): Simplify.
24042         (visit_reference_op_load): Likewise.
24043         (visit_reference_op_store): Likewise.
24044         (init_scc_vn): Remove shared_lookup_vuses initialization.
24045         (free_scc_vn): Remove shared_lookup_vuses freeing.
24046         (sort_vuses, sort_vuses_heap): Remove.
24047         (get_ref_from_reference_ops): Export.
24048         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
24049         vector with single vuse pointer.
24050         (vn_reference_lookup_pieces, vn_reference_lookup,
24051         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
24052         (shared_vuses_from_stmt): Remove.
24053         (get_ref_from_reference_ops): Declare.
24054         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
24055         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
24056         memory-tag related code.
24057         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
24058         (likely_value): Add comment, skip static-chain of call statements.
24059         (surely_varying_stmt_p): Adjust.
24060         (gimplify_and_update_call_from_tree): Likewise.
24061         (execute_fold_all_builtins): Do not rebuild alias info.
24062         (gimplify_and_update_call_from_tree): Properly update VOPs.
24063         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
24064         (copy_ref_info): Remove memory-tag related code.
24065         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
24066         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
24067         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
24068         computation.
24069         * tree-ssa-dom.c (gimple_p): Remove typedef.
24070         (eliminate_redundant_computations): Adjust.
24071         (record_equivalences_from_stmt): Likewise.
24072         (avail_expr_hash): Likewise.
24073         (avail_expr_eq): Likewise.
24074         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
24075         (stmt_makes_single_load): Likewise.
24076         (stmt_makes_single_store): Likewise.
24077         * tree-ssa-alias.c: Rewrite completely.
24078         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
24079         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
24080         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
24081         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
24082         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
24083         Remove public functions.
24084         (pass_reset_cc_flags): Remove.
24085         (pass_build_alias): Move ...
24086         * tree-ssa-structalias.c (pass_build_alias): ... here.
24087         * tree-ssa-alias.c (may_be_aliased): Move ...
24088         * tree-flow-inline.h (may_be_aliased): ... here.
24089         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
24090         count_uses_and_derefs): Move ...
24091         * gimple.c: ... here.
24092         * gimple.h (count_uses_and_derefs): Declare.
24093         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
24094         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
24095         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
24096         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
24097         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
24098         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
24099         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
24100         New functions.
24101         * tree-dfa.c (refs_may_alias_p): Move ...
24102         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
24103         * tree-ssa-alias.h: New file.
24104         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
24105         (statement_sink_location): Likewise.
24106         * opts.c (decode_options): Do not adjust max-aliased-vops or
24107         avg-aliased-vops values.
24108         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
24109         (TV_CALL_CLOBBER): Likewise.
24110         (TV_FLOW_SENSITIVE): Likewise.
24111         (TV_FLOW_INSENSITIVE): Likewise.
24112         (TV_MEMORY_PARTITIONING): Likewise.
24113         (TV_ALIAS_STMT_WALK): New timevar.
24114         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
24115         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
24116         (get_address_description): Remove memory-tag related code.
24117         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
24118         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
24119         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
24120         and immediate uses in statements.  Document.
24121         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
24122         (dump_symbols): Remove.
24123         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
24124         * alias.c (get_deref_alias_set): New function split out from ...
24125         (get_alias_set): ... here.
24126         * alias.h (get_deref_alias_set): Declare.
24127         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
24128         type parameter.  Remove restrict pointer handling.  Create a
24129         ref-all pointer in case type-based alias sets do not conflict.
24130         (vect_analyze_data_refs): Remove SMT related code.
24131         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
24132         (vectorizable_load): Likewise.
24133         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
24134         (DR_SYMBOL_TAG, DR_VOPS): Remove.
24135         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
24136         Ignore vops and SMTs.
24137         (dr_analyze_alias): Likewise..
24138         (free_data_ref): Likewise.
24139         (create_data_ref): Likewise.
24140         (analyze_all_data_dependences): Likewise.
24141         (get_references_in_stmt): Adjust.
24142         * tree-flow-inline.h (gimple_aliases_computed_p,
24143         gimple_addressable_vars, gimple_call_clobbered_vars,
24144         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
24145         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
24146         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
24147         gimple_mem_ref_stats): Remove.
24148         (gimple_vop): New function.
24149         (op_iter_next_use): Remove vuses and mayuses cases.
24150         (op_iter_next_def): Remove vdefs case.
24151         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
24152         (clear_and_done_ssa_iter): Do not set removed fields.
24153         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
24154         Assert we are not iterating over vuses or vdefs if not also
24155         iterating over uses or defs.
24156         (op_iter_init_use): Likewise.
24157         (op_iter_init_def): Likewise.
24158         (op_iter_next_vdef): Remove.
24159         (op_iter_next_mustdef): Likewise.
24160         (op_iter_init_vdef): Likewise.
24161         (compare_ssa_operands_equal): Likewise.
24162         (link_use_stmts_after): Handle vuse operand.
24163         (is_call_used): Use is_call_clobbered.
24164         (is_call_clobbered): Global variables are always call clobbered,
24165         query the call-clobbers bitmap.
24166         (mark_call_clobbered): Ignore global variables.
24167         (clear_call_clobbered): Likewise.
24168         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
24169         virtual operands sanity check.
24170         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
24171         Remove.
24172         (TARGET_MEM_REF): Remove TMR_TAG operand.
24173         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
24174         Remove call-clobber related code.
24175         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
24176         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
24177         partitions or escape reason.
24178         (get_single_def_stmt, get_single_def_stmt_from_phi,
24179         get_single_def_stmt_with_phi): Remove.
24180         (dump_referenced_vars): Tidy.
24181         (get_ref_base_and_extent): Allow bare decls.
24182         (collect_dfa_stats): Adjust.
24183         * graphite.c (rename_variables_in_stmt): Adjust.
24184         (graphite_copy_stmts_from_block): Likewise.
24185         (translate_clast): Likewise.
24186         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
24187         (EXPR_DIES): New.
24188         (translate_vuse_through_block): Use the oracle.
24189         (phi_translate_1): Adjust.
24190         (value_dies_in_block_x): Use the oracle.  Cache the outcome
24191         in EXPR_DIES.
24192         (valid_in_sets): Check if the VUSE for
24193         a REFERENCE is available.
24194         (eliminate): Do not remove stmts during elimination,
24195         instead queue and remove them afterwards.
24196         (do_pre): Do not rebuild alias info.
24197         (pass_pre): Run TODO_rebuild_alias before PRE.
24198         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
24199         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
24200         (mark_all_v_defs_stmt): Remove.
24201         (mark_all_v_defs_seq): Adjust.
24202         (sra_replace): Likewise.
24203         (scalarize_use): Likewise.
24204         (scalarize_copy): Likewise.
24205         (scalarize_init): Likewise.
24206         (scalarize_ldst): Likewise.
24207         (todoflags): Remove.
24208         (tree_sra): Do not rebuild alias info.
24209         (tree_sra_early): Adjust.
24210         (pass_sra): Run TODO_update_address_taken before SRA.
24211         * tree-predcom.c (set_alias_info): Remove.
24212         (prepare_initializers_chain): Do not call it.
24213         (mark_virtual_ops_for_renaming): Adjust.
24214         (mark_virtual_ops_for_renaming_list): Remove.
24215         (initialize_root_vars): Adjust.
24216         (initialize_root_vars_lm): Likewise.
24217         (prepare_initializers_chain): Likewise.
24218         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
24219         (may_propagate_copy_into_stmt): Likewise.
24220         (merge_alias_info): Do nothing for now.
24221         (propagate_tree_value_into_stmt): Adjust.
24222         (stmt_may_generate_copy): Likewise.
24223         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
24224         not mark symbols for renaming.
24225         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
24226         with the same statement, make sure to update the new pointed-to one.
24227         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
24228         call statements, do not mark symbols for renaming.
24229         (mark_operand_necessary): Dump something.
24230         (ref_may_be_aliased): New function.
24231         (mark_aliased_reaching_defs_necessary_1): New helper function.
24232         (mark_aliased_reaching_defs_necessary): Likewise.
24233         (mark_all_reaching_defs_necessary_1): Likewise.
24234         (mark_all_reaching_defs_necessary): Likewise.
24235         (propagate_necessity): Do not process virtual PHIs.  For
24236         non-aliased loads mark all reaching definitions as necessary.
24237         For aliased loads and stores mark the immediate dominating
24238         aliased clobbers as necessary.
24239         (visited): New global static.
24240         (perform_tree_ssa_dce): Free visited bitmap after propagating
24241         necessity.
24242         (remove_dead_phis): Perform simple dead virtual PHI removal.
24243         (remove_dead_stmt): Properly unlink virtual operands when
24244         removing stores.
24245         (eliminate_unnecessary_stmts): Schedule PHI removal after
24246         stmt removal.
24247         * tree-ssa-ter.c (is_replaceable_p): Adjust.
24248         (process_replaceable): Likewise.
24249         (find_replaceable_in_bb): Likewise.
24250         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
24251         based on the single gimple vop.
24252         (verify_flow_insensitive_alias_info): Remove.
24253         (verify_flow_sensitive_alias_info): Likewise.
24254         (verify_call_clobbering): Likewise.
24255         (verify_memory_partitions): Likewise.
24256         (verify_alias_info): Likewise.
24257         (verify_ssa): Adjust..
24258         (execute_update_addresses_taken): Export.  Update SSA
24259         manually.  Optimize only when optimizing.  Use a local bitmap.
24260         (pass_update_address_taken): Remove TODO_update_ssa, add
24261         TODO_dump_func.
24262         (pass_update_address_taken): Just use TODO_update_address_taken.
24263         (init_tree_ssa): Do not initialize addressable_vars.
24264         (verify_ssa): Verify new VUSE / VDEF properties.
24265         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
24266         Do not call verify_alias_info.
24267         (delete_tree_ssa): Clear the VUSE, VDEF operands.
24268         Do not free the loaded and stored syms bitmaps.  Reset the escaped
24269         and callused solutions.  Do not free addressable_vars.
24270         Remove memory-tag related code.
24271         (warn_uninitialized_var): Aliases are always available.
24272         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
24273         * lambda-code.c (can_put_in_inner_loop): Adjust.
24274         (can_put_after_inner_loop): Likewise.
24275         (perfect_nestify): Likewise.
24276         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
24277         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
24278         (vectorizable_conversion): Do not mark symbols for renaming.
24279         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
24280         (expand_call_inline): Unlink the calls virtual operands before
24281         replacing it.
24282         (tree_function_versioning): Do not call update_ssa if we are not
24283         updating clones.  Simplify.
24284         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
24285         (propagate_with_phi): Likewise..
24286         * tree-outof-ssa.c (create_temp): Remove memory tag and call
24287         clobber code.  Assert we are not aliased or global.
24288         * tree-flow.h: Include tree-ssa-alias.h
24289         (enum escape_type): Remove.
24290         (struct mem_sym_stats_d): Likewise.
24291         (struct mem_ref_stats_d): Likewise.
24292         (struct gimple_df): Add vop member.  Remove global_var,
24293         call_clobbered_vars, call_used_vars, addressable_vars,
24294         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
24295         escaped and callused members.
24296         (struct ptr_info_def): Remove all members, add points-to solution
24297         member pt.
24298         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
24299         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
24300         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
24301         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
24302         (tree-ssa-alias.o): Likewise.
24303         (toplev.o): Add tree-ssa-alias.h
24304         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
24305         * gimple.c (gimple_set_bb): Fix off-by-one error.
24306         (is_gimple_reg): Do not handle memory tags.
24307         (gimple_copy): Also copy virtual operands.
24308         Delay updating the statement.  Do not reset loaded and stored syms.
24309         (gimple_set_stored_syms): Remove.
24310         (gimple_set_loaded_syms): Likewise.
24311         (gimple_call_copy_skip_args): Copy the virtual operands
24312         and mark the new statement modified.
24313         * tree-ssa-structalias.c (may_alias_p): Remove.
24314         (set_uids_in_ptset): Take the alias set to prune with as
24315         parameter.  Fold in the alias test of may_alias_p.
24316         (compute_points_to_sets): Compute whether a ptr is dereferenced
24317         in a local sbitmap.
24318         (process_constraint): Deal with &ANYTHING on the lhs, reject all
24319         other ADDRESSOF constraints on the lhs.
24320         (get_constraint_for_component_ref): Assert that we don't get
24321         ADDRESSOF constraints from the base of the reference.
24322         Properly generate UNKNOWN_OFFSET for DEREF if needed.
24323         (struct variable_info): Remove collapsed_to member.
24324         (get_varinfo_fc): Remove.
24325         (new_var_info): Do not set collapsed_to.
24326         (dump_constraint): Do not follow cycles.
24327         (dump_constraint_graph): Likewise.
24328         (build_pred_graph): Likewise.
24329         (build_succ_graph): Likewise.
24330         (rewrite_constraints): Likewise.
24331         (do_simple_structure_copy): Remove.
24332         (do_rhs_deref_structure_copy): Remove.
24333         (do_lhs_deref_structure_copy): Remove.
24334         (collapse_rest_of_var): Remove.
24335         (do_structure_copy): Re-implement.
24336         (pta_stats): New global variable.
24337         (dump_pta_stats): New function.
24338         (struct constraint_expr): Make offset signed.
24339         (UNKNOWN_OFFSET): Define special value.
24340         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
24341         (solution_set_expand): New helper function split out from ...
24342         (do_sd_constraint): ... here.
24343         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
24344         (do_ds_constraint): Likewise.
24345         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
24346         and CALLUSED = *CALLUSED.
24347         (set_union_with_increment): Make inc argument signed.
24348         (type_safe): Remove.
24349         (get_constraint_for_ptr_offset): Handle unknown and negative
24350         constant offsets.
24351         (first_vi_for_offset): Handle offsets before start.  Bail
24352         out early for offsets beyond the variable extent.
24353         (first_or_preceding_vi_for_offset): New function.
24354         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
24355         Together with ESCAPED = *ESCAPED this properly computes reachability.
24356         (find_what_var_points_to): New function.
24357         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
24358         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
24359         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
24360         pt_solutions_intersect): New functions.
24361         (compute_call_used_vars): Remove.
24362         (compute_may_aliases): New main entry into PTA computation.
24363         * gimple.h (gimple_p): New typedef.
24364         (struct gimple_statement_base): Remove references_memory_p.
24365         (struct gimple_statement_with_memory_ops_base): Remove
24366         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
24367         members.
24368         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
24369         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
24370         gimple_set_references_memory): Remove.
24371         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
24372         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
24373         New functions.
24374         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
24375         (verify_expr): Allow RESULT_DECL.
24376         (gimple_duplicate_bb): Do not copy virtual operands.
24377         (gimple_duplicate_sese_region): Adjust.
24378         (gimple_duplicate_sese_tail): Likewise.
24379         (mark_virtual_ops_in_region): Remove.
24380         (move_sese_region_to_fn): Do not call it.
24381         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
24382         and pass_simple_dse.
24383         (execute_function_todo): Handle TODO_update_address_taken,
24384         call execute_update_addresses_taken for TODO_rebuild_alias.
24385         (execute_todo): Adjust.
24386         (execute_one_pass): Init dump files early.
24387         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
24388         call-clobbered.
24389         (create_general_new_stmt): Clear vops.
24390         * tree-ssa-reassoc.c (get_rank): Adjust.
24391         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
24392         symbols for renaming.
24393         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
24394         (PARAM_AVG_ALIASED_VOPS): Likewise.
24395         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
24396         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
24397         * tree-ssa-operands.c: Simplify for new virtual operand representation.
24398         (operand_build_cmp, copy_virtual_operands,
24399         create_ssa_artificial_load_stmt, add_to_addressable_set,
24400         gimple_add_to_addresses_taken): Remove public functions.
24401         (unlink_stmt_vdef): New function.
24402
24403 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
24404
24405         * config.gcc (powerpc-*-linux*): Merge variants.
24406
24407 2009-04-02  Chao-ying Fu  <fu@mips.com>
24408             James Grosbach  <james.grosbach@microchip.com>
24409
24410         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
24411         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
24412         cop0_sp_offset.
24413         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
24414         keep_interrupts_masked_p, use_debug_exception_return_p.
24415         (mips_attribute_table): Add interrupt, use_shadow_register_set,
24416         keep_interrupts_masked, use_debug_exception_return.
24417         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
24418         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
24419         New functions.
24420         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
24421         (mips_print_operand): Process COP0 registers to print $0 .. $31
24422         correctly for GAS to process.
24423         (mips_interrupt_extra_call_saved_reg_p): New function.
24424         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
24425         extra registers.
24426         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
24427         (mips_compute_frame_info): Add supports for interrupt context that
24428         includes doubleword accumulators and COP0 registers.
24429         (mips_for_each_saved_acc): New function.
24430         (mips_for_each_saved_gpr_and_fpr): Change the function name from
24431         mips_for_each_saved_reg.
24432         (mips_save_reg): Save accumulators.
24433         (mips_kernel_reg_p): A new for_each_rtx callback.
24434         (mips_expand_prologue): Support interrupt handlers.
24435         (mips_restore_reg): Restore accumulators.
24436         (mips_expand_epilogue): Support interrupt handlers.
24437         (mips_can_use_return_insn): Return false for interrupt handlers.
24438         (mips_epilogue_uses): New function.
24439         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
24440         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
24441         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
24442         cop0_move): New instructions.
24443         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
24444         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
24445         defines.
24446         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
24447         New defines.
24448         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
24449         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
24450         interrupt handlers, we use K0 as the temporary register.
24451         (EPILOGUE_USES): Change to a function call.
24452         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
24453         handlers, we use K0 as the temporary register.
24454
24455         * doc/extend.texi (Function Attributes): Document interrupt,
24456         use_shadow_register_set, keep_interrupts_masked,
24457         use_debug_exception_return for MIPS attributes.
24458
24459 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
24460
24461         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
24462         Remove a number of t-files from tmake_file.
24463         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
24464         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
24465         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
24466         target_prototype, not TARGET_PROTOTYPE.
24467         (LINK_OS_GNU_SPEC): Define.
24468         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
24469         and darwin-ldoubdle.c.
24470
24471 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
24472
24473         PR driver/39293
24474         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
24475         (cpp_options): Ditto.
24476         (default_compilers): Ditto.
24477         (display_help): Ditto.
24478         (process_command): Ditto.
24479         (do_spec_1): Ditto.
24480         (set_input): Use lbasename instead of duplicate code.
24481         (save_temps_prefix): New static for -save-temps=obj.
24482         (save_temps_length): Ditto.
24483
24484         * doc/invoke.texi (-save-temps=obj): Document new variant to
24485         -save-temps switch.
24486
24487 2009-04-02  Jeff Law  <law@redhat.com>
24488
24489         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
24490         variable.
24491
24492 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
24493
24494         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
24495         * configure: Regenerated.
24496
24497 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
24498
24499         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
24500         share the argument list.
24501
24502 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
24503
24504         Merge
24505
24506         2009-02-12  Diego Novillo  <dnovillo@google.com>
24507
24508         * varpool.c (debug_varpool): New.
24509         * cgraph.h (debug_varpool): Declare.
24510
24511 2009-04-02  Jan Hubicka  <jh@suse.cz>
24512
24513         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
24514         pass.
24515
24516 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
24517
24518         * config/i386/i386.c (ix86_abi): Move initialization to ...
24519         (override_options): Here.
24520
24521 2009-04-02  Christian Bruel  <christian.bruel@st.com>
24522
24523         * config/sh/sh.c (sh_dwarf_register_span): New function.
24524         (TARGET_DWARF_REGISTER_SPAN): Define.
24525         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
24526
24527 2009-04-02  Ira Rosen  <irar@il.ibm.com>
24528
24529         PR tree-optimization/39595
24530         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
24531         interleaved loads group is not  greater than the SLP group size.
24532
24533 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
24534
24535         * builtins.c (is_builtin_name): New.
24536         (called_as_built_in): Use is_builtin_name.
24537         * tree.h (is_builtin_name): New.
24538         * varasm.c (incorporeal_function_p): Use is_builtin_name
24539
24540 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
24541
24542         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
24543
24544 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
24545
24546         PR c++/26693
24547         * c-decl.c (clone_underlying_type): Move this ...
24548         * c-common.c (set_underlying_type): ... here.
24549         Also, make sure the function properly sets TYPE_STUB_DECL() on
24550         the newly created typedef variant type.
24551         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
24552         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
24553         points.
24554
24555 2009-04-02  Richard Guenther  <rguenther@suse.de>
24556
24557         PR tree-optimization/37221
24558         * tree-flow.h (degenerate_phi_result): Declare.
24559         * tree-ssa-dom.c (degenerate_phi_result): Export.
24560         * tree-scalar-evolution.c (analyze_initial_condition): If
24561         the initial condition is defined by a degenerate PHI node
24562         use the degenerate value.
24563
24564 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
24565
24566         PR rtl-optimization/39588
24567         * combine.c (merge_outer_ops): Do not set the constant when this
24568         is not necessary.
24569         (simplify_shift_const_1): Do not modify it either in this case.
24570
24571 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
24572
24573         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
24574         tuning is deprecated if -mtune value is set to an Itanium1 variant.
24575
24576 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
24577
24578         PR c/29027
24579         * c-lex.c (interpret_float): Default (no suffix) is double.
24580
24581 2009-04-1  Xinliang David Li  <davidxl@google.com>
24582
24583         * config/i386/i386.c (legitimate_constant_p): Recognize
24584         all one vector constant.
24585
24586 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24587
24588         * config/vax/vax.c: Add #includes to silence warnings.
24589         Change #include order to silence two warnings.
24590
24591 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24592
24593         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
24594         (ASM_SPEC): Pass -k to the assembler for PIC code.
24595
24596 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24597
24598         * config.gcc: Add vax-*-linux* to the switch.
24599         * config/vax/linux.h: New file. (TARGET_VERSION,
24600         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
24601
24602 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24603
24604         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
24605         Use predicate macros instead of GET_CODE() == foo.
24606         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
24607         ashlsi3, rotrsi3, <unnamed>): Likewise.
24608
24609 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24610
24611         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
24612         jbbccihi, jbbccisi): Remova trailing whitespace.
24613         * config/vax/constraints.md: Likewise.
24614         * config/vax/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
24615         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
24616         * config/vax/predicates.md: Likewise.
24617         * config/vax/vax.c (print_operand_address, vax_output_int_move,
24618         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
24619         * config/vax/vax.h: Likewise.
24620         * config/vax/vax.md (nonlocal_goto): Likewise.
24621
24622 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24623
24624         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
24625         (indirectable_address_p, adjacent_operands_p): Add spaces around
24626         braces.
24627         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
24628
24629 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24630
24631         * config/vax/vax.c (legitimate_constant_address_p,
24632         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
24633         index_term_p, reg_plus_index_p, legitimate_address_p,
24634         vax_mode_dependent_address_p): Update comments to match functions
24635         modified by the recent int->bool conversion.
24636
24637 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24638
24639         * config/vax/builtins.md: Update copyright message.
24640         * config/vax/constraints.md: Likewise.
24641         * config/vax/netbsd-elf.h: Likewise.
24642         * config/vax/predicates.md: Likewise.
24643         * config/vax/vax-protos.h: Likewise.
24644         * config/vax/vax.c: Likewise.
24645         * config/vax/vax.h: Likewise.
24646         * config/vax/vax.md: Likewise.
24647         * config/vax/vax.opt: Likewise.
24648
24649 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24650
24651         * config/vax/builtins.md (ffssi2, ffssi2_internal,
24652         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
24653         * config/vax/constraints.md (B, R): Likewise.
24654         * config/vax/predicates.md (external_memory_operand,
24655         nonimmediate_addsub_di_operand): Likewise.
24656         * config/vax/vax.c (vax_output_int_add): Likewise.
24657         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
24658         untyped_call): Likewise.
24659
24660 2009-04-01  Matt Thomas  <matt@3am-software.com>
24661
24662         * config/vax/predicates.md: New file.
24663         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
24664         external_const_operand, nonsymbolic_operand, external_memory_operand,
24665         indirect_memory_operand, indexed_memory_operand,
24666         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
24667         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
24668         predicate.
24669         * config/vax/constraints.md: New file.
24670         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
24671         New constraint.
24672         * config/vax/builtins.md: New file.
24673         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
24674         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
24675         jbbccisi): Define.
24676         * config/vax/vax.opt (mqmath): Add option.
24677         * config/vax/vax.md (isfx): Extend with DI.
24678         (VAXintQH, VAXintQHSD): Define.
24679         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
24680         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
24681         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
24682         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
24683         (movdi): Update constraints and use vax_output_int_move().
24684         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
24685         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
24686         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
24687         nonlocal_goto): New.
24688         (mov<mode>): Extend accepted operand types.
24689         (subdi3_old): Rename from subdi3, change update constraints and use
24690         a new implementation.
24691         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
24692         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
24693         MOVE_RATIO, CLEAR_RATIO): Define.
24694         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
24695         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
24696         (PRINT_OPERAND): Redefine using a function instead of inlined code.
24697         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
24698         (split_quadword_operands): Make static and really allow variable
24699         splitting.
24700         (print_operand_address): Update for PIC generation.
24701         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
24702         indexable_address_p, fixup_mathdi_operand,
24703         vax_expand_addsub_di_operands, adjacent_operands_p): New.
24704         (vax_float_literal, legitimate_constant_p,
24705         indirectable_constant_address_p, index_term_p,
24706         reg_plus_index_p): Return bool instead of int.
24707         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
24708         where needed.
24709         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
24710         generation.
24711         (vax_output_conditional_branch): Indent.
24712         (legitimate_constant_address_p, indirectable_constant_address_p,
24713         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
24714         vax_mode_dependent_address_p): Return bool instead of int, update for
24715         PIC generation.
24716         * config/vax/vax-protos.h (legitimate_constant_address_p,
24717         legitimate_constant_p, legitimate_address_p,
24718         vax_mode_dependent_address_p): Change declaration to bool.
24719         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
24720         vax_expand_addsub_di_operands, vax_output_int_subtract,
24721         vax_output_movmemsi): Declare.
24722         (split_quadword_operands, vax_float_literal): Delete declaration.
24723         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
24724         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
24725         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
24726         ASM_OUTPUT_DWARF_PCREL): Define.
24727         (ASM_SPEC): Change definition to allow PIC generation.
24728
24729 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
24730
24731         * doc/sourcebuild.texi: Update front-end requirements.
24732
24733 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
24734
24735         PR target/39226
24736         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
24737         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
24738         (booldi3_internal3): Use boolean_or_operator instead of
24739         boolean_operator.
24740
24741 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
24742
24743         PR c/39605
24744         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
24745         declarator whose size is not an integer constant expression but
24746         folds to an integer constant, then treat it as a constant
24747         subsequently.
24748
24749 2009-04-01  Richard Guenther  <rguenther@suse.de>
24750
24751         * fold-const.c (fold_plusminus_mult_expr): Do not fold
24752         i * 4 + 2 to (i * 2 + 1) * 2.
24753
24754 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
24755
24756         PR c/37772
24757         * c-parser.c (c_parser_asm_statement): Skip until close paren and
24758         return if c_parser_asm_string_literal returned NULL.
24759
24760 2009-04-01  Nick Clifton  <nickc@redhat.com>
24761
24762         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
24763         already defined.
24764         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
24765         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
24766         other typedefs to avoid conflicts with libgcc2.c.  Define labels
24767         to gain 16-bit bit-manipulation functions from libgcc2.c and then
24768         include it.
24769         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
24770         to gain 16-bit trapping arithmetic functions from libgcc2.c and
24771         then include it.
24772
24773 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
24774
24775         * varasm.c (default_function_rodata_section): Declare DOT as
24776         const char*.
24777
24778 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
24779             Andrey Galkin  <agalkin@hypercom.com>
24780
24781         PR/39492
24782         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
24783         Make object_name unique for each process.
24784
24785 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
24786
24787         PR other/39591
24788         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
24789         addressable variables in the parallel that could go out of scope while
24790         running queued tasks.
24791
24792 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
24793
24794         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
24795         (CASE_VALUES_THRESHOLD): Redefine.
24796         * config/avr/avr.c (avr_override_options): Remove initialization of
24797         avr_case_values_threshold variable.
24798         (avr_case_values_threshold): Remove variable. Add new function.
24799         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
24800         * config/avr/avr.opt (mno-tablejump): Remove option.
24801         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
24802
24803 2009-04-01  DJ Delorie  <dj@redhat.com>
24804
24805         * varasm.c (default_function_rodata_section): Don't assume
24806         anything about where the first '.' in the section name is.
24807
24808 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
24809
24810         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
24811         rs6000_emit_stack_tie.
24812
24813 2009-03-31  Ian Lance Taylor  <iant@google.com>
24814
24815         * tree-eh.c (tree_remove_unreachable_handlers): Compare
24816         gimple_code with GIMPLE_RESX, not RESX.
24817
24818 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
24819
24820         * c-common.c (c_get_ident): New.
24821         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
24822
24823 2009-04-01  Ben Elliston  <bje@au.ibm.com>
24824
24825         * config/rs6000/sysv4.opt (msdata): Improve option description.
24826
24827 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
24828
24829         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
24830         (divdf3_internal_lat): Remove.
24831         (divxf3_internal_lat): Remove.
24832         (divxf3_internal_thr): Remove.
24833         (divxf): Use divxf3_internal.
24834         * config/ia64/div.md (divsf3_internal_lat): New.
24835         (divdf3_internal_lat): New.
24836         (divxf3_internal): New.
24837
24838 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
24839
24840         PR c/448
24841         * Makefile.in (USE_GCC_STDINT): Define.
24842         (stmp-int-hdrs): Install stdint.h if applicable.
24843         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
24844         if known.
24845         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
24846         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
24847         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
24848         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
24849         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
24850         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
24851         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
24852         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
24853         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
24854         (c_common_nodes_and_builtins): Initialize
24855         underlying_wchar_type_node.  Do not initialize
24856         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
24857         nodes for new types.
24858         (c_stddef_cpp_builtins): Define macros for new types.
24859         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
24860         Remove.
24861         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
24862         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
24863         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
24864         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
24865         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
24866         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
24867         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
24868         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
24869         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
24870         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
24871         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
24872         int16_type_node, int32_type_node, int64_type_node,
24873         uint8_type_node, uint16_type_node, c_uint32_type_node,
24874         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
24875         int_least32_type_node, int_least64_type_node,
24876         uint_least8_type_node, uint_least16_type_node,
24877         uint_least32_type_node, uint_least64_type_node,
24878         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
24879         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
24880         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
24881         uintptr_type_node): Define.
24882         * c-cppbuiltin.c (builtin_define_constants,
24883         builtin_define_type_minmax): New.
24884         (builtin_define_stdint_macros): Define more macros.
24885         (c_cpp_builtins): Define more limit macros.
24886         (type_suffix): New.
24887         (builtin_define_type_max): Define in terms of
24888         builtin_define_type_minmax.  Remove is_long parameter.  All
24889         callers changed.
24890         * config.gcc (use_gcc_stdint): Define.
24891         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
24892         Add newlib-stdint.h for generic targets.
24893         * config/glibc-stdint.h, config/newlib-stdint.h,
24894         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
24895         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
24896         * config/score/score.h (UINTPTR_TYPE): Define.
24897         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
24898         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
24899         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
24900         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
24901         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
24902         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
24903         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
24904         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
24905         * config/spu/spu.h (STDINT_LONG32): Define.
24906         * configure.ac (use_gcc_stdint): Substitute.
24907         * configure: Regenerate.
24908         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
24909         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
24910         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
24911         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
24912         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
24913         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
24914         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
24915         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
24916         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
24917         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
24918         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
24919         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
24920         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
24921         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
24922         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
24923         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
24924         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
24925         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
24926         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
24927         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
24928         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
24929         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
24930         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
24931         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
24932         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
24933         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
24934         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
24935         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
24936         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
24937
24938 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
24939
24940         * loop-iv.c (suitable_set_for_replacement): Renamed from
24941         simplify_using_assignment; changed to return bool and to accept new
24942         args DEST and SRC.  Return true iff we find a source/destination pair
24943         that can be used to make a replacement, and fill SRC and DEST if so.
24944         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
24945         changed.
24946         (simplify_using_initial_values): Deal with altered regs here and track
24947         more precisely the effect they have on the validity of our expression.
24948
24949         * loop-iv.c (simplify_using_condition): A condition of the form
24950         (EQ REG CONST) can be used to simply make a substitution.
24951         (simplify_using_initial_values): Keep track of conditions we have seen
24952         and keep using them to simplify new expressions, while applying the
24953         same substitutions to them as to the expression.
24954
24955         * simplify-rtx.c (simplify_relational_operation_1): Simplify
24956         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
24957         GEU/LTU reversed.
24958
24959         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
24960         changed.  Use this when trying to improve the upper bound.
24961         Generate the comparison by using simplify_gen_relational.
24962
24963         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
24964
24965         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
24966         functions.
24967         (simplify_using_assignment, simplify_using_initial_values): Call
24968         replace_in_expr to make replacements.  Call replace_single_def_regs
24969         once on the initial version of the expression.
24970
24971 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24972
24973         PR target/27237
24974         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
24975
24976 2009-03-31  Richard Guenther  <rguenther@suse.de>
24977
24978         PR middle-end/31029
24979         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
24980         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
24981
24982 2009-03-31  Richard Guenther  <rguenther@suse.de>
24983
24984         * tree.h (div_if_zero_remainder): Declare.
24985         * fold-const.c (div_if_zero_remainder): Export.
24986         * tree-ssa-forwprop.c
24987         (forward_propagate_addr_into_variable_array_index): Handle
24988         constant array index addition outside of the variable index.
24989
24990 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
24991
24992         PR target/39592
24993         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
24994         define_splits, floatunssi<mode>2): Require x87 conversions from
24995         DImode to be permitted.
24996
24997 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
24998
24999         PR preprocessor/15638
25000         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
25001
25002 2009-03-31  Richard Guenther  <rguenther@suse.de>
25003
25004         PR middle-end/23401
25005         PR middle-end/27810
25006         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
25007         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
25008         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
25009         a separate statement.
25010         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
25011         (lookup_tmp_var): Likewise.
25012         (is_gimple_formal_tmp_or_call_rhs): Remove.
25013         (is_gimple_reg_or_call_rhs): Rename to ...
25014         (is_gimple_reg_rhs_or_call): ... this.
25015         (is_gimple_mem_or_call_rhs): Rename to ...
25016         (is_gimple_mem_rhs_or_call): ... this.
25017         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
25018         DECL_GIMPLE_REG_P only if is_formal is true.
25019         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
25020         for non-proper post-modify expression gimplification.
25021         (gimplify_self_mod_expr): For post-modify expressions gimplify
25022         the lvalue to a minimal lvalue.
25023         (rhs_predicate_for): Remove formal temp case.
25024         (gimplify_modify_expr_rhs): Likewise.
25025         (gimplify_addr_expr): Use is_gimple_reg.
25026         (gimplify_expr): Remove formal temp cases.
25027         (gimple_regimplify_operands): Likewise.
25028         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
25029         and FILTER_EXPR like constants.
25030         * gimple.c (walk_gimple_op): Fix val_only initialization, use
25031         is_gimple_reg.
25032         (is_gimple_formal_tmp_rhs): Remove.
25033         (is_gimple_reg_rhs): Remove special casing.
25034         (is_gimple_mem_rhs): Fix.
25035         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
25036         (is_gimple_formal_tmp_var): Remove.
25037         (is_gimple_formal_tmp_reg): Likewise.
25038         (is_gimple_min_lval): Allow invariant component ref parts.
25039         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
25040         is_gimple_formal_tmp_reg): Remove declarations.
25041         * tree-cfg.c (verify_expr): Verify that variables with address
25042         taken do not have DECL_GIMPLE_REG_P set.
25043         * tree-mudflap.c (mf_build_check_statement_for): Use
25044         force_gimple_operand instead of gimplify_expr.
25045
25046 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
25047
25048         * modulo-sched.c (sms_schedule_by_order): Pass the actual
25049         schedulable rows to compute_split_row.
25050
25051 2009-03-31  Ben Elliston  <bje@au.ibm.com>
25052
25053         PR target/31635
25054         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
25055         OPT_mvrsave.
25056
25057 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
25058
25059         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
25060         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
25061         * configure: Regenerate.
25062         * config.in: Regenerate.
25063         * config/rs6000/rs6000.opt (mtls-markers): Add.
25064         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
25065         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
25066         (tls_ld_aix, tls_ld_sysv): Likewise.
25067         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
25068         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
25069
25070 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
25071
25072         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
25073
25074 2009-03-30  Jan Hubicka  <jh@suse.cz>
25075
25076         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
25077         out of RESX.
25078         (tree_remove_unreachable_handlers): Cleanup EH predecestor
25079         detection and label handling.
25080
25081 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
25082
25083         * ira-int.h (ira_allocno): Rename left_conflicts_num to
25084         left_conflicts_size.
25085         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
25086         ALLOCNO_LEFT_CONFLICTS_SIZE.
25087
25088         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
25089         remove_allocno_from_bucket_and_push,
25090         allocno_spill_priority_compare, push_allocnos_to_stack,
25091         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
25092         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
25093         (setup_allocno_left_conflicts_num): Ditto.  Rename to
25094         setup_allocno_left_conflicts_size.
25095         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
25096         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
25097         setup_allocno_left_conflicts_size instead of
25098         setup_allocno_left_conflicts_num.
25099
25100         * ira-build.c (ira_create_allocno): Use
25101         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
25102         ALLOCNO_LEFT_CONFLICTS_NUM.
25103
25104 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
25105
25106         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
25107         instead of DF_LR_OUT.
25108
25109         * ira-lives.c (process_bb_node_lives): Ditto.
25110
25111         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
25112         instead of DF_LR_{OUT,IN}.
25113
25114         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
25115
25116         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
25117
25118 2009-03-30  Jan Hubicka  <jh@suse.cz>
25119
25120         * except.c (label_to_region_map): Fix thinko.
25121
25122 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
25123
25124         PR middle-end/38237
25125         * tree.h (tree_find_value): New declaration.
25126         * tree.c (tree_find_value): New function.
25127         * varasm.c (assemble_external): Avoid duplicate entries on lists.
25128
25129 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
25130
25131         PR debug/39563
25132         * c-decl.c (struct c_binding): Add locus field.
25133         (bind): Add locus argument, set locus field from it.
25134         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
25135         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
25136         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
25137         implicitly_declare, undeclared_variable, lookup_label,
25138         declare_label, c_make_fname_decl, c_builtin_function,
25139         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
25140         bind callers.
25141
25142 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
25143
25144         PR target/38781
25145         * config/i386/i386.c (classify_argument): Check total size of
25146         structure.
25147
25148 2009-03-30  Martin Jambor  <mjambor@suse.cz>
25149
25150         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
25151         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
25152         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
25153         respectively.
25154
25155         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
25156         seen_variable_array_ref while also traversing a union.
25157
25158         * tree-inline.c (optimize_inline_calls): Do not call
25159         cgraph_node_remove_callees.
25160         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
25161         (pass_remove_cgraph_callee_edges): New variable.
25162         * passes.c (init_optimization_passes): Add
25163         pass_remove_cgraph_callee_edges after early inlining and before all
25164         late intraprocedural passes.
25165
25166         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
25167
25168 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
25169
25170         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
25171         Fix typos in names.
25172
25173 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
25174
25175         * combine.c (simplify_comparison): Use have_insn_for.
25176         * dojump.c (do_jump): Likewise.
25177
25178 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
25179
25180         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
25181         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
25182         sparc_compare_op0 like sparc_compare_emitted used to be handled.
25183         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
25184         instead of sparc_compare_emitted.
25185         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
25186         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
25187         instead of sparc_compare_emitted.
25188
25189 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
25190
25191         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
25192         enter/exit cfglayout mode.
25193         (pass_partition_block): Require it.
25194         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
25195         (combine_instructions): Track basic blocks instead of labels.
25196         (update_cfg_for_uncondjump): New.
25197         (try_combine): Use it.  Update jumps after rescanning.
25198         (pass_combine): Require PROP_cfglayout.
25199         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
25200
25201 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
25202
25203         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
25204         Provide/destroy PROP_cfglayout respectively.
25205         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
25206         * tree-pass.h (PROP_cfglayout): New.
25207
25208 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
25209
25210         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
25211         fold_convert_const_fixed_from_fixed,
25212         fold_convert_const_fixed_from_int,
25213         fold_convert_const_fixed_from_real, fold_negate_const): Do not
25214         set TREE_CONSTANT_OVERFLOW.
25215         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
25216         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
25217
25218 2009-03-30  Ira Rosen  <irar@il.ibm.com>
25219
25220         * tree-vect-loop-manip.c: New file.
25221         * tree-vectorizer.c: Update documentation and included files.
25222         (vect_loop_location): Make extern.
25223         (rename_use_op): Move to tree-vect-loop-manip.c
25224         (rename_variables_in_bb, rename_variables_in_loop,
25225         slpeel_update_phis_for_duplicate_loop,
25226         slpeel_update_phi_nodes_for_guard1,
25227         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
25228         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
25229         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
25230         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
25231         find_loop_location): Likewise.
25232         (new_stmt_vec_info): Move to tree-vect-stmts.c.
25233         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
25234         get_vectype_for_scalar_type, vect_is_simple_use,
25235         supportable_widening_operation, supportable_narrowing_operation):
25236         Likewise.
25237         (bb_in_loop_p): Move to tree-vect-loop.c.
25238         (new_loop_vec_info, destroy_loop_vec_info,
25239         reduction_code_for_scalar_code, report_vect_op,
25240         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
25241         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
25242         (vect_supportable_dr_alignment): Likewise.
25243         * tree-vectorizer.h (tree-data-ref.h): Include.
25244         (vect_loop_location): Declare.
25245         Reorganize function declarations according to the new file structure.
25246         * tree-vect-loop.c: New file.
25247         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
25248         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
25249         * tree-vect-data-refs.c: New file.
25250         * tree-vect-patterns.c (timevar.h): Don't include.
25251         * tree-vect-stmts.c: New file.
25252         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
25253         tree-vect-slp.c, tree-vect-loop.c.
25254         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
25255         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
25256         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
25257         (tree-vect-analyze.o): Remove.
25258         (tree-vect-transform.o): Likewise.
25259         (tree-vect-data-refs.o): Add rule.
25260         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
25261         tree-vect-slp.o): Likewise.
25262         (tree-vect-patterns.o): Remove redundant dependencies.
25263         (tree-vectorizer.o): Likewise.
25264         * tree-vect-slp.c: New file.
25265
25266 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25267
25268         * optc-gen.awk: Warn if an option flag has multiple different
25269         help strings.
25270
25271 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
25272
25273         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
25274         -floop-block): Document dependences on PPL, CLooG and Graphite.
25275
25276 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
25277
25278         PR rtl-optimization/323
25279         * c-common.c (c_fully_fold, convert_and_check,
25280         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
25281         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
25282         * c-common.def (EXCESS_PRECISION_EXPR): New.
25283         * c-cppbuiltin.c (builtin_define_float_constants): Define
25284         constants with enough digits for long double.
25285         * c-lex.c (interpret_float): Interpret constant with excess
25286         precision where appropriate.
25287         * c-opts.c (c_common_post_options): Set
25288         flag_excess_precision_cmdline.  Give an error for
25289         -fexcess-precision=standard for C++ for processors where the
25290         option is significant.
25291         * c-parser.c (c_parser_conditional_expression): Handle excess
25292         precision in condition.
25293         * c-typeck.c (convert_arguments): Handle arguments with excess
25294         precision.
25295         (build_unary_op): Move excess precision outside operation.
25296         (build_conditional_expr): Likewise.
25297         (build_compound_expr): Likewise.
25298         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
25299         (build_modify_expr): Handle excess precision in RHS.
25300         (convert_for_assignment): Handle excess precision in converted
25301         value.
25302         (digest_init, output_init_element, process_init_element): Handle
25303         excess precision in initializer.
25304         (c_finish_return): Handle excess precision in return value.
25305         (build_binary_op): Handle excess precision in operands and add
25306         excess precision as needed for operation.
25307         * common.opt (-fexcess-precision=): New option.
25308         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
25309         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
25310         For standard excess precision, output explicit conversion to and
25311         truncation from XFmode.
25312         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
25313         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
25314         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
25315         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
25316         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
25317         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
25318         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
25319         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
25320         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
25321         define_splits, sqrt<mode>2): Disable where appropriate for
25322         standard excess precision.
25323         * convert.c (convert_to_real): Do not shorten arithmetic to type
25324         for which excess precision would be used.
25325         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
25326         * doc/invoke.texi (-fexcess-precision=): Document option.
25327         (-mfpmath=): Correct index entry.
25328         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
25329         flag_excess_precision): New.
25330         * langhooks.c (lhd_post_options): Set
25331         flag_excess_precision_cmdline.
25332         * opts.c (common_handle_option): Handle -fexcess-precision=.
25333         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
25334         init_excess_precision): New.
25335         (lang_dependent_init_target): Call init_excess_precision.
25336         * tree.c (excess_precision_type): New.
25337         * tree.h (excess_precision_type): Declare.
25338
25339 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
25340
25341         PR c/35235
25342         * c-typeck.c (build_component_ref): Do not copy qualifiers from
25343         non-lvalue to component.
25344
25345 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
25346
25347         PR preprocessor/34695
25348         * Makefile.in (c-opts.o): Depend on c-tree.h.
25349         * c-common.c: Move down include of diagnostic.h.
25350         (done_lexing, c_cpp_error): New.
25351         * c-common.h (done_lexing): Declare.
25352         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
25353         (parse_in).
25354         * c-opts.c: Include c-tree.h.
25355         (c_common_init_options): Set preprocessor error callback.
25356         (c_common_handle_option): Do not set preprocessor
25357         inhibit_warnings, warnings_are_errors, warn_system_headers,
25358         pedantic_errors or inhibit_warnings flags.
25359         (c_common_post_options): Do not check cpp_errors (parse_in).
25360         (c_common_finish): Do not output dependencies if there were
25361         errors.  Do not check return value of cpp_finish.
25362         * c-ppoutput.c (pp_file_change): Set input_location.
25363         * c-tree.h (c_cpp_error): Declare.
25364         * diagnostic.c (diagnostic_set_info_translated): Also initialize
25365         override_column.
25366         (diagnostic_build_prefix): Check override_column.
25367         * diagnostic.h (diagnostic_info): Add override_column field.
25368         (diagnostic_override_column): Define.
25369
25370 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
25371
25372         * c-common.c (c_expand_expr, c_staticp): Remove.
25373         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
25374         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
25375         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
25376         * c-gimplify.c (gimplify_compound_literal_expr,
25377         optimize_compound_literals_in_ctor): Remove.
25378         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
25379         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
25380         * c-semantics.c (emit_local_var): Remove.
25381
25382         * langhooks-def.h (lhd_expand_expr): Remove.
25383         * langhooks.c (lhd_expand_expr): Remove.
25384         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
25385
25386         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
25387         handling from c-semantics.c; don't call into langhook.
25388         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
25389         * gimplify.c (gimplify_compound_literal_expr,
25390         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
25391         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
25392         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
25393         as was done in c-gimplify.c.
25394         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
25395         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
25396         Move from c-common.h.
25397         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
25398
25399         * tree.c (staticp): Do not call langhook.
25400         * langhooks.c (lhd_staticp): Delete.
25401         * langhooks-def.h (lhd_staticp): Delete prototype.
25402         (LANG_HOOKS_STATICP): Delete.
25403         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
25404
25405         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
25406         instead of DECL_STMTs.
25407
25408 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
25409
25410         PR c/456
25411         PR c/5675
25412         PR c/19976
25413         PR c/29116
25414         PR c/31871
25415         PR c/35198
25416         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
25417         void_type_node.
25418         (fold_call_expr): Return a NOP_EXPR from folding rather than the
25419         contained expression.
25420         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
25421         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
25422         conditional expressions for C.
25423         (decl_constant_value_for_optimization): Move from
25424         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
25425         whether optimizing and that the expression is a VAR_DECL not of
25426         array type instead of doing such checks in the caller.  Do not
25427         check pedantic.  Call gcc_unreachable for C++.
25428         * c-common.def (C_MAYBE_CONST_EXPR): New.
25429         * c-common.h (c_fully_fold, c_save_expr,
25430         decl_constant_value_for_optimization): New prototypes.
25431         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
25432         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
25433         EXPR_INT_CONST_OPERANDS): Define.
25434         * c-convert.c (convert): Strip nops from expression.
25435         * c-decl.c (groktypename): Take extra parameters expr and
25436         expr_const_operands.  Update call to grokdeclarator.
25437         (start_decl): Update call to grokdeclarator.  Add statement for
25438         expressions used in type of decl.
25439         (grokparm): Update call to grokdeclarator.
25440         (push_parm_decl): Update call to grokdeclarator.
25441         (build_compound_literal): Add parameter non_const and build a
25442         C_MAYBE_COSNT_EXPR if applicable.
25443         (grokdeclarator): Take extra parameters expr and
25444         expr_const_operands.  Track expressions used in declaration
25445         specifiers and declarators.  Fold array sizes and track whether
25446         they are constant expressions and whether they are integer
25447         constant expressions.
25448         (parser_xref_tag): Set expr and expr_const_operands fields in
25449         return value.
25450         (grokfield): Update call to grokdeclarator.
25451         (start_function): Update call to grokdeclarator.
25452         (build_null_declspecs): Set expr and expr_const_operands fields in
25453         return value.
25454         (declspecs_add_type): Handle expressions in typeof specifiers.
25455         * c-parser.c (c_parser_declspecs): Set expr and
25456         expr_const_operands fields for declaration specifiers.
25457         (c_parser_enum_specifier): Likewise.
25458         (c_parser_struct_or_union_specifier): Likewise.
25459         (c_parser_typeof_specifier): Likewise.  Update call to
25460         groktypename.  Fold expression as needed.  Return expressions with
25461         type instead of adding statements.
25462         (c_parser_attributes): Update calls to c_parser_expr_list.
25463         (c_parser_statement_after_labels): Fold expression before passing
25464         to objc_build_throw_stmt.
25465         (c_parser_condition): Fold expression.
25466         (c_parser_asm_operands): Fold expression.
25467         (c_parser_conditional_expression): Use c_save_expr.  Update call
25468         to build_conditional_expr.
25469         (c_parser_alignof_expression): Update call to groktypename.
25470         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
25471         original_code.  Fold expression argument of va_arg.  Create
25472         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
25473         argument to va_arg.  Update calls to groktypename.  Fold array
25474         index for offsetof.  Verify that first argument to
25475         __builtin_choose_expr has integer type.
25476         (c_parser_postfix_expression_after_paren_type): Update calls to
25477         groktypename and build_compound_literal.  Handle expressions with
25478         side effects in type name.
25479         (c_parser_postfix_expression_after_primary): Update call to
25480         c_parser_expr_list.  Set original_code for calls to
25481         __builtin_constant_p.
25482         (c_parser_expr_list): Take extra parameter fold_p.  Fold
25483         expressions if requested.
25484         (c_parser_objc_type_name): Update call to groktypename.
25485         (c_parser_objc_synchronized_statement): Fold expression.
25486         (c_parser_objc_receiver): Fold expression.
25487         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
25488         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
25489         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
25490         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
25491         (struct c_typespec): Add elements expr and expr_const_operands.
25492         (struct c_declspecs): Add elements expr and expr_const_operands.
25493         (groktypename, build_conditional_expr, build_compound_literal):
25494         Update prototypes.
25495         (in_late_binary_op): Declare.
25496         * c-typeck.c (note_integer_operands): New function.
25497         (in_late_binary_op): New variable.
25498         (decl_constant_value_for_broken_optimization): Move to c-common.c
25499         and rename to decl_constant_value_for_optimization.
25500         (default_function_array_conversion): Do not strip nops.
25501         (default_conversion): Do not call
25502         decl_constant_value_for_broken_optimization.
25503         (build_array_ref): Do not fold result.
25504         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
25505         result when operand is a VLA.
25506         (c_expr_sizeof_type): Update call to groktypename.  Handle
25507         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
25508         result when operand names a VLA type.
25509         (build_function_call): Update call to build_compound_literal.
25510         Only fold result for calls to __builtin_* functions.  Strip
25511         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
25512         the function designator.
25513         (convert_arguments): Fold arguments.  Update call to
25514         convert_for_assignment.
25515         (build_unary_op): Handle increment and decrement of
25516         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
25517         decrement earlier.  Fold operand of increment and decrement.
25518         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
25519         built for integer operand.  Wrap returns that are INTEGER_CSTs
25520         without being integer constant expressions or that have integer
25521         constant operands without being INTEGER_CSTs.
25522         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
25523         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
25524         result is an integer constant expression or can be used in
25525         unevaluated parts of one and avoid folding and wrap as
25526         appropriate.  Fold operands before possibly doing -Wsign-compare
25527         warnings.
25528         (build_compound_expr): Wrap result for C99 if operands can be used
25529         in integer constant expressions.
25530         (build_c_cast): Update call to digest_init.  Do not ignore
25531         overflow from casting floating-point constants to integers.  Wrap
25532         results that could be confused with integer constant expressions,
25533         null pointer constants or floating-point constants.
25534         (c_cast_expr): Update call to groktypename.  Handle expressions
25535         included in type name.
25536         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
25537         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
25538         Update calls to convert_for_assignment.
25539         (convert_for_assignment): Take new parameter
25540         null_pointer_constant.  Do not strip nops or call
25541         decl_constant_value_for_broken_optimization.  Set
25542         in_late_binary_op for conversions to boolean.
25543         (store_init_value): Update call to digest_init.
25544         (digest_init): Take new parameter null_pointer_constant.  Do not
25545         call decl_constant_value_for_broken_optimization.  pedwarn for
25546         initializers not constant expressions.  Update calls to
25547         convert_for_assignment.
25548         (constructor_nonconst): New.
25549         (struct constructor_stack): Add nonconst element.
25550         (really_start_incremental_init, push_init_level, pop_init_level):
25551         Handle constructor_nonconst and nonconst element.
25552         (set_init_index): Call constant_expression_warning for array
25553         designators.
25554         (output_init_element): Fold value.  Set constructor_nonconst as
25555         applicable.  pedwarn for initializers not constant expressions.
25556         Update call to digest_init.  Call constant_expression_warning
25557         where constant initializers are required.
25558         (process_init_element): Use c_save_expr.
25559         (c_finish_goto_ptr): Fold expression.
25560         (c_finish_return): Fold return value.  Update call to
25561         convert_for_assignment.
25562         (c_start_case): Fold switch expression.
25563         (c_process_expr_stmt): Fold expression.
25564         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
25565         ensure statement expression is not evaluated in constant expression.
25566         (build_binary_op): Track whether results are integer constant
25567         expressions or may occur in such, disable folding and wrap results
25568         as applicable.  Fold operands for -Wsign-compare warnings unless
25569         in_late_binary_op.
25570         (c_objc_common_truthvalue_conversion): Handle results folded to
25571         integer constants that are not integer constant expressions.
25572         * doc/extend.texi: Document when typeof operands are evaluated,
25573         that condition of __builtin_choose_expr is an integer constant
25574         expression, and more about use of __builtin_constant_p in
25575         initializers.
25576
25577 2009-03-29  Richard Guenther  <rguenther@suse.de>
25578
25579         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
25580         propagate addresses of array references.
25581
25582 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
25583
25584         * regmove.c (perhaps_ends_bb_p): Remove.
25585         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
25586         from INSN and check that the main loop stays within that basic block.
25587         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
25588         (regmove_forward_pass): Split out from regmove_optimize.  Use
25589         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
25590         (regmove_backward_pass): Split out from regmove_optimize.  Use
25591         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
25592         (regmove_optimize): Simplify.
25593
25594 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
25595
25596         PR target/39545
25597         * config/i386/i386.c (classify_argument): Ignore flexible array
25598         member in struct and warn ABI change.
25599
25600 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
25601
25602         * config/i386/i386-protos.h (ix86_agi_dependent): New.
25603
25604         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
25605         (ix86_adjust_cost): Updated.
25606
25607 2009-03-29  Jan Hubicka  <jh@suse.cz>
25608
25609         PR middle-end/28850
25610         * tree-pass.h (pass_cleanup_eh): New function.
25611         (remove_unreachable_regions): Break code handling RTL
25612         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
25613         that can not be reached by runtime.
25614         (can_be_reached_by_runtime): New function.
25615         (label_to_region_map): New function.
25616         (num_eh_regions): New function.
25617         (rtl_remove_unreachable_regions): New function.
25618         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
25619         (remove_eh_region): New function.
25620         * except.h: Include sbitmap and vecprim.
25621         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
25622         num_eh_regions): Declare.
25623         * passes.c (init_optimization_passes): Schedule cleanup_eh.
25624         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
25625         * tree-eh.c (tree_remove_unreachable_handlers): New function.
25626         (tree_empty_eh_handler_p): New function.
25627         (cleanup_empty_eh): New function.
25628         (cleanup_eh): New function.
25629         (pass_cleanup_eh): New function.
25630
25631 2009-03-29  Jan Hubicka  <jh@suse.cz>
25632
25633         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
25634         for removed regions.
25635
25636 2009-03-29  Jan Hubicka  <jh@suse.cz>
25637
25638         * except.c (dump_eh_tree): Dump all datastructures.
25639
25640 2009-03-29  Jan Hubicka  <jh@suse.cz>
25641
25642         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
25643         (duplicate_eh_regions_1): Likewise.
25644         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
25645         vector; call EH verification.
25646         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
25647         Be ready for region being removed.
25648
25649 2009-03-29  Jan Hubicka  <jh@suse.cz>
25650
25651         * bitmap.c (bitmap_last_set_bit): New function.
25652         * bitmap.h (bitmap_last_set_bit): Declare.
25653
25654 2009-03-29  David Ayers  <ayers@fsfe.org>
25655
25656         PR objc/27377
25657         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
25658         by calling objc_compare_types and surpress warnings about
25659         incompatible C pointers that are compatible ObjC pointers.
25660
25661 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
25662
25663         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
25664         call initialize_inline_failed.
25665         (initialize_inline_failed): Move it from here ...
25666         * cgraph.c (initialize_inline_failed): ... to here.
25667         (cgraph_create_edge): Call initialize_inline_failed rather than
25668         setting inline_failed directly.
25669
25670 2009-03-29  Ben Elliston  <bje@au.ibm.com>
25671
25672         PR target/32542
25673         * sysv4.opt (msdata): Improve comment.
25674         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
25675         * sysv4.h (SVR4_ASM_SPEC): Likewise.
25676
25677 2009-03-29  Ben Elliston  <bje@au.ibm.com>
25678
25679         PR target/30451
25680         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
25681         load and store attributes.
25682
25683 2009-03-29  Ben Elliston  <bje@au.ibm.com>
25684
25685         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
25686         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
25687         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
25688         * doc/extend.texi (X86 Built-in Functions): Add index entries for
25689         __builtin_infq and __builtin_huge_valq.
25690
25691 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
25692
25693         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
25694         atmega8m1 devices.
25695         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
25696         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
25697
25698 2009-03-28  Xinliang David Li  <davidxl@google.com>
25699
25700         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
25701         (do_dbg_cnt): New function.
25702
25703 2009-03-28  Jan Hubicka  <jh@suse.cz>
25704
25705         Merge from pretty-ipa:
25706
25707         2009-03-27  Jan Hubicka  <jh@suse.cz>
25708
25709         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
25710         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
25711         * passes.c (function_called_by_processed_nodes_p): New.
25712         * ipa-pure-const.c (check_call): Fix handling of operands.
25713         (analyze_function): Dump debug output for skipped bodies.
25714         (local_pure_const): Use function_called_by_processed_nodes_p.
25715         * dwarf2out.c (reference_to_unused): Use output.
25716         * passes.c (do_per_function_toporder): Likewise.
25717
25718         2008-11-12  Jan Hubicka  <jh@suse.cz>
25719
25720         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
25721         * ipa-pure-const.c (funct_state_d): Add can throw field; make
25722         state_set_in_source enum
25723         (check_decl): Ignore memory tags; do not set fake looping flags;
25724         dump diagnostics.
25725         (check_operand, check_tree, check_rhs_var, check_lhs_var,
25726         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
25727         (check_call, analyze_function): Rewrite.
25728         (check_stmt): New.
25729         (add_new_function): Update call of analyze_function.
25730         (generate_summary): Add call of analyze_function.
25731         (propagate): Propagate can_throw; handle state_set_in_source correctly.
25732         (local_pure_const): New function.
25733         (pass_local_pure_const): New pass.
25734         * ipa-inline.c (inline_transform): Set after_inlining.
25735         * tree-eh.c (stmt_can_throw_external): New.
25736         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
25737         work with aliasing built.
25738         * tree-flow.h (stmt_can_throw_external): New.
25739         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
25740         and local pure/const pass in early and late optimization queue.
25741
25742 2009-03-28  Martin Jambor  <mjambor@suse.cz>
25743
25744         * fold-const.c (get_pointer_modulus_and_residue): New parameter
25745         allow_func_align.
25746         (fold_binary): Allow function decl aligment consideration is the
25747         second argument is integer constant one.
25748         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
25749         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
25750         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
25751
25752 2009-03-28  Jan Hubicka  <jh@suse.cz>
25753
25754         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
25755         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
25756         * function.h (rtl_data): Add nothrow flag.
25757         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
25758         set DECL_NOTHROW for AVAILABLE functions.
25759
25760 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
25761
25762         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
25763         following vector keyword has expansion starting with pixel or bool
25764         keyword, expand vector to __vector and pixel or bool to __pixel or
25765         __bool.
25766
25767         PR c++/39554
25768         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
25769         warn_if_disallowed_function_p): Removed.
25770         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
25771         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
25772         warning_if_disallowed_function_p.
25773         * flags.h (warn_if_disallowed_function_p,
25774         warn_disallowed_functions): Removed.
25775         * common.opt (Wdisallowed-function-list=): Removed.
25776         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
25777
25778 2009-03-28  Richard Guenther  <rguenther@suse.de>
25779
25780         PR tree-optimization/38723
25781         * tree-ssa-pre.c (compute_avail): Add all default definitions to
25782         the entry block.
25783
25784 2009-03-28  Jan Hubicka  <jh@suse.cz>
25785
25786         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
25787         test introduced by my previous patch.
25788
25789 2009-03-28  Richard Guenther  <rguenther@suse.de>
25790
25791         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
25792         the PHIs value undefined.
25793
25794 2009-03-28  Jan Hubicka  <jh@suse.cz>
25795
25796         * tree-pass.h (pass_fixup_cfg): New pass.
25797         * ipa-inline.c (inline_transform): Set
25798         always_inline_functions_inlined/after_inlining.
25799         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
25800         (pass_fixup_cfg): New pass.
25801         * passes.c (init_optimization_passes): Add fixup_cfg.
25802
25803 2009-03-28  Richard Guenther  <rguenther@suse.de>
25804
25805         PR tree-optimization/38458
25806         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
25807         argument use the arguments copy-of value.
25808
25809 2009-03-28  Richard Guenther  <rguenther@suse.de>
25810
25811         PR tree-optimization/38180
25812         * tree-ssa-ccp.c (get_default_value): Simplify.
25813         (likely_value): Likewise.
25814         (surely_varying_stmt_p): Properly handle VOP case.
25815         (ccp_initialize): Likewise.
25816         (ccp_fold): Handle propagating through *&.
25817         (fold_const_aggregate_ref): Also handle decls.
25818
25819 2009-03-28  Jan Hubicka  <jh@suse.cz>
25820
25821         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
25822         * cgraph.h (cgraph_node): Likewise.
25823         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
25824         (cgraph_reset_node): Use process flag.
25825         (cgraph_mark_functions_to_output): Likewise.
25826         (cgraph_expand_function): Likewise.
25827         (cgraph_expand_all_functions): Likewise.
25828         (cgraph_output_in_order): Likewise.
25829         * dwarf2out.c (reference_to_unused): Likewise.
25830         * passes.c do_per_function_toporder): Likewise.
25831
25832 2009-03-28  Jan Hubicka  <jh@suse.cz>
25833
25834         Bring from lto-branch:
25835
25836         2008-09-03  Doug Kwan  <dougkwan@google.com>
25837
25838         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
25839         enums instead of reason strings.
25840         * cgraph.c (cgraph_create_edge): Same.
25841         (cgraph_inline_failed_string): New function.
25842         * cgraph.h (cgraph_inline_failed_t): New enum type.
25843         (cgraph_inline_failed_string): New prototype.
25844         (struct cgraph_edge): Change type of INLINED_FAILED from constant
25845         char pointer to cgraph_inline_failed_t.
25846         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
25847         (cgraph_default_inline_p): Ditto.
25848         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
25849         to cgraph_inline_failed_t pointer.
25850         * cif-code.def: New file.
25851         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
25852         reason string.
25853         (cgraph_check_inline_limits): Change type of REASON to pointer to
25854         cgraph_inline_failed_t.  Replace reason strings with enums.
25855         (cgraph_default_inline_p): Ditto.
25856         (cgraph_recursive_inlining_p): Ditto.
25857         (update_caller_keys): Change type of FAILED_REASON to
25858         cgraph_inline_failed_t.
25859         (cgraph_set_inline_failed): Change type of REASON to pointer to
25860         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
25861         convert enums to strings for text output.
25862         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
25863         to be of type cgraph_inline_failed_t.  Replace reason strings with
25864         enums.  Call cgraph_inline_failed_string to covert enums
25865         to strings for text output.
25866         (cgraph_decide_inlining): Replace reason strings with enums.
25867         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
25868         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
25869         for text output.
25870         * tree-inline.c (expand_call_inline): Change type of REASON
25871         to cgraph_inline_failed_t.  Replace reason strings with enums.
25872         Call cgraph_inline_failed_string for text output.
25873         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
25874         (cgraph.o): Ditto.
25875
25876 2009-03-28  Jan Hubicka  <jh@suse.cz>
25877
25878         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
25879         cgraph_clone_node): Remove master clone handling.
25880         (cgraph_is_master_clone, cgraph_master_clone): Remove.
25881         * cgraph.h (master_clone): Remove.
25882         (cgraph_is_master_clone, cgraph_master_clone): Remove.
25883         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
25884         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
25885
25886 2009-03-28  Jan Hubicka  <jh@suse.cz>
25887
25888         * cgraph.c (cgraph_function_body_availability): Functions declared
25889         inline are always safe to assume that it is not going to be replaced.
25890
25891 2009-03-28  Richard Guenther  <rguenther@suse.de>
25892
25893         PR tree-optimization/38513
25894         * tree-ssa-pre.c (eliminate): Remove redundant stores.
25895         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
25896         EXC_PTR_EXPR and FILTER_EXPR.
25897         (get_ref_from_reference_ops): Likewise.
25898
25899 2009-03-28  Richard Guenther  <rguenther@suse.de>
25900
25901         PR tree-optimization/38968
25902         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
25903         Use FLOOR_MOD_EXPR to compute misalignment.
25904
25905 2009-03-28  Richard Guenther  <rguenther@suse.de>
25906
25907         PR tree-optimization/37795
25908         * tree.h (combine_comparisons): Declare.
25909         * fold-const.c (combine_comparisons): Export.
25910         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
25911         comparisons.
25912         (ifcombine_iforif): Use combine_comparisons.
25913
25914 2009-03-28  Jan Hubicka  <jh@suse.cz>
25915
25916         * tree-eh.c (inlinable_call_p): New function.
25917         (make_eh_edges): Use it.
25918         (verify_eh_edges): Use it.
25919         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
25920         * except.c (reachable_next_level): Add inlinable_function argument
25921         (sjlj_find_directly_reachable_regions): Update.
25922         (add_reachable_handler): Do not set saw_any_handlers.
25923         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
25924         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
25925         Add new inlinable call parameter.
25926         (can_throw_internal, can_throw_external): Update.
25927         * except.h (can_throw_internal_1, can_throw_external_1,
25928         foreach_reachable_handler): Update declaration.
25929
25930 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
25931
25932         * config/arm/t-arm-coff, config/h8300/coff.h,
25933         config/i386/i386-aout.h, config/i386/i386-coff.h,
25934         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
25935         config/pdp11/2bsd.h, config/rs6000/aix41.h,
25936         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
25937         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
25938         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
25939         sys-types.h: Remove.
25940         * Makefile.in: Remove protoize and fixproto support and references
25941         in comments.
25942         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
25943         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
25944         Remove.
25945         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
25946         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
25947         unprotoize$(exeext).
25948         (rest.encap): Don't depend on $(STMP_FIXPROTO)
25949         (.PHONY): Don't depend on proto.
25950         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
25951         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
25952         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
25953         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
25954         build/gen-protos.o, build/scan.o, xsys-protos.h,
25955         build/fix-header$(build_exeext), build/fix-header.o,
25956         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
25957         stmp-install-fixproto): Remove.
25958         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
25959         SYSCALLS.c or fixproto files.
25960         (install-common): Don't install protoize.
25961         (install-headers-tar, install-headers-cpio, install-headers-cp):
25962         Don't depend on $(STMP_FIXPROTO).
25963         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
25964         install fixproto files or write out fixproto settings.
25965         (uninstall): Don't uninstall protoize.
25966         * config.gcc (use_fixproto): Remove.
25967         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
25968         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
25969         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
25970         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
25971         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
25972         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
25973         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
25974         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
25975         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
25976         * config/t-vxworks (STMP_FIXPROTO): Remove.
25977         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
25978         STMP_FIXPROTO): Remove.
25979         * config.in, configure: Regenerate.
25980         * crtstuff.c (gid_t, uid_t): Don't undefine.
25981         * doc/install.texi: Change m68k-coff to m68k-elf in example.
25982         (arm-*-coff, arm-*-aout: Remove target entries.
25983         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
25984         Remove mention of AIX 4.1.
25985         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
25986         * doc/invoke.texi (Running Protoize): Remove.
25987         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
25988         (Protoize Caveats): Remove.
25989         * tsystem.h: Update comments on headers assumed to exist.
25990
25991 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
25992
25993         * genautomata.c: Add a new year to the copyright.  Add a new
25994         reference.
25995         (struct insn_reserv_decl): Add comments for member bypass_list.
25996         (find_bypass): Remove.
25997         (insert_bypass): New.
25998         (process_decls): Use insert_bypass.
25999         (output_internal_insn_latency_func): Output all bypasses with the
26000         same input insn in one switch case.
26001
26002         * rtl.def (define_bypass): Describe bypass choice.
26003         * doc/md.texi (define_bypass): Ditto.
26004
26005 2009-03-27  Richard Guenther  <rguenther@suse.de>
26006
26007         * gimplify.c (mark_addressable): Export.
26008         * tree-flow.h (mark_addressable): Declare.
26009         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
26010         * tree-ssa.c (verify_phi_args): Verify that address taken
26011         variables have TREE_ADDRESSABLE set.
26012
26013 2009-03-27  Richard Guenther  <rguenther@suse.de>
26014
26015         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
26016         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
26017         Do not mark decls TREE_ADDRESSABLE.
26018         (build_fold_addr_expr): Adjust.
26019         (fold_addr_expr): Remove.
26020         (fold_unary): Use build_fold_addr_expr.
26021         (fold_comparison): Likewise.
26022         (split_address_to_core_and_offset): Likewise.
26023         * coverage.c (tree_coverage_counter_addr): Mark the array decl
26024         TREE_ADDRESSABLE.
26025         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
26026         (gimplify_modify_expr_to_memcpy): Mark source and destination
26027         addressable.
26028         * omp-low.c (create_omp_child_function): Mark the object decl
26029         TREE_ADDRESSABLE.
26030         (lower_rec_input_clauses): Mark the var we take the address of
26031         TREE_ADDRESSABLE.
26032         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
26033
26034 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
26035
26036         PR middle-end/39315
26037         * cfgexpand.c (expand_one_stack_var_at): Change alignment
26038         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
26039
26040 2009-03-27  Richard Guenther  <rguenther@suse.de>
26041
26042         PR tree-optimization/39120
26043         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
26044         constraints.
26045         (handle_lhs_call): Process return constraints.  Add escape
26046         constraints if necessary.
26047         (handle_const_call): Fill out return constraints.  Make nested
26048         case more precise.  Avoid consttmp if possible.
26049         (handle_pure_call): Fill out return constraints.  Avoid
26050         callused if possible.
26051         (find_func_aliases): Simplify call handling.
26052
26053 2009-03-27  Richard Guenther  <rguenther@suse.de>
26054
26055         PR tree-optimization/39120
26056         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
26057         as a representative.
26058         (solve_graph): Do propagate CALLUSED.
26059         (handle_pure_call): Use a scalar constraint from CALLUSED for
26060         the return value.
26061         (find_what_p_points_to): CALLUSED shall not appear in poins-to
26062         solutions.
26063
26064 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
26065
26066         PR c/39323
26067         * c-common.c (handle_aligned_attribute): Properly check alignment
26068         overflow.  Use (1U << i) instead of (1 << i).
26069
26070         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
26071
26072         * expr.h (get_mem_align_offset): Updated.
26073
26074         * tree.h (tree_decl_common): Change align to "unsigned int" and
26075         move it before pointer_alias_set.
26076
26077 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
26078             Jakub Jelinek  <jakub@redhat.com>
26079
26080         PR target/38034
26081         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
26082         gr_register_operand with gr_reg_or_0_operand.
26083         (cmpxchg_rel_di): Likewise.
26084         (sync_lock_test_and_set<mode>): Likewise.
26085
26086 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
26087
26088         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
26089         (true_regnum): Likewise.
26090
26091         * rtlanal.c (subreg_info): Moved to ...
26092         * rtl.h (subreg_info): Here.  New.
26093         (subreg_get_info): New.
26094
26095         * rtlanal.c (subreg_get_info): Make it extern.
26096
26097 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
26098
26099         PR target/39472
26100         * config/i386/i386.c (ix86_abi): New.
26101         (override_options): Handle -mabi=.
26102         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
26103         (ix86_call_abi_override): Likewise.
26104         (init_cumulative_args): Likewise.
26105         (function_arg_advance): Likewise.
26106         (function_arg_64): Likewise.
26107         (function_arg): Likewise.
26108         (ix86_pass_by_reference): Likewise.
26109         (ix86_function_value_regno_p): Likewise.
26110         (ix86_build_builtin_va_list_abi): Likewise.
26111         (setup_incoming_varargs_64): Likewise.
26112         (is_va_list_char_pointer): Likewise.
26113         (ix86_init_machine_status): Likewise.
26114         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
26115         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
26116         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
26117         (ix86_function_abi): Make it static and return enum calling_abi.
26118         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
26119         with ix86_abi.
26120         (ix86_fn_abi_va_list): Updated.
26121
26122         * config/i386/i386.h (ix86_abi): New.
26123         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
26124         (CONDITIONAL_REGISTER_USAGE): Likewise.
26125         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
26126         (machine_function): Likewise.
26127
26128         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
26129         with ix86_abi.
26130         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
26131         (STACK_BOUNDARY): Likewise.
26132         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
26133
26134         * config/i386/i386.opt (mabi=): New.
26135
26136         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
26137         return enum calling_abi.
26138         (ix86_function_type_abi): Likewise.
26139         (ix86_function_abi): Removed.
26140
26141         * doc/invoke.texi: Document -mabi= option for x86.
26142
26143 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26144
26145         * builtins.c (real_dconstp): Delete.
26146         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
26147
26148 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
26149             Jakub Jelinek  <jakub@redhat.com>
26150
26151         PR debug/37959
26152         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
26153         (gen_subprogram_die): When a function is explicit, generate the
26154         DW_AT_explicit attribute.
26155         * langhooks.h (struct lang_hooks_for_decls): Add
26156         function_decl_explicit_p langhook.
26157         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
26158         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
26159
26160 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
26161
26162         * builtins.c (fold_builtin_memory_op): Optimize memmove
26163         into memcpy if we can prove source and destination don't overlap.
26164
26165         * tree-inline.c: Include gt-tree-inline.h.
26166         (clone_fn_id_num): New variable.
26167         (clone_function_name): New function.
26168         (tree_function_versioning): Use it.
26169         * Makefile.in (GTFILES): Add tree-inline.c.
26170
26171 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
26172
26173         * BASE-VER: Change to 4.5.0.
26174
26175 2009-03-27  Xinliang David Li  <davidxl@google.com>
26176
26177         PR tree-optimization/39557
26178         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
26179
26180 2009-03-27  Xinliang David Li  <davidxl@google.com>
26181
26182         PR tree-optimization/39548
26183         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
26184         candidate check.
26185
26186 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
26187
26188         * c-common.c (pointer_int_sum): Use %wd on return from
26189         tree_low_cst.
26190
26191 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
26192
26193         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
26194         on return from tree_low_cst.
26195
26196 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26197
26198         PR c++/36799
26199         * ginclude/stdarg.h (va_copy): Define also for
26200         __GXX_EXPERIMENTAL_CXX0X__.
26201
26202 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26203
26204         PR c++/35652
26205         * builtins.h (c_strlen): Do not warn here.
26206         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
26207         * c-common.c (pointer_int_sum): Take an explicit location.
26208         Warn about offsets out of bounds.
26209         * c-common.h (pointer_int_sum): Adjust declaration.
26210
26211 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26212
26213         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
26214         markup glitch.
26215
26216 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
26217
26218         PR c++/39554
26219         * opts.c (warn_if_disallowed_function_p): Don't assume
26220         get_callee_fndecl must return non-NULL.
26221
26222 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
26223
26224         PR rtl-optimization/39522
26225         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
26226         when reg_reloaded_valid is set.
26227
26228 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
26229
26230         * config/spu/divv2df3.c: New file.
26231         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
26232         (DPBIT_FUNCS): Filter out _div_df.
26233
26234 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
26235
26236         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
26237         a jump insn, count that jump in the distance to the loop start.
26238
26239 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
26240
26241         PR target/39523
26242         * config/sh/sh.c (calc_live_regs): Fix condition for global
26243         registers except PIC_OFFSET_TABLE_REGNUM.
26244
26245 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
26246
26247         PR/39518
26248         * doc/invoke.texi (-mconsole): New.
26249         (-mcygwin): New.
26250         (-mno-cygwin): New.
26251         (-mdll): New.
26252         (-mnop-fun-dllimport): New.
26253         (-mthread): New.
26254         (-mwin32): New.
26255         (-mwindows): New.
26256         (sub section "i386 and x86-64 Windows Options"): New.
26257
26258 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
26259
26260         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
26261         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
26262
26263 2009-03-25  Richard Guenther  <rguenther@suse.de>
26264
26265         PR middle-end/39497
26266         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
26267         of -Wno-error.
26268
26269 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
26270
26271         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
26272         neither of haifa/selective schedulers are working.
26273
26274 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26275
26276         * doc/invoke.texi (Debugging Options): Fix description of
26277         -fno-merge-debug-strings.
26278
26279 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
26280
26281         * config/cris/libgcc.ver: New version-script.
26282         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
26283
26284         * configure.ac <GAS features, nop mnemonic>: Add pattern
26285         crisv32-*-* for "nop".
26286         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
26287         * configure: Regenerate.
26288
26289 2009-03-24  Ira Rosen  <irar@il.ibm.com>
26290
26291         PR tree-optimization/39529
26292         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
26293         mark_sym_for_renaming for the tag copied to the new vector
26294         pointer.
26295
26296 2009-03-24  Arthur Loiret  <aloiret@debian.org>
26297
26298         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
26299         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
26300         EXTRA_SPEC_FUNCTIONS.
26301         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
26302         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
26303         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
26304         -march and -mtune options.
26305
26306 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
26307
26308         * config/m68k/t-rtems: Add m5329 multilib.
26309
26310 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
26311             Jakub Jelinek  <jakub@redhat.com>
26312
26313         PR debug/39524
26314         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
26315         nodes.
26316
26317 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
26318
26319         PR c/39495
26320         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
26321         instead of c_parser_expression_conv, if original_code isn't one of the
26322         4 allowed comparison codes, fail.
26323
26324 2009-03-23  Richard Guenther  <rguenther@suse.de>
26325
26326         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
26327         * tree.h (struct tree_type): Likewise.
26328         * reload.h (struct insn_chain): Likewise.
26329         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
26330         * function.h (struct function): Likewise.
26331         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
26332
26333 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
26334
26335         PR tree-optimization/39516
26336         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
26337
26338 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
26339
26340         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
26341         should be set true if BITS_PER_WORD of target is bigger than 32
26342
26343 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
26344
26345         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
26346         Translate -B-options to -rpath-link.  Correct existing
26347         rpath-link and conditionalize on !nostdlib.
26348
26349 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26350
26351         * doc/extend.texi (Function Attributes, Variable Attributes):
26352         Fix typos.
26353         * doc/invoke.texi (Debugging Options, Optimize Options)
26354         (i386 and x86-64 Options, MCore Options): Likewise.
26355
26356 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
26357
26358         PR debug/37890
26359         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
26360         it for block local namespace aliases.
26361         (gen_decl_die): Pass context_die to gen_namespace_die.
26362
26363 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
26364
26365         PR c/39495
26366         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
26367         minimum or maximum value.
26368
26369 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
26370
26371         * reginfo.c (globalize_reg): Recompute derived reg sets.
26372
26373 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
26374
26375         PR target/39063
26376         * libgcc2.c (mprotect): Do not use signed arguments for
26377         VirtualProtect, use DWORD arguments.  Also fix the 'may
26378         be used uninitialized' warning for the np variable.
26379
26380 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
26381
26382         PR target/39496
26383         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
26384         functions using regparm calling conventions when not optimizing.
26385         (ix86_function_sseregparm): Similarly for sseregparm calling
26386         conventions.
26387
26388 2009-03-19  Li Feng  <nemokingdom@gmail.com>
26389
26390         PR middle-end/39500
26391         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
26392         dependence if the first conflict is after niter iterations.
26393
26394 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
26395
26396         PR middle-end/38609
26397         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
26398         functions with dynamic stack-pointer adjustments.
26399
26400 2009-03-19  Ben Elliston  <bje@au.ibm.com>
26401
26402         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
26403         option; change to -msdata=data.
26404
26405 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26406
26407         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
26408         and -fopenmp.
26409
26410 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
26411
26412         PR target/35180
26413         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
26414
26415 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
26416
26417         * doc/invoke.texi (Code Gen Options): Expand discussion of
26418         -fno-common.
26419
26420 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
26421
26422         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
26423         * matrix-reorg.c (struct matrix_info): Likewise.
26424         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
26425         * rtl.h (struct mem_attrs): Likewise.
26426         * df.h (struct df): Likewise.
26427         * tree-data-ref.h (struct data_dependence_relation): Likewise.
26428         * ira-int.h (struct ira_allocno): Likewise.
26429         * df-scan.c (struct df_collection_rec): Likewise.
26430         * ira.c (struct equivalence): Likewise.
26431         * function.c (struct temp_slot): Likewise.
26432         * cfgloop.h (struct loop): Likewise.
26433
26434         PR debug/39485
26435         * function.c (use_register_for_decl): When not optimizing, disregard
26436         register keyword for variables with types containing methods.
26437
26438 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
26439
26440         PR middle-end/39447
26441         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
26442         (is_simple_operand): Call contains_component_ref_p before calling data
26443         reference analysis that would fail on COMPONENT_REFs.
26444
26445         * tree-vrp.c (search_for_addr_array): Fix formatting.
26446
26447 2009-03-18  Richard Guenther  <rguenther@suse.de>
26448
26449         * tree-vect-transform.c (vect_loop_versioning): Fold the
26450         generated comparisons.
26451         * tree-vectorizer.c (set_prologue_iterations): Likewise.
26452         (slpeel_tree_peel_loop_to_edge): Likewise.
26453
26454 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26455
26456         PR middle-end/37805
26457         * opts.c (print_specific_help): In addition to `undocumented',
26458         accept `separate' and `joined' flags if passed alone.  Describe
26459         output by the first matched one of those.
26460         (common_handle_option): Skip over empty strings.
26461         * gcc.c (display_help): Fix help string for `--help='.
26462         * doc/invoke.texi (Option Summary, Overall Options): With
26463         `--help=', classes and qualifiers can both be repeated, but
26464         only the latter can be negated.  One should not pass only
26465         negated qualifiers.  Fix markup and examples.
26466
26467         Revert
26468         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
26469         PR middle-end/37805
26470         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
26471         and -fhelp=separate.
26472
26473 2009-03-17  Jing Yu  <jingyu@google.com>
26474
26475         PR middle-end/39378
26476         * function.h (struct rtl_data): Move is_thunk from here...
26477         (struct function): ...to here.
26478         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
26479         * varasm.c (assemble_start_function): Change is_thunk from crtl to
26480         cfun.
26481         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
26482         cfun.
26483         (alpha_does_function_need_gp, alpha_start_function): Likewise.
26484         (alpha_output_function_end_prologue): Likewise.
26485         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
26486         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
26487         (rs6000_output_function_epilogue): Likewise.
26488         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
26489
26490 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
26491
26492         PR target/39482
26493         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
26494         from different units in a single alternative.
26495         (*truncdfsf_i387): Ditto.
26496         (*truncxfsf2_mixed): Ditto.
26497         (*truncxfdf2_mixed): Ditto.
26498
26499 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
26500
26501         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
26502         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
26503
26504         PR debug/39474
26505         * tree-ssa-live.c (remove_unused_locals): Don't remove local
26506         unused non-artificial variables when not optimizing.
26507
26508         PR debug/39471
26509         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
26510         DW_TAG_imported_module even if decl is IMPORTED_DECL with
26511         NAMESPACE_DECL in its DECL_INITIAL.
26512
26513         PR middle-end/39443
26514         * optabs.c (set_user_assembler_libfunc): New function.
26515         * expr.h (set_user_assembler_libfunc): New prototype.
26516         * c-common.c: Include libfuncs.h.
26517         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
26518         for memcmp, memset, memcpy, memmove and abort.
26519         * Makefile.in (c-common.o): Depend on libfuncs.h.
26520
26521         PR debug/39412
26522         * dwarf2out.c (gen_inlined_enumeration_type_die,
26523         gen_inlined_structure_type_die, gen_inlined_union_type_die,
26524         gen_tagged_type_instantiation_die): Removed.
26525         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
26526         do nothing.
26527
26528 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
26529
26530         PR testsuite/38526
26531         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
26532         its use.
26533         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
26534         (check-parallel-%): Ditto.
26535         (check-consistency): Ditto.
26536
26537 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
26538
26539         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
26540         local variable rhs by NULL_TREE.
26541
26542 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
26543
26544         PR target/39477
26545         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
26546
26547 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
26548
26549         PR target/39476
26550         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
26551
26552 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
26553
26554         PR target/39473
26555         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
26556         for ms->sysv ABI calls only in 64bit mode.
26557
26558         * config/i386/i386.md (untyped_call): Support 32bit.
26559
26560 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
26561
26562         * doc/extend.texi: Replace x86_65 with x86_64.
26563
26564 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
26565
26566         PR tree-optimization/39455
26567         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
26568         mismatches for POINTER_TYPE_P (type).
26569         (number_of_iterations_le): Likewise.
26570
26571 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
26572
26573         * config/picochip/picochip.c: Removed profiling support.
26574         * config/picochip/picochip.md: Removed profiling instruction.
26575         * config/picochip/picochip.h: Removed profiling builtin.
26576
26577 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
26578
26579         * doc/install.texi (--with-host-libstdcxx): Document.
26580
26581 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
26582
26583         PR target/34299
26584         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
26585         generate a warning if the function name does not begin with
26586         "__vector" and the function has either the 'signal' or 'interrupt'
26587         attribute, from here to ...
26588         (avr_declare_function_name): ...here. New function.
26589         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
26590         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
26591
26592 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
26593
26594         PR bootstrap/39454
26595         * cse.c (fold_rtx): Don't modify original const_arg1 when
26596         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
26597         separate variable instead.
26598         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
26599         from out of range shift counts.
26600         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
26601
26602 2009-03-13  Catherine Moore  <clm@codesourcery.com>
26603
26604         * config/i386/x-mingw32 (host-mingw32.o): Replace
26605         diagnostic.h with $(DIAGNOSTIC_H).
26606
26607 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
26608
26609         PR target/39431
26610         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
26611         predicate.
26612         * config/i386/sync.md (sync_compare_and_swap<mode>,
26613         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
26614         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
26615         into a register.
26616         (sync_double_compare_and_swapdi_pic,
26617         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
26618         cmpxchg8b_pic_memory_operand instead of just memory_operand.
26619
26620 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
26621
26622         PR target/39445
26623         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
26624
26625 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
26626
26627         PR target/39327
26628         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
26629         (avx_addsubv4df3): Likewise.
26630         (*avx_addsubv4sf3): Likewise.
26631         (sse3_addsubv4sf3): Likewise.
26632
26633 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
26634
26635         PR target/38824
26636         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
26637
26638 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
26639
26640         PR debug/39432
26641         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
26642         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
26643         registers for allocnos created from user-defined variables.
26644
26645 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
26646
26647         PR target/39181
26648         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
26649         of non-integer mode as well.
26650
26651 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
26652
26653         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
26654         for functions for which the parameter types are unknown.
26655
26656 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
26657
26658         PR target/39137
26659         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
26660         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
26661         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
26662         * config/i386/i386.c (ix86_local_alignment): For
26663         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
26664         long long variables on the stack to avoid dynamic realignment.
26665         Allow the first argument to be a decl rather than type.
26666         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
26667
26668 2009-03-11  Nick Clifton  <nickc@redhat.com>
26669
26670         PR target/5362
26671         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
26672         options.
26673         Add description to mno-lsim option.
26674         * config/mcore/mcore.h: Remove comment about deprecated m4align
26675         option.
26676         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
26677         * doc/invoke.texi: Add description of mno-lsim and
26678         mstack-increment options.
26679
26680         * config/fr30/fr30.opt: Document the -mno-lsim option.
26681         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
26682         and -mno-lsim options.
26683
26684 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
26685
26686         * fold-const.c (fold_comparison): Only call fold_inf_compare
26687         if the mode supports infinities.
26688
26689 2009-03-11  Jason Merrill  <jason@redhat.com>
26690
26691         PR debug/39086
26692         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
26693         end already did.  Notice GIMPLE_CALL modifications of the result.
26694         Don't copy debug information from an ignored decl or a decl from
26695         another function.
26696
26697 2009-03-10  Richard Guenther  <rguenther@suse.de>
26698             Nathan Froyd  <froydnj@codesourcery.com>
26699
26700         PR middle-end/37850
26701         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
26702         (__divMODE3): Likewise.
26703
26704 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
26705
26706         PR tree-optimization/39394
26707         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
26708         DECL_SIZE_UNIT of variable length FIELD_DECLs.
26709
26710 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
26711
26712         * recog.c (verfiy_changes): Disallow renaming of hard regs in
26713         inline asms for register asm ("") declarations.
26714
26715 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
26716
26717         * fold-const.c (fold_unary): Fix comment.
26718
26719 2009-03-07  Jan Hubicka  <jh@suse.cz>
26720
26721         PR target/39361
26722         * tree-inline.c (setup_one_parameter): Do replacement of const
26723         argument by constant in SSA form.
26724
26725 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
26726
26727         PR middle-end/38028
26728         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
26729         determine alignment passed to assign_stack_local.
26730         (assign_parms_unsplit_complex): Likewise.
26731         * except.c (sjlj_build_landing_pads): Likewise.
26732
26733 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
26734
26735         PR middle-end/39360
26736         * tree-flow.h (add_referenced_var): Return bool instead of void.
26737         * tree-dfa.c (add_referenced_var): Return result of
26738         referenced_var_check_and_insert call.
26739         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
26740         of referenced_var_check_and_insert.
26741
26742         PR debug/39372
26743         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
26744         (gen_variable_die): Emit DW_AT_location on abstract static variable's
26745         DIE, don't emit it if abstract origin already has it.
26746         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
26747         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
26748
26749 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
26750
26751         * genpreds.c (needs_variable): Fix parentheses at variable name
26752         detection.
26753         (write_tm_constrs_h): Indent generated code.
26754
26755 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
26756
26757         * doc/extend.texi (Function Attributes): Add documentation
26758         for isr attributes.
26759
26760 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
26761
26762         PR debug/39387
26763         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
26764         take locus from its DECL_SOURCE_LOCATION instead of input_location.
26765
26766 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
26767
26768         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
26769         the loop as bad.
26770
26771 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
26772
26773         PR debug/39379
26774         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
26775         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
26776
26777 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
26778
26779         * config/i386/i386.md (R8_REG, R9_REG): New constants.
26780         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
26781         constants instead of magic numbers.
26782         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
26783         (QI_REG_P): Ditto.
26784         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
26785         (x86_64_ms_abi_int_parameter_registers): Ditto.
26786         (x86_64_int_return_registers): Ditto.
26787         (ix86_maybe_switch_abi): Ditto.
26788         (ix86_expand_call): Ditto for clobbered_registers array.
26789         (ix86_hard_regno_mode_ok): Ditto.
26790         (x86_extended_QIreg_mentioned_p): Ditto.
26791
26792 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
26793
26794         PR tree-optimization/39349
26795         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
26796
26797         * combine.c (gen_lowpart_for_combine): Use omode when generating
26798         clobber.
26799
26800 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
26801
26802         PR rtl-optimization/39235
26803         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
26804
26805 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
26806
26807         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
26808
26809 2009-03-04  Richard Guenther  <rguenther@suse.de>
26810
26811         PR tree-optimization/39362
26812         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
26813         that occur in abnormal PHIs should be varying.
26814
26815 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
26816
26817         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
26818         Extend comments.
26819         (simple_iv):  Take loop as an argument instead of statement.
26820         * tree-scalar-evolution.h (simple_iv): Declaration changed.
26821         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
26822         to simple_iv.
26823         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
26824         Ditto.
26825         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
26826         * matrix-reorg.c (analyze_transpose): Ditto.
26827         * tree-data-ref.c (dr_analyze_innermost): Ditto.
26828         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
26829         * tree-predcom.c (ref_at_iteration): Ditto.
26830         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
26831
26832 2009-03-04  Richard Guenther  <rguenther@suse.de>
26833
26834         PR tree-optimization/39358
26835         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
26836         escaped_id and callused_id.
26837         (solve_graph): Likewise.
26838
26839 2009-03-04  Richard Guenther  <rguenther@suse.de>
26840
26841         PR tree-optimization/39339
26842         * tree-sra.c (try_instantiate_multiple_fields): Make it
26843         no longer ICE on the above.
26844
26845 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
26846
26847         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
26848         that fits within Pmode.
26849
26850 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
26851
26852         PR middle-end/10109
26853         * tm.texi (LIBCALL_VALUE): Update description.
26854
26855 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
26856
26857         PR middle-end/34443
26858         * doc/extend.texi (section): Update description.
26859
26860 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
26861
26862         PR middle-end/39345
26863         * tree-inline.c (remapped_type): New.
26864         (can_be_nonlocal): Call remapped_type instead of remap_type.
26865
26866 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
26867
26868         PR fortran/39354
26869         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
26870         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
26871
26872 2009-03-03  Richard Guenther  <rguenther@suse.de>
26873
26874         PR middle-end/39272
26875         * tree.c (tree_nonartificial_location): New function.
26876         * tree.h (tree_nonartificial_location): Declare.
26877         * builtins.c (expand_builtin_memory_chk): Provide location
26878         of the call location for artificial function pieces.
26879         (maybe_emit_chk_warning): Likewise.
26880         (maybe_emit_sprintf_chk_warning): Likewise.
26881         (maybe_emit_free_warning): Likewise.
26882         * expr.c (expand_expr_real_1): Likewise.
26883
26884 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
26885
26886         PR tree-optimization/39343
26887         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
26888         COMPONENT_REF t has ARRAY_TYPE.
26889
26890 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
26891
26892         PR middle-end/39335
26893         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
26894         when the type precision of the induction variable should be
26895         larger than the type precision of nit.
26896         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
26897         * graphite.c (graphite_loop_normal_form): Same.
26898         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
26899
26900 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
26901
26902         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
26903         (*call_1_rex64_ms_sysv): Use named constants instead of magic
26904         numbers to describe clobbered registers.
26905         (*call_value_0_rex64_ms_sysv): Ditto.
26906         * config/i386/mmx.md (mmx_emms): Ditto.
26907         (mmx_femms): Ditto.
26908
26909 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
26910
26911         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
26912         of ABI_64.
26913
26914 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
26915
26916         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
26917         (spu_section_type_flags): New function.
26918
26919 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
26920
26921         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
26922         reg_class_contents of FLOAT_REGS into a temporary.
26923
26924 2009-03-02  Richard Guenther  <rguenther@suse.de>
26925             Ira Rosen  <irar@il.ibm.com>
26926
26927         PR tree-optimization/39318
26928         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
26929         information to the vectorized statement.
26930
26931 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
26932
26933         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
26934         variable.  Use defined names instead of magic constants for REX SSE
26935         registers.
26936
26937 2009-03-01  Richard Guenther  <rguenther@suse.de>
26938
26939         PR tree-optimization/39331
26940         * omp-low.c (lower_send_shared_vars): Do not receive new
26941         values for the reference of DECL_BY_REFERENCE parms or results.
26942
26943 2009-03-01  Jan Hubicka  <jh@suse.cz>
26944
26945         PR debug/39267
26946         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
26947         BLOCK_NONLOCALIZED_VAR): New macros.
26948         (tree_block): Add nonlocalized_vars.
26949         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
26950         gen_decl_die): Add origin argument.  Allow generation of die with
26951         origin at hand only.
26952         (gen_member_die, gen_type_die_with_usage, force_decl_die,
26953         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
26954         of gen_*.
26955         (gen_block_die): Fix checking for unused blocks.
26956         (process_scope_var): Break out from .... ; work with origins only.
26957         (decls_for_scope) ... here; process nonlocalized list.
26958         (dwarf2out_ignore_block): Look for nonlocalized vars.
26959         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
26960         vars.
26961         (dump_scope_block): Dump them.
26962         * tree-inline.c (remap_decls): Handle nonlocalized vars.
26963         (remap_block): Likewise.
26964         (can_be_nonlocal): New predicate.
26965         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
26966
26967 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26968
26969         * configure: Regenerate.
26970
26971 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26972
26973         * optc-gen.awk: No need to duplicate option flags twice.
26974         Reuse help texts for duplicate options which do not have any.
26975
26976         * gcc.c (display_help): Document --version.
26977
26978         * gcc.c (main): If print_help_list and verbose_flag, ensure
26979         driver output comes before subprocess output.
26980
26981         * optc-gen.awk: Assign all remaining fields to help string,
26982         space-separated, for multi-line help in *.opt.
26983
26984         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
26985         -Wno-pedantic-ms-format is for MinGW targets only.
26986
26987         * doc/options.texi (Option file format): Fix bad indentation,
26988         restoring dropped sentence.
26989
26990 2009-02-28  Jan Hubicka  <jh@suse.cz>
26991
26992         * tree-inline.c (tree_function_versioning): Output debug info.
26993
26994 2009-02-28  Jan Hubicka  <jh@suse.cz>
26995
26996         PR debug/39267
26997         * tree-inline.c (setup_one_parameter): Do not copy propagate
26998         arguments when not optimizing.
26999
27000 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
27001
27002         PR target/39327
27003         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
27004         (avx_addsubv4df3): Likewise.
27005         (*avx_addsubv4sf3): Likewise.
27006         (sse3_addsubv4sf3): Likewise.
27007         (*avx_addsubv2df3): Likewise.
27008         (sse3_addsubv2df3): Likewise.
27009         (avx_unpckhps256): Correct item selectors.
27010         (avx_unpcklps256): Likewise.
27011         (avx_unpckhpd256): Likewise.
27012         (avx_unpcklpd256): Likewise.
27013
27014 2009-02-28  Jan Hubicka  <jh@suse.cz>
27015
27016         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
27017         static vars.
27018         (copy_arguments_for_versioning): If var is declared don't declare it.
27019         (tree_function_versioning): First setup substitutions and then copy
27020         args.
27021
27022 2009-02-27  Jan Hubicka  <jh@suse.cz>
27023
27024         PR debug/39267
27025         * cgraph.h (varpool_output_debug_info): Remove.
27026         * cgraphunit.c (varpool_output_debug_info): Remove.
27027         * dwarf2out.c (deferred_locations_struct): New struct
27028         (deferred_locations): New type.
27029         (deferred_locations_list): New static var.
27030         (deffer_location): New function.
27031         (gen_variable_die): Use it.
27032         (decls_for_scope): Output info on local static vars.
27033         (dwarf2out_finish): Process deferred locations.
27034         * varpool.c (varpool_output_debug_info): Remove.
27035
27036 2009-02-27  Jan Hubicka  <jh@suse.cz>
27037
27038         PR debug/39267
27039         * tree.h (TREE_PROTECTED): Fix comment.
27040         (BLOCK_HANDLER_BLOCK): Remove.
27041         (struct tree_block): Remove handler_block add body_block.
27042         (inlined_function_outer_scope_p): New.
27043         (is_body_block): Remove.
27044         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
27045         * dwarf2out.c (is_inlined_entry_point): Remove.
27046         (add_high_low_attributes): Use inlined_function_outer_scope_p.
27047         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
27048         code.
27049         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
27050         * gimplify.c (gimplify_expr): Gimplify body blocks.
27051         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
27052         block with multiple subblocks.
27053         (dump_scope_block): Prettier output; dump more flags and info.
27054         (dump_scope_blocks): New.
27055         (remove_unused_locals): Use dump_scope_blocks.
27056         * tree-flow.h (dump_scope_blocks): Declare.
27057         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
27058         * stmt.c (is_body_block): Remove.
27059         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
27060         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
27061
27062 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
27063
27064         PR middle-end/39308
27065         * graphite.c (graphite_loop_normal_form): Do not call
27066         number_of_iterations_exit from a gcc_assert.
27067
27068 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
27069
27070         * config/s390/s390.c (s390_swap_cmp): Look for conditional
27071         jumps if COND is NULL.
27072         (find_cond_jump): New function.
27073         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
27074         * config/s390/s390.md: Remove z10_cobra attribute value.
27075
27076 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
27077
27078         * config/alpha/alpha.h (alpha_expand_mov): Return false if
27079         force_const_mem returns NULL_RTX.
27080
27081 2009-02-26  Jan Hubicka  <jh@suse.cz>
27082
27083         PR debug/39267
27084         * cgraph.h (varpool_output_debug_info): Remove.
27085         * cgraphunit.c (varpool_output_debug_info): Remove.
27086         * dwarf2out.c (deferred_locations_struct): New struct
27087         (deferred_locations): New type.
27088         (deferred_locations_list): New static var.
27089         (deffer_location): New function.
27090         (gen_variable_die): Use it.
27091         (decls_for_scope): Output info on local static vars.
27092         (dwarf2out_finish): Process deferred locations.
27093         * varpool.c (varpool_output_debug_info): Remove.
27094
27095 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
27096
27097         PR rtl-optimization/39241
27098         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
27099         to subreg_offset_representable_p.
27100
27101 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
27102
27103         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
27104         execute function prototype.  Get f and nregs from max_reg_num
27105         and get_insns.  Remove the first backward pass as it's dead,
27106         guard the forward pass by flag_expensive_optimizations.
27107         (rest_of_handle_regmove): Delete.
27108         (pass_regmove): Replace it with regmove_optimize.
27109
27110 2009-02-25  Martin Jambor  <mjambor@suse.cz>
27111
27112         PR tree-optimization/39259
27113         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
27114         calls_alloca function flags.
27115         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
27116         calls are detected.
27117
27118 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
27119
27120         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
27121         flags_set_1_rtx, flags_set_1_set): Delete.
27122         (regmove_optimize): Do not call mark_flags_life_zones.
27123
27124 2009-02-24  Julian Brown  <julian@codesourcery.com>
27125
27126         PR target/35965
27127         * config/arm/arm.c (require_pic_register): Only set
27128         cfun->machine->pic_reg once per function.
27129
27130 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
27131
27132         * doc/invoke.texi (Link Options): Document an easier way to pass
27133         options that take arguments to the GNU linker using -Xlinker and -Wl.
27134
27135 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
27136
27137         PR target/33785
27138         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
27139
27140 2009-02-24  Richard Guenther  <rguenther@suse.de>
27141
27142         PR debug/39285
27143         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
27144
27145 2009-02-24  Richard Guenther  <rguenther@suse.de>
27146             Zdenek Dvorak  <ook@ucw.cz>
27147
27148         PR tree-optimization/39233
27149         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
27150         from converting them to a generic type.
27151
27152 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
27153
27154         PR tree-optimization/39260
27155         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
27156         contains a condition with a real type.
27157         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
27158
27159 2009-02-23  Jason Merrill  <jason@redhat.com>
27160
27161         PR c++/38880
27162         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
27163         narrowing_initializer_constant_valid_p.
27164         (narrowing_initializer_constant_valid_p): Don't return
27165         null_pointer_node for adding a pointer to itself.
27166
27167 2009-02-23  Jan Hubicka  <jh@suse.cz>
27168
27169         PR c/12245
27170         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
27171         resizing.
27172
27173 2009-02-23  Jan Hubicka  <jh@suse.cz>
27174
27175         PR tree-optimization/37709
27176         * tree.c (block_ultimate_origin): Move here from dwarf2out.
27177         * tree.h (block_ultimate_origin): Declare.
27178         * dwarf2out.c (block_ultimate_origin): Move to tree.c
27179         * tree-ssa-live.c (remove_unused_scope_block_p):
27180         Eliminate blocks containig no instructions nor live variables nor
27181         nested blocks.
27182         (dump_scope_block): New function.
27183         (remove_unused_locals): Enable removal of dead blocks by default;
27184         enable dumping at TDF_DETAILS.
27185
27186 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
27187
27188         * config/i386/i386.c (classify_argument): Don't allow COImode
27189         and OImode.
27190         (function_arg_advance_32): Don't allow OImode.
27191         (function_arg_32): Likewise.
27192         (function_value_32): Likewise.
27193         (return_in_memory_32): Likewise.
27194         (function_arg_64): Remove OImode comment.
27195
27196 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
27197
27198         PR target/39261
27199         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
27200         ix86_expand_vector_set for V4DImode in 64bit mode only.
27201         (ix86_expand_vector_init_one_var): Likewise.
27202
27203 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
27204
27205         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
27206
27207 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
27208
27209         PR bootstrap/39257
27210         * loop-iv.c: Revert last change.
27211         * emit-rtl.c: Likewise.
27212
27213 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
27214
27215         PR target/39256
27216         * config/i386/i386.c (type_natural_mode): Remove an extra
27217         space in the warning message.
27218         (function_value_32): Handle 32-byte vector modes.
27219         (return_in_memory_32): Likewise.
27220
27221 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
27222
27223         * loop-iv.c (truncate_value): New function.
27224         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
27225         of lowpart_subreg.
27226         (lowpart_subreg): Move to...
27227         * emit-rtl.c: ...here.
27228
27229 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
27230
27231         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
27232         accidental and undocumented change at revision 140860.
27233
27234 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
27235
27236         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
27237         take gimple_seq * arguments.
27238         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
27239         types_compatible_p langhook.
27240
27241 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
27242             Joseph Myers  <joseph@codesourcery.com>
27243
27244         * config/arm/arm.c (arm_builtin_va_list): New function.
27245         (arm_expand_builtin_va_start): Likewise.
27246         (arm_gimplify_va_arg_expr): Likewise.
27247         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
27248         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
27249         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
27250         (va_list_type): New variable.
27251         (arm_mangle_type): Mangle va_list_type appropriately.
27252
27253 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
27254
27255         PR middle-end/39157
27256         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
27257         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
27258         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
27259         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
27260         parameter to 1000 for -O1 by default.
27261         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
27262         parameter.
27263         * loop-invariant.c: Include params.h.
27264         (move_loop_invariants): Don't call move_single_loop_invariants on
27265         very large loops.
27266
27267 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
27268
27269         * calls.c (emit_library_call_value_1): Use slot_offset instead of
27270         offset when calculating bounds for indexing stack_usage_map.  Fixes
27271         a buffer overflow with certain target setups.
27272
27273 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
27274
27275         PR target/39240
27276         * calls.c (expand_call): Clear try_tail_call if caller and callee
27277         disagree in promotion of function return value.
27278
27279 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
27280
27281         PR target/39175
27282         * c-common.c (c_determine_visibility): If visibility changed and
27283         DECL_RTL has been already set, call make_decl_rtl to update symbol
27284         flags.
27285
27286 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
27287
27288         PR c++/39188
27289         * varasm.c (assemble_variable): Don't check DECL_NAME when
27290         globalizing a variable.
27291
27292 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
27293
27294         PR c/38483
27295         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
27296         expression before any __builtin_trap call.
27297         * c-typeck.c (build_function_call): Convert and check function
27298         arguments before generating a call to a trap.  Evaluate the
27299         function arguments before the trap.
27300
27301 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
27302
27303         PR target/39228
27304         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
27305         (UNSPEC_FXAM_MEM): New unspec.
27306         (fxam<mode>2_i387_with_temp): New insn and split pattern.
27307         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
27308         memory using fxam<mode>2_i387_with_temp to remove excess precision.
27309
27310 2009-02-19  Richard Guenther  <rguenther@suse.de>
27311
27312         PR tree-optimization/39207
27313         PR tree-optimization/39074
27314         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
27315         storedanything_tree): New.
27316         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
27317         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
27318         (build_succ_graph): Add edges from STOREDANYTHING to all
27319         non-direct nodes.
27320         (init_base_vars): Initialize STOREDANYTHING.
27321         (compute_points_to_sets): Free substitution info after
27322         building the succ graph.
27323         (ipa_pta_execute): Likewise.
27324
27325         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
27326         field.
27327         (do_ds_constraint): Do not add to special var or non-pointer
27328         field solutions.
27329         (type_could_have_pointers): Split out from ...
27330         (could_have_pointers): ... here.  For arrays use the element type.
27331         (create_variable_info_for): Initialize may_have_pointers.
27332         (new_var_info): Likewise.
27333         (handle_lhs_call): Make the HEAP variable unknown-sized.
27334         (intra_create_variable_infos): Use a type with pointers for
27335         PARM_NOALIAS, make it unknown-sized.
27336
27337 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
27338
27339         PR target/39224
27340         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
27341
27342 2009-02-18  Jason Merrill  <jason@redhat.com>
27343
27344         PR target/39179
27345         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
27346         value if DECL_EXTERNAL.
27347         * tree-sra.c (sra_walk_gimple_assign): Likewise.
27348         * target.h (gcc_target::binds_local_p): Clarify "module".
27349         * tree.h (TREE_PUBLIC): Clarify "module".
27350
27351 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
27352
27353         PR target/38891
27354         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
27355         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
27356
27357 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
27358
27359         PR target/39082
27360         * c.opt (Wabi): Support C and ObjC.
27361         (Wpsabi): New.
27362
27363         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
27364
27365         * config/i386/i386.c (classify_argument): Warn once about the ABI
27366         change when passing union with long double.
27367
27368         * doc/invoke.texi: Update -Wabi for warning psABI changes.
27369
27370 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
27371
27372         PR c/35447
27373         * c-parser.c (c_parser_compound_statement): Always enter and leave
27374         a scope.
27375
27376 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27377
27378         PR target/34587
27379         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
27380
27381 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
27382
27383         PR tree-optimization/36922
27384         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
27385         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
27386         Likewise.
27387
27388 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
27389
27390         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
27391         to 0 for EABI64.
27392
27393 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
27394
27395         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
27396
27397 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
27398
27399         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
27400         tree sharing.
27401
27402 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
27403             Richard Sandiford  <rdsandiford@googlemail.com>
27404
27405         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
27406         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
27407         (loongson_biadd): ...this.
27408
27409 2009-02-17  Richard Guenther  <rguenther@suse.de>
27410
27411         PR tree-optimization/39202
27412         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
27413         a var make sure to follow existing collapses.
27414
27415 2009-02-17  Richard Guenther  <rguenther@suse.de>
27416
27417         PR middle-end/39214
27418         * langhooks.c (lhd_print_error_function): Check for NULL block.
27419
27420 2009-02-17  Richard Guenther  <rguenther@suse.de>
27421
27422         PR tree-optimization/39204
27423         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
27424         of the PHI arg.
27425
27426 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
27427
27428         * config/soft-fp/double.h: Update from glibc CVS.
27429
27430 2009-02-17  Richard Guenther  <rguenther@suse.de>
27431
27432         PR tree-optimization/39207
27433         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
27434         strict-aliasing warnings for pointers pointing to NULL.
27435
27436 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
27437
27438         PR c/35446
27439         * c-parser.c (c_parser_braced_init): Call pop_init_level when
27440         skipping until next close brace.
27441
27442 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
27443
27444         PR target/37049
27445         * config/i386/i386.c (ix86_expand_push): Set memory alignment
27446         to function argument boundary.
27447
27448 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
27449
27450         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
27451         in the lea_add. Reload eventually constraints it properly.
27452         * config/picochip/constraints.md: Remove the target constraint
27453         "b", since it is not needed anymore.
27454
27455 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
27456
27457         * gthr-dce.h: Uglify function parameter and local variable names.
27458         * gthr-gnat.h: Likewise.
27459         * gthr-mipssde.h: Likewise.
27460         * gthr-nks.h: Likewise.
27461         * gthr-posix95.h: Likewise.
27462         * gthr-posix.h: Likewise.
27463         * gthr-rtems.h: Likewise.
27464         * gthr-single.h: Likewise.
27465         * gthr-solaris.h: Likewise.
27466         * gthr-tpf.h: Likewise.
27467         * gthr-vxworks.h: Likewise.
27468         * gthr-win32.h: Likewise.
27469
27470 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
27471
27472         PR target/39196
27473         * config/i386/i386.md: Restrict the new peephole2 to move
27474         between MMX/SSE registers.
27475
27476 2009-02-15  Richard Guenther  <rguenther@suse.de>
27477
27478         Revert
27479         2009-02-13  Richard Guenther  <rguenther@suse.de>
27480
27481         * configure.ac: Enable LFS.
27482         * configure: Re-generate.
27483         * config.in: Likewise.
27484
27485 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
27486
27487         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
27488         spu_srqwbyte, spu_srqwbytebc): Define.
27489         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
27490         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
27491         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
27492         "shrqby_<mode>"): New insn-and-split patterns.
27493         * config/spu/spu.c (expand_builtin_args): Determine and return
27494         number of operands using spu_builtin_description data.
27495         (spu_expand_builtin_1): Use it.
27496
27497 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
27498
27499         PR target/38056
27500         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
27501         TARGET_CONST_GP.
27502
27503 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
27504
27505         PR target/39149
27506         * config/i386/i386.c (override_options): Correct warning
27507         messages for -malign-loops, -malign-jumps and -malign-functions.
27508
27509 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
27510
27511         PR target/39152
27512         * config/i386/i386.md: Restrict the new peephole2 to move
27513         between the general purpose registers.
27514
27515 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
27516
27517         PR target/39162
27518         * config/i386/i386.c (type_natural_mode): Add a new argument.
27519         Return the original mode and warn ABI change if vector size is 32byte.
27520         (function_arg_advance): Updated.
27521         (function_arg): Likewise.
27522         (ix86_function_value): Likewise.
27523         (ix86_return_in_memory): Likewise.
27524         (ix86_sol10_return_in_memory): Likewise.
27525         (ix86_gimplify_va_arg): Likewise.
27526         (function_arg_32): Don't warn ABX ABI change here.
27527         (function_arg_64): Likewise.
27528
27529 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
27530
27531         * loop-iv.c (implies_p): In the final case, test that operands 0
27532         of the two comparisons match.
27533
27534         * config/bfin/bfin.c (find_prev_insn_start): New function.
27535         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
27536         (find_next_insn_start): Move.
27537
27538 2009-02-13  Richard Guenther  <rguenther@suse.de>
27539
27540         * configure.ac: Enable LFS.
27541         * configure: Re-generate.
27542         * config.in: Likewise.
27543
27544 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
27545
27546         PR c/35444
27547         * c-parser.c (c_parser_parms_list_declarator): Discard pending
27548         sizes on syntax error after some arguments have been parsed.
27549
27550 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
27551
27552         * doc/invoke.texi (-fira): Remove.
27553
27554 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
27555
27556         * caller-save.c: Replace regclass.c with reginfo.c in comments.
27557         * recog.c: Likewise.
27558         * rtl.h: Likewise.
27559
27560 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
27561
27562         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
27563         (umul_ppmm): Likewise.
27564         (count_leading_zeros): Likewise.
27565         (count_trailing_zeros): Likewise.
27566         (UMUL_TIME): Likewise.
27567
27568 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
27569
27570         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
27571         soft-fp/t-softfp to tmake_file.
27572
27573         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
27574         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
27575         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
27576         IA64_BUILTIN_INFQ]: New.
27577         (ia64_init_builtins): Initialize __builtin_infq,
27578         __builtin_fabsq and __builtin_copysignq if not HPUX.
27579         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
27580         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
27581
27582         * config/ia64/lib1funcs.asm (__divtf3): Define only if
27583         SHARED is defined.
27584         (__fixtfti): Likewise.
27585         (__fixunstfti): Likewise.
27586         (__floattitf): Likewise.
27587
27588         * config/ia64/libgcc-glibc.ver: New.
27589         * config/ia64/t-fprules-softfp: Likewise.
27590         * config/ia64/sfp-machine.h: Likewise.
27591
27592         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
27593         (LIBGCC2_TF_CEXT): Likewise.
27594         (TF_SIZE): Likewise.
27595         (TARGET_INIT_LIBFUNCS): Likewise.
27596
27597         * config/ia64/t-glibc (SHLINB_MAPFILES):
27598         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
27599
27600 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
27601
27602         * config/i386/i386.c (construct_container): Rewrite processing
27603         BLKmode with X86_64_SSE_CLASS.
27604
27605 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
27606
27607         PR target/39152
27608         * config/i386/i386.md: Replace simplify_replace_rtx with
27609         replace_rtx in the new peephole2.
27610
27611 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
27612
27613         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
27614         loop unrolling do not happen at -O2.
27615
27616 2009-02-12  Michael Matz  <matz@suse.de>
27617
27618         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
27619
27620 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
27621
27622         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
27623         for -g3.
27624
27625 2009-02-12  Ben Elliston  <bje@au.ibm.com>
27626
27627         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
27628         patterns when updating the back chain.  Missed in the 2009-02-10
27629         change.
27630
27631 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
27632
27633         * doc/extend.texi (Decimal Floating Types): Update identifier of
27634         draft TR and list of missing support.
27635
27636 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
27637
27638         PR middle-end/39154
27639         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
27640         bit to variable length decl's flags, add it also to its
27641         pointer replacement variable.
27642
27643 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
27644             Jakub Jelinek  <jakub@redhat.com>
27645
27646         PR target/39118
27647         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
27648         (memory_blockage): New expander.
27649         (*memory_blockage): New insn pattern.
27650         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
27651         instead of general blockage at the end of function prologue when
27652         frame pointer is used to access red zone area.  Do not emit blockage
27653         when profiling, it is emitted in generic code.
27654         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
27655         function epilogue when frame pointer is used to access red zone area.
27656
27657 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
27658
27659         PR target/38824
27660         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
27661         by arithmetic with memory operands.
27662         * config/i386/predicates.md (commutative_operator): New.
27663
27664 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
27665
27666         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
27667         bulleted lists.
27668
27669 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
27670
27671         * alias.h (record_alias_subset): Declare.
27672         * alias.c (record_alias_subset): Make global.
27673
27674 2009-02-10  Nick Clifton  <nickc@redhat.com>
27675
27676         * tree-parloops.c: Change license to GPLv3.
27677         * ipa-struct-reorg.c: Change license to GPLv3.
27678         * ipa-struct-reorg.h: Change license to GPLv3.
27679
27680 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
27681
27682         PR c/39084
27683         * c-decl.c (start_struct): Return NULL on error.
27684
27685 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
27686
27687         PR middle-end/39124
27688         * cfgloopmanip.c (remove_path): Call remove_bbs after
27689         cancel_loop_tree, not before it.
27690
27691         PR target/39139
27692         * function.h (struct function): Add has_local_explicit_reg_vars bit.
27693         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
27694         VAR_DECLs were seen.
27695         * tree-ssa-live.c (remove_unused_locals): Recompute
27696         cfun->has_local_explicit_reg_vars.
27697         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
27698         copies or clearings if cfun->has_local_explicit_reg_vars.
27699
27700 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
27701
27702         PR target/39118
27703         * config/i386/i386.c (expand_prologue): Emit blockage at the end
27704         of function prologue when frame pointer is used to access
27705         red zone area.
27706
27707 2009-02-10  Richard Guenther  <rguenther@suse.de>
27708
27709         PR middle-end/39127
27710         * gimplify.c (gimple_regimplify_operands): Always look if
27711         we need to create a temporary.
27712
27713 2009-02-10  Richard Guenther  <rguenther@suse.de>
27714
27715         PR tree-optimization/39132
27716         * tree-loop-distribution.c (todo): New global var.
27717         (generate_memset_zero): Trigger TODO_rebuild_alias.
27718         (tree_loop_distribution): Return todo.
27719
27720 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
27721
27722         PR target/39119
27723         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
27724         (x86_64_reg_class_name): Removed.
27725         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
27726         first one isn't X86_64_SSE_CLASS or any other ones aren't
27727         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
27728         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
27729         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
27730         and 3 X86_64_SSEUP_CLASS.
27731         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
27732         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
27733
27734 2009-02-10  Ben Elliston  <bje@au.ibm.com>
27735
27736         * config/rs6000/rs6000.md (allocate_stack): Always use an update
27737         form instruction to update the stack back chain word, even if the
27738         user has disabled the generation of update instructions.
27739         (movdi_<mode>_update_stack): New.
27740         (movsi_update_stack): Likewise.
27741         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
27742         always use an update form instruction to update the stack back
27743         chain word.
27744
27745 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
27746
27747         PR middle-end/38953
27748         * graphite.c (if_region_set_false_region): After moving a region in
27749         the false branch of a condition, remove the empty dummy basic block.
27750         (gloog): Remove wrong fix for PR38953.
27751
27752 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
27753
27754         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
27755         generation due to implicit sign extension.
27756
27757 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
27758
27759         PR middle-end/38981
27760         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
27761         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
27762
27763 2009-02-09  Richard Guenther  <rguenther@suse.de>
27764
27765         PR middle-end/35202
27766         * convert.c (convert_to_real): Disable (float)fn((double)x)
27767         to fnf(x) conversion if errno differences may occur and
27768         -fmath-errno is set.
27769
27770 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
27771
27772         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
27773         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
27774         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
27775
27776 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
27777
27778         PR c/35434
27779         * c-common.c (handle_alias_attribute): Disallow attribute for
27780         anything not a FUNCTION_DECL or VAR_DECL.
27781
27782 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
27783
27784         PR c/39035
27785         * real.c (do_compare): Special-case compare of zero against
27786         decimal float value.
27787
27788 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
27789
27790         PR c/36432
27791         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
27792         as indicating flexible array members unless the field itself is
27793         being declarared as the incomplete array.
27794
27795 2009-02-06  Jan Hubicka  <jh@suse.cz>
27796
27797         PR tree-optimization/38844
27798         * ipa-inline.c (try_inline): Stop inlining recursion when edge
27799         is already inlined.
27800
27801 2009-02-06  Richard Guenther  <rguenther@suse.de>
27802
27803         PR middle-end/38977
27804         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
27805         fork because we may expand it as __gcov_fork.
27806
27807 2009-02-06  Nick Clifton  <nickc@redhat.com>
27808
27809         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
27810
27811 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
27812
27813         PR tree-optimization/35659
27814         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
27815         vn_phi_eq): Shortcut if hashcode does not match.
27816         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
27817         NULL operands.
27818         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
27819         and avoid iterative_hash_expr.
27820         (FOR_EACH_VALUE_ID_IN_SET): New.
27821         (value_id_compare): Remove.
27822         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
27823         sort expressions by value id.
27824
27825 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
27826
27827         PR target/38991
27828         * config/sh/predicates.md (general_movsrc_operand): Don't check
27829         the subreg of system registers here.
27830
27831 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
27832
27833         PR c++/39106
27834         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
27835         on the copied decl.
27836
27837 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
27838
27839         PR rtl-optimization/39110
27840         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
27841         addresses, not aligned ones.
27842
27843 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
27844             Richard Guenther  <rguenther@suse.de>
27845
27846         PR tree-optimization/39100
27847         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
27848         comment says and add edges.
27849
27850 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
27851
27852         PR c/35435
27853         * c-common.c (handle_tls_model_attribute): Ignore attribute for
27854         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
27855
27856 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
27857
27858         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
27859         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
27860         register_bb_in_sese, new_sese, free_sese): Moved.
27861         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
27862         outermost_loop_in_scop, build_scop_iteration_domain,
27863         expand_scalar_variables_ssa_name, get_vdef_before_scop,
27864         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
27865         Use loop_in_sese_p instead of loop_in_scop_p.
27866         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
27867         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
27868         (scopdet_basic_block_info): Fix bug in scop detection.
27869         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
27870         eq_loop_to_cloog_loop): Remove.
27871         (nb_loops_around_loop_in_scop, nb_loop
27872         ref_nb_loops): Moved here...
27873         * graphite.h (ref_nb_loops): ... from here.
27874         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
27875         (loop_domain_dim, loop_iteration_vector_dim): Remove.
27876         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
27877
27878 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
27879             Hans-Peter Nilsson  <hp@axis.com>
27880
27881         PR rtl-optimization/37889
27882         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
27883         Move offset handling from PLUS to before the switch.  Use new
27884         arguments when considering SYMBOL_REFs too.
27885         (rtx_addr_can_trap_p): Pass dummy offset and size.
27886         (enum may_trap_p_flags): Remove.
27887         (may_trap_p_1): Pass size from MEM_SIZE.
27888
27889         PR rtl-optimization/38921
27890         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
27891         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
27892         * rtlanal.c (may_trap_after_code_motion_p): Delete.
27893         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
27894
27895 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
27896
27897         AVX Programming Reference (January, 2009)
27898         * config/i386/sse.md (*vpclmulqdq): New.
27899
27900 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
27901
27902         PR tree-optimization/38977
27903         PR gcov-profile/38292
27904         * calls.c (special_function_p): Disregard __builtin_ prefix.
27905
27906 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
27907
27908         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
27909         non-indexable addresses even before reload.
27910
27911 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
27912
27913         PR c/29129
27914         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
27915         as having variable size.  Do not give an error for unnamed
27916         parameters with [*] declarators.  Give a warning for type names
27917         with [*] declarators and mark them as variable size.
27918         * c-parser.c (c_parser_sizeof_expression): Do not give an error
27919         for sizeof applied to [*] type names.
27920
27921 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
27922
27923         PR C++/36607
27924         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
27925
27926 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
27927
27928         * gcc.c (process_command): Update copyright notice dates.
27929         * gcov.c (print_version): Likewise.
27930         * gcov-dump.c (print_version): Likewise.
27931         * mips-tfile.c (main): Likewise.
27932         * mips-tdump.c (main): Likewise.
27933
27934 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
27935
27936         PR c/35433
27937         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
27938         for composite type involving a zero-length array type.
27939
27940 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
27941
27942         PR target/35318
27943         * function.c (match_asm_constraints_1): Skip over
27944         initial optional % in the constraint.
27945
27946         PR inline-asm/39059
27947         * c-parser.c (c_parser_postfix_expression): If fixed point is not
27948         supported, don't accept FIXED_CSTs.
27949         * c-decl.c (finish_declspecs): Error if fixed point is not supported
27950         and _Sat is used without _Fract/_Accum.  Set specs->type to
27951         integer_type_node for cts_fract/cts_accum if fixed point is not
27952         supported.
27953
27954 2009-02-02  Catherine Moore  <clm@codesourcery.com>
27955
27956         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
27957
27958 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
27959
27960         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
27961         (ABI_HAS_64BIT_SYMBOLS): Use it.
27962         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
27963
27964 2009-02-02  Paul Brook  <paul@codesourcery.com>
27965
27966         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
27967
27968 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
27969
27970         PR inline-asm/39058
27971         * recog.h (asm_operand_ok): Add constraints argument.
27972         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
27973         recurse on matching constraint.
27974         (check_asm_operands): Pass constraints as 3rd argument to
27975         asm_operand_ok.  Don't look up matching constraint here.
27976         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
27977         to asm_operand_ok.
27978
27979 2009-02-02  Ben Elliston  <bje@au.ibm.com>
27980
27981         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
27982         TARGET_NARROW_VOLATILE_BITFIELD macro names.
27983
27984 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27985
27986         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
27987         information.  Remove some obsolete information.  Reorganize.
27988
27989         * config/pa/fptr.c: Revert license to GPL 2.
27990         * config/pa/milli64.S: Likewise.
27991
27992 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
27993
27994         PR target/38904
27995         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
27996         LIBRARY name in, instead of hard-coding it.
27997         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
27998         extra target make frag to tmake_files according to EH model.
27999         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
28000         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
28001         frags that define makefile variable EH_MODEL appropriately.
28002         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
28003         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
28004         to "-sjlj" according to type of EH configured.
28005         (LIBGCC_SONAME):  Concatenate it to shared library base name.
28006         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
28007         to "_sjlj" according to type of EH configured.
28008         (LIBGCC_SONAME):  Concatenate it to shared library base name.
28009         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
28010         (SHLIB_LINK):  Add missing semicolon to if-else construct.
28011         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
28012         string value of "pe_dll" command-line option.
28013         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
28014         (SHLIB_SONAME):  Use it when overriding t-cygming default.
28015         (SHLIB_IMPLIB):  Override t-cygming default.
28016         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
28017         string value of "pe_dll" command-line option.
28018
28019 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
28020
28021         PR target/38952
28022         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
28023         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
28024
28025 2009-01-31  Richard Guenther  <rguenther@suse.de>
28026
28027         PR tree-optimization/38937
28028         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
28029         computing the transitive closure.
28030
28031 2009-01-30  Richard Guenther  <rguenther@suse.de>
28032
28033         PR tree-optimization/39041
28034         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
28035         Propagate variable indices only if the types match for this stmt.
28036
28037 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
28038
28039         PR target/39013
28040         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
28041         inline but never defined.
28042
28043 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
28044
28045         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
28046         (*insv_h_di_reg_extimm): New insn.
28047         (*insv_l<mode>_reg_extimm): New insn.
28048
28049 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
28050
28051         * config/picochip/picochip.c (flag_conserve_stack): set
28052         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
28053         fconserve-stack. Reduce call-overhead used by inliner.
28054
28055 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
28056
28057         PR/38157
28058         * common.opt (flag_conserve_stack): Initialised to zero.
28059
28060 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
28061
28062         PR/39002
28063         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
28064         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
28065         method.
28066
28067 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
28068
28069         * ira-color.c (allocno_reload_assign): Update comments.
28070         * regmove.c (regmove_optimize): Likewise.
28071
28072         * ra.h: Removed.
28073
28074 2009-01-29  Robert Millan  <rmh@aybabtu.com>
28075
28076         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
28077         * config/i386/kopensolaris-gnu.h: New file.  Undefine
28078         `MD_UNWIND_SUPPORT'.
28079         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
28080
28081 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
28082
28083         PR tree-optimization/39007
28084         * tree-loop-distribution.c (generate_builtin): Use
28085         recompute_dominator to compute the immediate dominator of the
28086         basic block just after the loop.
28087
28088 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
28089
28090         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
28091         (ASM_OUTPUT_DWARF_PCREL): Define.
28092
28093 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
28094
28095         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
28096         * doc/passes.texi: Remove entries about regclass, local-alloc, and
28097         global.  Modify entries about regmove and IRA.
28098
28099         * ra-conflict.c: Remove the file.
28100
28101         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
28102
28103         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
28104         (pass_regclass_init): Rename to pass_reginfo_init.
28105
28106         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
28107
28108         * toplev.h (flag_ira): Remove.
28109
28110         * caller-save.c (setup_save_areas): Remove flag_ira.
28111
28112         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
28113
28114         * global.c: Remove the file.
28115
28116         * opts.c (decode_options): Remove flag_ira.
28117
28118         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
28119
28120         * regmove.c: Modify file description.
28121         (find_use_as_address, try_auto_increment): Define them only if
28122         AUTO_INC_DEC is defined.
28123         (replacement_quality, replace_in_call_usage, fixup_match_1,
28124         stable_and_no_regs_but_for_p): Remove.
28125         (reg_set_in_bb): Make it static.
28126         (regmove_optimize): Remove flag_ira and code which worked for
28127         !flag_ira.
28128
28129         * local-alloc.c: Remove the file.
28130
28131         * common.opt (fira): Remove.
28132
28133         * ira.c: Include except.h.
28134         (eliminable_regset): Move from global.c.
28135         (mark_elimination): Ditto.  Remove flag_ira.
28136         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
28137         equiv_mem_modified, validate_equiv_mem_from_store,
28138         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
28139         contains_replace_regs, memref_referenced_p, memref_used_between_p,
28140         no_equiv, recorded_label_ref): Move from local-alloc.c.
28141         (update_equiv_regs): Ditto.  Make it static.
28142         (print_insn_chain, print_insn_chains): Move it from global.c.
28143         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
28144         (build_insn_chain): Ditto.  Make it static.
28145         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
28146         Rename to init_live_subregs.
28147         (gate_ira): Remove flag_ira.
28148
28149         * regclass.c: Rename reginfo.c.  Change file description.
28150         (FORBIDDEN_INC_DEC_CLASSES): Remove.
28151         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
28152         (init_reg_sets_1): Remove code for evaluation of
28153         reg_class_superclasses and losing_caller_save_reg_set.
28154         (init_regs): Remove init_reg_autoinc.
28155         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
28156         ok_for_base_p_nonstrict): Remove.
28157         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
28158         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
28159         corresponding entries.
28160         (dump_regclass, record_operand_costs, scan_one_insn,
28161         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
28162         record_address_regs, auto_inc_dec_reg_p): Remove.
28163         (gt-regclass.h): Rename to gt-reginfo.h.
28164
28165         * rtl.h (dump_global_regs, retry_global_alloc,
28166         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
28167
28168         * Makefile.in (RA_H): Remove.
28169         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
28170         Rename regclass.o to reginfo.o.
28171         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
28172         gt-reginfo.h.
28173         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
28174         (GTFILES): Rename regclass.c to reginfo.c.
28175
28176         * passes.c (init_optimization_passes): Remove pass_local_alloc and
28177         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
28178
28179         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
28180         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
28181         Remove flag_ira.
28182         (finish_spills): Ditto.  Remove code for !flag_ira.
28183
28184 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
28185
28186         PR middle-end/35854
28187         * doc/invoke.texi (rtl debug options): Complete rewrite.
28188         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
28189         to auto_inc_dec".
28190         * mode-switching.c (pass_mode_switching): Rename pass from
28191         "mode-sw" to "mode_sw".
28192         * except.c (pass_convert_to_eh_ranges): Rename pass from
28193         "eh-ranges" to "eh_ranges".
28194         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
28195         to "subreg1".
28196
28197
28198 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
28199             Alexander Monakov  <amonakov@ispras.ru>
28200
28201         PR middle-end/38857
28202         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
28203         register.
28204         (move_exprs_to_boundary): Change return type and pass through
28205         should_move from move_op.  Relax assert.  Update usage ...
28206         (schedule_expr_on_boundary): ... here.  Use should_move instead of
28207         cant_move.
28208         (move_op_orig_expr_found): Indicate that insn was disconnected from
28209         stream.
28210         (code_motion_process_successors): Do not call after_merge_succs
28211         callback if original expression was not found when traversing any of
28212         the branches.
28213         (code_motion_path_driver): Change return type.  Update prototype.
28214         (move_op): Update comment.  Add a new parameter (should_move).  Update
28215         prototype.  Set *should_move based on indication provided by
28216         move_op_orig_expr_found.
28217
28218 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
28219
28220         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
28221         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
28222         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
28223         * config/rs6000/rs6000.c (rs6000_override_options): Default
28224         avoid-indexed-addresses on for Power6, off for everything else.
28225         (avoiding_indexed_address_p): New function.
28226         (rs6000_legitimize_address): Use it.
28227         (rs6000_legitimate_address): Likewise.
28228         * config/rs6000/rs6000.md (movXX_updateX): Likewise
28229
28230 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
28231
28232         PR tree-optimization/38997
28233         * tree-loop-distribution.c (generate_memset_zero): Use
28234         POINTER_PLUS_EXPR for a pointer addition.
28235
28236 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
28237
28238         * config/s390/s390.md (bswap<mode>2): New pattern added.
28239
28240 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
28241
28242         * config/s390/s390.md (*tls_load_31): Added type attribute.
28243
28244 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
28245
28246         * config/s390/s390.md: Fix a few comments.
28247
28248 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
28249
28250         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
28251         (*tm<mode>_full): Fixed z10prop attribute.
28252         (*tst<mode>_extimm): Fixed z10prop attribute.
28253         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
28254         (*tstqiCCT_cconly): Fixed z10prop attribute.
28255         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
28256         (*movsi_larl): Fixed z10prop attribute.
28257         (*movsi_zarch): Fixed z10prop attribute.
28258         (*movsi_eas): Fixed z10prop attribute.
28259         (*movhi): Fixed z10prop attribute.
28260         (*movqi): Fixed z10prop attribute.
28261         (*movstrictqi): Fixed z10prop attribute.
28262         (*mov<mode>): Fixed z10prop attribute.
28263         (*movcc): Fixed z10prop attribute.
28264         (*sethighpartdi_64): Fixed z10prop attribute.
28265         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
28266         (*negdi2_sign_cc): Fixed z10prop attribute.
28267         (*negdi2_sign): Fixed z10prop attribute.
28268         (*absdi2_sign_cc): Fixed z10prop attribute.
28269         (*absdi2_sign): Fixed z10prop attribute.
28270         (*negabsdi2_sign_cc): Fixed z10prop attribute.
28271         (*negabsdi2_sign): Fixed z10prop attribute.
28272         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
28273         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
28274         (doloop_si64): Fixed z10prop attribute.
28275         (doloop_si31): Fixed z10prop attribute.
28276         (doloop_long): Fixed z10prop attribute.
28277         (indirect_jump): Fixed z10prop attribute.
28278         (nop): Fixed z10prop attribute.
28279         (main_base_64): Fixed z10prop attribute.
28280         (reload_base_64): Fixed z10prop attribute.
28281
28282 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
28283
28284         PR rtl-optimization/38740
28285         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
28286         if !optimize.
28287         * config/mips/mips.c (mips_reorg): Likewise.
28288
28289 2009-01-28  Richard Guenther  <rguenther@suse.de>
28290
28291         PR tree-optimization/38926
28292         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
28293         with the correct value id to a value.
28294         (do_regular_insertion): Use the value number of edoubleprime
28295         for the value number of the expr.
28296
28297         Revert
28298         2008-08-21  Richard Guenther  <rguenther@suse.de>
28299
28300         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
28301         a PHI ask VN if it is already available.
28302         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
28303         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
28304
28305 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
28306
28307         PR middle-end/38934
28308         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
28309         set to varying whenever max has TREE_OVERFLOW set, similarly
28310         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
28311
28312 2009-01-28  Richard Guenther  <rguenther@suse.de>
28313
28314         PR middle-end/38908
28315         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
28316         uninitialized aggregate uses in call arguments.
28317
28318 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
28319
28320         PR tree-optimization/38984
28321         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
28322         the nothing_id variable if -fno-delete-null-pointer-checks.
28323
28324 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
28325
28326         PR target/38988
28327         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
28328         (set_got_offset_rex64): Ditto.
28329
28330 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
28331
28332         PR target/38941
28333         * doc/extend.texi: Improve local variable with asm reg.
28334
28335 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
28336
28337         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
28338         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
28339         was not supplied then set warn_packed_bitfield_compat to the
28340         default value of 1.
28341         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
28342         against 1.
28343
28344 2009-01-27  Richard Guenther  <rguenther@suse.de>
28345
28346         PR tree-optimization/38503
28347         * cfgexpand.c (expand_gimple_basic_block): Ignore
28348         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
28349         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
28350         variables that cannot have TBAA applied.
28351         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
28352         statements.
28353
28354 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
28355
28356         PR middle-end/38969
28357         * calls.c (initialize_argument_information): Do not wrap complex
28358         arguments in SAVE_EXPR.
28359
28360 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
28361
28362         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
28363         (INSTALL_LIBGCC): Revert typo commit.
28364
28365 2009-01-26  Richard Guenther  <rguenther@suse.de>
28366
28367         PR tree-optimization/38745
28368         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
28369         from special handling.
28370
28371 2009-01-26  Richard Guenther  <rguenther@suse.de>
28372
28373         PR tree-optimization/38745
28374         * tree-ssa.c (execute_update_addresses_taken): Do not include
28375         variables that cannot possibly be a register in not_reg_needs.
28376         Do not clear TREE_ADDRESSABLE on vars that may not become
28377         registers.
28378         * tree-ssa.c (update_alias_info_1): Include those in the set
28379         of addressable vars.
28380
28381 2009-01-26  Richard Guenther  <rguenther@suse.de>
28382
28383         PR middle-end/38851
28384         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
28385         * tree-ssa-dse.c: Include langhooks.h
28386         (execute_simple_dse): Remove stores with zero size.
28387
28388 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
28389
28390         PR c/38957
28391         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
28392         as PLUS_EXPR.
28393
28394 2009-01-24  Julian Brown  <julian@codesourcery.com>
28395
28396         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
28397         config/arm/linux-atomic.c.
28398         * config/arm/linux-atomic.c: New.
28399
28400 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
28401
28402         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
28403         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
28404         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
28405
28406 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
28407
28408         PR c/38938
28409         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
28410         properly.
28411
28412 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
28413
28414         PR tree-optimization/38953
28415         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
28416         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
28417         (gloog): Split the exit of the scop when the scop exit is a loop exit.
28418         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
28419         changed the CFG.
28420
28421 2009-01-24  Paul Brook  <paul@codesourcery.com>
28422
28423         * config/arm/neon.md (neon_type): Move to arm.md.
28424         (neon_mov<VSTRUCT>): Add neon_type attribute.
28425         * config/arm/arm.md (neon_type): Move to here.
28426         (conds): Add "unconditioal" and use as default for NEON insns.
28427
28428 2009-01-24  Ben Elliston  <bje@au.ibm.com>
28429
28430         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
28431         void *' warning from -Wc++-compat.
28432         * Makefile.in (dominance.o-warn): Remove.
28433
28434 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
28435
28436         PR tree-optimization/38932
28437         * fold-const.c (fold_unary_ignore_overflow): New.
28438         * tree.h (fold_unary_ignore_overflow): Declare.
28439         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
28440         * tree-ssa-sccvn.c (visit_reference_op_load,
28441         simplify_unary_expression): Likewise.
28442
28443 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
28444
28445         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
28446         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
28447         regardless of their type.
28448         * c-common.c (handle_packed_attribute): Don't ignore packed on
28449         bitfields.
28450         * c.opt (Wpacked-bitfield-compat): New warning option.
28451         * stor-layout.c (place_field): Warn if offset of a field changed.
28452         * doc/extend.texi (packed): Mention the ABI change.
28453         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
28454         (Warning Options): Add it to the list.
28455
28456 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
28457
28458         * c-opts.c (c_common_post_options): Fix a typo in comments.
28459
28460 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
28461
28462         PR middle-end/38615
28463         * gimplify.c (gimplify_init_constructor): Fix promotion of const
28464         variables to static.
28465         * doc/invoke.texi (-fmerge-all-constants): Update description.
28466
28467 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
28468
28469         PR target/38931
28470         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
28471         (*movdi_1_rex64): Use type "mmx" for alternative 5.
28472
28473 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
28474
28475         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
28476         a word boundary.
28477         (LOCAL_ALIGNMENT): Similarly.
28478
28479 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
28480             Joseph Myers  <joseph@codesourcery.com>
28481
28482         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
28483         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
28484         * config/arm/arm-tune.md: Regenerate.
28485         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
28486         -march=iwmmxt2.
28487
28488 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
28489
28490         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
28491         version number to five.
28492
28493 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
28494
28495         PR c++/38930
28496         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
28497         * c-common.c (set_underlying_type): Likewise.
28498         (is_typedef_decl ): Likewise
28499         * tree.h: Likewise
28500         (set_underlying_type): Likewise.
28501         (is_typedef_type): Likewise.
28502
28503 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
28504
28505         PR middle-end/38587
28506         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
28507         crossing setjmps.
28508
28509 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
28510
28511         PR bootstrap/37660
28512         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
28513         (LIBGCC_SPEC):  Don't define.
28514         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
28515
28516 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
28517
28518         PR rtl-optimization/38879
28519         * alias.c (base_alias_check): Unaligned access via AND address can
28520         alias all surrounding object types except those with sizes equal
28521         or wider than the size of unaligned access.
28522
28523 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
28524
28525         PR c++/26693
28526         * c-decl.c (clone_underlying_type): Move this ...
28527         * c-common.c (set_underlying_type): ... here.
28528         Also, make sure the function properly sets TYPE_STUB_DECL() on
28529         the newly created typedef variant type.
28530         (is_typedef_decl ): New entry point.
28531         * tree.h: Added a new member member_types_needing_access_check to
28532         struct tree_decl_non_common.
28533         (set_underlying_type): New entry point.
28534         (is_typedef_type): Likewise.
28535
28536 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
28537
28538         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
28539         Check whether two instructions have memory references that
28540         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
28541         are helper functions for traversing.
28542         * alias.h (insn_alias_sets_confilict_p): New prototypes.
28543         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
28544         not to draw dependency edge for instructions with non-conflicting
28545         alias sets.
28546
28547 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
28548
28549         PR other/38758
28550         * longlong.h: Update copyright years.  Use soft-fp license notice.
28551         Sync __clz_tab declaration with glibc.
28552
28553 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
28554
28555         PR target/30687
28556         * doc/extend.texi (syscall_linkage): New.
28557         (version_id): Modify.
28558
28559 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
28560             Richard Guenther  <rguenther@suse.de>
28561
28562         PR tree-optimization/38747
28563         PR tree-optimization/38748
28564         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
28565         conversion if the base address is an indirect reference and the
28566         aliasing sets could cause issues.
28567
28568 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
28569
28570         * common.opt (fgraphite, fgraphite-identity): Add comment for
28571         explaining why these options are not documented.
28572
28573 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
28574
28575         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
28576         gimple_call_lhs is NULL.
28577
28578 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
28579
28580         PR target/38868
28581         * emit-rtl.c (adjust_address_1): Make sure memref is never
28582         overwritten.
28583
28584 2009-01-20  Ben Elliston  <bje@au.ibm.com>
28585
28586         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
28587         const qualifier from arg parameter. Remove unnecessary cast to char *.
28588         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
28589         const qualifier from arg 2.
28590
28591 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
28592
28593         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
28594
28595 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
28596
28597         PR c/38869
28598         * rtl.h (reinit_regs): New prototype.
28599         * regclass.c: Include ira.h.
28600         (reinit_regs): New.
28601         * Makefile.in (regclass.o): Add ira.h.
28602         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
28603
28604 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
28605
28606         PR target/38736
28607         * c-common.c (handle_aligned_attribute): Use
28608         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
28609         default alignment value.
28610
28611         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
28612
28613         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
28614         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
28615
28616         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
28617         __BIGGEST_ALIGNMENT__.
28618
28619         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
28620
28621 2009-01-18  Richard Guenther  <rguenther@suse.de>
28622
28623         PR tree-optimization/38819
28624         * tree-flow.h (operation_could_trap_helper_p): Declare.
28625         * tree-eh.c (operation_could_trap_helper_p): Export.
28626         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
28627         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
28628         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
28629         are about to insert a possibly trapping instruction and fail
28630         in this case.
28631
28632 2009-01-18  Andreas Schwab  <schwab@suse.de>
28633
28634         * doc/install.texi (Configuration): Remove obsolete paragraph
28635         about use of --with-gnu-ld with --with-gnu-as.
28636
28637 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
28638
28639         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
28640         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
28641         Follow spelling conventions.
28642
28643 2009-01-18  Ben Elliston  <bje@au.ibm.com>
28644
28645         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
28646         C++ warning about implicit conversion from void * to struct
28647         bitmap_head_def *.
28648         (bitmap_obstack_free): Likewise for bitmap_element *.
28649         * Makefile.in (bitmap.o-warn): Remove.
28650
28651 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
28652
28653         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
28654
28655 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
28656             Tobias Grosser  <tobi.grosser@amd.com>
28657
28658         * graphite.c (graphite_trans_scop_block): Do not block single
28659         nested loops.
28660
28661 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
28662
28663         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
28664         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
28665         test with assertion.
28666
28667 2009-01-16  Richard Guenther  <rguenther@suse.de>
28668
28669         PR tree-optimization/38835
28670         PR middle-end/36227
28671         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
28672         and INT + PTR -> (INT)(PTR p+ INT) folding.
28673         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
28674
28675 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
28676
28677         PR target/38554
28678         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
28679         the subreg from a lowpart subreg if it is also casting the value.
28680
28681 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
28682             Tobias Grosser  <tobi.grosser@amd.com>
28683
28684         * graphite.c (compare_prefix_loops): New.
28685         (build_scop_canonical_schedules): Rewritten.
28686         (graphite_transform_loops): Move build_scop_canonical_schedules
28687         after build_scop_iteration_domain.
28688
28689 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
28690             Tobias Grosser  <tobi.grosser@amd.com>
28691
28692         * graphite.c (add_conditions_to_domain): Add the loops to
28693         the dimension of the iteration domain.  Do copy the domain
28694         only when it exists.
28695         (build_scop_conditions_1): Do not call add_conditions_to_domain.
28696         (add_conditions_to_constraints): New.
28697         (can_generate_code_stmt, can_generate_code): Removed.
28698         (gloog): Do not call can_generate_code.
28699         (graphite_transform_loops): Call add_conditions_to_constraints
28700         after building the iteration domain.
28701
28702 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
28703
28704         PR tree-optimization/38789
28705         * tree-ssa-threadedge.c
28706         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
28707         __builtin_constant_p.
28708
28709 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
28710
28711         * dce.c (delete_unmarked_insns): Reversed the order that insns are
28712         examined before deleting them.
28713
28714 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
28715
28716         * function.c (aggregate_value_p): Correctly extract the function
28717         type from CALL_EXPR_FN lookup.
28718
28719 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
28720
28721         * config/picochip/picochip.c (picochip_override_options): Revert
28722         CFI asm flag disable commited previously.
28723
28724 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
28725             Tobias Grosser  <tobi.grosser@amd.com>
28726             Jan Sjodin  <jan.sjodin@amd.com>
28727
28728         * graphite.c (scan_tree_for_params): On substractions negate
28729         all the coefficients of the term.
28730         (clast_to_gcc_expression_red): New.  Handle reduction expressions
28731         of more than two operands.
28732         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
28733         (get_vdef_before_scop): Handle also the case of default definitions.
28734
28735 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
28736
28737         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
28738         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
28739         Also use them when walking CALL_INSN_FUNCTION_USAGE.
28740
28741 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
28742             Joey Ye  <joey.ye@intel.com>
28743
28744         PR middle-end/37843
28745         * cfgexpand.c (expand_stack_alignment): Don't update stack
28746         boundary nor check incoming stack boundary here.
28747         (gimple_expand_cfg): Update stack boundary and check incoming
28748         stack boundary here.
28749
28750 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
28751
28752         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
28753
28754 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
28755
28756         PR rtl-optimization/38245
28757         * calls.c (expand_call): Add stack arguments to
28758         CALL_INSN_FUNCTION_USAGE even for pure calls (when
28759         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
28760         in regs and partially in memory or BLKmode arguments.
28761         (emit_library_call_value_1): Add stack arguments to
28762         CALL_INSN_FUNCTION_USAGE even for pure calls (when
28763         ACCUMULATE_OUTGOING_ARGS).
28764         * dce.c: Include tm_p.h.
28765         (find_call_stack_args): New function.
28766         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
28767         argument.
28768         (mark_insn): Call find_call_stack_args for CALL_Ps.
28769         (prescan_insns_for_dce): Walk insns backwards in bb rather than
28770         forwards.  Allocate and free arg_stores bitmap if needed, pass it
28771         down to deletable_insn_p, don't mark stores set in arg_stores
28772         bitmap, clear the bitmap at the beginning of each bb.
28773         * Makefile.in (dce.o): Depend on $(TM_P_H).
28774
28775 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
28776
28777         PR target/22599
28778         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
28779         to make sure the insn is a conditional test (bug 22599).  Reformat a
28780         few long lines.
28781
28782 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
28783
28784         PR middle-end/38431
28785         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
28786         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
28787         (gloog): Do not call cleanup_tree_cfg.
28788         (graphite_transform_loops): Call cleanup_tree_cfg after all
28789         scops have been code generated.
28790
28791 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
28792         * doc/gty.texi (Invoking the garbage collector): Added new node
28793         and section documenting ggc_collect.
28794
28795 2009-01-14  Richard Guenther  <rguenther@suse.de>
28796
28797         PR tree-optimization/38826
28798         PR middle-end/38477
28799         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
28800         initialization notes only if we actually emitted a warning.
28801         (intra_create_variable_infos): Add constraints for a result decl
28802         that is passed by hidden reference.
28803         (build_pred_graph): Mark all related variables non-direct on
28804         address-taking.
28805
28806 2009-01-14  Nick Clifton  <nickc@redhat.com>
28807
28808         * ira-conflicts.c: Include addresses.h for the definition of
28809         base_reg_class.
28810         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
28811         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
28812
28813 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
28814
28815         PR target/38811
28816         * Makefile.in (ira-lives.o): Add except.h.
28817
28818         * ira-lives.c: Include except.h.
28819         (process_bb_node_lives): Process can_throw_internal.
28820
28821 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
28822
28823         PR rtl-optimization/38774
28824         * combine.c (simplify_set): When undoing cc_use change, don't do
28825         PUT_CODE on the newly created comparison, but instead put back the
28826         old comparison.
28827
28828 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
28829
28830         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
28831         values.  Remove duplicate arm8 entry.
28832
28833 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
28834
28835         PR tree-optimization/38786
28836         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
28837         the SSA_NAME case of expand_scalar_variables_expr.
28838         Set the type of an expression to the type of its assign statement.
28839         (expand_scalar_variables_expr): Also gather the scalar computation
28840         used to index the memory access.  Do not pass loop_p.
28841         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
28842         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
28843         the gimple_stmt_iterator where it inserts new code.
28844         Do not pass loop_p.
28845         (copy_bb_and_scalar_dependences): Do not pass loop_p.
28846         (translate_clast): Update call to copy_bb_and_scalar_dependences.
28847
28848 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
28849
28850         * graphite.h (debug_value): Removed.
28851         * graphite.c (debug_value): Removed.
28852
28853 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
28854
28855         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
28856         ldrd/strd with two 32-bit instructions.
28857
28858 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
28859
28860         * config/arm/arm.c (struct processors): Pass for speed down into
28861         cost helper functions.
28862         (const_ok_for_op): Handle COMPARE and inequality nodes.
28863         (arm_rtx_costs_1): Rewrite.
28864         (arm_size_rtx_costs): Update prototype.
28865         (arm_rtx_costs): Pass speed down to helper functions.
28866         (arm_slowmul_rtx_costs): Rework cost calculations.
28867         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
28868         (arm_9e_rtx_costs): Likewise.
28869
28870 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
28871
28872         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
28873         relocations of local symbols wider than UNITS_PER_WORD are not valid.
28874         (alpha_legitimize_address): Do not split local symbols wider than
28875         UNITS_PER_WORD into HIGH/LO_SUM parts.
28876
28877 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
28878
28879         PR bootstrap/38580
28880         * gcc.c (process_command): Replace call to execvp with calls
28881         to pex_one and exit.
28882
28883 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
28884
28885         PR target/29141
28886         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
28887         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
28888         variant for devices with 3-byte PC.
28889         (__tablejump_elpm__): New.
28890
28891 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
28892
28893         PR c/32041
28894         * c-parser.c (c_parser_postfix_expression): Allow `->' in
28895         offsetof member-designator, handle it as `[0].'.
28896
28897 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
28898
28899         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
28900         function when not using named sections on targets with named sections
28901         if branch distance is less than 262132.
28902
28903 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
28904
28905         * combine.c (combine_instructions):  Recompute
28906         optimize_this_for_speed_p  for each BB in the main combine loop.
28907
28908 2009-01-12  Tomas Bily  <tbily@suse.cz>
28909
28910         PR middlend/38385
28911         * tree-loop-distribution.c (prop_phis): New function.
28912         (generate_builtin): Call prop_phis.
28913
28914 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
28915
28916         PR tree-optimization/38807
28917         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
28918         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
28919
28920 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
28921
28922         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
28923         subreg of op0 to the original op0.
28924
28925 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
28926
28927         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
28928
28929 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
28930
28931         PR debug/7055
28932         * mips-tfile.c (parse_def): Fix parsing of def strings
28933         starting with digits.
28934
28935 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
28936
28937         PR target/38695
28938         * config/arm/arm.c (arm_is_long_call_p): Don't call
28939         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
28940
28941 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
28942
28943         * regrename.c (regrename_optimize): Fix dumping.
28944         (find_oldest_value_reg): Preserve REG_POINTER.
28945         (copy_hardreg_forward_1): Likewise.
28946
28947 2009-01-09  Diego Novillo  <dnovillo@google.com>
28948
28949         * gimple.h (struct gimple_statement_base) <uid>: Document
28950         the restrictions on its use.
28951         (gimple_uid): Tidy.
28952         (gimple_set_uid): Tidy.
28953
28954 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
28955
28956         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
28957         zero guard even if align_bytes != 0 and count is smaller than
28958         size_needed.
28959
28960 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
28961
28962         PR rtl-optimization/38495
28963         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
28964         (add_range_and_copies_from_move_list): Print all added ranges.
28965         Add ranges to memory optimized destination.
28966
28967 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
28968
28969         PR target/38686
28970         PR target/38708
28971         * config/i386/i386.c (override_options): Reject
28972         -mstringop-strategy=rep_8byte with -m32.
28973         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
28974         to 1.  Do count comparison against epilogue_size_needed at compile
28975         time even when count_exp was constant forced into register.  For
28976         size_needed don't jump to epilogue, instead just avoid aligning
28977         and invoke the body algorithm.  If need_zero_guard, add zero guard
28978         even if count is non-zero, but smaller than size_needed + number of
28979         bytes that could be stored for alignment.
28980         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
28981         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
28982         but smaller than size_needed + number of bytes that could be stored
28983         for alignment.  Compare size_needed with epilogue_size_needed instead
28984         of desired_align - align, don't adjust size_needed, pass
28985         epilogue_size_needed to the epilogue expanders.
28986
28987         PR c/35742
28988         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
28989
28990 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
28991
28992         * pa.c (last_address): Change to unsigned.
28993         (update_total_code_bytes): Change argument to unsigned.  Don't
28994         check if insn addresses are set.
28995         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
28996         addresses are not set.
28997         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
28998
28999 2009-01-09  Nick Clifton  <nickc@redhat.com>
29000
29001         * config/sh/symbian.c: Replace uses of DECL_INLINE with
29002         DECL_DECLARED_INLINE_P.
29003
29004 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
29005
29006         PR middle-end/38347
29007         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
29008         GET_MODE (op0) in operand_subword_force calls.
29009
29010         PR middle-end/38771
29011         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
29012         fold_convert arg0 operands to TREE_TYPE (op0) first.
29013
29014 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
29015
29016         * params.def (ira-max-conflict-table-size): Decrease default value
29017         to 1000.
29018
29019 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
29020
29021         PR tree-optimization/37031
29022         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
29023         on parameter_set.
29024         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
29025         allocate it using gc instead of heap, use VEC_quick_push instead of
29026         VEC_safe_push.
29027         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
29028         instead of heap, use VEC_quick_push instead of VEC_safe_push.
29029         * tree-data-ref.h (struct access_matrix): Change matrix to gc
29030         allocated vector from heap allocated.
29031         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
29032         * tree-loop-linear.c (linear_transform_loops): Allocate nest
29033         vector only after perfect_loop_nest_depth call.
29034
29035 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
29036             Jan Sjodin  <jan.sjodin@amd.com>
29037
29038         PR tree-optimization/38559
29039         * graphite.c (debug_value, copy_constraint,
29040         swap_constraint_variables, scale_constraint_variable, ): New.
29041         (get_lower_bound, get_upper_bound): Removed.
29042         (graphite_trans_bb_strip_mine): Clean up this code that works
29043         only for constant number of iterations.  Fully copy upper and
29044         lower bound constraints, not only the constant part of them.
29045         * graphite.h (debug_value): Declared.
29046
29047 2009-01-08  Ira Rosen  <irar@il.ibm.com>
29048
29049         PR tree-optimization/37194
29050         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
29051         Don't add the cost of cost model guard in prologue to scalar
29052         outside cost in case of known number of iterations.
29053
29054 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
29055             Alan Modra  <amodra@bigpond.net.au>
29056
29057         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
29058         non-word-aligned REG+CONST addressing.
29059
29060 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
29061
29062         PR target/38706
29063         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
29064         free_after_compilation when outputting a thunk.
29065         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
29066         Do not call free_after_compilation here.
29067
29068 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
29069
29070         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
29071         (ix86_valid_target_attribute_inner_p): Ditto.
29072
29073 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
29074
29075         PR tree-optimization/38492
29076         PR tree-optimization/38498
29077         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
29078         * tree-chrec.h (scev_is_linear_expression): Declared.
29079         * graphite.c (graphite_cannot_represent_loop_niter): New.
29080         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
29081         (graphite_loop_normal_form): Use gcc_assert.
29082         (scan_tree_for_params): Use CASE_CONVERT.
29083         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
29084         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
29085         Use gcc_assert.  Discard scops that contain unhandled cases.
29086         (build_scop_conditions): Return a boolean status for unhandled cases.
29087         (strip_mine_profitable_p): Print the loop number, not its depth.
29088         (is_interchange_valid): Pass the depth of the loop nest, don't
29089         recompute it wrongly.
29090         (graphite_trans_bb_block): Same.
29091         (graphite_trans_bb_block): Print tentative of loop blocking.
29092         (graphite_trans_scop_block): Do not print that the loop has been
29093         blocked.
29094         (graphite_transform_loops): Do not handle scops that contain condition
29095         scalar phi nodes.
29096
29097 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
29098
29099         AVX Programming Reference (December, 2008)
29100         * config/i386/avxintrin.h (_mm256_stream_si256): New.
29101         (_mm256_stream_pd): Likewise.
29102         (_mm256_stream_ps): Likewise.
29103
29104         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
29105         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
29106         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
29107         (bdesc_special_args): Add __builtin_ia32_movntdq256,
29108         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
29109         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
29110         (ix86_expand_special_args_builtin): Likewise.
29111
29112         * config/i386/sse.md (AVXMODEDI): New.
29113         (avx_movnt<mode>): Likewise.
29114         (avx_movnt<mode>): Likewise.
29115         (<sse>_movnt<mode>): Remove AVX support.
29116         (sse2_movntv2di): Likewise.
29117
29118 2009-01-07  Richard Guenther  <rguenther@suse.de>
29119
29120         PR middle-end/38751
29121         * fold-const.c (extract_muldiv): Remove obsolete comment.
29122         (fold_plusminus_mult_expr): Undo MINUS_EXPR
29123         to PLUS_EXPR canonicalization for the canonicalization.
29124
29125 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
29126
29127         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
29128         hosted cross-compilers generating less efficient code.
29129
29130 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
29131
29132         * function.h (rtl_data): Add a dbr_scheduled_p field.
29133         * reorg.c (dbr_schedule): Set it.
29134         (gate_handle_delay_slots): Check it.
29135         * config/mips/mips.c (mips_base_delayed_branch): Delete.
29136         (mips_reorg): Check flag_delayed_branch instead of
29137         mips_base_delayed_branch.
29138         (mips_override_options): Don't set mips_base_delayed_branch
29139         or flag_delayed_branch.
29140
29141 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
29142
29143         PR rtl-optimization/38426.
29144         * ira.c (ira): Set current_function_is_leaf earlier.
29145
29146 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
29147
29148         PR rtl-optimization/38722
29149         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
29150         too early, only set a flag and modify after last possible
29151         undo_all point.
29152
29153 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
29154
29155         PR c/34252
29156         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
29157         * real.c (decimal_single_format): Correct values of emin and emax.
29158         (decimal_double_format): Ditto.
29159         (decimal_quad_format): Ditto.
29160         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
29161         computation of DECnn_MIN and DECnn_MAX for corrected values of
29162         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
29163         __DECnn_MIN__, and adjust its computation for the corrected value
29164         of emin.
29165
29166 2009-01-06  Jan Hubicka  <jh@suse.cz>
29167
29168         PR target/38744
29169         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
29170
29171 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
29172
29173         * doc/contrib.texi (Contributors): Slightly adjust the end note.
29174         Add Robert Clark to the list of testers.
29175
29176 2009-01-06  Jan Hubicka  <jh@suse.cz>
29177             Kai Tietz  <kai.tietz@onevision.com>
29178
29179         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
29180         * config/i386/i386.c (ix86_expand_call): Add clobbers.
29181
29182 2009-01-06  Jan Hubicka  <jh@suse.cz>
29183             Kai Tietz  <kai.tietz@onevision.com>
29184
29185         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
29186         for w64 ABI.
29187         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
29188         (ix86_nsaved_regs): Count only general purpose regs.
29189         (ix86_nsaved_sseregs): New.
29190         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
29191         to 16 for w64; compute padding and size of sse reg save area.
29192         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
29193         general purpose regs.
29194         (ix86_emit_save_sse_regs_using_mov): New.
29195         (ix86_expand_prologue): Save SSE regs if needed.
29196         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
29197         (ix86_emit_restore_sse_regs_using_mov): New.
29198         (ix86_expand_epilogue): Save SSE regs if needed.
29199
29200 2009-01-06  Jan Hubicka  <jh@suse.cz>
29201             Kai Tietz  <kai.tietz@onevision.com>
29202
29203         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
29204         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
29205         functions when accumulate outgoing args is off.
29206
29207 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
29208
29209         PR bootstrap/38742
29210         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
29211         before using pseudos_have_intersected_live_ranges_p.
29212
29213         * ira-int.h (ira_assert): Always define.
29214
29215 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
29216
29217         AVX Programming Reference (December, 2008)
29218         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
29219         (_mm256_permute2_pd): Likewise.
29220         (_mm_permute2_ps): Likewise.
29221         (_mm256_permute2_ps): Likewise.
29222         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
29223         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
29224
29225         * config/i386/i386.c (ix86_builtins): Remove
29226         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
29227         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
29228         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
29229         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
29230         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
29231         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
29232         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
29233         __builtin_ia32_vpermil2ps256.
29234         (ix86_init_mmx_sse_builtins): Updated.
29235         (ix86_expand_args_builtin): Likewise.
29236
29237 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
29238
29239         * pa.c (output_call): Relocate non-jump insns in the delay slot of
29240         long absolute calls when generating PA 2.0 code.
29241
29242 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
29243
29244         PR rtl-optimization/38583
29245         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
29246
29247         * params.def (ira-max-conflict-table-size): New.
29248
29249         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
29250
29251         * ira.h (ira_conflicts_p): New external definition.
29252
29253         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
29254         table.  Report this.  Return result of building.
29255         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
29256         building conflict table.
29257
29258         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
29259         (ira_color): Use ira_conflicts_p.
29260
29261         * global.c: Include ira.h.
29262         (pseudo_for_reload_consideration_p, build_insn_chain): Use
29263         ira_conflicts_p.
29264
29265         * Makefile.in (global.o): Add ira.h.
29266
29267         * ira-build.c (mark_all_loops_for_removal,
29268         propagate_some_info_from_allocno): New.
29269         (remove_unnecessary_allocnos): Call
29270         propagate_some_info_from_allocno.
29271         (remove_low_level_allocnos): New.
29272         (remove_unnecessary_regions): Add parameter.  Call
29273         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
29274         parameter to remove_unnecessary_regions.
29275         (ira_build): Remove all regions but root if the conflict table was
29276         not built.  Update conflict hard regs for allocnos crossing calls.
29277
29278         * ira.c (ira_conflicts_p): New global.
29279         (ira): Define and use ira_conflicts_p.
29280
29281         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
29282         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
29283         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
29284
29285 2009-01-06  Ben Elliston  <bje@au.ibm.com>
29286
29287         * gengtype-lex.l (YY_NO_INPUT): Define.
29288
29289 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
29290
29291         PR c/34911
29292         * c-common.c (handle_vector_size_attribute): Also reject
29293         BOOLEAN_TYPE types.
29294
29295 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
29296
29297         PR tree-optimization/38492
29298         * graphite.c (rename_map_elt, debug_rename_elt,
29299         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
29300         rename_map_elt_info, eq_rename_map_elts,
29301         get_new_name_from_old_name, bb_in_sese_p): Moved around.
29302         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
29303         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
29304         (sese_build_livein_liveouts): New.
29305         (new_sese, free_sese): New.
29306         (new_scop): Call new_sese.
29307         (free_scop): Call free_sese.
29308         (rename_variables_from_edge, rename_phis_end_scop): Removed.
29309         (register_old_new_names): Renamed register_old_and_new_names.
29310         (register_scop_liveout_renames, add_loop_exit_phis,
29311         insert_loop_close_phis, struct igp,
29312         default_liveout_before_guard, add_guard_exit_phis,
29313         insert_guard_phis, copy_renames): New.
29314         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
29315         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
29316         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
29317         (scop_adjust_phis_for_liveouts): New.
29318         (gloog): Call scop_adjust_phis_for_liveouts.
29319
29320         * graphite.h (struct sese): Documented.  Added fields liveout,
29321         num_ver and livein.
29322         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
29323         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
29324         (struct scop): Added field liveout_renames.
29325         (SCOP_LIVEOUT_RENAMES): New.
29326
29327 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
29328
29329         PR tree-optimization/38510
29330         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
29331         (translate_clast): Call recompute_all_dominators before
29332         graphite_verify.
29333         (gloog): Call recompute_all_dominators before graphite_verify.
29334
29335 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
29336             Jan Sjodin  <jan.sjodin@amd.com>
29337
29338         PR tree-optimization/38500
29339         * graphite.c (create_sese_edges): Call fix_loop_structure after
29340         splitting blocks.
29341
29342 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
29343
29344         * config.gcc: Add m32r*-*-rtems*.
29345         * config/m32r/rtems.h: New file.
29346
29347 2009-01-05  Ben Elliston  <bje@au.ibm.com>
29348
29349         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
29350         (.po.pox): Likewise.
29351         (po/gcc.pot): Likewise.
29352
29353 2009-01-04  David S. Miller  <davem@davemloft.net>
29354
29355         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
29356         (STARTING_FRAME_OFFSET): Always set to zero.
29357
29358 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
29359
29360         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
29361         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
29362         fixed-point types, and vectors of the same.
29363
29364 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
29365
29366         * config/mips/sync.md (*mb_barrier): Rename to...
29367         (*memory_barrier): ...this.
29368
29369 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
29370
29371         * doc/extend.texi (Function Attributes): Move @cindex after @item
29372         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
29373         and put in alphabetical order. Fix 'target' name and put in order.
29374         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
29375         typos.
29376
29377 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
29378
29379         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
29380         (memory_barrier): Expand as unspec instead of unspec_volatile.
29381         Remove mem:BLK from insn operands.  Use Pmode scratch register.
29382         (*memory_barrier): Define as unspec instead of unspec_volatile.
29383         Use (match_dup 0) as input operand.
29384
29385         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
29386         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
29387         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
29388         scratch register.  Remove operand 1.
29389         (*stbar): Define as unspec instead of unspec_volatile.
29390         Use (match_dup 0) as input operand, remove (const_int 8).
29391         (*membar): Define as unspec instead of unspec_volatile.
29392         Use (match_dup 0) as input operand, remove input operand 2.
29393
29394         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
29395         (memory_barrier): Expand as unspec instead of unspec_volatile.
29396         Remove mem:BLK from insn operands.  Use Pmode scratch register.
29397         (*memory_barrier): Define as unspec instead of unspec_volatile.
29398         Use (match_dup 0) as input operand.
29399
29400         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
29401         Remove mem:BLK from insn operands.  Use Pmode scratch register.
29402         Set volatile flag on operand 0.
29403         (*memory_barrier): New insn pattern.
29404
29405         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
29406         insn operands.
29407         (*memory_barrier): Use (match_dup 0) as input operand.
29408
29409         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
29410         Remove mem:BLK from insn operands.  Use Pmode scratch register.
29411         Set volatile flag on operand 0.
29412         (*mb_internal): New insn pattern.
29413
29414         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
29415
29416 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
29417
29418         PR middle-end/38586
29419         * function.c (struct temp_slot): Move to the section of the file
29420         that deals with temp slots.  Remove field 'address'.
29421         (temp_slot_address_table): New hash table of address -> temp slot.
29422         (struct temp_slot_address_entry): New struct, items for the table.
29423         (temp_slot_address_compute_hash, temp_slot_address_hash,
29424         temp_slot_address_eq, insert_temp_slot_address): Support functions
29425         for the new table.
29426         (find_temp_slot_from_address): Rewrite to use the new hash table.
29427         (remove_unused_temp_slot_addresses): Remove addresses of temp
29428         slots that have been made available.
29429         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
29430         worker function for remove_unused_temp_slot_addresses.
29431         (assign_stack_temp_for_type): Don't clear the temp slot address list.
29432         Add the temp slot address to the address -> temp slot map.
29433         (update_temp_slot_address): Update via insert_temp_slot_address.
29434         (free_temp_slots): Call remove_unused_temp_slot_addresses.
29435         (pop_temp_slots): Likewise.
29436         (init_temp_slots): Allocate the address -> temp slot map, or empty
29437         the map if it is already allocated.
29438         (prepare_function_start): Initialize temp slot processing.
29439
29440 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
29441
29442         PR middle-end/38584
29443         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
29444         Calculate the size of all stack vars assuming no packing of stack
29445         vars will happen, replacing a quadratic algorithm with a linear one.
29446
29447 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
29448
29449         PR target/38707
29450         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
29451         can't be used.
29452
29453 2009-01-03  Diego Novillo  <dnovillo@google.com>
29454
29455         * doc/contrib.texi: Update contributions.
29456
29457 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
29458
29459         PR c++/38705
29460         * builtins.c (fold_builtin_memory_op): Give up if either operand
29461         is volatile.  Set srctype or desttype to non-qualified version
29462         of the other type.
29463
29464         PR c/38700
29465         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
29466         and FUNCTION_DECLs.
29467
29468 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
29469
29470         PR rtl-optimization/35805
29471         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
29472         problem if fast dce is able to remove any instructions.
29473         * dce.c (dce_process_block): Fix dump message.
29474
29475 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
29476
29477         PR 33649
29478         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
29479
29480 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
29481
29482         PR middle-end/38690
29483         * tree-flow.h (op_code_prio, op_prio): New prototypes.
29484         * tree-pretty-print.c (op_code_prio): New function.
29485         (op_prio): No longer static.  Use op_code_prio.
29486         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
29487         Use op_prio and op_code_prio to determine if () should be
29488         printed around operand(s) or not.
29489
29490         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
29491         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
29492         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
29493         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
29494         pp_character instead of pp_string for single letter printing.
29495
29496 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
29497
29498         * doc/extend.texi: Fix '#pragma GCC option' typo.
29499
29500 2009-01-02  Richard Guenther  <rguenther@suse.de>
29501
29502         * doc/install.texi (--enable-checking): Mention different
29503         default for stage1.
29504         (--enable-stage1-checking): Document.
29505
29506 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
29507
29508         PR middle-end/30142
29509         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
29510         case to be an error.
29511
29512 2009-01-02  Ben Elliston  <bje@au.ibm.com>
29513
29514         * config/fp-bit.h (pack_d): Constify argument.
29515         * config/fp-bit.c (makenan): Constify return type. Remove casts.
29516         (isnan): Constify argument.
29517         (isinf): Likewise.
29518         (iszero): Likewise.
29519         (pack_d): Likewise.
29520         (_fpadd_parts): Constify return type.
29521         (_fpmul_parts): Likewise.
29522         (_fpdiv_parts): Likewise.
29523
29524 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
29525
29526         PR c/36489
29527         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
29528         warn about overwriting initializer with side-effects or
29529         -Woverride-init if !IMPLICIT.
29530         (output_init_element): Likewise.  Pass IMPLICIT down to
29531         add_pending_init.
29532         (process_init_element): Add IMPLICIT argument.  Pass it down
29533         to output_init_element.
29534         (push_init_element, pop_init_level, set_designator): Adjust
29535         process_init_element callers.
29536         (set_nonincremental_init, set_nonincremental_init_from_string):
29537         Adjust add_pending_init callers.
29538         (output_pending_init_elements): Adjust output_init_element callers.
29539         * c-tree.h (process_init_element): Adjust prototype.
29540         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
29541         process_init_element callers.
29542
29543 \f
29544 Copyright (C) 2009 Free Software Foundation, Inc.
29545
29546 Copying and distribution of this file, with or without modification,
29547 are permitted in any medium without royalty provided the copyright
29548 notice and this notice are preserved.