OSDN Git Service

2009-10-20 Richard Guenther <rguenther@suse.de>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
2
3         PR debug/41340
4         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
5         referenced just in DEBUG_INSNs.
6
7 2009-10-20  Richard Guenther  <rguenther@suse.de>
8
9         PR lto/41761
10         * gimple.c (gimple_register_type): Make sure we register
11         the types main variant first.
12
13 2009-10-20  Richard Guenther  <rguenther@suse.de>
14
15         * gimple.c (gimple_types_compatible_p): Simplify.  Move
16         cheap checks before hashtable queries.  Add checks for
17         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
18
19 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
20
21         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
22         without size or with size that can't be represented as a host integer.
23
24 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
25
26         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
27         the removal of a debug stmt as a significant change.
28
29 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
30
31         * config/s390/s390.md: Added agen condition to operand
32         forwarding bypasses. 
33         Added bypass for early address generation use of int results.
34         Updated comments.
35
36 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
37
38         * config/i386/i386.c: Remove signal.h #include.
39
40 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
41
42         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
43         * doc/rtl.texi: Document ss_abs.
44
45 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
46
47         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
48         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
49         instead of C_LEX_RAW_STRINGS.
50         (lex_string): Handle CPP_UTF8STRING.
51         * c-parser.c (c_parser_postfix_expression): Likewise.
52         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
53         (C_LEX_STRING_NO_JOIN): ... this.
54
55 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
56
57         * config/cris/cris.c (cris_function_value, cris_libcall_value,
58         cris_function_value_regno_p): New functions.
59         (cris_promote_function_mode): Update comment.
60         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
61         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
62         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
63         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
64
65 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
66
67         * unwind-dw2.c (execute_stack_op): Fix operand order for
68         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
69
70 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
71
72         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
73         (lower_stmt) <GIMPLE_BIND>: Add comment.
74         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
75         and return.
76         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
77         Otherwise lower it and set cannot_fallthru to true.
78         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
79         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
80         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
81         to true for a noreturn call.  Do not remove statements.
82         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
83         Set cannot_fallthru to false on function exit.
84         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
85         <GIMPLE_ASSIGN>: Remove.
86
87 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
88
89         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
90
91 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
92
93         * config/s390/s390.c (s390_z10_optimize_cmp): Use
94         next/prev_active_insn to skip DEBUG_INSNs as well.
95
96 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
97
98         * config/arm/arm.c (output_move_neon): Use DImode in call to
99         adjust_address.
100
101 2009-10-19  Matthias Klose  <doko@ubuntu.com>
102
103         PR target/40134
104         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
105
106 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
107
108         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
109
110 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
111
112         PR middle-end/41738
113         * optabs.c (expand_binop): Make mode of shift count expression mode
114         of shift count not target.
115         Remove indent nit.
116
117 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
118
119         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
120         case.  Force using values to replace references within the statement.
121         (convert_local_reference_stmt): Likewise.
122
123 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
124
125         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
126         remove a subsequent GOTO or RETURN statement.
127
128 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
129
130         * config/avr.md (*movqi): Add zero as equally preferable constraint
131         as general register.
132         (*movhi): Ditto.
133
134 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
135
136         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
137
138 2009-10-17  Richard Guenther  <rguenther@suse.de>
139
140         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
141
142 2009-10-17  Richard Guenther  <rguenther@suse.de>
143
144         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
145         operands in COMPONENT_REFs.
146
147 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
148
149         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
150         if not defined. Change type of second argument to const_rtx.
151         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
152         macro not defined.
153         * targhooks.h (default_libcall_value): Update prototype.
154         * target.h (struct gcc_target): Change type of second argument of
155         libcall_value to const_rtx.
156         * config/arm/arm.c (arm_libcall_value): Change type of second argument
157         to const_rtx.
158         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
159         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
160
161 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
162
163         PR debug/40521
164         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
165         * cgraphunit.c (cgraph_optimize): Call it.
166         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
167         (dwarf2out_assembly_start): ... here.  New hook.
168         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
169         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
170         hook.
171         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
172         * sdbout.c (sdb_debug_hooks): Likewise.
173         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
174         (vmsdbgout_assembly_start): New hook.
175
176 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
177
178         * rtl.h (RTL_LOCATION): Fix typo.
179
180 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
181
182         * print-rtl.c (print_rtx): Print locators in asm_operands
183         and asm_input.
184
185 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
186
187         PR debug/41535
188         * sched-deps.c (depl_on_debug_p): New.
189         (attach_dep_link): Reject debug deps before nondebug deps.
190         (add_to_deps_list): Insert debug deps after nondebug deps.
191         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
192         deps.
193         (sd_add_dep): Do not reject debug deps.
194         (add_insn_mem_dependence): Don't count debug deps.
195         (remove_from_deps): Likewise.
196         (sched_analyze_2): Set up mem deps on debug insns.
197         (sched_analyze_insn): Record reg uses for deps on debug insns.
198         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
199         try_ready nondebug insn after debug insn.
200         * ddg.c (create_ddg_dep_from_intra_loop_link,
201         create_ddg_dep_no_link): Don't reject debug deps.
202
203 2009-10-16  Richard Guenther  <rguenther@suse.de>
204
205         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
206         (maybe_merge_incomplete_and_complete_type): Likewise.
207         (lto_symtab_merge): Do not call them.  Do not warn for
208         complete vs. incomplete compatible types.
209         (lto_symtab_merge_decls_2): Simplify.
210         * gimple.c (gimple_force_type_merge): Remove.
211         (gimple_types_compatible_p): Make it static.
212         * gimple.h (gimple_force_type_merge): Remove.
213         (gimple_types_compatible_p): Likewise.
214
215 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
216
217         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
218         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
219
220 2009-10-16  Richard Guenther  <rguenther@suse.de>
221
222         PR tree-optimization/41728
223         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
224         if fold_stmt did anything.
225
226 2009-10-16  Richard Guenther  <rguenther@suse.de>
227
228         PR lto/41715
229         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
230         (maybe_fixup_handled_component): New function.
231         (input_gimple_stmt): Fixup mismatched decl replacements.
232
233 2009-10-16  Richard Guenther  <rguenther@suse.de>
234
235         PR lto/41713
236         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
237         the same as VAR_DECL.
238
239 2009-10-16  Richard Guenther  <rguenther@suse.de>
240
241         * gimple.c (iterative_hash_gimple_type): For integer types
242         also hash their minimum and maximum values and the string flag.
243         For array types hash their domain and the string flag.
244
245 2009-10-16  Richard Guenther  <rguenther@suse.de>
246
247         * gimple.c (gimple_types_compatible_p): Restrict completing
248         types to record or unions.  Simplify completion.
249         Do not merge records or unions with different
250         TYPE_STRUCTURAL_EQUALITY_P tag.
251         (iterative_hash_gimple_type): Restrict non-recursing into
252         pointer targets for records and unions.
253
254 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
255
256         PR debug/41717
257         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
258         * dwarf2out.c (mem_loc_descriptor): Don't handle
259         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
260         punt if it is not lowpart subreg or if inner mode isn't
261         MODE_INT.
262
263 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
264
265         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
266         investigating previous or next insns.
267
268 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
269
270         * tree-sra.c (build_ref_for_offset_1): Update comment.
271
272 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
273
274         * config/s390/s390.md (atype): Added missing values.
275
276 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
277
278         PR target/41702
279         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
280         (casesi64p): Update pattern to reflect above.
281
282 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
283
284         PR rtl-optimization/41697
285         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
286
287 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
288
289         PR target/23983
290         * config/rs6000/predicates.md: Update copyright year.
291         * config/rs6000/altivec.md: Ditto.
292         
293         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
294         (MD_INCLUDES): Add a2.md.
295         
296         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
297         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
298         (builtin_classify): New static vector to classify various builtins
299         to get the tree attributes correct.
300         (def_builtin): Set the attributes of builtins based on what the
301         builtin does (i.e. memory operation, floating point, saturation
302         need special attributes, others are pure functions).
303
304         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
305         the builtins.
306         (enum rs6000_builtins): Include rs6000-builtin.def to define the
307         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
308         RS6000_BUILTIN_COUNT.
309         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
310         MAX_RS6000_BUILTINS.
311
312         * config/rs6000/rs6000-builtin.def: New file that combines the
313         builtin enumeration name and attributes.
314
315 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
316
317         * config/i386/linux.h (ASM_SPEC): Add --32.
318
319 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
320
321         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
322         and DW_TAG_template_alias.
323         (dwarf_attr_name): Handle DW_AT_main_subprogram,
324         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
325         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
326         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
327         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
328         and DW_AT_GNU_odr_signature.
329         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
330         DW_FORM_flag_present and DW_FORM_ref_sig8.
331         (output_signature): Only print name on the first byte.
332         (output_die): Likewise for dw_val_class_data8.
333
334 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
335
336         * doc/invoke.texi: Clarify that most optimizations are not enabled
337         without -O.
338
339 2009-10-15  Richard Guenther  <rguenther@suse.de>
340
341         PR lto/41668
342         * gimple.c (compare_type_names_p): Handle anonymous names
343         differently based on new mode argument.
344         (gimple_types_compatible_p): For structs also compare the tags.
345         (iterative_hash_type_name): Rename to ...
346         (iterative_hash_name): ... this.  Hash all names.
347         (iterative_hash_gimple_type): Fix hashing the struct tag of
348         pointer targets.  Hash field decl names.
349
350 2009-10-15  Richard Guenther  <rguenther@suse.de>
351
352         PR lto/41669
353         * gimple.c (gimple_get_alias_set): Avoid recursing on
354         invalid type topology.
355
356 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
357
358         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
359
360 2009-10-15  Richard Guenther  <rguenther@suse.de>
361
362         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
363
364 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
365
366         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
367         add --with-tune{,-32,-64} configured default for -mtune if explicit
368         -mcpu is used.
369
370 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
371
372         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
373
374 2009-10-14  DJ Delorie  <dj@redhat.com>
375         
376         * config/h8300/h8300.c (F): New.
377         (Fpa): New.
378         (h8300_emit_stack_adjustment): Call them.
379         (push): Likewise.
380         (h8300_push_pop): Likewise.
381         (h8300_expand_prologue): Likewise.
382         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
383         (MUST_USE_SJLJ_EXCEPTIONS): Define.
384         (INCOMING_RETURN_ADDR_RTX): Define.
385         (INCOMING_FRAME_SP_OFFSET): Define.
386         (DWARF_CIE_DATA_ALIGNMENT): Define.
387
388 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
389
390         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
391         fields in builtin structs.
392         (finalize_record_size): Likewise.
393
394 2009-10-14  Richard Guenther  <rguenther@suse.de>
395
396         * gimple.c (gtc_ob): New global.
397         (struct type_pair_d): Replace pointers with type UIDs.
398         (type_pair_hash): Adjust.
399         (type_pair_eq): Likewise.
400         (lookup_type_pair): Likewise.  Allocate from an obstack.
401         (gimple_force_type_merge): Adjust.
402         (gimple_types_compatible_p): Likewise.
403         (free_gimple_type_tables): Free the obstack.
404
405 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
406
407         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
408         stmts setting DEBUG_EXPR_DECLs.
409
410         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
411         Don't crash if mode1 is VOIDmode.
412
413 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
414
415         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
416         * params.h (IRA_LOOP_RESERVED_REGS): New.
417         * tree-pass.h (pass_subregs_of_mode_init,
418         pass_subregs_of_mode_finish): Remove.
419         * passes.c (pass_subregs_of_mode_init,
420         pass_subregs_of_mode_finish): Remove.
421         (pass_reginfo_init): Move before loop optimizations.
422         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
423         * common.opt (fira-loop-pressure): New.
424         * toplev.h (flag_ira_loop_pressure): New.
425         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
426         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
427         Make external and void type functions.
428         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
429         pass_subregs_of_mode_finish): Remove.
430         * ira-costs.c (init_costs): Call init_subregs_of_mode.
431         * regmove.c: Include ira.h.
432         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
433         register pressure calculation in loops.
434         * loop-invariant.c: Include REGS_H and ira.h.
435         (struct loop_data): New members max_reg_pressure, regs_ref, and
436         regs_live.
437         (struct invariant): New member orig_regno.
438         (curr_loop): New variable.
439         (find_exits): Initialize regs_ref and regs_live.
440         (create_new_invariant): Initialize orig_regno.
441         (get_cover_class_and_nregs): New.
442         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
443         array.  Add code for flag_ira_loop_pressure.
444         (gain_for_invariant): Make new_regs an array.  Add code for
445         flag_ira_loop_pressure.
446         (best_gain_for_invariant): Ditto.
447         (set_move_mark): New parameter gain.  Use it for debugging output.
448         (find_invariants_to_move): Make regs_needed and new_regs an array.
449         Add code for flag_ira_loop_pressure.
450         (move_invariant_reg): Set up orig_regno.
451         (move_invariants): Set up reg classes for pseudos for
452         flag_ira_loop_pressure.
453         (free_loop_data): Clear regs_ref and regs_live.
454         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
455         get_regno_cover_class, change_pressure, mark_regno_live,
456         mark_regno_death, mark_reg_store, mark_reg_clobber,
457         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
458         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
459         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
460         register pressure calculation in loops if new regs were added.
461         Call finish_subregs_of_mode.
462         * opts.c (decode_options): Set up flag_ira_loop_pressure.
463         * Makefile.in (loop-invariant.o): Add ira.h.
464         (regmove.o): Ditto.
465         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
466         Describe.
467         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
468         
469 2009-10-14  Richard Guenther  <rguenther@suse.de>
470
471         * lto-symtab.c (lto_symtab_compatible): Fold in ...
472         (lto_symtab_merge): ... here.  Rewrite both to take the
473         prevailing and a to-be-merged entry and to queue diagnostics properly.
474         (lto_symtab_resolve_replaceable_p): New predicate for
475         symbol resolution.
476         (lto_symtab_resolve_can_prevail_p): Likewise.
477         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
478         handles merging commons by choosing the largest decl.  Fold
479         in code that gives ODR errors.
480         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
481         diagnostics here.
482         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
483         case of no prevailing decl here.  Diagnose mismatches
484         in object types here.  Drop all but the prevailing decls.
485         (lto_symtab_prevailing_decl): Return the single prevailing decl.
486         * lto-streamer-in.c (lto_input_tree_ref): Deal with
487         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
488
489 2009-10-14  Richard Guenther  <rguenther@suse.de>
490
491         PR lto/41521
492         * lto-streamer-in.c (input_bb): Replace debug stmts with
493         nops instead of dropping them.
494
495 2009-10-14  Nick Clifton  <nickc@redhat.com>
496
497         * gcc/doc/extended.texi: Replace the dash character with @minus{}
498         in situations where it is being used as a minus symbol.
499         * gcc/doc/tm.texi: Likewise.
500         * gcc/doc/md.texi: Likewise.
501
502 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
503
504         PR preprocessor/41543
505         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
506         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
507         * tree.c: Include intl.h.
508         (expand_location): Handle BUILTINS_LOCATION.
509         * Makefile.in (tree.o): Depend on intl.h.
510
511         PR debug/41695
512         * dwarf2out.c (dwarf2out_var_location): Always clear
513         last_postcall_label when changing last_label.
514
515 2009-10-14  Pascal Obry  <obry@adacore.com>
516
517         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
518         (process_command): Handle -E as done with -c and -S.  Do not add
519         the target executable suffix to the output file when -E is used.
520         (main): Adjust error message accordingly.
521
522 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
523
524         PR debug/41343
525         PR debug/41447
526         PR debug/41264
527         PR debug/41338
528         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
529         decl with rtl.
530         (tree_code_size): Likewise.
531
532 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
533
534         * builtins.c (fold_builtin_1): Support complex "arc" functions.
535         * real.h (HAVE_mpc_arc): Define.
536
537 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
538
539         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
540         (struct builtin_description): Add fndecl field.
541         (bdesc): Remove const qualifier.  Update initializer.
542         (sh_media_init_builtins): Remove const qualifier for d.  Record
543         the result of add_builtin_function to the fndecl field.
544         (sh_builtin_decl): New.
545         (sh_media_builtin_decl): New.
546
547 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
548
549         PR target/38948
550         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
551         requests between special registers.
552
553 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
554
555         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
556
557 2009-10-13  Richard Henderson  <rth@redhat.com>
558
559         PR tree-optimization/41377
560         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
561         (cleanup_empty_eh_merge_phis): New change_region parameter;
562         pass it on to redirect_eh_edge_1.  Update callers.
563         (cleanup_empty_eh_unsplit): Don't require an existing EH label
564         at the destination block.
565
566 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
567
568         * passes.c (register_pass): Replaced gcc_unreachable by
569         fatal_error on failure. Mentions plugins in comments & messages.
570
571 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
572
573         PR target/41693
574         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
575         * sched-vis.c (print_value): Use it.
576         * cselib.c (cselib_hash_rtx): Likewise.
577         * print-rtl.c (print_rtx): Likewise.
578         * cfgexpand.c (expand_debug_rtx): Likewise.
579         * var-tracking.c (vt_expand_loc_callback): Likewise.
580
581 2009-10-13  Richard Guenther  <rguenther@suse.de>
582
583         PR lto/41565
584         * opts.c (handle_option): Split out code to handle setting
585         the options flag var ...
586         (set_option): ... here.
587         * opts.h (set_option): Declare.
588         * lto-opts.c (register_user_option_p): Include -fexceptions
589         and all position independent code variants.
590         (handle_common_option): Remove.
591         (lto_reissue_options): Use set_option.
592
593 2009-10-13  Martin Jambor  <mjambor@suse.cz>
594
595         PR tree-optimization/41661
596         * ipa-prop.c (compute_complex_pass_through): Allow only operations
597         that are tcc_comparisons or do not change the type in any
598         un-usleless way.
599         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
600         folding tcc_comparison operations.
601
602 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
603
604         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
605         properly.
606
607 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
608
609         PR debug/41343
610         PR debug/41447
611         PR debug/41264
612         PR debug/41338
613         * tree.def (DEBUG_EXPR_DECL): New.
614         * rtl.def (DEBUG_EXPR): New.
615         * gengtype.c (adjust_field_rtx_def): Handle it.
616         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
617         (insert_debug_temp_for_var_def): ... this.  Drop support for
618         moving.  Take iterator for def stmt; insert debug stmt before it.
619         Scan early for use count and kind in debug stmts.
620         (propagate_defs_into_debug_stmts): Rename to...
621         (insert_debug_temps_for_defs): ... this.  Likewise.
622         * tree.h (DEBUG_TEMP_UID): New.
623         * tree.c (next_debug_decl_uid): New.
624         (make_node_stat): Count debug decls separately.
625         (copy_node_stat): Likewise.
626         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
627         * var-tracking.c (dv_is_decl_p): Recognize it.
628         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
629         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
630         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
631         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
632         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
633         (cselib_hash_rtx): Likewise.
634         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
635         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
636         debug bind stmts.
637         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
638         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
639         * rtl.c (copy_rtx): Likewise.
640         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
641         * print-rtl.c (print_rtx): Likewise.
642         * sched-vis.c (print_value): Likewise.
643         (print_insn): Handle DEBUG_EXPR_DECL.
644         * tree-dump.c (dequeue_and_dump): Likewise.
645         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
646         * gimple-iterator (gsi_replace): Check for same lhs.
647         (gsi_remove): Insert debug temps.
648         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
649         (move_computations_stmt): Drop explicit propagation into debug stmts.
650         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
651         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
652         * tree-ssa-sink.c (statement_sink_location): Likewise.
653         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
654         * tree-ssanames.c (release_ssa_name): Adjust for rename.
655         * tree-flow.h: Likewise.
656         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
657         debug temps without values.
658         (eliminate_unnecessary_stmts): Don't discard just-inserted
659         debug stmts.
660
661 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
662
663         PR target/26515
664         * config/cris/cris.md (andu): Check that operand 1 is one of the
665         general registers.  Fix typo in head comment.
666
667 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
668
669         * config/i386/i386.md (vswapmov): New.
670         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
671         (ix86_function_ms_hook_prologue): New.
672         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
673         * configure.ac: Test for swap suffix support in as.
674         * configure: Rebuild.
675
676 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
677
678         PR target/41680
679         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
680         paradoxical subregs to prevent partial register stalls if the inner
681         mode is integer mode.
682
683 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
684
685         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
686
687 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
688
689         PR c++/41570
690         * gcc/dwarf2out.c (template_parameter_pack_die,
691         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
692
693 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
694
695         PR debug/41616
696         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
697         on updates too.
698         (maybe_register_def): Likewise.  Take stmt iterator.
699         (rewrite_update_stmt): Take stmt iterator and pass it on.
700         (rewrite_update_enter_block): Pass stmt iterator.
701
702 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
703
704         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
705         (spu_builtin_decl): New function.
706
707 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
708
709         * config/i386/i386.md (SWIM): New mode iterator.
710         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
711         using SWIM mode iterator.
712         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
713         patterns using SWI48 mode iterator.
714         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
715         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
716         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
717         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
718         patterns using SWI248 mode iterator.
719         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
720         gen_x86_movdicc_0_m1_rex64 for renamed function
721
722 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
723             Eric Botcazou  <ebotcazou@adacore.com>
724
725         PR target/33743
726         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
727         * config/sparc/sol2-unwind.h: New file.
728
729 2009-10-11  Olivier Hainque  <hainque@adacore.com>
730             Eric Botcazou  <ebotcazou@adacore.com>
731
732         PR target/33743
733         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
734         * config/i386/sol2-unwind.h: New file.
735
736 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
737
738         PR target/41665
739         * config/i386/i386.md (addsi_1_zext): Get the proper second
740         operand for lea.
741
742 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
743
744         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
745         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
746         replacement value.
747
748 2009-10-11  Richard Guenther  <rguenther@suse.de>
749
750         * gimple.c (iterative_hash_type_name): Do not handle special
751         anonymous names.
752
753 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
754
755         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
756         (*setcc_si_1_and): Ditto.
757         (*setcc_si_1_movzbl): Ditto.
758         (*setcc_<mode>_2): Ditto.
759         (*setcc_qi): Rename from *setcc_1.
760         (*setcc_qi_slp): Rename from *setcc_2.
761
762         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
763         (*zero_extendqisi2_movzbw_and splitter): Ditto.
764
765         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
766         "if" condition, there is already assert with reload_completed present.
767
768 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
769
770         * plugin.c (try_init_one_plugin): Improve constness of variable err.
771
772 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
773
774         * doc/install.texi (Final install): Refer to
775         http://gcc.gnu.org/bugs/ for bug reporting.
776
777 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
778
779         * configure.ac: Add test for dci instruction.
780         * configure: Regenerate.
781         * config.in: Likewise.
782         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
783         * doc/invoke.texi: Add cpu_type 476 and 476fp.
784         (-mmulhw): Add 476 to description.
785         (-mdlmzb): Likewise.
786         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
787         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
788         (processor_target_table): Add 476 and 476fp entries.
789         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
790         (rs6000_issue_rate): Add CPU_PPC476.
791         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
792         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
793         (processor_type): Add PROCESSOR_PPC476.
794         (EXTRA_SPECS): Add asm_cpu_476 string.
795         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
796         (define_attr "cpu"): Add ppc476.
797         Include 476.md.
798         Update comments for 476.
799         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
800         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
801         Update copyright year.
802         * config/rs6000/476.md: New file.
803         * config/rs6000/40x.md: Add description for "isel" attribute.
804         Update copyright year.
805         * config/rs6000/440.md: Likewise.
806         * config/rs6000/603.md: Likewise.
807         * config/rs6000/6xx.md: Likewise.
808         * config/rs6000/7450.md: Likewise.
809         * config/rs6000/7xx.md: Likewise.
810         * config/rs6000/8540.md: Likewise.
811         * config/rs6000/cell.md: Likewise.
812         * config/rs6000/e300c2c3.md: Likewise.
813         * config/rs6000/e500mc.md: Likewise.
814         * config/rs6000/mpc.md: Likewise.
815         * config/rs6000/power4.md: Likewise.
816         * config/rs6000/power5.md: Likewise.
817         * config/rs6000/power6.md: Likewise.
818         * config/rs6000/power7.md: Likewise.
819         * config/rs6000/rios1.md: Likewise.
820         * config/rs6000/rios2.md: Likewise.
821         * config/rs6000/rs64.md: Likewise.
822
823 2009-10-10  Richard Guenther  <rguenther@suse.de>
824
825         PR tree-optimization/41654
826         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
827         a cond expr before calling gimple_cond_set_condition_from_tree.
828         (ifcombine_iforif): Likewise.
829
830 2009-10-09  Ian Lance Taylor  <iant@google.com>
831
832         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
833         * configure: Rebuild.
834
835 2009-10-09  Neil Vachharajani <nvachhar@google.com>
836
837         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
838         deprecated.
839
840 2009-10-09  Richard Guenther  <rguenther@suse.de>
841
842         PR lto/41638
843         * target-def.h (TARGET_BUILTIN_DECL): Define.
844         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
845         * target.h (struct gcc_target): Add builtin_decl target hook.
846         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
847         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
848         target builtins.
849         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
850         not gcc_unreachable.
851         (lto_output_builtin_tree): Sorry if the target does not support
852         streaming target builtins.
853         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
854         (rs6000_builtin_decl): New function.
855         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
856         (ix86_builtin_decl): New function.
857
858 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
859
860         PR preprocessor/41445
861         * c-ppoutput.c (do_line_change): New function.
862         (cb_line_change): Use it.
863         (scan_translation_unit): Call do_line_change if
864         avoid_paste or PREV_WHITE and token location is on a different line
865         than print.src_line.
866
867         PR debug/40521
868         * dwarf2out.c (dwarf2out_init): Test whether
869         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
870         it is defined.
871
872         PR rtl-optimization/41646
873         * calls.c (expand_call): For BLKmode types returned in registers
874         avoid likely spilled hard regs in copy_blkmode_from_reg generated
875         insns.
876
877 2009-10-09  Richard Guenther  <rguenther@suse.de>
878
879         PR tree-optimization/41634
880         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
881         we remove the correct elements.
882         (optimize_stmt): Make sure to update stmt operands before
883         optimizing redundancies.
884
885 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
886
887         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
888
889 2009-10-09  Richard Guenther  <rguenther@suse.de>
890
891         PR driver/41637
892         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
893         globals.
894         (lto_wrapper_exit): New function.
895         (fatal): Use it.
896         (fatal_perror): Likewise.
897         (fork_execute): Use global args_name, do not free it.
898         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
899         * lto-streamer.h: Remove duplicate prototypes.
900
901 2009-10-09  Richard Guenther  <rguenther@suse.de>
902
903         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
904         before calling stmt_can_throw_external.
905
906 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
907
908         PR tree-optimization/40071
909         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
910         pointer if the original data reference doesn't conflict with the
911         created vector data reference.  Fix long line.
912
913 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
914
915         * config/i386/i386.md (any_div): New code iterator.
916         (u): Handle div and udiv.
917         (sgnprefix): Ditto.
918         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
919         code iterator.
920         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
921         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
922         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
923         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
924
925 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
926
927         * gcc.c (main): Remove trailing "." from diagnostics.
928
929 2009-10-08  Cary Coutant  <ccoutant@google.com>
930
931         Add support for debugging with ICF (Identical Code Folding).
932         * calls.c (debug.h): New #include.
933         (emit_call_1): Call virtual_call_token debug hook.
934         * common.opt (-fenable-icf-debug): New option.
935         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
936         locations in the source).
937         (poc_label_num): New variable.
938         (dcall_entry, vcall_entry): New typedefs.
939         (dcall_table, vcall_table): New variables.
940         (struct vcall_insn): New type.
941         (vcall_insn_table): New variable.
942         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
943         (size_of_dcall_table): New function.
944         (output_dcall_table): New function.
945         (size_of_vcall_table): New function.
946         (output_vcall_table): New function.
947         (dwarf2out_direct_call): New function.
948         (vcall_insn_table_hash): New function.
949         (vcall_insn_table_eq): New function.
950         (dwarf2out_virtual_call_token): New function.
951         (dwarf2out_virtual_call): New function.
952         (dwarf2out_init): Allocate new tables and sections.
953         (prune_unused_types): Mark DIEs referenced from direct call table.
954         (dwarf2out_finish): Output direct and virtual call tables.
955         * final.c (final_scan_insn): Call direct_call and virtual_call
956         debug hooks.
957         * debug.h (struct gcc_debug_hooks): Add direct_call,
958         virtual_call_token, virtual_call hooks.
959         (debug_nothing_uid): New function.
960         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
961         (debug_nothing_uid): New function.
962         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
963         (xcoff_debug_hooks): Likewise.
964         * sdbout.c (sdb_debug_hooks): Likewise.
965         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
966         * doc/invoke.texi (-fenable-icf-debug): New option.
967
968 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
969
970         PR debug/41353
971         * regmove.c (regmove_backward_pass): Replace src with dst in the
972         debug insn, and check for dst before rather than after.
973
974 2009-10-08  Janis Johnson <janis187@us.ibm.com>
975
976         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
977         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
978
979 2009-10-08  Jan Hubicka  <jh@suse.cz>
980
981         PR middle-end/41626
982         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
983         do not mark cgraph nodes as needed.
984         (record_references_in_initializer): Add new only_vars parameter.
985         * cgraph.h (record_references_in_initializer): New parameter.
986         * varasm.c (assemble_variable): Update call.
987         * varpool.c (varpool_analyze_pending_decls): Always look for
988         referenced vars.
989
990 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
991
992         * config/avr/avr.c (last_insn_address) Remove variable.
993         (expand_prologue): Don't initialise last_insn_address variable.
994         (final_prescan_insn): Don't output insn size.
995         * config/avr/avr.opt (msize): Remove switch.
996         * doc/invoke.texi (AVR Options): Remove documentation of -msize
997         switch.
998
999 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
1000
1001         * combine.c (label_tick_ebb_start): Fix comment.
1002         (combine_instructions): Set label_tick and label_tick_ebb_start before
1003         calling setup_incoming_promotions.  Start them from 1.  Increment
1004         label_tick instead of deriving it from the BB index.  Rather than
1005         comparing ticks use the block from the previous iteration to decide
1006         whether to start a new EBB.  Remove empty lines before function.
1007
1008 2009-10-08  Michael Matz  <matz@suse.de>
1009
1010         PR middle-end/41573
1011         * builtins.c (fold_builtin_isascii): Use fold_build2.
1012         (fold_builtin_isdigit): Ditto.
1013         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
1014         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
1015         remove_useless_stmts_cond, remove_useless_stmts_tf,
1016         remove_useless_stmts_tc, remove_useless_stmts_bind,
1017         remove_useless_stmts_goto, remove_useless_stmts_label,
1018         remove_useless_stmts_1, remove_useless_stmts,
1019         pass_remove_useless_stmts): Remove.
1020         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
1021         * passes.c (init_optimization_passes): Don't add
1022         pass_remove_useless_stmts.
1023         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
1024         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
1025         static constants.
1026         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
1027         for static constants.
1028         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
1029         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
1030
1031 2009-10-08  Richard Guenther  <rguenther@suse.de>
1032
1033         * gimple.c (free_gimple_type_tables): New function.
1034         * gimple.h (free_gimple_type_tables): Declare.
1035
1036 2009-10-07  Mark Heffernan  <meheff@google.com>
1037
1038         * ipa-prop.c (ipa_print_node_params) Only print
1039         names of named arguments.
1040
1041 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
1042
1043         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
1044         being statically linked.
1045
1046 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1047
1048         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
1049
1050 2009-10-08  Jan Hubicka  <jh@suse.cz>
1051
1052         PR bootstrap/41620
1053         * ipa.c (cgraph_externally_visible_p,
1054         function_and_variable_visibility,
1055         whole_program_function_and_variable_visibility): Skip non-finalized
1056         nodes.
1057
1058 2009-10-08  Nick Clifton  <nickc@redhat.com>
1059
1060         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
1061         CONST_DOUBLEs.
1062
1063 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
1064
1065         PR bootstrap/37739
1066         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
1067
1068 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
1069
1070         PR c/41182
1071         * c-common.c (c_fully_fold_internal): Strip nops from the result
1072         of recursive calls to c_fully_fold_internal.
1073         (c_wrap_maybe_const): New.
1074         (c_save_expr): Use c_wrap_maybe_const.
1075         * c-common.h (c_wrap_maybe_const): Declare.
1076         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
1077         build_binary_op): Use c_wrap_maybe_const.
1078
1079 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1080
1081         * real.c: Fix comment to reflect actual exponent size.
1082
1083 2009-10-08  Ben Elliston  <bje@au.ibm.com>
1084
1085         * config/rs6000/a2.md: Add FSF comment header.
1086
1087 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
1088
1089         * config/i386/i386.md (any_extend): New code iterator.
1090         (u, s): New code attributes.
1091         (sgnprefix): Ditto.
1092         (DWIH): Rewrite as code iterator for SI and DI modes.
1093         (DWI): Rewrite as mode attribute.
1094         (dwi): New mode attribute.
1095         (di): Depend on SI mode and DI mode.
1096         (doubleint_general_operand): Remove mode attribute.
1097
1098         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
1099         DWIH mode iterator.
1100
1101         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
1102         (*sub<mode>3_doubleword): Ditto.
1103
1104         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
1105         using SWIM248 mode iterator.
1106         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
1107         using SWI48 mode iterator.
1108         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
1109         patterns using DWIH mode iterator and any_extend code iterator.
1110         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
1111         using any_extend code iterator.
1112         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
1113         patterns using DWIH mode iterator and any_extend code iterator.
1114         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
1115         using any_extend code iterator.
1116         (<s>mul<mode>3_highpart): Macroize expander from
1117         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
1118         and any_extend code iterator.
1119         (*<s>muldi3_highpart_1): Macroize insn from
1120         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
1121         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
1122         patterns using any_extend code iterator.
1123         (*<s>mulsi3_highpart_zext): Macroize insn from
1124         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
1125
1126 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
1127
1128         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
1129         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
1130         refering to a DIE with DW_AT_const_value.
1131
1132 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
1133
1134         PR middle-end/22072
1135         * ira-lives.c (check_and_make_def_conflict): Process all operands.
1136
1137 2009-10-06  Jan Hubicka  <jh@suse.cz>
1138
1139         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
1140         correctly.
1141
1142 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
1143
1144         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
1145         *lea_2_rex64): Move before *add<mode>_1 pattern.
1146
1147 2009-10-07  Jan Hubicka  <jh@suse.cz>
1148
1149         * collect2.c (main): Add -fno-whole-program.
1150         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
1151
1152 2009-10-07  Jan Hubicka  <jh@suse.cz>
1153
1154         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
1155         has no address taken.
1156         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
1157         never needed.
1158         (cgraph_clone_node): Clear externally_visible flag for clones.
1159         * cgraph.h (cgraph_only_called_directly_p,
1160         cgraph_can_remove_if_no_direct_calls_p): New predicates.
1161         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
1162         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
1163         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
1164         ipcp_insert_stage): Likwise.
1165         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
1166         externally_visible flag.
1167         (verify_cgraph_node): Verify that inline clones look right.
1168         (process_function_and_variable_attributes): Do not set
1169         externally_visible flags.
1170         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
1171         been already run.
1172         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
1173         boundaries.
1174         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
1175         clear externally_visible when turning into inline clones
1176         (cgraph_mark_inline_edge): Use new predicates.
1177         (cgraph_estimate_growth): Likewise.
1178         (cgraph_decide_inlining): Likewise.
1179         * ipa.c (cgraph_postorder): Likewise.
1180         (cgraph_remove_unreachable_nodes): Likewise; sanity check
1181         that inline clones are not needed.
1182         (cgraph_externally_visible_p): New predicate.
1183         (function_and_variable_visibility): Add whole_program parameter;
1184         always set externally_visible flag; handle COMDAT function
1185         privatization.
1186         (local_function_and_variable_visibility): New function.
1187         (gate_whole_program_function_and_variable_visibility): New function.
1188         (whole_program_function_and_variable_visibility): New function.
1189         (pass_ipa_whole_program_visibility): New function.
1190         * passes.c  (init_optimization_passes): Add whole program visibility
1191         pass.
1192         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
1193         not care about needed/reachable flags.
1194         * varpool.c: Include flags.h
1195         (decide_is_variable_needed): When doing LTO assume whole-program mode.
1196         (varpool_finalize_decl): When we are in LTO read-back, all variables
1197         are analyzed.
1198         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
1199
1200 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1201
1202         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
1203         add MASK_HARD_DFP.
1204
1205 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1206
1207         * config.gcc: Don't include the makefile fragments intended for
1208         libgcc.
1209         * config/s390/fixdfdi.h: File removed.
1210         * config/s390/libgcc-glibc.ver: File removed.
1211         * config/s390/s390.h: Remove the fixdfdi.h hack.
1212         * config/s390/t-crtstuff: File moved to libgcc dir.
1213         * config/s390/t-linux: Likewise.
1214         * config/s390/t-tpf: libgcc specific parts removed.
1215         * config/s390/t-linux64: Likewise.
1216
1217 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
1218
1219         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
1220         (lto-compress.o): Likewise.
1221
1222 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
1223
1224         PR target/41512
1225         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
1226         dllexport to class members here.
1227         (i386_pe_determine_dllimport_p): Only check static class data for
1228         definition.
1229         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
1230         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
1231         functions for vague linkage.
1232         (i386_pe_type_dllexport_p): Fix formatting.
1233         (maybe_add_dllexport) New function.
1234         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
1235         to class members.
1236
1237 2009-10-07  Ben Elliston  <bje@au.ibm.com>
1238
1239         * config/rs6000/a2.md: Remove duplicated lines.
1240
1241 2009-10-07  Ben Elliston  <bje@au.ibm.com>
1242
1243         * config.gcc (powerpc*-*-*): Handle a2.
1244         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
1245         * config/rs6000/a2.md: New file.
1246         * config/rs6000/rs6000.opt (mno-update): New.
1247         (mupdate): Return to using a mask, not a var.
1248         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
1249         (enum processor_type): Add PROCESSOR_PPCA2.
1250         * config/rs6000/rs6000.c (ppca2_cost): New costs.
1251         (rs6000_override_options): Add "a2" to processor_target_table.
1252         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
1253         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
1254
1255 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
1256
1257         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
1258         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
1259         reference to nonexistent gen_truncxfxf2 function.
1260
1261 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
1262
1263         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
1264         (DWIH, g, di, doubleint_general_operand): New mode attributes.
1265         (general_operand): Handle TI mode.
1266         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
1267         using SDWIM mode iterator.
1268         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
1269         pattern from *add{di,ti}3_1 patterns and corresponding splitters
1270         using DWI mode iterator.
1271         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
1272         patterns using SWI mode iterator.
1273         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
1274         using SWI48 mode iterator.
1275         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
1276         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
1277         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
1278         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
1279         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
1280         using SDWIM mode iterator.
1281         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
1282         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
1283         using DWI mode iterator.
1284         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
1285         patterns using SWI mode iterator.
1286         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
1287         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
1288         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
1289         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
1290         patterns using plusminus code iterator.
1291         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
1292         sub<mode>3 patterns using plusminus code iterator.
1293         * config/i386/i386.c (override_options): Update the call to
1294         gen_subdi_carry_rex64 for renamed function.
1295         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
1296         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
1297         calls to instruction expanders.
1298
1299 2009-10-06  Martin Jambor  <mjambor@suse.cz>
1300
1301         PR bootstrap/41395
1302         * opts.c (decode_options): Run IPA-SRA at -O2.
1303
1304 2009-10-06  Richard Guenther  <rguenther@suse.de>
1305
1306         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
1307
1308 2009-10-06  Tobias Burnus  <burnus@net-b.de>
1309
1310         PR lto/41591
1311         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
1312         -flto and -fwhole-program flags can be combined.
1313
1314 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
1315
1316         PR driver/41217
1317         * gcc.c (process_command): Check that -o argument was specified.
1318
1319 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
1320
1321         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
1322
1323 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1324
1325         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
1326         * doc/invoke.texi (Warning Options): Annotate allowed languages
1327         for -Wunsuffixed-float-constants.
1328
1329 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
1330
1331         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
1332         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
1333         same name and isn't the main variant.
1334
1335         PR debug/41558
1336         * dwarf2out.c (loc_by_reference): Removed.
1337         (dw_loc_list_1): New function.
1338         (dw_loc_list): Remove toplev argument, add want_address argument.
1339         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
1340         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
1341         want_address == 2 to dw_loc_list.  For successful dw_loc_list
1342         set have_address to 1 only if want_address is not 0.
1343
1344 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
1345
1346         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
1347         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
1348         a code block followed by two pointers.
1349         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
1350         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
1351         (MIPS_MOVE): Likewise.
1352         (MIPS_LUI): Likewise.
1353         (MIPS_JR): Likewise.
1354         (MIPS_BAL): Likewise.
1355         (MIPS_NOP): Likewise.
1356         (mips_asm_trampoline_template): Delete.
1357         (mips_trampoline_code_size): New function.
1358         (mips_trampoline_init): Add shorter sequences for all cases
1359         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
1360         Calculate the opcodes directly, rather than copying from a template.
1361         Only flush the code part of the trampoline.
1362         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
1363
1364 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
1365
1366         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
1367         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
1368         (INCOMING_RETURN_ADDR_RTX): Likewise.
1369         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
1370         with AT_REGNUM.
1371         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
1372         with RETURN_ADDR_REGNUM.
1373         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
1374         * config/mips/mips.c (mips16_build_call_stub): Replace
1375         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
1376         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
1377         (mips_print_operand_punctuation): Likewise.
1378         (mips_frame_set): Likewise.
1379         (mips16e_output_save_restore): Likewise.
1380         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
1381         (mips_save_reg_p): Likewise.
1382         (mips_return_addr): Likewise.
1383         (mips_set_return_address): Likewise.
1384         (mips_direct_save_slot_move_p): Likewise.
1385         (mips_output_function_prologue): Likewise.
1386         (mips_restore_reg): Likewise.
1387         (mips_expand_epilogue): Likewise.
1388         (mips_epilogue_uses): Likewise.
1389         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
1390         (*mov<mode>_ra): Use it instead of a hard-coded 31.
1391         (clear_hazard_<mode>): Likewise.
1392         (call_internal): Likewise.
1393         (call_internal_direct): Likewise.
1394         (call_direct_split): Likewise.
1395         (call_value_internal): Likewise.
1396         (call_value_split): Likewise.
1397         (call_value_internal_direct): Likewise.
1398         (call_value_direct_split): Likewise.
1399         (call_value_multiple_internal): Likewise.
1400         (call_value_multiple_split): Likewise.
1401
1402 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
1403             Jakub Jelinek  <jakub@redhat.com>
1404
1405         PR rtl-optimization/41511
1406         * combine.c (record_value_for_reg): Pass explicit values as argument
1407         to get_last_value_validate.
1408         (get_last_value_validate): Document INSN parameter.
1409         For non-readonly MEMs, assume they might have been modified if INSN
1410         was in another basic block.
1411         (get_last_value): Minor reformatting.
1412
1413 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1414
1415         PR tree-opt/40992
1416         * final.c (asm_str_count): Split out from asm_insn_count.
1417         * rtl.h (asm_str_count): New prototype.
1418         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
1419         asm_str_count.
1420
1421 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
1422
1423         * doc/plugins.texi: Change plugin_pass to register_pass_info.
1424
1425 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
1426             Rafael Espindola  <espindola@google.com>
1427
1428         * gengtype.c (write_types): Moved call to write_func_for_structure
1429         into seperate loops.
1430
1431 2009-10-05  Richard Guenther  <rguenther@suse.de>
1432
1433         PR lto/41281
1434         * lto-cgraph.c (output_cgraph): Output toplevel asms.
1435         (input_cgraph_1): Input toplevel asms.
1436
1437 2009-10-05  Richard Guenther  <rguenther@suse.de>
1438
1439         PR lto/40902
1440         * lto-symtab.c (lto_compatible_attributes_p): Remove.
1441         (external_aggregate_decl_p): Likewise.
1442         (lto_symtab_compatible): Re-structure.  Remove dead code.
1443         For variables ignore toplevel qualifiers when comparing types.
1444         Issue warnings, not errors for mismatched user-alignment.
1445
1446 2009-10-05  Richard Guenther  <rguenther@suse.de>
1447
1448         PR lto/41552
1449         PR lto/41487
1450         * lto-symtab.c (struct lto_symtab_base_def): Remove.
1451         (struct lto_symtab_identifier_def): Likewise.
1452         (struct lto_symtab_decl_def): Likewise.
1453         (struct lto_symtab_entry_def): New.
1454         (lto_symtab_identifier_t): Rename to ...
1455         (lto_symtab_entry_t): ... this.
1456         (lto_symtab_decls): Remove.
1457         (lto_symtab_base_hash): Rename to ...
1458         (lto_symtab_entry_hash): ... this.
1459         (lto_symtab_base_eq): Rename to ...
1460         (lto_symtab_entry_eq): ... this.
1461         (lto_symtab_base_marked_p): Rename to ...
1462         (lto_symtab_entry_marked_p): ... this.
1463         (lto_symtab_identifier_marked_p): Remove.
1464         (lto_symtab_decl_marked_p): Likewise.
1465         (lto_symtab_maybe_init_hash_tables): Rename to ...
1466         (lto_symtab_maybe_init_hash_table): ... this.
1467         (lto_symtab_set_resolution_and_file_data): Remove.
1468         (lto_symtab_register_decl): New function.
1469         (lto_symtab_get_identifier): Remove.
1470         (lto_symtab_get): New function.
1471         (lto_symtab_get_resolution): Adjust.
1472         (lto_symtab_get_identifier_decl): Remove.
1473         (lto_symtab_set_identifier_decl): Likewise.
1474         (lto_symtab_merge_decl): Rename to ...
1475         (lto_symtab_merge): ... this.  Rewrite.
1476         (lto_symtab_merge_var): Remove.
1477         (lto_symtab_merge_fn): Likewise.
1478         (lto_symtab_prevailing_decl): Adjust.
1479         (lto_cgraph_replace_node): New function.
1480         (lto_symtab_merge_decls_2): Likewise.
1481         (lto_symtab_merge_decls_1): Likewise.
1482         (lto_symtab_fixup_var_decls): Likewise.
1483         (lto_symtab_resolve_symbols): Likewise.
1484         (lto_symtab_merge_decls): Likewise.
1485         (lto_symtab_prevailing_decl): Adjust.
1486         (lto_symtab_get_symtab_def): Remove.
1487         (lto_symtab_get_file_data): Likewise.
1488         (lto_symtab_clear_resolution): Adjust.
1489         (lto_symtab_clear_resolution): Likewise.
1490         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
1491         (input_cgraph_1): Likewise.
1492         * lto-streamer-in.c (get_resolution): Do not provide fake
1493         symbol resolutions here.
1494         (deferred_global_decls): Remove.
1495         (lto_register_deferred_decls_in_symtab): Likewise.
1496         (lto_register_var_decl_in_symtab): Change signature, register
1497         variable via lto_symtab_register_decl.
1498         (lto_register_function_decl_in_symtab): Likewise.
1499         (lto_read_tree): Adjust.
1500         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
1501         (lto_symtab_merge_var): Likewise.
1502         (lto_symtab_merge_fn): Likewise.
1503         (lto_symtab_register_decl): Declare.
1504         (lto_symtab_merge_decls): Likewise.
1505
1506 2009-10-05  Richard Guenther  <rguenther@suse.de>
1507
1508         PR tree-optimization/23821
1509         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
1510         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
1511         simple IV increments.
1512
1513 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1514
1515         * config/arm/arm.c (arm_override_options): Really initialize
1516         flag_dwarf2_cfi_asm to 0.
1517
1518 2009-10-05  Doug Kwan  <dougkwan@google.com>
1519
1520         PR rtl-optimization/41574
1521         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
1522         floating point and we are not doing unsafe math optimizations.
1523
1524 2009-10-03  Simon Baldwin  <simonb@google.com>
1525             Cary Coutant  <ccoutant@google.com>
1526             Rafael Espindola  <espindola@google.com>
1527             Richard Guenther  <rguenther@suse.de>
1528             Jan Hubicka  <jh@suse.cz>
1529             Doug Kwan <dougkwan@google.com>
1530             H.J. Lu  <hongjiu.lu@intel.com>
1531             Bill Maddox  <maddox@google.com>
1532             Ryan Mansfield  <rmansfield@qnx.com>
1533             Diego Novillo  <dnovillo@google.com>
1534             Ollie Wild  <aaw@google.com>
1535             Kenneth Zadeck <zadeck@naturalbridge.com>
1536
1537         * lto-cgraph.c: New file.
1538         * lto-compress.c: New file.
1539         * lto-compress.h: New file.
1540         * lto-opts.c: New file.
1541         * lto-section-in.c: New file.
1542         * lto-section-out.c: New file.
1543         * lto-streamer-in.c: New file.
1544         * lto-streamer-out.c: New file.
1545         * lto-streamer.c: New file.
1546         * lto-streamer.h: New file.
1547         * lto-symtab.c: New file.
1548         * lto-wpa-fixup.c: New file.
1549         * lto-wrapper.c: New file.
1550
1551 2009-10-03  Simon Baldwin  <baldwin@google.com>
1552             Ben Elliston  <bje@au.ibm.com>
1553             Rafael Espindola  <espindola@google.com>
1554             Nathan Froyd  <froydnj@codesourcery.com>
1555             Jan Hubicka  <jh@suse.cz>
1556             Doug Kwan  <dougkwan@google.com>
1557             Diego Novillo  <dnovillo@google.com>
1558             Kenneth Zadeck  <zadeck@naturalbridge.com>
1559
1560         * Makefile.in (enable_lto): New.
1561         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
1562         (LINKER_PLUGIN_API_H): Define.
1563         (LTO_SYMTAB_H): Define.
1564         (LTO_STREAMER_H): Define.
1565         (TREE_VECTORIZER_H): Define.
1566         (INCLUDES): Add LIBELFINC.
1567         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
1568         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
1569         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
1570         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
1571         (native): Add lto-wrapper$(exeext)
1572         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
1573         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
1574         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
1575         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
1576         (varasm.o): Add dependency on tree-iterator.h.
1577         (cgraph.o): Add dependency on cif-code.def.
1578         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
1579         (ipa-pure-const.o): Likewise.
1580         (GTFILES): Add lto-symtab.c.
1581         (install-lto-wrapper): New.
1582         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
1583         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
1584         * config.in: Regenerate.
1585
1586 2009-10-03  Rafael Espindola  <espindola@google.com>
1587             Diego Novillo  <dnovillo@google.com>
1588
1589         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
1590         ipa_write_summaries.
1591         Call execute_ipa_summary_passes for all_regular_ipa_passes and
1592         all_lto_gen_passes.
1593         (cgraph_optimize): Make extern.
1594
1595 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
1596             Kenneth Zadeck <zadeck@naturalbridge.com>
1597
1598         * toplev.c (in_lto_p): Declare.
1599         * collect2.c (scan_prog_file): Read all the output when reading
1600         information for LTO.
1601         (enum lto_mode_d): Declare.
1602
1603 2009-10-03  Richard Guenther  <rguenther@suse.de>
1604             Diego Novillo  <dnovillo@google.com>
1605
1606         * gimple.c: Include target.h and alias.h.
1607         (gimple_types): Declare.
1608         (type_hash_cache): Declare.
1609         (gimple_alloc_stat): Make extern.
1610         (gimple_build_eh_must_not_throw): Call
1611         gimple_eh_must_not_throw_set_fndecl.
1612         (struct type_pair_d): Declare.
1613         (type_pair_t): Declare.
1614         (type_pair_hash): New.
1615         (type_pair_eq): New.
1616         (lookup_type_pair): New.
1617         (gimple_force_type_merge): New.
1618         (compare_type_names_p): New.
1619         (compare_field_offset): New.
1620         (gimple_types_compatible_p): New.
1621         (struct sccs): Declare.
1622         (next_dfs_num): Declare.
1623         (iterative_hash_gimple_type): New.
1624         (visit): New.
1625         (iterative_hash_type_name): New.
1626         (iterative_hash_gimple_type): New.
1627         (gimple_type_hash): New.
1628         (gimple_type_eq): New.
1629         (gimple_register_type): New.
1630         (print_gimple_types_stats): New.
1631         (gimple_signed_or_unsigned_type): New.
1632         (gimple_unsigned_type): New.
1633         (gimple_signed_type): New.
1634         (gimple_get_alias_set): New.
1635         (gimple_decl_printable_name): Do not use DMGL_TYPES.
1636         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
1637         (gimple_force_type_merge): Declare.
1638         (gimple_types_compatible_p): Declare.
1639         (gimple_register_type): Declare.
1640         (print_gimple_types_stats): Declare.
1641         (gimple_unsigned_type): Declare.
1642         (gimple_signed_type): Declare.
1643         (gimple_get_alias_set): Declare.
1644         (gimple_eh_must_not_throw_set_fndecl): New.
1645
1646 2009-10-03  Jan Hubicka  <jh@suse.cz>
1647             Kenneth Zadeck <zadeck@naturalbridge.com>
1648
1649         * ipa-pure-const.c: Include lto-streamer.h.
1650         (register_hooks): Factor out of ...
1651         (generate_summary): ... here.
1652         (pure_const_write_summary): New.
1653         (pure_const_read_summary): New.
1654         (pass_ipa_pure_const): Add pure_const_write_summary and
1655         pure_const_read_summary.
1656         * ipa-reference.c: Include lto-streamer.h.
1657         (add_new_function): New.
1658         (remove_node_data): New.
1659         (duplicate_node_data): New.
1660         (ipa_init): Guard against multiple calls.
1661         Move hook setup from analyze_function.
1662         (write_node_summary_p): New.
1663         (ipa_reference_write_summary): New.
1664         (ipa_reference_read_summary): New.
1665         (pass_ipa_reference): Add ipa_reference_write_summary and
1666         ipa_reference_read_summary.
1667         * cgraph.h (cgraph_local_info): Add field lto_file_data.
1668         (struct cgraph_edge): Add fields lto_stmt_uid and
1669         call_stmt_cannot_inline_p.
1670         (cgraph_optimize): Declare.
1671         (cgraph_decide_is_function_needed): Declare.
1672         (reset_inline_failed): Declare.
1673         (enum LTO_cgraph_tags): Declare.
1674         (LTO_cgraph_tag_names): Declare.
1675         (LCC_NOT_FOUND): Define.
1676
1677 2009-10-03  Doug Kwan  <dougkwan@google.com>
1678             Rafael Espindola  <espindola@google.com>
1679             Jan Hubicka  <jh@suse.cz>
1680             Diego Novillo  <dnovillo@google.com>
1681             Kenneth Zadeck  <zadeck@naturalbridge.com>
1682
1683         * passes.c (all_regular_ipa_passes): New.
1684         (all_ipa_passes): Rename to all_small_ipa_passes.
1685         (init_optimization_passes): Init all_regular_ipa_passes.
1686         * tree-pass.h (all_regular_ipa_passes): New.
1687         (all_ipa_passes): Rename to all_small_ipa_passes.
1688         * passes.c (all_lto_gen_passes): New.
1689         (init_optimization_passes): Initialize all_lto_gen_passes.
1690         (execute_ipa_summary_passes): Make non-static.
1691         (ipa_write_summaries_1): New.
1692         (ipa_write_summaries_2): New.
1693         (ipa_write_summaries): New.
1694         (ipa_write_summaries_of_cgraph_node_set): New.
1695         (ipa_read_summaries_1): New.
1696         (ipa_read_summaries): New.
1697         (execute_ipa_pass_list): Call cgraph_process_new_functions.
1698         (execute_regular_ipa_pass_list): Remove.
1699         (init_optimization_passes): Schedule
1700         pass_rebuild_cgraph_edges and pass_early_inline outside
1701         of pass_all_early_optimizations.  Document reason.
1702         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
1703         pass_ipa_lto_finish_out): New pass.
1704         (pass_ipa_summary_passes): Start and stop timers if the pass has them.
1705         (execute_all_ipa_transforms): New.
1706         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
1707         (dump_properties, debug_properties): New.
1708         * tree-optimize.c (gate_all_early_local_passes): Return
1709         false if we are in lto1.
1710         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
1711         * tree-pass.h (execute_all_ipa_transforms): Declare.
1712         (pass_ipa_function_and_variable_visibility): Declare.
1713         (pass_ipa_early_inline): Declare.
1714         (pass_ipa_lto_gimple_out): Declare.
1715         (pass_ipa_lto_wpa_fixup): Declare.
1716         (pass_ipa_lto_finish_out): Declare.
1717         (all_small_ipa_passes, all_regular_ipa_passes,
1718         all_lto_gen_passes): Declare.
1719         (execute_ipa_summary_passes): Declare.
1720         (execute_all_ipa_transforms): Declare.
1721         (ipa_write_summaries): Declare
1722         (ipa_write_summaries_of_cgraph_node_set): Declare.
1723         (ipa_read_summaries): Declare.
1724
1725 2009-10-03  Doug Kwan  <dougkwan@google.com>
1726             Ollie Wild  <aaw@google.com>
1727
1728         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
1729
1730         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
1731         (lto_mode): New variable.
1732         (maybe_run_lto_and_relink): Handle the -fwpa option.
1733         (main): Handle the -fwpa option.
1734         (maybe_unlink_list): New function.
1735         * gcc.c (link_lto_options): Replace -flto with -fwpa.
1736         * common.opt (flto): New flag.
1737         * toplev.c (flag_generate_lto): Declare.
1738
1739 2009-10-03  Simon Baldwin  <simonb@google.com>
1740
1741         * common.opt (flto-compression-level): New flag.
1742
1743         * opts.c: Include lto-opts.h.
1744         (handle_option): Call lto_register_user_option for each
1745         valid option handled.
1746         (decode_options): Clear registered options before the options
1747         handling loop.
1748
1749 2009-10-03  Cary Coutant  <ccoutant@google.com>
1750
1751         * collect2.c (is_elf): New function.
1752         (scan_prog_file): Require LTO object to be in ELF format.
1753
1754 2009-10-03  Rafael Espindola  <espindola@google.com>
1755
1756         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
1757         libgcc to the linker.
1758
1759         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
1760
1761         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
1762         (collect_execute): Add flags argument. Pass flags to pex_run. Update
1763         all callers.
1764         * collect2.h (collect_execute): Add flags argument.
1765         * tlink.c (tlink_execute): Update call to collect_execute.
1766         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
1767         (use_linker_plugin): New.
1768         (use_linker_plugin_spec_function): New.
1769         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
1770         (linker_plugin_file_spec): New.
1771         (lto_wrapper_spec): New.
1772         (lto_gcc_spec): New.
1773         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
1774         (static_spec_functions): Add use-linker-plugin.
1775         (process_command): Handle -use-linker-plugin.
1776         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
1777         linker_plugin_file_spec and lto_gcc_spec.
1778         (use_linker_plugin_spec_function): New.
1779
1780 2009-10-03  Richard Guenther  <rguenther@suse.de>
1781
1782         PR lto/41547
1783         PR lto/41548
1784         * tree.h (is_lang_specific): Include LANG_TYPE.
1785         * tree.c (find_decls_types_r): Manually add interesting parts
1786         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
1787
1788         * gimple.c (type_pair_hash): Make symmetric.
1789         (type_pair_eq): Likewise.
1790         (lookup_type_pair): Increase initial hashtable size.
1791         (gimple_force_type_merge): Rely on type-pair symmetry.
1792         (visit): Remove excessive checking code.
1793         (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
1794         (gimple_register_type): Remove getenv calls, shrink initial
1795         hashtable size.
1796
1797         PR middle-end/41502
1798         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
1799         inline functions if not generating lto output.
1800
1801         PR lto/41379
1802         * toplev.c (finalize): In WPA mode remove the asm file.
1803
1804 2009-10-03  Doug Kwan  <dougkwan@google.com>
1805
1806         * ipa-inline.c (cgraph_mark_inline): Check
1807         edge->call_stmt_cannot_inline_p instead of calling
1808         gimple_call_cannot_inline_p.
1809         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
1810         (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
1811         (inline_generate_summary): Do nothing in LTRANS.
1812         * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
1813         exists before calling gimple_call_cannot_inline_p.
1814         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
1815         (cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
1816         Update new_edge->lto_stmt_uid.
1817         * cgraphbuild.c (reset_inline_failed): New.
1818
1819         * common.opt (fwpa): New flag.
1820         (fltrans): New option.
1821         * gcc.c (gcc_lto_option_t): New type.
1822         (current_lto_option): New variable.
1823         (lto_single_spec_function): Remove and is replaced by ..
1824         (lto_option_spec_function): New function.
1825         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
1826         passing the -flto flag.
1827         (cc1_options): Separate non-LTO related parts into ..
1828         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
1829         (lto1_options): New spec for lto FE.
1830         (link_lto_options): New spec for handling LTO flags in linker.
1831         (invoke_lto_single): Re-format to fit in 80 column.  Replace
1832         lto-single with lto-option.
1833         (static_specs): Add cc1_non_lto_options, lto1_options and
1834         link_lto_options.
1835         (static_spec_function): Replace lto-single with lto-option.
1836         (process_command): Handle -flto, -fwpa and -fltran by setting
1837         current_lto_option and not passing it to subprocess unconditionally.
1838
1839 2009-10-03  Bill Maddox  <maddox@google.com>
1840
1841         Add `gcc' driver support for link-time code generation (LTO).
1842
1843         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
1844         (lto_flag, lto_objects, lto_o_file): New variables.
1845         (struct lto_object, struct lto_object_list): New structures.
1846         (collect_exit, handler): Remove LTO temporary output file on exit.
1847         (add_lto_object): New function.
1848         (maybe_run_lto_and_relink): New function. Perform link time code
1849         generation and relinking for object files containing LTO information.
1850         (main): Invoke maybe_run_lto_and_relink().
1851         (dump_argv): New function.  For debugging, currently disabled.
1852         (scan_prog_file): Add LTO information pass.
1853         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
1854         collect2.
1855         * toplev.c (compile_file): Emit assembler directive to create
1856         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
1857
1858 2009-10-03  Diego Novillo  <dnovillo@google.com>
1859
1860         * c.opt: Add LTO to warn_abi and warn_psabi.
1861
1862         * tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
1863         inline function.  Ignore language-specific nodes.  Update all users.
1864         (find_decls_types_r): Do not traverse the subtrees of
1865         language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
1866         * tree.h (is_lang_specific): New.
1867         * langhooks.h (struct lang_hooks_for_decls): Remove
1868         may_need_assembler_name_p.  Update all users.
1869
1870         * c-common.c (set_builtin_user_assembler_name): Move ...
1871         * builtins.c (set_builtin_user_assembler_name): ... here.
1872         (is_builtin_name): Add comment
1873         (is_builtin_fn): New.
1874         * except.c (output_ttype): Only call
1875         lookup_type_for_runtime if TYPE is not a runtime type.
1876
1877         * passes.c (register_pass): Call position_pass on
1878         all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
1879         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
1880         (TV_IPA_LTO_DECL_IO): Define.
1881         (TV_IPA_LTO_CGRAPH_IO): Define.
1882         (TV_LTO): Define.
1883         (TV_WHOPR_WPA): Define.
1884         (TV_WHOPR_WPA_IO): Define.
1885         (TV_WHOPR_LTRANS): Define.
1886         (TV_WHOPR_WPA_FIXUP): Define.
1887         (TV_WHOPR_WPA_LTRANS_EXEC): Define.
1888         * tree-cfg.c (tree_node_can_be_shared): Make extern.
1889         * tree-flow.h (tree_node_can_be_shared): Declare.
1890         * tree-inline.c (tree_can_inline_p): Check that E has a
1891         statement associated with it.
1892         * tree.c (free_lang_data_in_binf): Factor out of ...
1893         (free_lang_data_in_type): ... here.
1894         Call RECORD_OR_UNION_TYPE_P.
1895         (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
1896         set.  Call lang_hooks.decls.may_need_assembler_name_p if set.
1897         (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
1898         (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE.  Set
1899         write_symbols to NO_DEBUG.  Set debug_hooks to do_nothing_debug_hooks.
1900         (gate_free_lang_data): Return true if flag_generate_lto is set.
1901         (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
1902         * c-common.h (set_builtin_user_assembler_name): Move ...
1903         * tree.h (set_builtin_user_assembler_name): ... here.
1904
1905         * common.opt (flto-report): New flag.
1906         * opts.c (complain_wrong_lang): Do not complain if running lto1.
1907         * collect2.c (scan_prog_file): Send the error output of
1908         'nm' to HOST_BIT_BUCKET.
1909
1910 2009-10-03  Ollie Wild  <aaw@google.com>
1911
1912         * langhooks-def.h (lhd_begin_section): New function declaration.
1913         (lhd_write_section): New function declaration.
1914         (lhd_end_section): New function declaration.
1915         (LANG_HOOKS_BEGIN_SECTION): New macro.
1916         (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
1917         (LANG_HOOKS_END_SECTION): New macro.
1918         (LANG_HOOKS_LTO): New macro.
1919         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
1920         * langhooks.c (output.h): Add include.
1921         (saved_section): New static variable.
1922         (lhd_begin_section): New function.
1923         (lhd_write_section_data): New function.
1924         (lhd_end_section): New function.
1925         * langhooks.h (struct lang_hooks_for_lto): New structure.
1926         (struct lang_hooks): Add member lto.
1927         * Makefile.in (langhooks.o): Add dependency on output.h.
1928
1929         * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
1930
1931 2009-10-03  Richard Guenther  <rguenther@suse.de>
1932
1933         * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
1934         Handle LTO.
1935
1936 2009-10-03  Simon Baldwin  <simonb@google.com>
1937             Richard Guenther  <rguenther@suse.de>
1938             Janis Johnson  <janis187@us.ibm.com>
1939             Doug Kwan  <dougkwan@google.com>
1940             Diego Novillo  <dnovillo@google.com>
1941             Ramana Radhakrishnan  <ramana.r@gmail.com>
1942             Ollie Wild  <aaw@google.com>
1943
1944         * doc/install.texi: Add documentation for libelf and --enable-lto.
1945         * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
1946         -flto-report, -flto-compression-level and -use-linker-plugin.
1947         * doc/sourcebuild.texi: Document use of zlib.  Document lto-plugin.
1948         Add section for LTO Testing.
1949
1950 2009-10-02  Cary Coutant  <ccoutant@google.com>
1951
1952         Add support for comdat type sections for DWARF v4.
1953         Merge from dwarf4 branch.
1954
1955         * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
1956         (dw_die_ref): Define vector type.
1957         (enum dw_val_class): Add dw_val_class_data8.
1958         (struct dw_val_struct): Add v.val_data8.
1959         (comdat_type_node_ref): New type.
1960         (struct die_struct): Move die_symbol into a union; add new field
1961         die_type_node.  Change all uses.
1962         (comdat_type_node): New type.
1963         (skeleton_chain_node): New type.
1964         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
1965         (comdat_type_list): New variable.
1966         (dwarf_tag_name): Add DW_TAG_type_unit.
1967         (dwarf_attr_name): Add DW_AT_signature.
1968         (add_AT_data8): New function.
1969         (replace_child): New function.
1970         (move_all_children): New function.
1971         (print_signature): New function.
1972         (print_die): Print signature information; add dw_val_class_data8.
1973         (attr_checksum): Support dw_val_class_data8.
1974         (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
1975         (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
1976         (checksum_sleb128, checksum_uleb128): New functions.
1977         (checksum_die_context): New function.
1978         (loc_checksum_ordered): New function.
1979         (attr_checksum_ordered): New function.
1980         (struct checksum_attributes): New structure.
1981         (collect_checksum_attributes): New function.
1982         (die_checksum_ordered): New function.
1983         (generate_type_signature): New function.
1984         (same_dw_val_p): Add dw_val_class_data8.
1985         (is_symbol_die): Use new is_declaration_die function.
1986         (is_declaration_die): New function.
1987         (should_move_die_to_comdat): New function.
1988         (clone_die): New function.
1989         (clone_tree): New function.
1990         (clone_as_declaration): New function.
1991         (copy_declaration_context): New function.
1992         (generate_skeleton_ancestor_tree): New function.
1993         (generate_skeleton_bottom_up): New function.
1994         (generate_skeleton): New function.
1995         (remove_child_or_replace_with_skeleton): New function.
1996         (break_out_comdat_types): New function.
1997         (struct decl_table_entry): New type.
1998         (htab_decl_hash): New function.
1999         (htab_decl_eq): New function.
2000         (htab_decl_del): New function.
2001         (copy_ancestor_tree): New function.
2002         (copy_decls_walk): New function.
2003         (copy_decls_for_unworthy_types): New function.
2004         (build_abbrev_table): Don't assert on missing die_symbol when doing
2005         comdat type sections.
2006         (size_of_die): Use DW_FORM_sig8 for external references.  Add
2007         dw_val_class_data8.
2008         (unmark_dies): Don't assert for unmarked dies when doing comdat
2009         type sections.
2010         (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
2011         (output_signature): New function.
2012         (output_die): Likewise.
2013         (output_compilation_unit_header): Mark output as DWARF version 3
2014         even if generating DWARF 4.
2015         (output_comdat_type_unit): New function.
2016         (output_line_info): Mark output as DWARF version 3 even if generating
2017         DWARF 4.
2018         (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
2019         DWARF-4.
2020         (dwarf2out_end_source_file): Likewise.
2021         (prune_unused_types_walk_attribs): Don't follow references into
2022         comdat type sections.
2023         (prune_unused_types_mark): When generating type units, do not mark
2024         children of non-defining declarations of types; do mark children of
2025         type entries.
2026         (prune_unused_types): Process comdat type sections.
2027         (htab_ct_hash): New function.
2028         (htab_ct_eq): New function.
2029         (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
2030         Add a pointer to the line table from type unit entries so
2031         DW_AT_decl_file has meaning.
2032         * varasm.c (default_elf_asm_named_section): Use identifier name as
2033         comdat key instead of lang hook.
2034
2035 2009-10-02  Neil Vachharajani  <nvachhar@google.com>
2036
2037         * gcov-io.c (gcov_open): Open files read-only when MODE < 0.
2038
2039 2009-10-02  Uros Bizjak  <ubizjak@gmail.com>
2040
2041         * config/i386/i386.md (SWIM248): New mode iterator.
2042         (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
2043         divmodhi4 patterns using SWIM248 macro.
2044         (*divmod<mode>4): Macroize insn_and_split pattern from
2045         *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
2046         and their corresponding splitters usign SWIM248 macro.  Split SImode
2047         insn to generate cltd and DImode insn to generate cqto instead of
2048         move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
2049         (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
2050         (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
2051         *divmodsi_noext patterns using SWIM248 macro.
2052         (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
2053         udivmodhi4 patterns using SWIM248 macro.
2054         (*udivmod<mode>4): Macroize insn_and_split pattern from
2055         *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
2056         corresponding splitters using SWIM248 macro.
2057         (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
2058         *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.
2059
2060 2009-10-02  Eric Botcazou  <ebotcazou@adacore.com>
2061
2062         * stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
2063         of zero-sized element is zero-sized regardless of its extent.
2064
2065 2009-10-02  Jakub Jelinek  <jakub@redhat.com>
2066
2067         PR debug/40521
2068         * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
2069         * configure: Regenerated.
2070         * config.in: Regenerated.
2071         * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
2072         !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
2073         (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
2074         not emitting .eh_frame, emit .cfi_sections .debug_frame
2075         directive.
2076
2077         PR debug/41404
2078         PR debug/41353
2079         * cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
2080         CONST_STRING if STRING_CST contains embedded '\0's or doesn't end
2081         with '\0'.
2082         (expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
2083         vars use DECL_RTL with resetting it back to NULL afterwards.
2084         * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
2085         rtx_equal_p instead of asserting it is a SYMBOL_REF.
2086         (value_format): For dw_val_class_addr only use DW_FORM_addr if
2087         the attribute type allows it, otherwise use DW_FORM_dataN.
2088         (mem_loc_descriptor): Handle CONST_STRING.
2089         (add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
2090         Handle MEM with CONST_STRING address using add_AT_string.
2091         (rtl_for_decl_init): Return MEM with CONST_STRING address instead of
2092         CONST_STRING for const arrays initialized with a string literal.
2093         (resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
2094         (dwarf2out_finish): Call resolve_addr.
2095
2096 2009-10-02  Andreas Schwab  <schwab@linux-m68k.org>
2097             Maxim Kuvyrkov  <maxim@codesourcery.com>
2098
2099         * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.
2100
2101 2009-10-02  Nick Clifton  <nickc@redhat.com>
2102
2103         * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
2104         (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
2105
2106 2009-10-01  Jan Hubicka  <jh@suse.cz>
2107
2108         * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
2109         (cgraph_create_virtual_clone): Just pass redirect_callers
2110         around.
2111         * cgraph.h (cgraph_clone_node): Update prototype.
2112         * ipa-pure-const.c (self_recursive_p): New function.
2113         (propagate): Use it.
2114         * ipa-inline.c (cgraph_clone_inlined_nodes,
2115         cgraph_decide_recursive_inlining): Update.
2116
2117 2009-10-01  David Daney  <ddaney@caviumnetworks.com>
2118
2119         * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
2120         instructions for TARGET_OCTEON.
2121
2122 2009-10-01  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2123
2124         * config/arm/arm.c (arm_override_options): Turn off
2125         flag_dwarf2_cfi_asm for AAPCS variants.
2126
2127 2009-10-01  Martin Jambor  <mjambor@suse.cz>
2128
2129         PR middle-end/12392
2130         * tree-sra.c (convert_callers): Do not call
2131         compute_inline_parameters on one caller more than once.
2132
2133 2009-10-01  Nick Clifton  <nickc@redhat.com>
2134
2135         * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
2136         an empty string if not already defined.
2137
2138 2009-10-01  Martin Jambor  <mjambor@suse.cz>
2139
2140         PR bootstrap/41395
2141         * tree-sra.c (is_va_list_type): New function.
2142         (find_var_candidates): Call is_va_list_type.
2143         (find_param_candidates): Check that the type or the type pointed
2144         to are not va_list types.
2145
2146 2009-10-01  Martin Jambor  <mjambor@suse.cz>
2147
2148         PR c++/41503
2149         * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
2150         DECL_ARTIFICIAL (param_decl) is true.
2151
2152 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
2153
2154         * tree.h (tree_decl_common::lang_flag_8): New.
2155         * c-common.c (c_common_reswords): Include "constexpr" as C++0x
2156         keyword.
2157         * c-common.h (RID_CONSTEXPR): New.
2158
2159 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
2160
2161         * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
2162         Use ref-all pointers.
2163         (alpha_gimplify_va_arg): Ditto.
2164
2165 2009-09-30  Jakub Jelinek  <jakub@redhat.com>
2166
2167         PR target/41279
2168         * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
2169         before insn counting loop now that BB_END (bb) is counted.  Ensure
2170         the return value isn't zero.
2171
2172 2009-09-30  Nick Clifton  <nickc@redhat.com>
2173
2174         * config.gcc (sh-symbianelf): Replace definition of extra_objs
2175         with separate definitions of c_target_objs and cxx_target_objs.
2176         * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
2177         and symbian-base.o.
2178         * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
2179         sh_symbian_import_export_class.
2180         * config/sh/sh-protos.h: Fix names of exported symbian functions.
2181         * config/sh/symbian.c: Delete, moving code into...
2182         * config/sh/symbian-base.c: ... here
2183         * config/sh/symbian-c.c: ... and here
2184         * config/sh/symbian-cxx.c: ... and here.
2185
2186 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
2187
2188         PR target/22093
2189         * config/alpha/alpha.md (unaligned_storehi_be): Force operand
2190         of plus RTX into register.
2191
2192 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2193
2194         * doc/install.texi: Linguistic and markup fixes.
2195         (Configuration) <--disable-cpp>: Remove description.
2196         <--enable-maintainer-mode>: Autotools files are affected, too.
2197         <--with-sysroot>: Improve description.
2198         (Building): Bump required GNU make version.
2199
2200 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
2201
2202         * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
2203         (x86_64-*-*): Ditto.
2204
2205         * config/i386/fma4intrin.h: New file, provide common x86 compiler
2206         intrinisics for FMA4.
2207         * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
2208         * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
2209         Add FMA4 check and fma4intrin.h.
2210         * config/i386/i386-c.c(ix86_target_macros_internal): Check
2211         ISA_FLAG for FMA4.
2212         * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
2213         * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
2214         constant for FMA4 support.
2215         (UNSPEC_FMA4_FMADDSUB): Ditto.
2216         (UNSPEC_FMA4_FMSUBADD): Ditto.
2217         * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
2218         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
2219         (ix86_expand_fma4_multiple_memory): Ditto.
2220         * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
2221         (OPTION_MASK_ISA_FMA4_UNSET): New.
2222         (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
2223         (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
2224         (ix86_handle_option): Handle -mfma4.
2225         (isa_opts): Handle -mfma4.
2226         (enum pta_flags): Add PTA_FMA4.
2227         (override_options): Add FMA4 support.
2228         (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
2229         (IX86_BUILTIN_VFMADDSD): Ditto.
2230         (IX86_BUILTIN_VFMADDPS): Ditto.
2231         (IX86_BUILTIN_VFMADDPD): Ditto.
2232         (IX86_BUILTIN_VFMSUBSS): Ditto.
2233         (IX86_BUILTIN_VFMSUBSD): Ditto.
2234         (IX86_BUILTIN_VFMSUBPS): Ditto.
2235         (IX86_BUILTIN_VFMSUBPD): Ditto.
2236         (IX86_BUILTIN_VFMADDSUBPS): Ditto.
2237         (IX86_BUILTIN_VFMADDSUBPD): Ditto.
2238         (IX86_BUILTIN_VFMSUBADDPS): Ditto.
2239         (IX86_BUILTIN_VFMSUBADDPD): Ditto.
2240         (IX86_BUILTIN_VFNMADDSS): Ditto.
2241         (IX86_BUILTIN_VFNMADDSD): Ditto.
2242         (IX86_BUILTIN_VFNMADDPS): Ditto.
2243         (IX86_BUILTIN_VFNMADDPD): Ditto.
2244         (IX86_BUILTIN_VFNMSUBSS): Ditto.
2245         (IX86_BUILTIN_VFNMSUBSD): Ditto.
2246         (IX86_BUILTIN_VFNMSUBPS): Ditto.
2247         (IX86_BUILTIN_VFNMSUBPD): Ditto.
2248         (IX86_BUILTIN_VFMADDPS256): Ditto.
2249         (IX86_BUILTIN_VFMADDPD256): Ditto.
2250         (IX86_BUILTIN_VFMSUBPS256): Ditto.
2251         (IX86_BUILTIN_VFMSUBPD256): Ditto.
2252         (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
2253         (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
2254         (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
2255         (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
2256         (IX86_BUILTIN_VFNMADDPS256): Ditto.
2257         (IX86_BUILTIN_VFNMADDPD256): Ditto.
2258         (IX86_BUILTIN_VFNMSUBPS256): Ditto.
2259         (IX86_BUILTIN_VFNMSUBPD256): Ditto.
2260         (enum multi_arg_type): New enum for describing the various FMA4
2261         intrinsic argument types.
2262         (bdesc_multi_arg): New table for FMA4 intrinsics.
2263         (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
2264         (ix86_expand_multi_arg_builtin): New function for creating FMA4
2265         intrinsics.
2266         (ix86_expand_builtin): Add FMA4 intrinsic support.
2267         (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
2268         operand instructions.
2269         (ix86_expand_fma4_multiple_memory): New function to split the
2270         second memory reference from FMA4 instructions.
2271         * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
2272         (ssemodesuffixf2s): Ditto.
2273         (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
2274         instructions.
2275         (fma4_fmsub<mode>4): Ditto.
2276         (fma4_fnmadd<mode>4): Ditto.
2277         (fma4_fnmsub<mode>4): Ditto.
2278         (fma4_vmfmadd<mode>4): Ditto.
2279         (fma4_vmfmsub<mode>4): Ditto.
2280         (fma4_vmfnmadd<mode>4): Ditto.
2281         (fma4_vmfnmsub<mode>4): Ditto.
2282         (fma4_fmadd<mode>4256): Ditto.
2283         (fma4_fmsub<mode>4256): Ditto.
2284         (fma4_fnmadd<mode>4256): Ditto.
2285         (fma4_fnmsub<mode>4256): Ditto.
2286         (fma4_fmaddsubv8sf4): Ditto.
2287         (fma4_fmaddsubv4sf4): Ditto.
2288         (fma4_fmaddsubv4df4): Ditto.
2289         (fma4_fmaddsubv2df4): Ditto.
2290         (fma4_fmsubaddv8sf4): Ditto.
2291         (fma4_fmsubaddv4sf4): Ditto.
2292         (fma4_fmsubaddv4df4): Ditto.
2293         (fma4_fmsubaddv2df4): Ditto.
2294         (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
2295         instructions for intrinsics.
2296         (fma4i_fmsub<mode>4): Ditto.
2297         (fma4i_fnmadd<mode>4): Ditto.
2298         (fma4i_fnmsub<mode>4): Ditto.
2299         (fma4i_vmfmadd<mode>4): Ditto.
2300         (fma4i_vmfmsub<mode>4): Ditto.
2301         (fma4i_vmfnmadd<mode>4): Ditto.
2302         (fma4i_vmfnmsub<mode>4): Ditto.
2303         (fma4i_fmadd<mode>4256): Ditto.
2304         (fma4i_fmsub<mode>4256): Ditto.
2305         (fma4i_fnmadd<mode>4256): Ditto.
2306         (fma4i_fnmsub<mode>4256): Ditto.
2307         (fma4i_fmaddsubv8sf4): Ditto.
2308         (fma4i_fmaddsubv4sf4): Ditto.
2309         (fma4i_fmaddsubv4df4): Ditto.
2310         (fma4i_fmaddsubv2df4): Ditto.
2311         (fma4i_fmsubaddv8sf4): Ditto.
2312         (fma4i_fmsubaddv4sf4): Ditto.
2313         (fma4i_fmsubaddv4df4): Ditto.
2314         (fma4i_fmsubaddv2df4): Ditto.
2315
2316         * doc/invoke.texi (-mfma4): Add documentation.
2317         * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
2318
2319 2009-09-29  Richard Henderson  <rth@redhat.com>
2320
2321         * tree-eh.c (unsplit_eh): Do not unsplit if there's already
2322         an edge to the new destination block.
2323
2324 2009-09-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2325
2326         PR target/41393
2327         * pa.c (hppa_profile_hook): Use
2328         make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
2329
2330 2009-09-29  Steve Ellcey  <sje@cup.hp.com>
2331             Alexander Monakov  <amonakov@ispras.ru>
2332
2333         PR target/41365
2334         * config/ia64/predicates.md (not_postinc_destination_operand): New.
2335         (not_postinc_memory_operand): New.
2336         (not_postinc_move_operand): New.
2337         * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
2338         (*cmovsi_internal): Ditto.
2339
2340 2009-09-29  Pat Haugen  <pthaugen@us.ibm.com>
2341
2342         * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
2343         restrict issue_rate in first pass when scheduling for register
2344         pressure.
2345
2346 2009-09-29  Basile Starynkevitch  <basile@starynkevitch.net>
2347             Rafael Avila de Espindola  <espindola@google.com>
2348
2349         * gengtype.c (plugin_output): New.
2350         (get_output_file_with_visibility): Return plugin_output for plugins.
2351         (main): Parse and use the -P option.
2352         * gty.texi: Update the command line format.
2353
2354 2009-09-29  Jakub Jelinek  <jakub@redhat.com>
2355
2356         PR debug/41438
2357         * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
2358         functions.
2359         (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
2360         out if !const_ok_for_output.
2361
2362         PR debug/41474
2363         * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
2364         case VAR_LOCATION>: Remove gcc_unreachable ().
2365
2366 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
2367
2368         * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
2369         (x86_64-*-*): Ditto.
2370         * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
2371         back to smmintrin.h.
2372         * config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
2373         * config/i386/x86intrin.h: Remove SSE5.
2374         * config/i386/mmintrin-common.h: Delete file.
2375         * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
2376
2377 2009-09-29  Richard Guenther  <rguenther@suse.de>
2378
2379         * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
2380         resulting from stack temporaries on STRICT_ALIGNMENT targets.
2381
2382 2009-09-29  Nick Clifton  <nickc@redhat.com>
2383
2384         * function.c (current_function_name): If there is no current
2385         function just return "<none>".
2386
2387 2009-09-28  Sriraman Tallam  <tmsriram@google.com>
2388
2389         * tree-pass.h (register_pass_info): New structure.
2390         (pass_positioning_ops): Move enum from gcc-plugin.h.
2391         (register_pass): New function.
2392         * gcc-plugin.h (plugin_pass): Delete structure.
2393         (pass_positioning_ops): Delete enum.
2394         * plugin.c (regsiter_pass): Delete function.
2395         (position_pass): Delete function.
2396         (added_pass_nodes): Delete variable.
2397         (prev_added_pass_nodes): Delete variable.
2398         (pass_list_node): Delete structure.
2399         * passes.c (make_pass_instance): New function.
2400         (next_pass_1): Change to call make_pass_instance.
2401         (pass_list_node): Move structure from gcc-plugin.h.
2402         (added_pass_nodes): Move variable from plugin.c.
2403         (prev_added_pass_nodes): Move variable from plugin.c.
2404         (position_pass): New function.
2405         (register_pass): New function.
2406
2407 2009-09-28  Easwaran Raman  <eraman@google.com>
2408
2409         * ifcvt.c (noce_try_abs): Recognize pattern and call
2410         expand_one_cmpl_abs_nojump.
2411         * optabs.c (expand_one_cmpl_abs_nojump): New function.
2412         * optabs.h (expand_one_cmpl_abs_nojump): Declare.
2413
2414 2009-09-28  Ian Lance Taylor  <iant@google.com>
2415
2416         PR middle-end/40500
2417         * c-opts.c (c_common_handle_option): Don't set
2418         warn_jump_misses_init for -Wall.
2419         * doc/invoke.texi (Warning Options): Update documentation.
2420
2421 2009-09-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2422
2423         * Makefile.in ($(out_object_file)): Depend on
2424         gt-$(basename $(notdir $(out_file))).h.
2425
2426 2009-09-28  Richard Henderson  <rth@redhat.com>
2427
2428         * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
2429         * except.c (gen_eh_region): Set it.
2430         (duplicate_eh_regions_1): Copy it.
2431         * tree-eh.c (lower_resx): Use it to determine which function
2432         to call to resume.
2433
2434         * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
2435         * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
2436         * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
2437         * tree.c (build_common_builtin_nodes): Remove parameter.  Build
2438         BUILT_IN_CXA_END_CLEANUP if necessary.
2439
2440         * c-common.c (c_define_builtins): Update call to
2441         build_common_builtin_nodes.
2442
2443 2009-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2444
2445         * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
2446
2447 2009-09-28  Michael Matz  <matz@suse.de>
2448
2449         * builtins.c (interclass_mathfn_icode): New helper.
2450         (expand_builtin_interclass_mathfn): Use it here, and split folding
2451         into ...
2452         (fold_builtin_interclass_mathfn): ... this new folder.
2453         (build_call_nofold_loc): New static helper.
2454         (build_call_nofold): New wrapper macro for above.
2455         (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
2456         (expand_builtin_pow): Ditto.
2457         (expand_builtin_memset_args): Ditto.
2458         (expand_builtin_printf): Ditto.
2459         (expand_builtin_fprintf): Ditto.
2460         (expand_builtin_sprintf): Ditto.
2461         (expand_builtin_memory_chk): Ditto.
2462         (expand_builtin_mempcpy_args): Ditto and don't call folders.
2463         (expand_builtin_stpcpy): Ditto.
2464         (expand_builtin_strcmp): Ditto.
2465         (expand_builtin_strncmp): Ditto.
2466         (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
2467         (expand_builtin_strcpy_args): Don't call folders.
2468         (expand_builtin_memcmp): Ditto.
2469         (expand_builtin_strncpy): Ditto, and use target.
2470         (expand_builtin_memcpy): Ditto.
2471         (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
2472         expand_builtin_strpbrk, expand_builtin_memmove,
2473         expand_builtin_memmove_args, expand_builtin_bcopy,
2474         expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
2475         expand_builtin_strspn, expand_builtin_strcspn,
2476         expand_builtin_fputs): Remove these.
2477         (expand_builtin): Don't call the above, change calls to other
2478         expanders that changed prototype.
2479         (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
2480         (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
2481         fold_builtin_interclass_mathfn.
2482         (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
2483         (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
2484
2485         * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
2486         * passes.c (init_optimization_passes): Move pass_fold_builtins
2487         after last phiopt pass.
2488         * tree-inline.c (fold_marked_statements): When folding builtins
2489         iterate over all instruction potentially generated.
2490         * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
2491         earlier.
2492         (fold_gimple_call): Use it to always fold calls (into potentially
2493         multiple instructions).
2494         * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
2495         calls into zero at this time.
2496         * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
2497         statements generated by builtin folding.
2498
2499 2009-09-28  Nick Clifton  <nickc@redhat.com>
2500
2501         * config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns.
2502
2503 2009-09-28  Duncan Sands  <baldrick@free.fr>
2504
2505         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
2506         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
2507         (register_callback): Dispatch it.
2508         (invoke_plugin_callbacks): Incorporate in sanity check.
2509         * ggc.h (ggc_register_cache_tab): Add declaration.
2510         * ggc-common.c (ggc_register_root_tab): Simplify.
2511         (const_ggc_cache_tab_t): New typedef.
2512         (extra_cache_vec): New vector of dynamically added cache tables.
2513         (ggc_register_cache_tab): New function.
2514         (ggc_scan_cache_tab): New function.
2515         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
2516         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
2517
2518 2009-09-27  Richard Henderson  <rth@redhat.com>
2519
2520         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
2521         which we remove __builtin_stack_restore.
2522
2523 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
2524
2525         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
2526         to test for GRD_INVARIANT.
2527         (simple_rhs_p): Anything that's function_invariant_p is fine.
2528
2529 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
2530
2531         * gengtype.c (main): Use plunge_files instead of plugin_output.
2532
2533 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
2534             Rafael Avila de Espindola  <espindola@google.com>
2535
2536         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
2537         Don't print pch related info if it is false.
2538         (main): Don't print pch info in plugin mode.
2539
2540 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
2541
2542         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
2543         with dw_val_class_const_double.
2544         (struct dw_val_struct): Replace val_long_long with val_double and
2545         adjust for above change.
2546         (output_loc_operands): Likewise.
2547         (add_AT_long_long): Rename into...
2548         (add_AT_double): ...this.
2549         (print_die): Replace dw_val_class_long_long with
2550         dw_val_class_const_double and adjust.
2551         (attr_checksum): Likewise.
2552         (same_dw_val_p): Likewise.
2553         (size_of_die): Likewise.
2554         (value_format): Likewise.
2555         (output_die): Likewise.
2556         (loc_descriptor) <CONST_DOUBLE>: Likewise.
2557         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
2558         instead of add_AT_long_long.
2559         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
2560         value with the precision of its type.
2561
2562 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
2563
2564         PR c/41476
2565         * c-typeck.c (build_conditional_expr): Use the readonly and
2566         volatile flags of the operand types, not of the operands itself.
2567
2568 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
2569
2570         * collect2.c (main): Look for -brtl before adding libraries.
2571
2572 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
2573
2574         * config.gcc: Update OpenBSD targets.
2575         * config/openbsd-stdint.h: New file.
2576         * config/openbsd-libpthread.h: New file.
2577         * config/openbsd.h: Update and break out LIB_SPEC definition.
2578         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
2579         * config/i386/openbsdelf.h: Correct types.
2580         * config/m68k/openbsd.h: Likewise.
2581         * config/mips/openbsd.h: Likewise.
2582         * config/vax/openbsd.h: Likewise.
2583
2584 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
2585
2586         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
2587         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
2588         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
2589         of the length and zero.
2590
2591 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2592
2593         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
2594         (FLAGS_H): Add options.h $(REAL_H).
2595         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
2596         (TREE_VECTORIZER_H): New.
2597         (EBITMAP_H): Renamed from EBIMAP_H.
2598         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
2599         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
2600         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
2601         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
2602         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
2603         (graphite-clast-to-gimple.o, graphite-dependences.o)
2604         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
2605         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
2606         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
2607         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
2608         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
2609         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
2610         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
2611         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
2612         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
2613         updated and fixed as per above changes and per
2614         check_makefile_deps.sh output.
2615
2616         PR bootstrap/40928
2617         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
2618         * configure: Regenerate.
2619
2620 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2621
2622         * doc/install.texi: Update minimum MPC version to 0.7.
2623
2624 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
2625
2626         * doc/install.texi (Binaries): Remove reference to the binary
2627         distribution CD-ROM from the FSF.
2628
2629 2009-09-26  Michael Matz  <matz@suse.de>
2630
2631         PR lto/40758
2632         PR middle-end/41470
2633         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
2634         that are mentioned in the body.
2635
2636 2009-09-26  Michael Matz  <matz@suse.de>
2637
2638         PR tree-optimization/41454
2639         * tree-ssa-dom (stmts_to_rescan): Remove variable.
2640         (tree_ssa_dominator_optimize): Don't allocate and free it.
2641         (dom_opt_leave_block): Don't iterate over it.
2642         (eliminate_redundant_computations): Don't return a value.
2643         (cprop_operand, cprop_into_stmt): Ditto.
2644         (optimize_stmt): Don't defer updating stmts.
2645
2646 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
2647
2648         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
2649         generic_parameter_die, template_parameter_pack_die,
2650         gen_formal_parameter_die, gen_subprogram_die): Adjust after
2651         renaming DW_TAG_formal_parameter_pack and
2652         DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack
2653         and DW_TAG_GNU_template_parameter_pack.
2654
2655 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
2656
2657         * config/v850/v850.h (FUNCTION_VALUE): Remove.
2658         * config/v850/v850.c (v850_function_value): New function.
2659         (TARGET_FUNCTION_VALUE): Define.
2660
2661 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
2662
2663         * tree-vect-stmts.c (vectorizable_call): Call
2664         mark_symbols_for_renaming after vect_finish_stmt_generation.
2665
2666         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
2667         to loc_descriptor_from_tree.
2668         (add_location_or_const_value_attribute): Pass 0 instead of 2
2669         for decl_by_reference_p decls.
2670
2671 2009-09-25  Richard Guenther  <rguenther@suse.de>
2672
2673         PR middle-end/41463
2674         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
2675         arrays again.
2676
2677 2009-09-25  Ben Elliston  <bje@au.ibm.com>
2678
2679         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
2680         after `power7'.
2681
2682 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
2683
2684         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
2685         form of instruction.
2686
2687 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2688
2689         PR middle-end/41435
2690         * fold-const.c (const_binop): Handle complex int division.
2691         * tree-complex.c (expand_complex_div_straight,
2692         expand_complex_div_wide): Update comments.
2693
2694 2009-09-24  DJ Delorie  <dj@redhat.com>
2695
2696         PR target/41456
2697         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
2698         (reg_class): Likewise.
2699         (REG_CLASS_NAMES): Likewise.
2700         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
2701         (m32c_override_options): Disable -fivopts for M32C.
2702
2703 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
2704
2705         * config/rs6000/predicates.md (indexed_or_indirect_operand):
2706         Delete VSX load/store with update support.
2707         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
2708         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
2709         (vsx_movti): Ditto.
2710         (VSX_U): Delete.
2711         (VSbit): Ditto.
2712         (VStype_load_update): Ditto.
2713         (VStype_store_update): Ditto.
2714         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
2715         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
2716
2717         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
2718         load/store with update builtins.
2719
2720 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
2721
2722         * libgcc2.c (L_trampoline): Prototype for getpagesize
2723         and mprotect in WINNT case.
2724
2725 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
2726
2727         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
2728         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
2729         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
2730         'outgoing' argument.
2731         (TARGET_FUNCTION_VALUE): Define.
2732
2733 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
2734
2735         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
2736
2737 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
2738
2739         PR bootstrap/41405
2740         * common.opt: Initialize dwarf_strict to -1.
2741         * toplev.c (process_options): Catch unset dwarf_strict
2742         and set to 0 for all targets not overriding.
2743         * config/darwin.c (darwin_override_options): Catch unset
2744         dwarf_strict and override to 1.
2745
2746 2009-09-24  Jeff Law  <law@redhat.com>
2747
2748         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
2749
2750 2009-09-24  Richard Guenther  <rguenther@suse.de>
2751
2752         PR tree-optimization/36143
2753         PR tree-optimization/38747
2754         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
2755         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
2756
2757 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
2758
2759         PR bootstrap/41457
2760         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
2761         return false instead of gcc_unreachable ().  For CONST return the
2762         value returned by recursive call instead of always returning true.
2763         (tree_add_const_value_attribute): Return the value returned by
2764         add_const_value_attribute instead of always returning true if rtl
2765         is non-NULL.
2766
2767 2009-09-23  Justin Seyster  <jrseys@gmail.com>
2768
2769         * Makefile.in (PLUGIN_HEADERS): Include real.h.
2770
2771 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
2772
2773         * cgraphunit.c (cgraph_lower_function): Revert last change.
2774         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
2775         instead of DECL_NO_STATIC_CHAIN.
2776         * tree-cfg.c (verify_gimple_call): Likewise.
2777         * tree-nested.c (get_chain_decl, get_chain_field,
2778         convert_tramp_reference_op, convert_gimple_call): Likewise.
2779         (convert_all_function_calls): Likewise.  Always set or clear
2780         DECL_STATIC_CHAIN initially, for !n->outer clear it.
2781         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
2782         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
2783         if nested.
2784         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
2785         DECL_NO_STATIC_CHAIN.
2786         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
2787         instead of DECL_NO_STATIC_CHAIN.
2788         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
2789         decl_function_context.
2790         * varasm.c (initializer_constant_valid_p): Likewise.
2791         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
2792         (DECL_STATIC_CHAIN): ... this.
2793         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
2794         instead of DECL_NO_STATIC_CHAIN.
2795
2796 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
2797             Rafael Avila de Espindola  <espindola@google.com>
2798
2799         * gengtype.c (nb_plugin_files): Make it unsigned to match
2800         num_gt_files. Adjust other variables to avoid warnings.
2801         (main): Allocate an all zero lang_bitmap before each plugin file name
2802         to match regular file names.
2803
2804 2009-09-23  Richard Henderson  <rth@redhat.com>
2805
2806         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
2807         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
2808         static chain passed in memory.
2809         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
2810         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
2811         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
2812         STATIC_CHAIN_REGNUM defined.
2813
2814         * config/picochip/picochip-protos.h: s/class/klass/.
2815         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
2816         (picochip_static_chain): New.
2817         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
2818         (STATIC_CHAIN_INCOMING): Remove.
2819
2820         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
2821         (xtensa_static_chain): New.
2822         * config/xtensa/xtensa.h (STATIC_CHAIN): Remove.
2823         (STATIC_CHAIN_INCOMING): Remove.
2824
2825 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
2826
2827         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
2828         * config/pa/pa-protos.h (function_value): Remove.
2829         * config/pa/pa.c (pa_function_value): Rename from function_value.
2830         Make static, add 'outgoing' argument.
2831         (TARGET_FUNCTION_VALUE): Define.
2832
2833 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
2834
2835         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
2836         instead of cfun->machine->is_leaf.
2837         * config/avr/avr.h (machine_function): Remove is_leaf field.
2838
2839 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
2840
2841         PR debug/41439
2842         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
2843         DW_OP_piece after DW_OP_stack_value, adjust size calculations
2844         for it, when DW_OP_stack_value and DW_OP_implicit_value has
2845         the same size, prefer DW_OP_stack_value.
2846         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
2847         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
2848
2849 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
2850
2851         PR debug/41353
2852         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
2853
2854 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
2855
2856         PR debug/41248
2857         * cfgexpand.c (convert_debug_memory_address): New.
2858         (expand_debug_expr): Convert base address and offset to the same
2859         mode.  Use it to convert addresses to other modes.  Accept
2860         ptr_mode addresses.
2861
2862 2009-09-23  Richard Guenther  <rguenther@suse.de>
2863
2864         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
2865         produced for bigendian targets with promoted subregs.
2866
2867 2009-09-23  Richard Guenther  <rguenther@suse.de>
2868
2869         * value-prof.c (gimple_ic): Purge old EH edges only after building
2870         the new ones.
2871
2872 2009-09-23  Nick Clifton  <nickc@redhat.com>
2873
2874         * config/arc/arc.c (arc_trampoline_init): Fix typo.
2875
2876 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
2877
2878         PR bootstrap/41405
2879         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
2880
2881         PR bootstrap/41436
2882         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
2883         on non-nested functions.
2884
2885 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
2886             Jan Hubicka  <jh@suse.cz>
2887
2888         * dwarf2out.c (loc_list_plus_const): Only define if
2889         DWARF2_DEBUGGING_INFO.
2890         (address_of_int_loc_descriptor): Likewise.
2891
2892         PR debug/41411
2893         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
2894
2895 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
2896
2897         PR c/39779
2898         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
2899         constant is more than zero.
2900
2901 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
2902
2903         PR target/40473
2904         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
2905         call final to emit non-scheduled prologue, instead insert at entry.
2906
2907 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
2908             Joseph S. Myers  <joseph@codesourcery.com>
2909
2910         * doc/install.texi (*-*-freebsd*): Add proper format codes.
2911
2912 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
2913             Rafael Avila de Espindola  <espindola@google.com>
2914
2915         * gengtype.c (is_file_equal): New function.
2916         (close_output_files): Use is_file_equal. Free of->buf.
2917
2918 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
2919             Rafael Avila de Espindola  <espindola@google.com>
2920
2921         * gengtype.c (write_types, write_local): Add the output_header
2922         argument. Update all callers.
2923
2924 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
2925
2926         * dwarf2out.c (template_parameter_pack_die,
2927         gen_formal_parameter_pack_die ): New functions.
2928         (make_ith_pack_parameter_name): Remove this function.
2929         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
2930         DW_TAG_formal_parameter_pack.
2931         (gen_generic_params_dies): Represent each template parameter pack
2932         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
2933         represented by usual DW_TAG_template_*_parameter DIEs that are
2934         children of the DW_TAG_template_parameter_pack element DIE.
2935         (generic_parameter_die): This doesn't deal with parameter pack
2936         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
2937         of parameter pack DIEs.
2938         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
2939         in certain cases, e.g. for pack elements.
2940         (gen_formal_types_die, gen_decl_die): Adjust usage of
2941         gen_formal_parameter_die.
2942         (gen_subprogram_die): Represent each function parameter pack by a
2943         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
2944         represented by usual DW_TAG_formal_parameter DIEs that are children
2945         of the DW_TAG_formal_parameter_pack DIE. Remove references to
2946         ____builtin_va_alist decls as no part of the compiler uses those
2947         anymore.
2948         * langhooks.h (struct lang_hooks_for_decls): Add
2949         function_parm_expanded_from_pack_p, get_generic_function_decl
2950         and function_parameter_pack_p hooks.  Fix comment for
2951         get_innermost_generic_parms hook.
2952         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
2953         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
2954         macros and use them to initialize lang_hook.
2955
2956 2009-09-22  Richard Henderson  <rth@redhat.com>
2957
2958         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
2959         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
2960         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
2961         on TRAMPOLINE_TEMPLATE.
2962         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
2963         TRAMPOLINE_ADJUST_ADDRESS.
2964         * targhooks.c (default_asm_trampoline_template): Remove.
2965         (default_trampoline_adjust_address): Remove.
2966         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
2967         * targhooks.h: Update decls.
2968
2969 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
2970
2971         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
2972         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
2973         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
2974
2975 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
2976
2977         PR debug/41295
2978         * reload1.c (reload): Reset debug insns with pseudos without
2979         equivalences.
2980
2981 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
2982
2983         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
2984         unconditional true for decimal float modes.
2985         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
2986         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
2987
2988 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
2989
2990         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
2991         Enable a new case for __FreeBSD__ >= 7.
2992         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
2993         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
2994         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
2995         and USE_LD_AS_NEEDED.
2996
2997         * doc/install.texi (*-*-freebsd*): Update target information.
2998
2999 2009-09-22  Richard Guenther  <rguenther@suse.de>
3000
3001         PR middle-end/41395
3002         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
3003         arrays really properly.
3004
3005 2009-09-22  Richard Henderson  <rth@redhat.com>
3006
3007         PR target/41246
3008         * target.h (struct gcc_target): Add asm_out.trampoline_template,
3009         calls.static_chain, calls.trampoline_init,
3010         calls.trampoline_adjust_address.
3011         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3012         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
3013         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
3014         * builtins.c (expand_builtin_setjmp_receiver): Use
3015         targetm.calls.static_chain; only clobber registers.
3016         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
3017         set up memory attributes properly for the trampoline block.
3018         (expand_builtin_adjust_trampoline): Use
3019         targetm.calls.trampoline_adjust_address.
3020         * calls.c (prepare_call_address): Add fndecl argument.  Use
3021         targetm.calls.static_chain.
3022         * df-scan.c (df_need_static_chain_reg): Remove.
3023         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
3024         consolodate static chain handling.
3025         * doc/tm.texi: Document new hooks.
3026         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
3027         (init_emit_regs): Don't initialize them.
3028         * expr.h (prepare_call_address): Update decl.
3029         * final.c (profile_function): Use targetm.calls.static_chain.
3030         * function.c (expand_function_start): Likewise.
3031         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
3032         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
3033         only clobber registers.
3034         * targhooks.c (default_static_chain): New.
3035         (default_asm_trampoline_template, default_trampoline_init): New.
3036         (default_trampoline_adjust_address): New.
3037         * targhooks.h: Declare them.
3038         * varasm.c (assemble_trampoline_template): Use
3039         targetm.asm_out.trampoline_template.  Make the memory block const
3040         and set its size.
3041
3042         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
3043         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
3044         differences into the TARGET_ABI_OPEN_VMS code block.
3045         (TARGET_TRAMPOLINE_INIT): New.
3046         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
3047         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
3048         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
3049         (INITIALIZE_TRAMPOLINE): Remove.
3050
3051         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
3052         (TRAMPOLINE_TEMPLATE): Merge with ...
3053         (INITIALIZE_TRAMPOLINE): ... this and move ...
3054         * config/arc/arc.c (arc_trampoline_init): ... here.
3055         (TARGET_TRAMPOLINE_INIT): New.
3056
3057         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3058         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
3059         (arm_asm_trampoline_template): New.
3060         (arm_trampoline_init, arm_trampoline_adjust_address): New.
3061         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
3062         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
3063         code to arm_asm_trampoline_template.
3064         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
3065         arm_trampoline_adjust_address.
3066         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
3067         adjust for target hook parameters.
3068
3069         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
3070         Remove.
3071
3072         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
3073         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
3074         (bfin_trampoline_init): Rename from initialize_trampoline;
3075         make static; update for target hook parameters.
3076         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
3077         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
3078         bfin_asm_trampoline_template.
3079         (INITIALIZE_TRAMPOLINE): Remove.
3080
3081         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
3082         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
3083         cris_trampoline_init): New.
3084         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
3085         cris_asm_trampoline_template.
3086         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
3087         adjust for target hook parameters.
3088
3089         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
3090
3091         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
3092         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
3093         fr30_trampoline_init): New.
3094         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
3095         fr30_asm_trampoline_template.
3096         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
3097         adjust for target hook parameters.
3098
3099         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
3100         (frv_trampoline_init): Rename from frv_initialize_trampoline;
3101         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
3102         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
3103         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
3104
3105         * config/h8300/h8300.c (h8300_trampoline_init): New.
3106         (TARGET_TRAMPOLINE_INIT): New.
3107         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
3108         to h8300_trampoline_init and adjust for hook parameters.
3109
3110         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
3111         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
3112         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
3113         make static; adjust for hook parameters.
3114         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
3115
3116         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3117         (TARGET_TRAMPOLINE_INIT): New.
3118         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
3119         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
3120         iq2000_asm_trampoline_template.
3121         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
3122         (TRAMPOLINE_CODE_SIZE): New.
3123         (TRAMPOLINE_SIZE): Use it.
3124         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
3125
3126         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
3127         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
3128         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
3129         adjust for hook parameters.
3130         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
3131
3132         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
3133         (m32r_trampoline_init): New.
3134         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
3135         m32r_trampoline_init.
3136
3137         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
3138         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
3139         make static; update for hook parameters.
3140         * config/m68hc11/m68hc11-protos.h: Update.
3141         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
3142
3143         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3144         (TARGET_TRAMPOLINE_INIT): New.
3145         (mcore_function_value): Fix typo.
3146         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
3147         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
3148         to mcore_asm_trampoline_template.
3149         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
3150
3151         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
3152         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
3153         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
3154         update for hook parameters.
3155         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
3156
3157         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
3158         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
3159         mips_trampoline_init): New.
3160         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
3161         mips_asm_trampoline_template.
3162         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
3163         update for hook parameters.
3164
3165         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3166         (TARGET_TRAMPOLINE_INIT): New.
3167         (mmix_trampoline_size): Remove.
3168         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
3169         make static.  Remove out-of-date tetra vs octa comment.
3170         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
3171         make static; update for hook parameters.
3172         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
3173         (INITIALIZE_TRAMPOLINE): Remove.
3174         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
3175         (TRAMPOLINE_ALIGNMENT): New.
3176         * gcc/config/mmix/mmix-protos.h: Update.
3177
3178         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
3179         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
3180         mn10300_trampoline_init): New.
3181         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
3182         mn10300_asm_trampoline_template.
3183         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
3184
3185         * config/moxie/moxie.c (moxie_static_chain,
3186         moxie_asm_trampoline_template, moxie_trampoline_init,
3187         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
3188         TARGET_TRAMPOLINE_INIT): New.
3189         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
3190         moxie_trampoline_init.
3191         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
3192         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
3193
3194         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
3195         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
3196         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
3197         pa_trampoline_adjust_address): New.
3198         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
3199         pa_asm_trampoline_template.
3200         (TRAMPOLINE_ALIGNMENT): New.
3201         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
3202         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
3203         adjust for hook parameters.
3204         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
3205
3206         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
3207         (TARGET_TRAMPOLINE_INIT): New.
3208         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
3209         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
3210
3211         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
3212
3213         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
3214         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
3215         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
3216         make static; adjust parameters for the hook.
3217         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
3218
3219         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
3220         s390_trampoline_template; make static.
3221         (s390_trampoline_init): Rename from s390_initialize_trampoline;
3222         make static; adjust for target hook.
3223         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
3224         * config/s390/s390-protos.h: Remove trampoline decls.
3225         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
3226         (TRAMPOLINE_TEMPLATE): Remove.
3227         (TRAMPOLINE_ALIGNMENT): New.
3228
3229         * config/score/score-protos.h (score_initialize_trampoline): Remove.
3230         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3231         (TARGET_TRAMPOLINE_INIT): New.
3232         (score_asm_trampoline_template): New.
3233         (score_trampoline_init): Rename from score_initialize_trampoline;
3234         make static; adjust for hook parameters.
3235         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
3236         score[37]_asm_trampoline_template.
3237         (INITIALIZE_TRAMPOLINE): Remove.
3238         * config/score/score3.c (score3_asm_trampoline_template): New.
3239         (score3_trampoline_init): Rename from score3_initialize_trampoline;
3240         adjust for target hook.
3241         * config/score/score7.c (score7_asm_trampoline_template): New.
3242         (score7_trampoline_init): Rename from score7_initialize_trampoline;
3243         adjust for target hook.
3244         * config/score/score3.h, config/score/score7.h: Update.
3245
3246         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
3247         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
3248         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
3249         (sh_trampoline_init): Rename from sh_initialize_trampoline;
3250         make static; adjust for target hook parameters.
3251         (sh_trampoline_adjust_address): New.
3252         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
3253         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
3254
3255         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
3256         (sparc32_initialize_trampoline): Rename from
3257         sparc_initialize_trampoline; make static; replace tramp parameter
3258         with m_tramp and update memory accesses.
3259         (sparc64_initialize_trampoline): Similarly.
3260         (sparc_trampoline_init): New.
3261         * config/sparc/sparc-protos.h: Remove trampoline decls.
3262         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
3263         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
3264
3265         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
3266         (array_to_constant): Make ARR parameter const.
3267         (spu_trampoline_init): Rename from spu_initialize_trampoline;
3268         make static; update for hook parameters.
3269         * config/spu/spu-protos.h: Update decls.
3270         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
3271
3272         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
3273         from xstormy16_initialize_trampoline; make static; update for
3274         hook parameters.
3275         (TARGET_TRAMPOLINE_INIT): New.
3276         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
3277
3278         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3279         (TARGET_TRAMPOLINE_INIT): New.
3280         (v850_can_eliminate): Make static.
3281         (v850_asm_trampoline_template, v850_trampoline_init): New.
3282         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
3283         v850_asm_trampoline_template.
3284         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
3285         and adjust for target hook parameters.
3286
3287         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3288         (TARGET_TRAMPOLINE_INIT): New.
3289         (vax_asm_trampoline_template, vax_trampoline_init): New.
3290         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
3291         vax_asm_trampoline_template.
3292         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
3293
3294         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3295         (TARGET_TRAMPOLINE_INIT): New.
3296         (xtensa_asm_trampoline_template): Rename from
3297         xtensa_trampoline_template; make static.
3298         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
3299         make static; update for hook parameters.
3300         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
3301         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
3302         (INITIALIZE_TRAMPOLINE): Remove.
3303
3304         * config/i386/i386.c (ix86_function_regparm): Do not issue an
3305         error for nested functions with regparm=3.
3306         (ix86_compute_frame_layout): Adjust frame pointer offset for
3307         ix86_static_chain_on_stack.
3308         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
3309         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
3310         don't reset to UNITS_PER_WORD.
3311         (ix86_emit_leave): Adjust ix86_cfa_state.
3312         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
3313         (ix86_static_chain): New.
3314         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
3315         make static; update for target hook parameters; use ix86_static_chain.
3316         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
3317         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
3318         (INITIALIZE_TRAMPOLINE): Remove.
3319         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
3320         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
3321         to the end.  Add static_chain_on_stack.
3322         (ix86_static_chain_on_stack): New.
3323
3324         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
3325         (m68k_output_mi_thunk): Don't use static_chain_rtx.
3326         (m68k_trampoline_init): New.
3327         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
3328         m68k_trampoline_init and adjust for hook parameters.
3329         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
3330         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
3331
3332 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
3333
3334         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
3335         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
3336
3337         * reload1.c (reload): Call wrap_constant when substituting
3338         reg for equiv inside of DEBUG_INSNs.
3339
3340         PR bootstrap/41405
3341         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
3342         add_call_src_coords_attributes, add_high_low_attributes,
3343         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
3344         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
3345         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
3346         when -gdwarf-2 -gstrict-dwarf.
3347         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
3348         -gdwarf-[23] -gstrict-dwarf.
3349         (address_of_int_loc_descriptor, loc_descriptor,
3350         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
3351         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
3352         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
3353
3354 2009-09-22  Richard Guenther  <rguenther@suse.de>
3355
3356         PR tree-optimization/41428
3357         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
3358         (ccp_finalize): Pass it to substitute_and_fold.
3359
3360 2009-09-22  Richard Guenther  <rguenther@suse.de>
3361
3362         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
3363         (substitute_and_fold): Adjust prototype.
3364         * tree-vrp.c (vrp_evaluate_conditional): Make static.
3365         (simplify_stmt_using_ranges): Likewise.
3366         (fold_predicate_in): Move here from tree-ssa-propagate.c.
3367         (vrp_fold_stmt): New function.
3368         (vrp_finalize): Pass it to substitute_and_fold.
3369         * tree-flow.h (vrp_evaluate_conditional): Remove.
3370         (simplify_stmt_using_ranges): Likewise.
3371         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
3372         * tree-ssa-copy.c (fini_copy_prop): Likewise.
3373         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
3374         member.
3375         (fold_predicate_in): Move to tree-vrp.c.
3376         (substitute_and_fold): Use the callback instead of calling into
3377         tree-vrp.c functions directly.
3378
3379 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
3380
3381         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
3382         comparison warning on rs6000.
3383
3384         PR middle-end/41429
3385         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
3386         GIMPLE_EH_MUST_NOT_THROW cleanup.
3387         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
3388
3389 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
3390
3391         PR middle-end/41260
3392         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
3393         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
3394         LIB_SPEC for darwin10 and later since it always uses the unwinder in
3395         libSystem which is derived from the gcc 4.2.1 unwinder.
3396
3397 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
3398
3399         PR middle-end/41357
3400         * varasm.c (default_encode_section_info): Copy TLS model into
3401         sym_ref flags regardless of backend support for TLS, for all
3402         model types except TLS_MODEL_EMULATED.
3403
3404 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
3405
3406         PR bootstrap/41404
3407         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
3408         we can handle it correctly.
3409
3410 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
3411
3412         * doc/install.texi (os2): Remove section.
3413
3414 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
3415
3416         * doc/standards.texi (Objective-C): Adjust two URLs.
3417
3418 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
3419
3420         * tree-tailcall.c (process_assignment): Don't check if a
3421         multiplication or an addition are already present.
3422         (find_tail_calls): Combine multiple additions and multiplications.
3423         (adjust_accumulator_values): Emit accumulators.
3424
3425 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
3426
3427         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
3428         xmm register restore.
3429
3430 2009-09-21  Jan Hubicka  <jh@suse.cz>
3431
3432         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
3433         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
3434         restore at the end.
3435
3436 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
3437
3438         * stor-layout.c (layout_type): Remove obsolete code.
3439
3440 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
3441
3442         PR middle-end/41395
3443         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
3444
3445 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3446
3447         PR middle-end/30789
3448         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
3449         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
3450         (fold_builtin_2, do_mpc_arg1): Update accordingly.
3451         * fold-const.c (const_binop): Likewise.
3452         * real.h (do_mpc_arg2): Update prototype.
3453
3454 2009-09-20  Jan Hubicka  <jh@suse.cz>
3455
3456         * dwarf2out.c (add_const_value_attribute): Return true if successful.
3457         (add_location_or_const_value_attribute): Rewrite using
3458         loc_list_from_tree.
3459         (tree_add_const_value_attribute): Return true if successful.
3460         (tree_add_const_value_attribute_for_decl): Likewise.
3461
3462         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
3463         (loc_descriptor): ... here;
3464         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
3465         (cst_pool_loc_descr): Break out from ...; do not reffer constant
3466         pool items that was not marked for output.
3467         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
3468         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
3469         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
3470         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
3471         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
3472         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
3473         DW_OP_stack_value to get address of items that are not available
3474         as addresses.
3475         (dw_loc_list): Handle single element lists correctly.
3476
3477 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
3478             Pascal Obry  <obry@adacore.com>
3479
3480         * unwind-dw2-fde.c (classify_object_over_fdes):
3481         Cast the constant 1 to _Unwind_Ptr.
3482         (add_fdes): Likewise.
3483         (linear_search_fdes): Likewise.
3484
3485 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
3486
3487         * stor-layout.c (set_sizetype): Avoid useless type copy.
3488
3489 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
3490
3491         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
3492         feature check.
3493         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
3494         * configure, config.in: Regenerate.
3495         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
3496         DW_EH_PE_absptr.
3497         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
3498         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
3499         for global data if the output could be used in a shared library.
3500         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
3501         to 0 if TARGET_WRITABLE_EH_FRAME.
3502
3503 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
3504
3505         PR rtl-optimization/39886
3506         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
3507         just when insn is equal to BB_END (bb).
3508
3509 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
3510
3511         * config/mips/mips.opt (mrelax-pic-calls): New option.
3512         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
3513         the file.
3514         (mips_unspec_call): Change "unspec_call" expander into this.
3515         (mips_strip_unspec_call): New function.
3516         (mips_got_load): Call mips_unspec_call instead of
3517         gen_unspec_call<mode>.
3518         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
3519         MIPS_CALL.
3520         (mips_cfg_in_reorg): New function.
3521         (mips16_lay_out_constants): Use it to decide whether to call
3522         CFG-aware insn splitting.
3523         (r10k_insert_cache_barriers): Move CFG set-up code from here to
3524         mips_reorg.  Move DF set-up code from here ...
3525         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
3526         from here.
3527         (mips_reorg): Call mips_df_reorg instead of
3528         r10k_insert_cache_barriers.  Move CFG set-up code here from
3529         r10k_insert_cache_barriers.
3530         (mips_call_expr_from_insn): New function.
3531         (mips_pic_call_symbol_from_set): Likewise.
3532         (mips_find_pic_call_symbol): Likewise.
3533         (mips_annotate_pic_call_expr): Likewise.
3534         (mips_get_pic_call_symbol): Likewise.
3535         (mips_annotate_pic_calls): Likewise.
3536         (mips_override_options): Disable -mrelax-pic-calls unless PIC
3537         calls are used.
3538         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
3539         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
3540         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
3541         directive.
3542         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
3543         (unspec_call<mode>): Remove it.
3544         (sibcall_internal, sibcall_value_internal,
3545         sibcall_value_multiple_internal, call_internal, call_split,
3546         call_value_internal, call_value_split,
3547         call_value_multiple_internal, call_value_multiple_split): Pass
3548         SIZE_OPNO to MIPS_CALL.
3549         (call_internal_direct, call_direct_split,
3550         call_value_internal_direct, call_value_direct_split): Pass -1 as
3551         SIZE_OPNO to MIPS_CALL.
3552         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
3553         * configure: Regenerate.
3554         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
3555         and -mno-relax-pic-calls.
3556         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
3557
3558 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3559
3560         PR bootstrap/35619
3561         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
3562         in the directory this rule is called from, rather than the
3563         toplevel 'gcc' directory, to fix in-tree build.
3564
3565 2009-09-19  Chris Demetriou  <cgd@google.com>
3566
3567         PR preprocessor/28435:
3568         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
3569         to cpplib that the preprocessor output is needed.
3570
3571 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
3572
3573         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
3574         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
3575         *return_and_restore_fpregs_<mode>,
3576         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
3577
3578         PR bootstrap/41397
3579         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
3580         instead of assuming it has always a REG inside of it.
3581
3582 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
3583
3584         * config/freebsd.h: Update comment on types.
3585         (WINT_TYPE): Define.
3586
3587 2009-09-18  Jason Merrill  <jason@redhat.com>
3588
3589         * c.opt: Add -fno-deduce-init-list.
3590
3591 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
3592
3593         * value-prof.c (interesting_stringop_to_profile_p): Added output
3594         argument to indicate which parameter is the size parameter.
3595         * value-prof.c (gimple_stringop_fixed_value): Use
3596         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
3597         * value-prof.c (gimple_stringops_transform): Update call sites to
3598         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
3599
3600 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
3601
3602         PR target/38288
3603         From David Binderman <dcb314@hotmail.com>:
3604         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
3605         local variable f.  Remove stale comments.
3606         (ix86_compute_frame_layout): Remove useless local variable total_size.
3607         Remove #if 0'd code.
3608         (legitimate_address_p): Remove useless local variables
3609         reason_rtx and reason.
3610         (ix86_split_copysign_const): Remove useless local variable op1.
3611         (scale_counter): Remove useless local variable piece_size_mask.
3612
3613 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
3614
3615         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
3616         output decl.
3617
3618 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
3619
3620         PR target/40913
3621         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
3622
3623 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
3624
3625         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
3626         TYPE_STUB_DECL.
3627
3628 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
3629
3630         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
3631         DW_OP_implicit_value even without dwarf_version 4.
3632
3633 2009-09-17  Jan Hubicka  <jh@suse.cz>
3634
3635         * dwarf2out.c: Include tree-pass.h and gimple.h.
3636         (loc_list_plus_const): New function.
3637         (loc_descriptor_from_tree_1): Rename to ...
3638         (loc_descriptor_from_tree): ... remove original.
3639         (loc_list_from_tree): New function.
3640         (add_AT_location_description): Accept location list.
3641         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
3642         (concatn_mem_loc_descriptor): Remove.
3643         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
3644         returning NULL.
3645         (secname_for_decl): Move up.
3646         (hidden_reference_p): New function; break out from ...
3647         (loc_by_refernece): ... here; move up.
3648         (dw_loc_list): New function.
3649         (single_element_loc_list): New function.
3650         (single_element_loc_list_p): New function.
3651         (add_loc_descr_to_each): New function.
3652         (add_loc_list): New function.
3653         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
3654         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
3655         add diagnostics why expansion failed.
3656         (add_location_or_const_value_attribute): Support location lists.
3657         (add_bound_info): Likewise.
3658         (descr_info_loc): Update call of loc_descriptor_from_tree.
3659         (gen_variable_die): Work on location lists.
3660         * final.c (pass_final): Add dump file.
3661         * Makefile.in (dwarf2out.o): Add new dependencies.
3662
3663 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
3664
3665         PR c/41049
3666         * real.c decimal_from_integer, decimal_integer_string): New.
3667         (real_from_integer): Use them as special case for decimal float.
3668         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
3669         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
3670         Do not append zero after the decimal point in string to convert.
3671
3672 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
3673
3674         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
3675         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
3676
3677 2009-09-17  Martin Jambor  <mjambor@suse.cz>
3678
3679         * common.opt (fipa-sra): New switch.
3680         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
3681         * timevar.def (TV_IPA_SRA): New timevar.
3682         * params.def (ipa-sra-ptr-growth-factor): New parameter.
3683         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
3684         * tree-sra.c: Include cgraph.c.
3685         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
3686         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
3687         and grp_not_necessarilly_dereferenced.
3688         (func_param_count): New variable.
3689         (encountered_apply_args): New variable.
3690         (bb_dereferences): New variable.
3691         (final_bbs): New variable.
3692         (no_accesses_representant): New variable.
3693         (no_accesses_p): New function.
3694         (dump_access): Dump the new fields.
3695         (sra_initialize): Set encountered_apply_args to false.
3696         (get_ssa_base_param): New function.
3697         (mark_parm_dereference): New function.
3698         (create_access): Caring for INIDRECT_REFs and different handling of
3699         varialble length accesses in early IPA SRA.  Store the stmt - a new
3700         parameter - to the new access.
3701         (build_access_from_expr_1): New parameter stmt, passed to
3702         create_access.  Handle INDIRECT_REFs.
3703         (build_access_from_expr): Pass the current statement to
3704         build_access_from_expr_1.
3705         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
3706         passes.
3707         (build_accesses_from_assign): Pass the current statement to
3708         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
3709         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
3710         final_bbs when necessary.  Check for calls to __builtin_apply_args.
3711         Fixup EH info if anythng was changed.
3712         (is_unused_scalar_param): New function.
3713         (ptr_parm_has_direct_uses): New function.
3714         (find_param_candidates): New function.
3715         (mark_maybe_modified): New function.
3716         (analyze_modified_params): New function.
3717         (propagate_dereference_distances): New function.
3718         (dump_dereferences_table): New function.
3719         (analyze_caller_dereference_legality): New function.
3720         (unmodified_by_ref_scalar_representative): New function.
3721         (splice_param_accesses): New function.
3722         (decide_one_param_reduction): New function.
3723         (enum ipa_splicing_result): New type.
3724         (splice_all_param_accesses): New function.
3725         (get_param_index): New function.
3726         (turn_representatives_into_adjustments): New function.
3727         (analyze_all_param_acesses): New function.
3728         (get_replaced_param_substitute): New function.
3729         (get_adjustment_for_base): New function.
3730         (replace_removed_params_ssa_names): New function.
3731         (sra_ipa_reset_debug_stmts): New function.
3732         (sra_ipa_modify_expr): New function.
3733         (sra_ipa_modify_assign): New function.
3734         (convert_callers): New function.
3735         (modify_function): New function.
3736         (ipa_sra_preliminary_function_checks): New function.
3737         (ipa_early_sra): New function.
3738         (ipa_early_sra_gate): New function.
3739         (pass_early_ipa_sra): New variable.
3740         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
3741
3742 2009-09-17  Michael Matz  <matz@suse.de>
3743
3744         PR middle-end/41347
3745         * tree.c (build_type_attribute_qual_variant): Export.
3746         * tree.h (build_type_attribute_qual_variant): Declare.
3747         * tree-inline.c (remap_type_1): Use it to build variants with
3748         the original qualifiers and attributes.
3749
3750 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3751
3752         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
3753         without a fallthrough edge.
3754
3755 2009-09-16  DJ Delorie  <dj@redhat.com>
3756
3757         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
3758         chip and ignore the "fast_interrupt" attribute if so.
3759
3760 2009-09-16  Richard Henderson  <rth@redhat.com>
3761
3762         PR middle-end/41360
3763         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
3764         barrier fix.
3765
3766 2009-09-16  Richard Henderson  <rth@redhat.com>
3767
3768         PR target/41246
3769         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
3770         is set only if DECL_NO_STATIC_CHAIN is unset.
3771         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
3772         (FOR_EACH_NEST_INFO): New.
3773         (walk_all_functions): Use it.
3774         (finalize_nesting_tree): Likewise.
3775         (unnest_nesting_tree): Likewise.
3776         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
3777         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
3778         (convert_gimple_call): Early out if gimple_call_chain already set.
3779         (convert_all_function_calls): Iterate until no new functions
3780         require a static chain.
3781         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
3782         when building a trampoline.  Use dump_function_to_file instead
3783         of dump_function.
3784         (lower_nested_functions): Open dump_file.  Validate that decls
3785         that have DECL_NO_STATIC_CHAIN from the front end don't have that
3786         bit reset by this pass.
3787
3788 2009-09-16  Michael Matz  <matz@suse.de>
3789
3790         PR fortran/41212
3791         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
3792         shorten decl_common_unused.
3793         (DECL_RESTRICTED_P): New accessor.
3794         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
3795         to disambiguate marked decls and restrict pointers.
3796
3797 2009-09-16  Richard Henderson  <rth@redhat.com>
3798
3799         PR middle-end/41360
3800         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
3801
3802 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
3803
3804         * integrate.c (set_block_abstract_flags): Call
3805         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
3806
3807 2009-09-16  Richard Guenther  <rguenther@suse.de>
3808
3809         PR middle-end/34011
3810         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
3811         as non-aliased.
3812
3813 2009-09-16  DJ Delorie  <dj@redhat.com>
3814             Kaz Kojima  <kkojima@gcc.gnu.org>
3815
3816         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
3817         (sh_expand_prologue): Update calls to output_stack_adjust.
3818         (sh_expand_epilogue): Likewise.
3819
3820 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
3821
3822         PR bootstrap/41349
3823         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
3824         trying to limit the extent of searches in the insn stream.
3825
3826 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
3827             Jakub Jelinek  <jakub@redhat.com>
3828
3829         PR target/41175
3830         PR target/40677
3831         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
3832         problem.
3833         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
3834         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
3835         (rs6000_savres_strategy): Always save FP registers inline if the
3836         target doesn't support hardware double-precision.  Set the above
3837         bits in return value when needed.
3838         (rs6000_savres_routine_sym): Fix computation for cache selector.
3839         Mark the generated symbol as a function.  Rename exitp argument to
3840         lr.  Move code for determining the name of the symbol...
3841         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
3842         getting the names right on AIX and 64-bit Linux.
3843         (savres_routine_name): New variable.
3844         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
3845         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
3846         on what the target routine uses as a base register.  If savep && lr
3847         describe saving of r0 into memory slot.
3848         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
3849         line calls for AIX ABI.
3850         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
3851         determine FP save/restore functions.
3852         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
3853         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
3854         gen_addsi3.
3855         (rs6000_emit_epilogue): Adjust computation of restore_lr.
3856         Duplicate restoration of LR and execute the appropriate one
3857         depending on whether GPRs are being restored inline.  Set r11 from
3858         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
3859         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
3860         Fix out of line calls for AIX ABI.
3861         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
3862         New insn.
3863         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
3864         register 11.
3865         (*restore_gpregs_spe): Likewise.
3866         (*return_and_restore_gpregs_spe): Likewise.
3867         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
3868         Define to empty string unconditionally.
3869         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
3870         Define to empty string unconditionally.
3871         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
3872         !TARGET_64BIT.
3873
3874 2009-09-15  Jan Hubicka  <jh@suse.cz>
3875
3876         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
3877         * params.def (inline-insns-auto): Likewise.
3878
3879 2009-09-15  Martin Jambor  <mjambor@suse.cz>
3880
3881         * ipa-inline.c (estimate_function_body_sizes): Dump info about
3882         individual statements only at TDF_DETAILS dump level.  Format
3883         source for 80 characters per line.
3884
3885 2009-09-15  Christian Bruel  <christian.bruel@st.com>
3886
3887         * regrename.c (do_replace): Update REG_DEAD notes.
3888
3889 2009-09-15  Revital Eres  <eres@il.ibm.com>
3890
3891         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
3892         * targhooks.c (default_builtin_support_vector_misalignment):
3893         New builtin function.
3894         * targhooks.h (default_builtin_support_vector_misalignment):
3895         Declare.
3896         * target.h (builtin_support_vector_misalignment):
3897         New field in struct gcc_target.
3898         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
3899         new builtin function.
3900         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
3901         Define.
3902         * config/rs6000/rs6000.c
3903         (rs6000_builtin_support_vector_misalignment): New function.
3904         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
3905
3906 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
3907
3908         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
3909         instead of INSN_P.
3910         (bfin_optimize_loop): Likewise.
3911         (bfin_gen_bundles): Likewise.
3912         (workaround_speculation): Likewise.
3913         (find_load): Return NULL_RTX for debug_insn.
3914
3915 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
3916
3917         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
3918         (sminsf3): Ditto.
3919
3920 2009-09-14  DJ Delorie  <dj@redhat.com>
3921
3922         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
3923         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
3924         VLIW mode.
3925
3926 2009-09-14  Richard Henderson  <rth@redhat.com>
3927             Jakub Jelinek  <jakub@redhat.com>
3928
3929         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
3930         * cfgbuild.c (make_edges): Handle asm goto.
3931         * cfglayout.c (fixup_reorder_chain): Likewise.
3932         * cfgrtl.c (patch_jump_insn): Likewise.
3933         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
3934         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
3935         (gimple_build_asm_vec): Add and use labels parameter.
3936         (gimple_build_asm): Remove.
3937         (walk_gimple_asm): Walk labels too.
3938         * gimple.def (GIMPLE_ASM): Update docs.
3939         * gimple.h: Update decls.
3940         (struct gimple_statement_asm): Change nc to use unsigned char;
3941         add nl member.
3942         (gimple_asm_nlabels): New.
3943         (gimple_asm_label_op, gimple_asm_set_label_op): New.
3944         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
3945         into gimple_build_asm_vec.
3946         * jump.c (mark_jump_label_asm): New.
3947         (mark_jump_label): Use it.
3948         (redirect_jump_1): Handle asm goto.
3949         (invert_jump_1): Soft fail if X is null.
3950         * recog.c (extract_asm_operands): New.
3951         (asm_noperands): Use it; handle asm labels.
3952         (decode_asm_operands): Use extract_asm_operands.
3953         (asm_operand_ok): Properly handle empty string.
3954         * reg-stack.c (get_asm_operands_in_out): Rename from
3955         get_asm_operand_n_inputs; use extract_asm_operands; return both
3956         inputs and outputs by reference; update all callers.
3957         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
3958         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
3959         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
3960         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
3961         (extract_asm_operands): Declare.
3962         * stmt.c (expand_asm_operands): Add and use labels parameter.
3963         (check_unique_operand_names): Likewise.
3964         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
3965         (expand_asm_stmt): Handle asm labels.
3966         * tree-cfg.c (make_gimple_asm_edges): New.
3967         (make_edges): Use it.
3968         (cleanup_dead_labels): Handle asm labels.
3969         (is_ctrl_altering_stmt): Likewise.
3970         (gimple_redirect_edge_and_branch): Likewise.
3971         * tree.def (ASM_EXPR): Add 5th operand.
3972         * tree.h (ASM_LABELS): New.
3973         (resolve_asm_operand_names): Update decl.
3974
3975         * c-parser.c (c_parser_asm_statement): Parse asm goto.
3976         (c_parser_asm_goto_operands): New.
3977         * c-tree.h (build_asm_expr): Update decl.
3978         * c-typeck.c (build_asm_expr): Add and use labels parameter.
3979         * doc/extend.texi: Document asm goto.
3980
3981 2009-09-14  Richard Henderson  <rth@redhat.com>
3982
3983         * except.h: Update declarations.
3984         (struct pointer_map_t): Forward declare.
3985         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
3986         (struct eh_landing_pad_d, eh_landing_pad): New.
3987         (struct eh_catch_d, eh_catch): New.
3988         (struct eh_region_d): Remove next_region_sharing_label, aka,
3989         label, tree_label, landing_pad, post_landing_pad, resume,
3990         may_contain_throw.  Rename region_number to index.  Remove
3991         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
3992         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
3993         (VEC(eh_landing_pad,gc)): New.
3994         (struct eh_status): Remove last_region_number.  Add lp_array,
3995         throw_stmt_table, ttype_data, ehspec_data.
3996         (ehr_next, FOR_ALL_EH_REGION_AT): New.
3997         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
3998         * except.c (lang_protect_cleanup_actions): Return tree.
3999         (struct ehl_map_entry): Remove.
4000         (init_eh_for_function): Push zero entries for region and lp_array.
4001         (gen_eh_region): Add to region_array immediately.
4002         (gen_eh_region_catch): Operate on eh_catch objects.
4003         (gen_eh_landing_pad): New.
4004         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
4005         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
4006         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
4007         (get_eh_landing_pad_from_number_fn): New.
4008         (get_eh_landing_pad_from_number): New.
4009         (get_eh_region_from_lp_number_fn): New.
4010         (get_eh_region_from_lp_number): New.
4011         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
4012         (get_exception_pointer, get_exception_filter): Remove.
4013         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
4014         (current_function_has_exception_handlers): Simplify.
4015         (bring_to_root, eh_region_replaceable_by_p): Remove.
4016         (replace_region, hash_type_list, hash_eh_region): Remove.
4017         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
4018         (label_to_region_map, num_eh_regions): Remove.
4019         (get_next_region_sharing_label, must_not_throw_labels): Remove.
4020         (find_exception_handler_labels): Remove.
4021         (duplicate_eh_regions_0, find_prev_try): Remove.
4022         (struct duplicate_eh_regions_data): New.
4023         (duplicate_eh_regions_1): Rewrite.
4024         (duplicate_eh_regions): Return a pointer map instead of an
4025         integer offset.
4026         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
4027         (redirect_eh_edge_to_label): Remove.
4028         (eh_region_outermost): Rewrite using eh_region pointers
4029         instead of integers.
4030         (add_ttypes_entry): Update for ttype_data move to eh_status.
4031         (add_ehspec_entry): Rewrite with VEC instead of varray.
4032         (assign_filter_values): Likewise.  Export.
4033         (build_post_landing_pads, connect_post_landing_pads): Remove.
4034         (dw2_build_landing_pads): Rewrite to use lp_array.
4035         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
4036         (sjlj_assign_call_site_values): Rewrite to use lp_array.
4037         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
4038         (sjlj_mark_call_sites): Update for landing pad numbers.
4039         (finish_eh_generation): Rewrite.
4040         (gate_handle_eh): Do nothing for no eh tree.
4041         (pass_rtl_eh): Move up near finish_eh_generation.
4042         (remove_eh_landing_pad): New.
4043         (remove_eh_handler): Export.
4044         (remove_eh_region, remove_eh_handler_and_replace): Remove.
4045         (for_each_eh_label): Rewrite to use lp_array.
4046         (make_reg_eh_region_note): New.
4047         (make_reg_eh_region_note_nothrow_nononlocal): New.
4048         (insn_could_throw_p): New.
4049         (copy_reg_eh_region_note_forward): New.
4050         (copy_reg_eh_region_note_backward): New.
4051         (check_handled, add_reachable_handler): Remove.
4052         (reachable_next_level, foreach_reachable_handler): Remove.
4053         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
4054         (get_eh_region_and_lp_from_rtx): New.
4055         (get_eh_region_from_rtx): New.
4056         (can_throw_internal_1, can_throw_external_1): Remove.
4057         (can_throw_internal): Use get_eh_region_from_rtx.
4058         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
4059         (insn_nothrow_p, can_nonlocal_goto): New.
4060         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
4061         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
4062         (add_action_record): Use VEC not varray.
4063         (collect_one_action_chain): Update for eh_region changes.
4064         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
4065         Use get_eh_region_and_lp_from_rtx.
4066         (gate_convert_to_eh_region_ranges): New.
4067         (pass_convert_to_eh_region_ranges): Use it.
4068         (push_uleb128, push_sleb128): Use VEC not varray.
4069         (output_one_function_exception_table): Likewise.
4070         (dump_eh_tree): Update for eh_region changes.
4071         (verify_eh_tree): Likewise.
4072         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
4073         * tree-eh.c: Include target.h.
4074         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
4075         Don't disallow GIMPLE_RESX; adjust argument check.
4076         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
4077         (record_stmt_eh_region): Update for landing pad numbers;
4078         generate a landing pad if necessary.
4079         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
4080         (remove_stmt_from_eh_lp_fn): Similarly.
4081         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
4082         Update for lp numbers; don't special case missing throw_stmt_table.
4083         (lookup_expr_eh_lp): Similarly.
4084         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
4085         (eh_seq, eh_region_may_contain_throw): New.
4086         (struct leh_state): Add ehp_region.
4087         (struct leh_tf_state): Remove eh_label.
4088         (emit_post_landing_pad): New.
4089         (emit_resx, emit_eh_dispatch): New.
4090         (note_eh_region_may_contain_throw): New.
4091         (frob_into_branch_around): Take eh_region not eh label;
4092         emit eh code into eh_seq.
4093         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
4094         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
4095         lower_eh_must_not_throw.  Emit code to eh_seq.
4096         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
4097         (lower_try_finally_onedest): Likewise.
4098         (lower_try_finally_copy): Likewise.
4099         (lower_try_finally_switch): Likewise.
4100         (lower_try_finally): Initialize ehp_region.
4101         (lower_catch): Update for eh_catch objects.
4102         (lower_eh_filter): Don't handle must_not_throw.
4103         (lower_eh_must_not_throw): New.
4104         (lower_cleanup): Don't set eh_label.
4105         (lower_eh_constructs_2): Resolve eh builtins.
4106         Handle GIMPLE_EH_MUST_NOT_THROW.
4107         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
4108         Add eh_seq to the end of the function body.
4109         (make_eh_dispatch_edges): New.
4110         (make_eh_edge): Remove.
4111         (make_eh_edges): Simplify for landing pads.
4112         (redirect_eh_edge_1): New.
4113         (redirect_eh_edge): Use it.
4114         (redirect_eh_dispatch_edge): New.
4115         (stmt_could_throw_p): Use a switch.  Allow RESX.
4116         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
4117         (stmt_can_throw_internal): Likewise.
4118         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
4119         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
4120         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
4121         (gate_refactor_eh): New.
4122         (pass_refactor_eh): Use it.
4123         (lower_resx, execute_lower_resx, pass_lower_resx): New.
4124         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
4125         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
4126         (remove_unreachable_handlers): Rename from
4127         tree_remove_unreachable_handlers; rewrite for landing pads;
4128         call remove_eh_handler directly.
4129         (remove_unreachable_handlers_no_lp): New.
4130         (unsplit_eh, unsplit_all_eh): New.
4131         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
4132         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
4133         (cleanup_empty_eh_unsplit): New.
4134         (cleanup_empty_eh): Rewrite.
4135         (cleanup_all_empty_eh): New.
4136         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
4137         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
4138         (gate_cleanup_eh): New.
4139         (pass_cleanup_eh): Use it.
4140         (verify_eh_edges): Move later in file.  Expect one EH edge.
4141         (verify_eh_dispatch_edge): New.
4142
4143         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
4144         (gtype-desc.o): Add TARGET_H.
4145         (tree.o): Use EXCEPT_H, not except.h.
4146         (cfgbuild.o): Add EXPR_H.
4147         (GTFILES): Add vecprim.h.
4148         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
4149         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
4150         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
4151         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
4152         * calls.c (emit_call_1): Use make_reg_eh_region_note.
4153         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
4154         calls to can_throw_internal.
4155         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
4156         (make_edges): Don't handle RESX; use can_nonlocal_goto.
4157         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
4158         (expand_gimple_stmt): Use make_reg_eh_region_note.
4159         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
4160         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
4161         or find_exception_handler_labels.
4162         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
4163         there is exacly one EH edge.  Use can_nonlocal_goto and
4164         can_throw_internal.
4165         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
4166         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
4167         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
4168         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
4169         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
4170         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
4171         * dse.c (scan_insn): Use insn_could_throw_p.
4172         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
4173         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
4174         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
4175         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
4176         EXC_PTR_EXPR or FILTER_EXPR.
4177         (tree_expr_nonzero_warnv_p): Likewise.
4178         * function.h: Include vecprim.h, not varray.h
4179         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
4180         move ttype_data and ehspec_data members to struct eh_status; change
4181         action_record_data member to a VEC.
4182         * gcse.c (hash_scan_set): Use can_throw_internal.
4183         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
4184         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
4185         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
4186         (block_may_fallthru): Don't handle RESX_EXPR.
4187         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
4188         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
4189         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
4190         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
4191         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
4192         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
4193         (gimple_size): Likewise.
4194         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
4195         (gimple_build_resx): Use gimple_build_with_ops.
4196         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
4197         (is_gimple_val): Likewise.
4198         (is_gimple_stmt): Remove RESX_EXPR.
4199         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
4200         (GIMPLE_RESX): Reorder with other EH constructs.
4201         * gimple.h (struct gimple_statement_eh_mnt): New.
4202         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
4203         (gimple_eh_filter_must_not_throw): Remove.
4204         (gimple_eh_filter_set_must_not_throw): Remove.
4205         (gimple_eh_must_not_throw_fndecl): New.
4206         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
4207         (is_gimple_resx): New.
4208         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
4209         Don't copy EH_FILTER_MUST_NOT_THROW.
4210         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
4211         * ipa-inline.c (estimate_function_body_sizes): Don't try to
4212         handle must_not_throw_labels specially.
4213         * ipa-pure-const.c (check_call): Update debug statement for LP.
4214         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
4215         * ipa-utils.c (get_base_var): Likewise.
4216         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
4217         * lower-subreg.c (move_eh_region_note): Remove.
4218         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
4219         * omp-low.c (new_omp_context): Update for eh_lp_nr.
4220         (create_task_copyfn): Likewise.
4221         (maybe_catch_exception): Use gimple_build_eh_filter.
4222         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
4223         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
4224         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
4225         and pass_lower_resx.
4226         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
4227         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
4228         can_throw_internal, can_nonlocal_goto.
4229         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
4230         copy_reg_eh_region_note_forward.
4231         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
4232         (emit_output_reload_insns): Likewise.
4233         (copy_eh_notes): Remove.
4234         * rtl.def (RESX): Remove.
4235         * rtl.h: Update declarations.
4236         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
4237         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
4238         (update_eh_label): Remove.
4239         (cleanup_dead_labels_eh): New.
4240         (cleanup_deal_labels): Use it instead of update_eh_label.
4241         (gimple_merge_blocks): Update landing pad data structure when
4242         removing a landing pad label.
4243         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
4244         test; handle GIMPLE_EH_MUST_NOT_THROW.
4245         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
4246         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
4247         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
4248         (verify_stmt): Likewise.  Verify landing pads.
4249         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
4250         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
4251         (struct move_stmt_d): Add eh_map.
4252         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
4253         (move_stmt_r): Remap eh region numbers in builtin calls,
4254         resx and eh_dispatch.
4255         (move_block_to_fn): Remove eh_offset parameter.  Use
4256         maybe_duplicate_eh_stmt_fn.
4257         (find_outermost_region_in_block): Operate on eh_region pointers
4258         instead of region numbers.
4259         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
4260         duplicate_eh_regions.
4261         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
4262         test earlier.  Disallow EH landing pads.
4263         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
4264         * tree-flow.h: Update declarations.
4265         (struct tree_ann_common_d): Replace rn with lp_nr.
4266         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
4267         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
4268         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
4269         resx and eh_dispatch.
4270         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
4271         (copy_edges_for_bb): Use make_eh_dispatch_edges.
4272         (copy_cfg_body): Expect eh_map instead of eh_region_offset
4273         from duplicate_eh_regions.
4274         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
4275         update RESX; handle EH_DISPATCH.
4276         (expand_call_inline): Set eh_lp_nr, not eh_region.
4277         (maybe_inline_call_in_expr): Likewise.
4278         * tree-inline.h (struct copy_body_data): Replace eh_region with
4279         eh_lp_nr, eh_region_offset with eh_map.
4280         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
4281         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
4282         * tree-pretty-print.c (dump_generic_node): Don't handle
4283         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
4284         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
4285         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
4286         EXC_PTR_EXPR, FILTER_EXPR.
4287         * tree-ssa-operands.c (get_expr_operands): Likewise.
4288         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
4289         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
4290         (ao_ref_init_from_vn_reference): Likewise.
4291         * tree-ssa-sink.c (statement_sink_location): Likewise.
4292         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
4293         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
4294         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
4295         EXC_PTR_EXPR, FILTER_EXPR.
4296         (is_exception_related): Remove.
4297         (compute_avail): Don't call it.
4298         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
4299         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
4300         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
4301         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
4302         Build EH builtins.
4303         (build_resx): Remove.
4304         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
4305         * tree.h: Update declarations.
4306         (EH_FILTER_MUST_NOT_THROW): Remove.
4307         (struct tree_label_decl): Add eh_landing_pad_nr.
4308         (EH_LANDING_PAD_NR): New.
4309         * value-prof.c (gimple_ic): Tidy variable names.  Update for
4310         landing pad numbers.
4311         (gimple_stringop_fixed_value): Tidy variable names.  Assert
4312         that neither call stmt can throw.
4313         * vecprim.h (uchar): New.
4314         (VEC(uchar,heap), VEC(uchar,gc)): New.
4315
4316         * c-common.c (c_define_builtins): Update call to
4317         build_common_builtin_nodes.
4318         * c-parser.c (c_parse_file): Don't call
4319         default_init_unwind_resume_libfunc.
4320
4321 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
4322
4323         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
4324         (mips_cprestore_address_p): Likewise.
4325         (mips_save_gp_to_cprestore_slot): Likewise.
4326         (mips_restore_gp): Rename to...
4327         (mips_restore_gp_from_cprestore_slot): ...this.
4328         (mips_must_initialize_gp_p): Declare.
4329         (mips_emit_save_slot_move): Likewise.
4330         (mips_output_load_label): Return nothing.
4331         (mips_eh_uses): Declare.
4332         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
4333         (TARGET_CPRESTORE_DIRECTIVE): New macro.
4334         (TARGET_ABSOLUTE_JUMPS): Likewise.
4335         (EH_USES): Likewise.
4336         (FIRST_PSEUDO_REGISTER): Update comment.
4337         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
4338         (MIPS_CALL): ...here.
4339         (REGISTER_NAMES): Add $cprestore.
4340         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
4341         Add load_label_length, has_inflexible_gp_insn_p,
4342         has_flexible_gp_insn_p, must_initialize_gp_p and
4343         must_restore_gp_when_clobbered_p.
4344         (mips_expand_call): Don't generate split instructions here.
4345         (mips_split_call): Update the call to mips_restore_gp after
4346         the above name change.
4347         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
4348         (mips_find_gp_ref): New function.
4349         (mips_insn_has_inflexible_gp_ref_p): Likewise.
4350         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
4351         (mips_insn_has_flexible_gp_ref_p): Likewise.
4352         (mips_cfun_has_flexible_gp_ref_p): Likewise.
4353         (mips_function_has_gp_insn): Delete.
4354         (mips_global_pointer): Drop the df_regs_ever_live_p check.
4355         Use the new functions above.  Only return INVALID_REGNUM
4356         for TARGET_ABSOLUTE_JUMPS.
4357         (mips_must_initialize_gp_p): New function.
4358         (mips_get_cprestore_base_and_offset): New function, extracted from...
4359         (mips_cprestore_slot): ...here.  Take a bool parameter.
4360         (mips_cfun_has_cprestore_slot_p): New function.
4361         (mips_cprestore_address_p): Likewise.
4362         (mips_save_gp_to_cprestore_slot): Likewise.
4363         (mips_restore_gp): Rename to...
4364         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
4365         epilogue_completed.  Update the call to mips_cprestore_slot.
4366         Test cfun->machine->must_restore_gp_when_clobbered_p.
4367         (mips_direct_save_slot_move_p): New function.
4368         (mips_emit_save_slot_move): Likewise.
4369         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
4370         of cfun->machine->global_pointer.
4371         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
4372         (mips_save_reg): Use mips_emit_save_slot_move.
4373         (mips_expand_prologue): Set must_initialize_gp_p.
4374         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
4375         for all cprestore saves.  Emit a use_cprestore instruction after
4376         setting up the cprestore slot.
4377         (mips_restore_reg): Use mips_emit_save_slot_move.
4378         (mips_process_load_label): New function.
4379         (mips_load_label_length): Likewise.
4380         (mips_output_load_label): Don't return asm: output it here instead.
4381         Use mips_process_load_label.
4382         (mips_adjust_insn_length): Adjust the length of branch instructions
4383         that have length MAX_PIC_BRANCH_LENGTH.
4384         (mips_output_conditional_branch): Update the call to
4385         mips_output_load_label.  Assume the branch target is OPERANDS[0]
4386         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
4387         (mips_output_order_conditional_branch): Swap the meaning of
4388         OPERANDS[0] and OPERANDS[1].
4389         (mips_variable_issue): Don't count ghost instructions.
4390         (mips_expand_ghost_gp_insns): New function.
4391         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
4392         (mips_output_mi_thunk): Set must_initialize_gp_p.
4393         (mips_eh_uses): New function.
4394         * config/mips/predicates.md (cprestore_save_slot_operand)
4395         (cprestore_load_slot_operand): New predicates.
4396         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
4397         (UNSPEC_MOVE_GP): Likewise.
4398         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
4399         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
4400         (CPRESTORE_SLOT_REGNUM): New register.
4401         (MAX_PIC_BRANCH_LENGTH): New constant.
4402         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
4403         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
4404         branches.  Fix commentary.
4405         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
4406         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
4407         Change type to "ghost".
4408         (loadgp_absolute_<mode>): Likewise.
4409         (loadgp_rtp_<mode>): Likewise.
4410         (copygp_mips16): Likewise.
4411         (loadgp_blockage): Remove redundant mode attribute.
4412         (potential_cprestore): New instruction.
4413         (cprestore): Turn into an unspec set.
4414         (use_cprestore): New instruction.
4415         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
4416         (*branch_fp_inverted): Likewise.
4417         (*branch_order<mode>): Likewise.
4418         (*branch_order<mode>_inverted): Likewise.
4419         (*branch_equality<mode>): Likewise.
4420         (*branch_equality<mode>_inverted): Likewise.
4421         (*branch_bit<bbv><mode>): Likewise.
4422         (*branch_bit<bbv><mode>_inverted): Likewise.
4423         (*branch_equality<mode>_mips16): Remove redundant mode.
4424         (jump): Turn into a define_expand.
4425         (*jump_absolute): New instruction.
4426         (*jump_pic): Likewise.
4427         (*jump_mips16): Rename previously-unnamed pattern.  Remove
4428         redundant mode attribute.
4429         (restore_gp): Split on epilogue_completed rather than
4430         reload_completed.  Change type to "ghost".
4431         (move_gp<mode>): New instruction.
4432         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
4433         Remove redundant mode attribute.
4434         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
4435         (bc1any4f, bc1any2t, bc1any2f): Likewise.
4436         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
4437
4438 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
4439
4440         PR target/41210
4441         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
4442         are returned in the same register (vs34 or v2) that Altivec vector
4443         types are returned in.
4444         (rs6000_libcall_value): Ditto.
4445
4446         PR target/41331
4447         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
4448         instead of explicit addsi3/adddi3 calls.
4449         (rs6000_split_multireg_move): Ditto.
4450         (rs6000_emit_allocate_stack): Ditto.
4451         (rs6000_emit_prologue): Ditto.
4452         (rs6000_output_mi_thunk): Ditto.
4453
4454         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
4455         size is 64 bits if we can use 64-bit registers.
4456
4457 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
4458
4459         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
4460         symbols.
4461
4462         From Jie Zhang <jie.zhang@analog.com>:
4463         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
4464         save FP and RETS with saveall attribute.
4465         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
4466         with saveall attribute.
4467
4468         * config/bfin/bfin.c (bfin_expand_builtin,
4469         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
4470         operands.
4471
4472         From Jie Zhang <jie.zhang@analog.com>:
4473         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
4474         before use in two places.
4475         * config/bfin/bfin.md (AREG): Define mode iterator.
4476         (reload_in, reload_out): Use mode iterator AREG.
4477
4478 2009-09-14  Richard Guenther  <rguenther@suse.de>
4479
4480         PR middle-end/41350
4481         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
4482         EH personality path.
4483
4484 2009-09-13  Richard Guenther  <rguenther@suse.de>
4485             Rafael Avila de Espindola  <espindola@google.com>
4486
4487         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
4488         (LANG_HOOKS_EH_PERSONALITY): Likewise.
4489         (LANG_HOOKS_INITIALIZER): Adjust.
4490         (lhd_pass_through_t): Declare.
4491         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
4492         eh_personality.
4493         * langhooks.c (lhd_pass_through_t): New function.
4494         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
4495         dwarf2out_begin_prologue): Use personality from current_function_decl.
4496         * expr.h (get_personality_function): Declare.
4497         * expr.c (get_personality_function): New function.
4498         (build_personality_function): Likewise.
4499         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
4500         (eh_personality_libfunc): Remove.
4501         * optabs.c (build_libfunc_function): New function split out from ...
4502         (init_one_libfunc): ... here.
4503         * tree.h (DECL_FUNCTION_PERSONALITY): New.
4504         (tree_function_decl): Add personality.
4505         (lhd_gcc_personality): Declare.
4506         (build_personality_function): Likewise.
4507         * tree.c (gcc_eh_personality_decl): New.
4508         (lhd_gcc_personality): New function.
4509         * except.h (lang_eh_runtime_type): Remove.
4510         (enum eh_personality_kind): New.
4511         (build_personality_function): Declare.
4512         (function_needs_eh_personality): Declare.
4513         * except.c (lang_eh_runtime_type): Remove.
4514         (function_needs_eh_personality): New function.
4515         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
4516         (sjlj_emit_function_enter, output_function_exception_table):
4517         Use personality from current_function_decl.
4518         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
4519         * tree-inline.c (tree_can_inline_p): Do not inline across different
4520         EH personalities.
4521         (expand_call_inline): Likewise.  Adjust the callers EH personality.
4522         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
4523         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
4524         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
4525         (c-parser.o): Likewise
4526         * c-tree.h (c_eh_initialized_p): Remove.
4527         (c_maybe_initialize_eh): Likewise.
4528         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
4529         (finish_decl): Don't call c_maybe_initialize_eh.
4530         (c_eh_initialized_p): Remove.
4531         (c_maybe_initialize_eh): Likewise.
4532         * c-parser.c (c_parser_omp_construct): Likewise.
4533         (c_parse_file): Initialize exception handling.
4534
4535 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
4536
4537         * config.gcc (tm_file): Remove i386/biarch32.h
4538         for i?86-w64-mingw* case.
4539         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
4540         support.
4541         * config.host: Set for x64 mingw the option
4542         use_long_long_for_widest_fast_int to yes.
4543
4544 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
4545
4546         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
4547         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
4548         (dbxout_begin_function): Likewise.
4549         * final.c (dwarf2_debug_info_emitted_p): New predicate.
4550         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
4551         set on the function.
4552         (final_end_function): Likewise.
4553         (final_scan_insn): Likewise.
4554         (rest_of_handle_final): Likewise.
4555         * varasm.c (assemble_start_function): Likewise.
4556         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
4557
4558 2009-09-12  Jason Merrill  <jason@redhat.com>
4559
4560         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
4561         * opts.c (common_handle_option): constify.
4562
4563 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
4564
4565         * doc/install.texi (avr): Remove obsolete reference site.
4566
4567 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
4568
4569         * doc/install.texi (Binaries): Adjust AIX link.
4570
4571 2009-09-12  Akim Demaille  <demaille@gostai.com>
4572
4573         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
4574         Use an imperative sentence.
4575
4576 2009-09-11  Richard Henderson  <rth@redhat.com>
4577
4578         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
4579         structure-name and has-tree-operands arguments; update all entries.
4580         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
4581         update all entries.
4582         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
4583         (gsstruct_code_size): New.
4584         (gss_for_code_): New.
4585         (gss_for_code): Remove.
4586         (gimple_size): Rewrite using gsstruct_code_size.
4587         (gimple_statement_structure): Move to gimple.h.
4588         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
4589         (gss_for_code, gimple_statement_structure): New.
4590         (gimple_ops): Use new arrays; tidy.
4591
4592 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4593
4594         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
4595         operand to be a PLUS expression.
4596         * config/pa/pa.c (pa_secondary_reload): Likewise.
4597
4598 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
4599
4600         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
4601
4602         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
4603         XEXP (in_rtx, 8).
4604
4605 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
4606
4607         From Jie Zhang <jie.zhang@analog.com>:
4608         * doc/extend.texi (node Function Attributes): Document l2
4609         function attribute.
4610         (node Blackfin Variable Attributes): Document l2 variable attributes.
4611
4612 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
4613
4614         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
4615         to match the system compiler's configuration at inflection point.
4616         Add comment to remark a remaining difference with system compiler.
4617
4618         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
4619         * configure: Regenerate.
4620
4621 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
4622
4623         From Jie Zhang <jie.zhang@analog.com>:
4624         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
4625         (bfin_handle_l2_attribute): New.
4626         (bfin_attribute_table): Add l2 attribute.
4627
4628 2009-09-11  Michael Matz  <matz@suse.de>
4629
4630         PR middle-end/41275
4631         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
4632         on the local_decls list.
4633
4634 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
4635
4636         PR debug/41276
4637         PR debug/41307
4638         * cselib.c (cselib_expand_value_rtx_cb): Document callback
4639         interface.
4640         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
4641         for VALUEs, to implement the documented interface.
4642         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
4643         Adjust for VALUEs and anything else, to implement the
4644         documented interface.
4645
4646 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
4647
4648         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
4649         with actual SPE/paired vector modes before using 64-bit alignment.
4650         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
4651
4652 2009-09-10  DJ Delorie  <dj@redhat.com>
4653
4654         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
4655         emitted.
4656
4657         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
4658         * config/mep/mep.c (mep_legitimate_constant_p): New.
4659         * config/mep/mep-protos.h: Prototype it.
4660
4661 2009-09-10  Richard Henderson  <rth@redhat.com>
4662
4663         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
4664
4665 2009-09-10  Jason Merrill  <jason@redhat.com>
4666
4667         * tree.c (chain_index): New fn.
4668         * tree.h: Declare it.
4669
4670 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4671
4672         * config/sol2-c.c (cmn_err_length_specs): Initialize
4673         scalar_identity_flag.
4674
4675 2009-09-10  Richard Henderson  <rth@redhat.com>
4676
4677         * tree.h (struct tree_decl_common): Move align member earlier;
4678         move label_decl_uid member ...
4679         (struct tree_label_decl): ... here.
4680         (LABEL_DECL_UID): Update to match.
4681
4682         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
4683         not TDF_DETAILS.
4684
4685         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
4686         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
4687
4688         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
4689         dest_prev if the edge is complex.
4690
4691         * tree-cfg.c (is_ctrl_stmt): Use a switch.
4692
4693         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
4694         loop latch tests earlier.
4695
4696         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
4697         before GIMPLE_RETURN, not after its predecessor; insert
4698         before GIMPLE_RESX.
4699
4700         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
4701         gimple_seq_empty_p to test for no PHI nodes.
4702         * tree-cfg.c (split_critical_edges): Likewise.
4703
4704         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
4705
4706 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
4707
4708         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
4709         introduced by the VTA branch merge.
4710
4711 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
4712
4713         * ira-conflicts.c: Use fputs or putc instead of fprintf
4714         where appropriate.
4715         * cfg.c: Ditto.
4716         * toplev.c: Ditto.
4717         * tree-switch-conversion.c: Ditto.
4718
4719 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
4720
4721         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
4722         introduced by the VTA branch merge.
4723
4724 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
4725
4726         Revert:
4727         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
4728
4729         PR rtl-optimization/39779
4730         * expr.c (convert_modes): Return when mode == oldmode after
4731         CONST_INTs are processed.
4732
4733 2009-09-10  Nick Clifton  <nickc@redhat.com>
4734
4735         * config/mep/mep.c (mep_encode_section_info): Copy weakness
4736         attribute and referring decl when creating renamed symbol.
4737
4738 2009-09-10  Richard Guenther  <rguenther@suse.de>
4739
4740         PR middle-end/41257
4741         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
4742         reachable nodes.
4743         (cgraph_finalize_compilation_unit): Compute reachability
4744         before emitting thunks.  Properly process aliases before
4745         possibly removing unreachable nodes.
4746
4747 2009-09-10  Richard Guenther  <rguenther@suse.de>
4748
4749         PR middle-end/41254
4750         * tree.c (struct free_lang_data_d): Add worklist member.
4751         (find_decls_types_r): Push onto the worklist instead of recursing.
4752         Handle TREE_BINFOs properly.
4753         (find_decls_types): New function wrapped around find_decls_types_r
4754         to process the worklist.
4755         (find_decls_types_in_eh_region): Use it.
4756         (find_decls_types_in_node): Likewise.
4757         (find_decls_types_in_var): Likewise.
4758         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
4759         * tree.h (RECORD_OR_UNION_TYPE_P): New.
4760         (AGGREGATE_TYPE_P): Adjust.
4761
4762 2009-09-09  Jason Merrill  <jason@redhat.com>
4763
4764         * configure.ac: Check glibc version even if we have an in-tree
4765         assembler.
4766
4767 2009-09-09  Anthony Green  <green@moxielogic.com>
4768
4769         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
4770         the constant 0 when appropriate.
4771         * config/moxie/constraints.md: Add constraint O.
4772
4773         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
4774         to pass up to 6 32-bit argument values in registers.
4775         (moxie_function_arg): Ditto.
4776         (moxie_arg_partial_bytes): Ditto.
4777         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
4778         (REG_PARM_STACK_SPACE): Ditto.
4779         (FUNCTION_ARG_REGNO_P): Ditto.
4780
4781         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
4782         instruction to allocate stack space.
4783
4784 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
4785
4786         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
4787         unnecessarily stringent constraints.  Fix address
4788         calculation in the splitters.
4789
4790 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
4791
4792         PR rtl-optimization/39779
4793         * expr.c (convert_modes): Return when mode == oldmode after
4794         CONST_INTs are processed.
4795
4796 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
4797
4798         PR/41315
4799         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
4800         (ix86_expand_prologue): Take frame.padding0 into logic of
4801         to_allocate checks.
4802         (ix86_expand_epilogue): Likewise.
4803
4804 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
4805
4806         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
4807         New variables.
4808         (SHLIB_LINK, SHLIB_INSTALL): Use them.
4809         * config/t-slibgcc-libgcc: New file.
4810         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
4811
4812 2009-09-09  Martin Jambor  <mjambor@suse.cz>
4813
4814         PR tree-optimization/41089
4815         * tree-sra.c (find_var_candidates): Do not consider va_lists in
4816         early SRA.
4817
4818 2009-09-09  Richard Henderson  <rth@redhat.com>
4819
4820         * gimple.h (CASE_GIMPLE_OMP): New.
4821         (is_gimple_omp): Use it.
4822         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
4823         (verify_gimple_debug): Likewise.
4824
4825 2009-09-09  Richard Guenther  <rguenther@suse.de>
4826
4827         PR tree-optimization/41101
4828         * tree-ssa-pre.c (maximal_set): Remove.
4829         (compute_antic_aux): Treat the maximal set as implicitly all ones.
4830         Defer all blocks we didn't visit at least one successor.
4831         (add_to_exp_gen): Do not add to the maximal set.
4832         (make_values_for_phi): Likewise.
4833         (compute_avail): Likewise.
4834         (init_pre): Do not allocate the maximal set.
4835         (execute_pre): Do not dump it.
4836
4837 2009-09-09  Martin Jambor  <mjambor@suse.cz>
4838
4839         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
4840         an SSA_NAME rather than a is_gimple_variable.
4841
4842 2009-09-09  Richard Guenther  <rguenther@suse.de>
4843
4844         PR middle-end/41317
4845         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
4846         code dealing with plain pointer bases.
4847         (maybe_fold_offset_to_reference): Likewise.
4848         (maybe_fold_stmt_addition): Adjust.
4849
4850 2009-09-09  Richard Guenther  <rguenther@suse.de>
4851
4852         * tree.c (free_lang_data_in_type): Do not free the type variant
4853         chains.
4854         (free_lang_data): Merge char_type_node with its properly signed
4855         variant.
4856         (pass_ipa_free): Collect after freeing language specific data.
4857
4858 2009-09-09  Michael Matz  <matz@suse.de>
4859
4860         PR middle-end/41268
4861         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
4862         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
4863         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
4864         to reflect reality.
4865
4866 2009-09-08  DJ Delorie  <dj@redhat.com>
4867
4868         * config/mep/mep.c (conversions[]): Add "ml" pattern.
4869
4870 2009-09-04  Jason Merrill  <jason@redhat.com>
4871
4872         * tree.c (tree_find_value): Remove.
4873         * tree.h: Remove prototype.
4874         * varasm.c (assemble_external): Use value_member instead.
4875
4876 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
4877
4878         * toplev.c (process_options): Choose default debugging type when
4879         gtoggle enables debug info and type is unset.
4880
4881 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
4882
4883         PR debug/41276
4884         PR debug/41307
4885         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
4886         invalid subreg.
4887
4888 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
4889
4890         * configure: Rebuilt with modified libtool.m4.
4891
4892 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
4893
4894         PR debug/41229
4895         PR debug/41291
4896         PR debug/41300
4897         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
4898
4899 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
4900
4901         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
4902         (remove_statement): Likewise.
4903         (rewrite_use_nonlinear_expr): Adjust.
4904         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
4905         * tree-ssa.c (release_defs_bitset): ... this.  New.
4906         * tree-flow.h (release_defs_bitset): Declare.
4907
4908 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
4909
4910         PR debug/41232
4911         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
4912         in the middle block.
4913
4914 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
4915
4916         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
4917         via intptr_t to long type.
4918         (insert_operand_rank): Cast long type via intptr_t to
4919         pointer type.
4920         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
4921         pointer to scalar.
4922         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
4923         from pointer to unsigned via uintptr_t.
4924
4925         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
4926         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
4927         and HAVE_INTPTR_T.
4928         * configure: Regenerated.
4929         * config.in: Regenerated
4930         * system.h (stdint.h): Add include.
4931         (inttypes.h): Likewise.
4932         * Makefile.in (aclocal): Add config/stdint.m4.
4933         * aclocal.m4: Regenerated.
4934
4935 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
4936
4937         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
4938         variables.
4939         (note_np_check_stores): New function.
4940         (harmless_null_pointer_p): New function.
4941         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
4942         changed.  Take into account whether we're in the shadow of a condjump
4943         that tested NP_REG for NULL.
4944         Lose all code that tested for SEQUENCEs.
4945         (workaround_speculation): Avoid inserting NOPs for loads that are
4946         either always executed or a NULL pointer.
4947
4948 2009-09-08  Jan Hubicka  <jh@suse.cz>
4949
4950         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
4951         * params.def (early-inlining-insns): Likewise.
4952
4953 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
4954
4955         PR rtl-optimization/41239
4956         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
4957         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
4958         lists.
4959         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
4960         across calls, as the calls might not always return normally.
4961         (call_may_noreturn_p): New function.
4962         (deps_analyze_insn): Update last_function_call_may_noreturn list.
4963         (init_deps): Initialize it.
4964         (remove_from_deps): Also remove calls from
4965         last_function_call_may_noreturn list.
4966
4967 2009-09-07  Richard Henderson  <rth@redhat.com>
4968
4969         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
4970         more VR->OPERANDS than LHS operands.  Free LHS before returning.
4971
4972 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
4973
4974         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
4975         (attr "addrtype"): New member "spreg".
4976         Use it if mem_spfp_address_operand is true for the address.
4977         (attr "type"): New entry "stall".
4978         (cpu_unit "load"): New.
4979         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
4980         "load".
4981         (insn_reservation "loadsp"): New.
4982         (insn_reservation "load_stall1"): New.
4983         (insn_reservation "load_stall3"): New.
4984         (stall): New insn.
4985         * config/bfin/predicates.md (const1_operand, const3_operand): New.
4986         (mem_p_address_operand): Exclude stack and frame pointer based
4987         addresses.
4988         (mem_spfp_address_operand): New; match them here.
4989         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
4990         (bfin_reorg): Call it if scheduling insns.
4991         (bfin_gen_bundles): Remove dummy insns created by
4992         add_sched_insns_for_speculation.
4993
4994         From Jie Zhang <jie.zhang@analog.com>:
4995         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
4996         bfin_si_revision, bfin_workarounds): Move these ...
4997         * config/bfin/bfin.h: ... here.
4998
4999         From Mike Frysinger  <michael.frysinger@analog.com>
5000         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
5001         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
5002         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
5003         bf547m, bf548m, and bf549m.
5004         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
5005         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
5006         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
5007         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
5008         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
5009         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
5010         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
5011         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
5012         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
5013         bf542m, bf544m, bf547m, bf548m, and bf549m.
5014
5015         From Jie Zhang <jie.zhang@analog.com>:
5016         * config/bfin/predicates.md (p_register_operand): New predicate.
5017         (dp_register_operand): New predicate.
5018         * config/bfin/bfin-protos.h (WA_05000074): Define.
5019         (ENABLE_WA_05000074): Define.
5020         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
5021         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
5022         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
5023         (define_attr addrtype): Allow load/store register to be P register.
5024         (define_attr storereg): New.
5025         (define_cpu_unit anomaly_05000074): New.
5026         (define_insn_reservation dsp32shiftimm): New.
5027         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
5028         (define_insn_reservation loadp): Cannot use slot2.
5029         (define_insn_reservation loadsp): Cannot use slot2.
5030         (define_insn_reservation storep): Cannot use slot2. Does not
5031         apply when working around 05000074.
5032         (define_insn_reservation storep_anomaly_05000074): New.
5033         (define_insn_reservation storei): Does not apply when working
5034         around 05000074.
5035         (define_insn_reservation storei_anomaly_05000074): New.
5036         (define_attr length): Add dsp32shiftimm case.
5037         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
5038         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
5039         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
5040         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
5041         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
5042
5043 2009-09-07  Martin Jambor  <mjambor@suse.cz>
5044
5045         PR middle-end/41282
5046         * tree-sra.c (create_artificial_child_access): Return NULL if
5047         build_ref_for_offset fails.
5048         (propagate_subacesses_accross_link): Allow build_ref_for_offset
5049         and create_artificial_child_access to fail.
5050
5051 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
5052
5053         PR c++/41214
5054         * unwind-dw2.c (uw_init_context_1): Mark noinline.
5055         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
5056         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
5057
5058 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
5059
5060         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
5061         block, ensure it has an exit edge.  Emit a barrier after a jump.
5062
5063 2009-09-07  Nick Clifton  <nickc@redhat.com>
5064
5065         * gcc.c (this_is_linker_script): New variable.  Like
5066         this_is_library_file but for the %T constructor.
5067         (end_going_arg): If this_is_linker_script is set then locate the
5068         script and insert a --script switch before it
5069         (do_spec_2): Initialise this_is_linker_script.
5070         (do_spec_1): Likewise.  Handle %T construct.
5071         (eval_spec_function): Preserve this_is_linker_script.
5072         * doc/invoke.texi: Document %T construct in spec files.
5073         * config/m32c/m32c.h (LIB_SPEC): Use it.
5074
5075 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5076
5077         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
5078         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
5079         when volatile flag is set.
5080         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
5081
5082 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
5083
5084         PR bootstrap/41241
5085         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
5086         (combine_stack_adjustments_for_block): Allow insns between stack
5087         adjustments and stores with corresponding pre-(dec|inc)rement or
5088         pre-modify operation.
5089
5090 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
5091
5092         PR bootstrap/41241
5093         * combine-stack-adj.c (struct csa_memlist): Rename to...
5094         (struct csa_reflist): ... this.  Rename mem field to ref.
5095         (free_csa_memlist): Rename to...
5096         (free_csa_reflist): ... this.
5097         (record_one_stack_memref): Rename to...
5098         (record_one_stack_ref): ... this.  Handle also REG_P.
5099         (try_apply_stack_adjustment): Handle also REG_P.
5100         (struct record_stack_memrefs_data): Rename to...
5101         (struct record_stack_refs_data): ... this.  Rename memlist field to
5102         reflist.
5103         (record_stack_memrefs): Rename to...
5104         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
5105         subexpressions instead of failing when a MEM contains SP references.
5106         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
5107         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
5108
5109 2009-09-06  Richard Guenther  <rguenther@suse.de>
5110
5111         PR middle-end/41144
5112         * tree.c (build_array_type): Do not record types marked
5113         with structural equality in the canonical type hashtable.
5114
5115 2009-09-06  Richard Guenther  <rguenther@suse.de>
5116
5117         PR middle-end/41261
5118         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
5119
5120 2009-09-05  Richard Guenther  <rguenther@suse.de>
5121
5122         PR middle-end/41181
5123         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
5124
5125 2009-09-05  Richard Guenther  <rguenther@suse.de>
5126
5127         PR debug/41273
5128         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
5129
5130 2009-09-05  Richard Guenther  <rguenther@suse.de>
5131
5132         PR middle-end/41271
5133         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
5134         before comparing function argument types.
5135
5136 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
5137
5138         PR target/41024
5139         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
5140         the assembler.
5141
5142 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
5143
5144         Revert:
5145         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
5146
5147         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
5148         locators before emit_insn is called.
5149
5150 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
5151
5152         PR bootstrap/41241
5153         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
5154         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
5155         (reginfo_init): Don't call allocate_reg_info.
5156
5157 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
5158
5159         PR target/41262
5160         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
5161         NONDEBUG_INSN_P instead of INSN_P.
5162
5163 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
5164
5165         PR debug/41225
5166         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
5167
5168 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
5169
5170         PR target/41252
5171         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
5172         pattern of the split.
5173
5174 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
5175
5176         * toplev.c (process_options): Move setter of flag_var_tracking
5177         before other tests that depend on it.  Move down setter of
5178         flag_rename_registers.  Don't enable var-tracking-assignments
5179         by default if selective scheduling is enabled.  Warn if both
5180         are enabled.
5181
5182 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
5183
5184         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
5185         comment.  Use switch statement to catch overlaps between rtx
5186         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
5187         (IS_DECL_CODE): ... here. Remove.
5188         (check_value_is_not_decl): Remove.
5189         (dv_from_decl, dv_from_value): Check after conversion.
5190
5191 2009-09-04  Richard Guenther  <rguenther@suse.de>
5192
5193         PR middle-end/41257
5194         * (cgraph_finalize_compilation_unit): Move finalizing aliases
5195         after emitting tunks.  Move emitting thunks and ctors from ...
5196         (cgraph_optimize): ... here.  Remove redundant
5197         cgraph_analyze_functions.
5198         * varasm.c (find_decl_and_mark_needed): Remove no longer
5199         necessary check.
5200         (finish_aliases_1): Adjust check for thunk aliases.
5201
5202 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
5203
5204         * config/arm/arm.md (ctzsi2): Added braces
5205         to avoid warning that broke booststrap.
5206
5207 2009-09-04  Martin Jambor  <mjambor@suse.cz>
5208
5209         PR tree-optimization/41112
5210         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
5211         handle variable-bounded arrays.
5212         (expr_with_var_bounded_array_refs_p): New function.
5213         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
5214
5215 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
5216
5217         * config/s390/2097.md: Removed two incorrect bypasses.
5218         (z10_fsimpdf): Fixed latency.
5219         (z10_fhex): New insn_reservation.
5220         (z10_floaddf): Fixed latency.
5221         (z10_floadsf): Fixed latency.
5222         (z10_ftrunctf): Fixed latency.
5223         (z10_ftruncdf): Fixed latency.
5224         * config/s390/s390.c (z10_cost): Fixed values.
5225         (s390_adjust_priority): Added z10 path.
5226         * config/s390/s390.md (type): Added fhex.
5227         (*mov<mode>_64dfp): Updated type attribute.
5228         (*mov<mode>_64): Updated type attribute.
5229         (*mov<mode>_31): Updated type attribute.
5230         (*mov<mode>"): Likewise.
5231         * config/s390/2084.md (x_fsimpdf): Updated condition.
5232
5233 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
5234
5235         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
5236         RTXs in the predicate for operand 1.
5237
5238 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
5239
5240         * config/arm/arm.md (UNSPEC_RBIT): New constant.
5241         (rbitsi2): New insn.
5242         (ctzsi2): New expand.
5243         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
5244
5245 2009-09-03  Martin Jambor  <mjambor@suse.cz>
5246
5247         * tree-sra.c (duplicate_expr_for_different_base): Removed.
5248         (create_artificial_child_access): Use build_ref_for_offset instead
5249         of duplicate_expr_for_different_base.
5250         (propagate_subacesses_accross_link): Likewise.
5251
5252 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
5253
5254         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
5255         of INSN_P.
5256         (mips16e_collect_argument_saves): Skip debug instructions.
5257         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
5258         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
5259         (r10k_insert_cache_barriers): Likewise.
5260         (mips_reorg_process_insns): Likewise.
5261
5262 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
5263
5264         PR bootstrap/41241
5265         * ira.c (update_equiv_reg): Remove check on class likely spill.
5266
5267 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
5268
5269         PR debug/41236
5270         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
5271         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
5272         it or SUBREG.
5273
5274         PR debug/41238
5275         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
5276         the stack slot if it is passed by invisible reference.
5277         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
5278         by invisible reference.
5279
5280 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
5281
5282         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
5283         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
5284         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
5285         0.
5286         * config/bfin/sync.md: New file.
5287         * config/bfin/bfin.md: Include it.
5288         (UNSPEC_ATOMIC): New.
5289         (UNSPEC_ONES): Provide a unique number.
5290
5291         From Jie Zhang <jie.zhang@analog.com>:
5292         * config/bfin/bfin.c (ret_regs): New.
5293         (must_save_fp_p): Don't return true because of frame_pointer_needed.
5294         (must_save_rets_p): New.
5295         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
5296         current_function_is_leaf.
5297         (do_link): Likewise.
5298         (do_unlink): Likewise.
5299         (expand_interrupt_handler_prologue): Use ret_regs array.
5300         (expand_interrupt_handler_epilogue): Use ret_regs array and
5301         pass return register to gen_return_internal.
5302         (bfin_expand_epilogue): Pass return register to
5303         gen_return_internal.
5304         (bfin_expand_call): Explicitly clobber RETS.
5305         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
5306         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
5307         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
5308         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
5309         RETS.
5310         (return_internal): Take a reg rtx rather than the register number.
5311
5312 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
5313
5314         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
5315         when comparing against estimated_loop_iterations_int return.
5316
5317 2009-09-03  Richard Guenther  <rguenther@suse.de>
5318
5319         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
5320         eh_personality_libfunc.
5321
5322 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
5323
5324         * tree-parloops.c (separate_decls_in_region): Add space.
5325
5326 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
5327
5328         * tree-parloops.c (separate_decls_in_region): Change the condition
5329         checking if there are reductions in the loop.
5330
5331 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
5332
5333         PR tree-optimization/38275
5334         * tree-parloops.c (parallelize_loops): Replace profitability condition
5335         for expected number of iterations.
5336
5337 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
5338
5339         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
5340         (bootstrap-debug): Explain conditions in which it becomes default.
5341         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
5342         make it add to it.
5343
5344 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
5345
5346         * doc/invoke.texi (Optimize Options): Move
5347         -finline-small-functions to the -O2 list.
5348
5349 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
5350
5351         * toplev.c (process_options): Enable var-tracking-assignments
5352         by default if var-tracking is enabled.
5353
5354 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
5355
5356         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
5357         barrier.
5358         * emit-rtl.c (prev_nonnote_insn_bb): New function.
5359         * rtl.h (prev_nonnote_insn_bb): Declare it.
5360
5361 2009-09-03  Diego Novillo  <dnovillo@google.com>
5362
5363         * cgraph.c (cgraph_node_for_decl): New.
5364         * cgraph.h (cgraph_node_for_decl): Declare.
5365         * tree.c (host_integerp): Return 0 if T is NULL.
5366
5367 2009-09-03  Diego Novillo  <dnovillo@google.com>
5368
5369         * tree.h (struct alias_pair): Move from varasm.c.
5370         (alias_pairs): Likewise.
5371         (TYPE_MAXVAL): Define.
5372         (TYPE_MINVAL): Define.
5373         (iterative_hash_host_wide_int): Declare.
5374         (remove_unreachable_alias_pairs): Declare.
5375         * tree-pass.h (pass_ipa_free_lang_data): Declare.
5376         * diagnostic.c (default_diagnostic_starter): Make extern.
5377         (default_diagnostic_finalizer): Make extern.
5378         * diagnostic.h (default_diagnostic_starter): Declare.
5379         (default_diagnostic_finalizer): Declare.
5380         (default_tree_printer): Declare.
5381         * toplev.c (default_tree_printer): Make extern.
5382
5383 2009-09-03  Richard Guenther  <rguenther@suse.de>
5384             Diego Novillo  <dnovillo@google.com>
5385
5386         * cgraph.c (cgraph_add_new_function): Remove gimplification.
5387         * cgraphunit.c (cgraph_expand_function): Do not emit
5388         associated thunks from here.
5389         (cgraph_emit_thunks): New.
5390         (cgraph_optimize): Call it.
5391         Return if any IPA pass finds an error.
5392         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
5393         by thunks.
5394
5395 2009-09-03  Simon Baldwin  <simonb@google.com>
5396             Rafael Espindola  <espindola@google.com>
5397             Richard Guenther  <rguenther@suse.de>
5398             Doug Kwan  <dougkwan@google.com>
5399             Diego Novillo  <dnovillo@google.com>
5400
5401         * tree.c: Include tree-pass.h, langhooks-def.h,
5402         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
5403         (free_lang_data_in_type): New.
5404         (need_assembler_name_p): New.
5405         (free_lang_data_in_block): New.
5406         (free_lang_data_in_decl): New.
5407         (struct free_lang_data_d): New.
5408         (add_tree_to_fld_list): New.
5409         (find_decls_types_r): New.
5410         (get_eh_types_for_runtime): New.
5411         (find_decls_types_in_eh_region): New.
5412         (find_decls_types_in_node): New.
5413         (find_decls_types_in_var): New.
5414         (free_lang_data_in_cgraph): New.
5415         (free_lang_data): New.
5416         (gate_free_lang_data): New.
5417         (pass_ipa_free_lang_data): New.
5418
5419 2009-09-03  Diego Novillo  <dnovillo@google.com>
5420
5421         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
5422         * langhooks.h (struct lang_hooks): Add field free_lang_data.
5423         (lang_hooks): Remove const qualifier.
5424         * ipa.c (cgraph_remove_unreachable_nodes): Call
5425         remove_unreachable_alias_pairs.
5426         * except.c (add_type_for_runtime): Check if TYPE has
5427         already been converted.
5428         (lookup_type_for_runtime): Likewise.
5429         (check_handled): Handle converted types.
5430         * varasm.c (remove_unreachable_alias_pairs): New.
5431         * gimple.c: Include demangle.h.
5432         (gimple_decl_printable_name): New.
5433         (gimple_fold_obj_type_ref): New.
5434         * gimple.h (gimple_decl_printable_name): Declare.
5435         (gimple_fold_obj_type_ref): Declare.
5436         * passes.c (init_optimization_passes): Add pass
5437         pass_ipa_free_lang_data.
5438         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
5439         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
5440
5441 2009-09-03  Diego Novillo  <dnovillo@google.com>
5442
5443         * c-lang.c (lang_hooks): Remove const qualifier.
5444
5445 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
5446
5447         * doc/install.texi (*-*-freebsd*): Update target information.
5448
5449 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
5450
5451         * hard-reg-set.h (call_fixed_regs): Remove.
5452         * reginfo.c (call_fixed_regs): Remove.
5453         (init_reg_sets_1): Remove initialization of call_fixed_regs.
5454         (globalize_reg): Don't use call_fixed_regs.
5455         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
5456         call_fixed_regs.
5457
5458 2009-09-01  Michael Matz  <matz@suse.de>
5459
5460         * expr.h (emit_storent_insn, expand_expr_real_1,
5461         expand_expr_real_2): Declare.
5462         * expr.c (emit_storent_insn, expand_expr_real_1,
5463         expand_expr_real_2): Export.
5464         (store_expr): Setting and evaluating dont_return_target is useless.
5465         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
5466         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
5467         * except.c (expand_resx_expr): Rename to ...
5468         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
5469         * except.h (expand_resx_stmt): Declare.
5470         * stmt.c: Add include gimple.h
5471         (expand_asm_expr): Rename to ...
5472         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
5473         (expand_case): Rewrite to take gimple statement.
5474         * tree.h (expand_asm_stmt): Declare.
5475         (expand_case): Change prototype.
5476         * Makefile.in (stmt.o): Depend on gimple.h.
5477         * builtins.c (expand_builtin_synchronize): Build gimple asm
5478         statement, not an ASM_EXPR.
5479         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
5480         gimple_to_tree, release_stmt_tree): Remove.
5481         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
5482         ggc_free, but hold comparison code and operands separately.
5483         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
5484         (expand_call_stmt, expand_gimple_stmt_1,
5485         expand_gimple_stmt): New helpers.
5486         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
5487         release_stmt_tree.  Call expand_gimple_stmt instead.
5488         (expand_gimple_basic_block): Ditto.
5489
5490         * calls.c (emit_call_1): Don't look at EH regions here, make
5491         fntree parameter useless.
5492         (expand_call): New local rettype for TREE_TYPE(exp), use it
5493         throughout.  Remove local p, use addr instead.
5494         Don't look at EH regions here.
5495
5496 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
5497
5498         * doc/invoke.texi (-fsched-pressure): Document it.
5499         (-fsched-reg-pressure-heuristic): Remove it.
5500
5501         * reload.c (ira.h): Include.
5502         (find_reloads): Add choosing reload on number of small spilled
5503         classes.
5504
5505         * haifa-sched.c (ira.h): Include.
5506         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
5507         saved_reg_pressure, curr_reg_live, saved_reg_live,
5508         region_ref_regs): New variables.
5509         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
5510         initiate_reg_pressure_info, setup_ref_regs,
5511         initiate_bb_reg_pressure_info, save_reg_pressure,
5512         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
5513         functions.
5514         (setup_insn_reg_pressure_info): New function.
5515         (rank_for_schedule): Add pressure checking and insn issue time.
5516         Remove comparison of insn reg weights.
5517         (ready_sort): Set insn reg pressure info.
5518         (update_register_pressure, setup_insn_max_reg_pressure,
5519         update_reg_and_insn_max_reg_pressure,
5520         sched_setup_bb_reg_pressure_info): New functions.
5521         (schedule_insn): Add code for printing and updating reg pressure info.
5522         (find_set_reg_weight, find_insn_reg_weight): Remove.
5523         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
5524         (debug_ready_list): Print reg pressure info.
5525         (schedule_block): Ditto.  Check insn issue time.
5526         (sched_init): Set up sched_pressure_p.  Allocate and set up some
5527         reg pressure related info.
5528         (sched_finish): Free some reg pressure related info.
5529         (fix_tick_ready): Make insn always ready if pressure_p.
5530         (init_h_i_d): Don't call find_insn_reg_weight.
5531         (haifa_finish_h_i_d): Free insn reg pressure info.
5532
5533         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
5534         ira_memory_move_cost, ira_class_hard_regs,
5535         ira_class_hard_regs_num, ira_no_alloc_regs,
5536         ira_available_class_regs, ira_reg_class_cover_size,
5537         ira_reg_class_cover, ira_class_translate): Move to ira.h.
5538
5539         * ira-lives.c (single_reg_class): Check mode to find how many
5540         registers are necessary for operand.
5541         (ira_implicitly_set_insn_hard_regs): New.
5542
5543         * common.opt (fsched-pressure): New options.
5544         (fsched-reg-pressure-heuristic): Remove.
5545
5546         * ira.c (setup_eliminable_regset): Rename to
5547         ira_setup_eliminable_regset.  Make it external.
5548         (expand_reg_info): Pass cover class to setup_reg_classes.
5549         (ira): Call resize_reg_info instead of allocate_reg_info.
5550
5551         * sched-deps.c: Include ira.h.
5552         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
5553         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
5554         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
5555         mark_insn_hard_regno_birth, mark_insn_reg_birth,
5556         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
5557         mark_insn_reg_store, mark_insn_reg_clobber,
5558         setup_insn_reg_pressure_info): New.
5559         (sched_analyze_1): Update implicit_reg_pending_uses.
5560         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
5561         Use them to create dependencies.  Set insn reg uses and pressure
5562         info.  Process reg_pending_uses in one place.
5563         (free_deps): Free implicit sets.
5564         (remove_from_deps): Remove implicit sets if necessary.  Check
5565         implicit sets when clearing reg_last_in_use.
5566         (init_deps_global): Clear implicit_reg_pending_clobbers and
5567         implicit_reg_pending_uses.
5568
5569         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
5570         ira_memory_move_cost, ira_class_hard_regs,
5571         ira_class_hard_regs_num, ira_no_alloc_regs,
5572         ira_available_class_regs, ira_reg_class_cover_size,
5573         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
5574         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
5575         ira_implicitly_set_insn_hard_regs): New prototypes.
5576
5577         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
5578         cost_elements_num): New variables.
5579         (allocno_costs, total_costs): Rename to costs and
5580         total_allocno_costs.
5581         (COSTS_OF_ALLOCNO): Rename to COSTS.
5582         (allocno_pref): Rename to pref.
5583         (allocno_pref_buffer): Rename to pref_buffer.
5584         (common_classes): Rename to regno_cover_class.
5585         (COST_INDEX): New.
5586         (record_reg_classes): Set allocno attributes only if allocno_p.
5587         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
5588         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
5589         and COSTS_OF_ALLOCNO.
5590         (print_costs): Rename to print_allocno_costs.
5591         (print_pseudo_costs): New.
5592         (process_bb_node_for_costs): Split into 2 functions with new
5593         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
5594         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
5595         new parameter dump_file.  Use cost_elements_num instead of
5596         ira_allocnos_num.  Make one iteration if preferred classes were
5597         already calculated for scheduler.  Make 2 versions of code
5598         depending on allocno_p.
5599         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
5600         regno_cover_class and COSTS instead of common_classes and
5601         COSTS_OF_ALLOCNO.
5602         (init_costs, finish_costs): New.
5603         (ira_costs): Set up allocno_p and cost_elements_num.  Call
5604         init_costs and finish_costs.
5605         (ira_set_pseudo_classes): New.
5606
5607         * rtl.h (allocate_reg_info): Remove.
5608         (resize_reg_info): Change return type.
5609         (reg_cover_class): New.
5610         (setup_reg_classes): Add new parameter.
5611
5612         * sched-int.h (struct deps_reg): New member implicit_sets.
5613         (sched_pressure_p, sched_regno_cover_class): New external definitions.
5614         (INCREASE_BITS): New macro.
5615         (struct reg_pressure_data, struct reg_use_data): New.
5616         (struct _haifa_insn_data): Remove reg_weight.  Add members
5617         reg_pressure, reg_use_list, reg_set_list, and
5618         reg_pressure_excess_cost_change.
5619         (struct deps): New member implicit_sets.
5620         (pressure_p): New variable.
5621         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
5622         (struct reg_pressure_data, struct reg_use_data): New.
5623         (INSN_REG_WEIGHT): Remove.
5624         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
5625         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
5626         (sched_init_region_reg_pressure_info,
5627         sched_setup_bb_reg_pressure_info): New prototypes.
5628
5629         * reginfo.c (struct reg_pref): New member coverclass.
5630         (reg_cover_class): New function.
5631         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
5632         (reg_info_size): New variable.
5633         (allocate_reg_info): Make static.  Setup reg_info_size.
5634         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
5635         (setup_reg_classes): Add a new parameter.  Setup cover class too.
5636
5637         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
5638         the dependencies.
5639
5640         * sched-rgn.c (deps_join): Set up implicit_sets.
5641         (schedule_region): Set up region and basic blocks pressure
5642         relative info.
5643
5644         * passes.c (init_optimization_passes): Move
5645         pass_subregs_of_mode_init before pass_sched.
5646
5647 2009-09-02  Martin Jambor  <mjambor@suse.cz>
5648
5649         * tree-sra.c (struct access): New field grp_hint.
5650         (dump_access): Dump grp_hint.
5651         (sort_and_splice_var_accesses): Set grp_hint if a group is read
5652         multiple times.
5653         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
5654         those which have been specifically read and somehow written to.
5655         (propagate_subacesses_accross_link): Set grp_hint of right child and
5656         also possibly of the left child.
5657
5658 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
5659
5660         * tree-object-size.c (addr_object_size): Always use object_size_type
5661         0 or 2 when determining the pointer pointed object size.
5662
5663 2009-09-02  Richard Guenther  <rguenther@suse.de>
5664
5665         Revert
5666         2009-08-31  Richard Guenther  <rguenther@suse.de>
5667
5668         * builtins.c (fold_builtin_memory_op): Use the alias oracle
5669         to query if the memory regions for memmove overlap.
5670         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
5671         asserts on pointers, instead deal with odd trees.
5672         (ptr_derefs_may_alias_p): Likewise.
5673         (refs_may_alias_p_1): Constructor bases also never alias.
5674
5675 2009-08-01  Christian Bruel  <christian.bruel@st.com>
5676
5677         Revert:
5678         2009-07-31  Christian Bruel  <christian.bruel@st.com>
5679         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
5680
5681 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
5682
5683         * doc/invoke.texi (-fvar-tracking-assignments): New.
5684         (-fvar-tracking-assignments-toggle): New.
5685         (-fdump-final-insns=file): Mark filename as optional.
5686         (--param min-nondebug-insn-uid): New.
5687         (-gdwarf-@{version}): Mention version 4.
5688         * opts.c (common_handle_option): Accept it.
5689         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
5690         * regrename.c (regrename_optimize): Drop last.  Don't count debug
5691         insns as uses.  Don't reject change because of debug insn.
5692         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
5693         from the chain starter, and check for inexact matches in DEBUG_INSNS.
5694         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
5695         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
5696         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
5697         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
5698         * doc/gimple.texi (is_gimple_debug): New.
5699         (gimple_debug_bind_p): New.
5700         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
5701         * doc/install.texi (bootstrap-debug): More details.
5702         (bootstrap-debug-big, bootstrap-debug-lean): Document.
5703         (bootstrap-debug-lib): More details.
5704         (bootstrap-debug-ckovw): Update.
5705         (bootstrap-time): New.
5706         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
5707         (insert_phi_nodes_for): Insert debug stmts.
5708         (rewrite_stmt): Take iterator.  Insert debug stmts.
5709         (rewrite_enter_block): Adjust.
5710         (maybe_replace_use_in_debug_stmt): New.
5711         (rewrite_update_stmt): Use it.
5712         (mark_use_interesting): Return early for debug stmts.
5713         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
5714         stmts before replacing stmt.
5715         (move_computations_stmt): Likewise.
5716         * ira-conflicts.c (add_copies): Skip debug insns.
5717         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
5718         (regstat_bb_compute_ri): Skip debug insns.
5719         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
5720         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
5721         check_loop_closed_ssa_stmt): Skip debug stmts.
5722         * tree-tailcall.c (find_tail_calls): Likewise.
5723         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
5724         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
5725         (build_var_debug_value_stat): Declare.
5726         (build_var_debug_value): Define.
5727         (target_for_debug_bind): Declare.
5728         * reload.c (find_equiv_reg): Skip debug insns.
5729         * rtlanal.c (reg_used_between_p): Skip debug insns.
5730         (side_effects_p): Likewise.
5731         (canonicalize_condition): Likewise.
5732         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
5733         insns never depend on debug insns.
5734         (create_ddg_dep_no_link): Likewise.
5735         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
5736         Don't add inter-loop dependencies for debug insns.
5737         (build_intra_loop_deps): Likewise.
5738         (create_ddg): Count debug insns.
5739         * ddg.h (struct ddg::num_debug): New.
5740         (num_backargs): Pair up with previous int field.
5741         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
5742         -fcompare-debug-second.
5743         * final.c (get_attr_length_1): Skip debug insns.
5744         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
5745         * gcc.c (invoke_as): Call compare-debug-dump-opt.
5746         (driver_self_specs): Map -fdump-final-insns to
5747         -fdump-final-insns=..
5748         (get_local_tick): New.
5749         (compare_debug_dump_opt_spec_function): Test for . argument and
5750         compute output name.  Compute temp output spec without flag name.
5751         Compute -frandom-seed.
5752         (OPT): Undef after use.
5753         * cfgloopanal.c (num_loop_insns): Skip debug insns.
5754         (average_num_loop_insns): Likewise.
5755         * params.h (MIN_NONDEBUG_INSN_UID): New.
5756         * gimple.def (GIMPLE_DEBUG): New.
5757         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
5758         * auto-inc-dec.c (merge_in_block): Skip debug insns.
5759         (merge_in_block): Fix whitespace.
5760         * toplev.c (flag_var_tracking): Update comment.
5761         (flag_var_tracking_assignments): New.
5762         (flag_var_tracking_assignments_toggle): New.
5763         (process_options): Don't open final insns dump file if we're not
5764         going to write to it.  Compute defaults for var_tracking.
5765         * df-scan.c (df_insn_rescan_debug_internal): New.
5766         (df_uses_record): Handle debug insns.
5767         * haifa-sched.c (ready): Initialize n_debug.
5768         (contributes_to_priority): Skip debug insns.
5769         (dep_list_size): New.
5770         (priority): Use it.
5771         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
5772         they're ready.  Disregard previous debug insns to make decisions.
5773         (queue_insn): Never queue debug insns.
5774         (ready_add, ready_remove_first, ready_remove): Count debug insns.
5775         (schedule_insn): Don't reject debug insns because of issue rate.
5776         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
5777         (queue_to_ready): Skip and discount debug insns.
5778         (choose_ready): Let debug insns through.
5779         (schedule_block): Check boundary debug insns.  Discount debug
5780         insns, schedule them early.  Adjust whitespace.
5781         (set_priorities): Check for boundary debug insns.
5782         (add_jump_dependencies): Use dep_list_size.
5783         (prev_non_location_insn): New.
5784         (check_cfg): Use it.
5785         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
5786         stmts.
5787         (remove_unused_ivs): Reset debug stmts.
5788         * modulo-sched.c (const_iteration_count): Skip debug insns.
5789         (res_MII): Discount debug insns.
5790         (loop_single_full_bb_p): Skip debug insns.
5791         (sms_schedule): Likewise.
5792         (sms_schedule_by_order): Likewise.
5793         (ps_has_conflicts): Likewise.
5794         * caller-save.c (refmarker_fn): New.
5795         (save_call_clobbered_regs): Replace regs with saved mem in
5796         debug insns.
5797         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
5798         Call refmarker_fn mark for hardregnos.
5799         (mark_reg_as_referenced): New.
5800         (replace_reg_with_saved_mem): New.
5801         * ipa-pure-const.c (check_stmt): Skip debug stmts.
5802         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
5803         searching back.
5804         (cse_extended_basic_block): Skip debug insns.
5805         (count_reg_usage): Likewise.
5806         (is_dead_reg): New, split out of...
5807         (set_live_p): ... here.
5808         (insn_live_p): Use it for debug insns.
5809         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
5810         (execute_optimize_stdarg): Likewise.
5811         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
5812         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
5813         changes in debug stmts as changes.
5814         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
5815         (moveup_expr): Don't move across debug insns.  Don't move
5816         debug insn if it would create a bookkeeping block.
5817         (moveup_expr_cached): Don't use cache for debug insns that
5818         are heads of blocks.
5819         (compute_av_set_inside_bb): Skip debug insns.
5820         (sel_rank_for_schedule): Schedule debug insns first.  Remove
5821         dead code.
5822         (block_valid_for_bookkeeping_p); Support lax searches.
5823         (create_block_for_bookkeeping): Adjust block numbers when
5824         encountering debug-only blocks.
5825         (find_place_for_bookkeeping): Deal with debug-only blocks.
5826         (generate_bookkeeping_insn): Accept no place to insert.
5827         (remove_temp_moveop_nops): New argument full_tidying.
5828         (prepare_place_to_insert): Deal with debug insns.
5829         (advance_state_on_fence): Debug insns don't start cycles.
5830         (update_boundaries): Take fence as argument.  Deal with
5831         debug insns.
5832         (schedule_expr_on_boundary): No full_tidying on debug insns.
5833         (fill_insns): Deal with debug insns.
5834         (track_scheduled_insns_and_blocks): Don't count debug insns.
5835         (need_nop_to_preserve_insn_bb): New, split out of...
5836         (remove_insn_from_stream): ... this.
5837         (fur_orig_expr_not_found): Skip debug insns.
5838         * rtl.def (VALUE): Move up.
5839         (DEBUG_INSN): New.
5840         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
5841         (nearest_common_dominator_of_uses): Take debug_stmts argument.
5842         Set it if debug stmts are found.
5843         (statement_sink_location): Skip debug stmts.  Propagate
5844         moving defs into debug stmts.
5845         * ifcvt.c (first_active_insn): Skip debug insns.
5846         (last_active_insns): Likewise.
5847         (cond_exec_process_insns): Likewise.
5848         (noce_process_if_block): Likewise.
5849         (check_cond_move_block): Likewise.
5850         (cond_move_convert_if_block): Likewise.
5851         (block_jumps_and_fallthru_p): Likewise.
5852         (dead_or_predicable): Likewise.
5853         * dwarf2out.c (debug_str_hash_forced): New.
5854         (find_AT_string): Add comment.
5855         (gen_label_for_indirect_string): New.
5856         (get_debug_string_label): New.
5857         (AT_string_form): Use it.
5858         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
5859         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
5860         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
5861         several operations that cannot be represented with DWARF opcodes.
5862         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
5863         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
5864         (dwarf2out_var_location): Take during-call mark into account.
5865         (output_indirect_string): Update comment.  Output if there are
5866         label and references.
5867         (prune_indirect_string): New.
5868         (prune_unused_types): Call it if debug_str_hash_forced.
5869         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
5870         (dw_long_long_const): Remove.
5871         (struct dw_val_struct): Change val_long_long type to rtx.
5872         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
5873         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
5874         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
5875         component instead of HOST_BITS_PER_LONG.
5876         (output_loc_operands): Likewise.  For const8* assert
5877         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
5878         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
5879         rather than HOST_BITS_PER_LONG is >= 64.
5880         (add_AT_long_long): Remove val_hi and val_lo arguments, add
5881         val_const_double.
5882         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
5883         HOST_BITS_PER_LONG for dw_val_class_long_long.
5884         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
5885         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
5886         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
5887         DW_OP_stack_value.
5888         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
5889         Handle DW_OP_implicit_value.
5890         (extract_int): Move prototype earlier.
5891         (mem_loc_descriptor): For SUBREG punt if inner
5892         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
5893         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
5894         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
5895         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
5896         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
5897         instead of Pmode size.
5898         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
5899         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
5900         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
5901         (concat_loc_descriptor, concatn_loc_descriptor,
5902         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
5903         (add_location_or_const_value_attribute): Likewise.  For single
5904         location loc_lists attempt to use add_const_value_attribute
5905         for constant decls.  Add DW_AT_const_value even if
5906         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
5907         in its expression.
5908         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
5909         (control_flow_insn_p): Likewise.
5910         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
5911         (separate_decls_in_region_debug_bind): New.
5912         (separate_decls_in_region): Process debug bind stmts afterwards.
5913         * recog.c (verify_changes): Handle debug insns.
5914         (extract_insn): Likewise.
5915         (peephole2_optimize): Skip debug insns.
5916         * dse.c (scan_insn): Skip debug insns.
5917         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
5918         Pass it on.
5919         (setup_id_for_insn): Handle debug insns.
5920         (maybe_tidy_empty_bb): Adjust whitespace.
5921         (tidy_control_flow): Skip debug insns.
5922         (sel_remove_insn): Adjust for debug insns.
5923         (sel_estimate_number_of_insns): Skip debug insns.
5924         (create_insn_rtx_from_pattern): Handle debug insns.
5925         (create_copy_of_insn_rtx): Likewise.
5926         * sel-sched-.h (sel_bb_end): Declare.
5927         (sel_bb_empty_or_nop_p): New.
5928         (get_all_loop_exits): Use it.
5929         (_eligible_successor_edge_p): Likewise.
5930         (return_nop_to_pool): Adjust.
5931         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
5932         * ira-lives.c (process_bb_node_lives): Skip debug insns.
5933         * gimple-pretty-print.c (dump_gimple_debug): New.
5934         (dump_gimple_stmt): Use it.
5935         (dump_bb_header): Skip gimple debug stmts.
5936         * regmove.c (optimize_reg_copy_1): Discount debug insns.
5937         (fixup_match_2): Likewise.
5938         (regmove_backward_pass): Likewise.  Simplify combined
5939         replacement.  Handle debug insns.
5940         * function.c (instantiate_virtual_regs): Handle debug insns.
5941         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
5942         * print-rtl.h: Include cselib.h.
5943         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
5944         * df.h (df_inns_rescan_debug_internal): Declare.
5945         * gcse.c (alloc_hash_table): Estimate n_insns.
5946         (cprop_insn): Don't regard debug insns as changes.
5947         (bypass_conditional_jumps): Skip debug insns.
5948         (one_pre_gcse_pass): Adjust.
5949         (one_code_hoisting_pass): Likewise.
5950         (compute_ld_motion_mems): Skip debug insns.
5951         (one_cprop_pass): Adjust.
5952         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
5953         (if_convertible_stmt_p): Handle debug stmts.
5954         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
5955         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
5956         * ira-build.c (create_bb_allocnos): Skip debug insns.
5957         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
5958         (has_single_use): Likewise.
5959         (single_imm_use): Likewise.
5960         (num_imm_uses): Likewise.
5961         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
5962         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
5963         (create_outofssa_var_map): Likewise.
5964         * lower-subreg.c (adjust_decomposed_uses): New.
5965         (resolve_debug): New.
5966         (decompose_multiword_subregs): Use it.
5967         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
5968         * emit-rtl.c: Include params.h.
5969         (cur_debug_insn_uid): Define.
5970         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
5971         (copy_rtx_if_shared_1): Handle debug insns.
5972         (reset_used_flags): Likewise.
5973         (set_used_flags): LIkewise.
5974         (get_max_insn_count): New.
5975         (next_nondebug_insn): New.
5976         (prev_nondebug_insn): New.
5977         (make_debug_insn_raw): New.
5978         (emit_insn_before_noloc): Handle debug insns.
5979         (emit_jump_insn_before_noloc): Likewise.
5980         (emit_call_insn_before_noloc): Likewise.
5981         (emit_debug_insn_before_noloc): New.
5982         (emit_insn_after_noloc): Handle debug insns.
5983         (emit_jump_insn_after_noloc): Likewise.
5984         (emit_call_insn_after_noloc): Likewise.
5985         (emit_debug_insn_after_noloc): Likewise.
5986         (emit_insn_after): Take loc from earlier non-debug insn.
5987         (emit_jump_insn_after): Likewise.
5988         (emit_call_insn_after): Likewise.
5989         (emit_debug_insn_after_setloc): New.
5990         (emit_debug_insn_after): New.
5991         (emit_insn_before): Take loc from later non-debug insn.
5992         (emit_jump_insn_before): Likewise.
5993         (emit_call_insn_before): Likewise.
5994         (emit_debug_insn_before_setloc): New.
5995         (emit_debug_insn_before): New.
5996         (emit_insn): Handle debug insns.
5997         (emit_debug_insn): New.
5998         (emit_jump_insn): Handle debug insns.
5999         (emit_call_insn): Likewise.
6000         (emit): Likewise.
6001         (init_emit): Take min-nondebug-insn-uid into account.
6002         Initialize cur_debug_insn_uid.
6003         (emit_copy_of_insn_after): Handle debug insns.
6004         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
6005         location of single rhs in place.
6006         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
6007         (floor_sdiv_adjust): New.
6008         (cell_sdiv_adjust): New.
6009         (cell_udiv_adjust): New.
6010         (round_sdiv_adjust): New.
6011         (round_udiv_adjust): New.
6012         (wrap_constant): Moved from cselib.
6013         (unwrap_constant): New.
6014         (expand_debug_expr): New.
6015         (expand_debug_locations): New.
6016         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
6017         debug bind stmts.
6018         (gimple_expand_cfg): Expand debug locations.
6019         * cselib.c: Include tree-pass.h.
6020         (struct expand_value_data): New.
6021         (cselib_record_sets_hook): New.
6022         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
6023         (cselib_clear_table): Move, and implemnet in terms of...
6024         (cselib_reset_table_with_next_value): ... this.
6025         (cselib_get_next_unknown_value): New.
6026         (discard_useless_locs): Don't discard preserved values.
6027         (cselib_preserve_value): New.
6028         (cselib_preserved_value_p): New.
6029         (cselib_preserve_definitely): New.
6030         (cselib_clear_preserve): New.
6031         (cselib_preserve_only_values): New.
6032         (new_cselib_val): Take rtx argument.  Dump it in details.
6033         (cselib_lookup_mem): Adjust.
6034         (expand_loc): Take regs_active in struct.  Adjust.  Silence
6035         dumps unless details are requested.
6036         (cselib_expand_value_rtx_cb): New.
6037         (cselib_expand_value_rtx): Rename and reimplment in terms of...
6038         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
6039         without details.  Copy more subregs.  Try to resolve values
6040         using a callback.  Wrap constants.
6041         (cselib_subst_to_values): Adjust.
6042         (cselib_log_lookup): New.
6043         (cselib_lookup): Call it.
6044         (cselib_invalidate_regno): Don't count preserved values as useless.
6045         (cselib_invalidate_mem): Likewise.
6046         (cselib_record_set): Likewise.
6047         (struct set): Renamed to cselib_set, moved to cselib.h.
6048         (cselib_record_sets): Adjust.  Call hook.
6049         (cselib_process_insn): Reset table when it would be cleared.
6050         (dump_cselib_val): New.
6051         (dump_cselib_table): New.
6052         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
6053         (remove_forwarder_block): Support moving debug stmts.
6054         * cselib.h (cselib_record_sets_hook): Declare.
6055         (cselib_expand_callback): New type.
6056         (cselib_expand_value_rtx_cb): Declare.
6057         (cselib_reset_table_with_next_value): Declare.
6058         (cselib_get_next_unknown_value): Declare.
6059         (cselib_preserve_value): Declare.
6060         (cselib_preserved_value_p): Declare.
6061         (cselib_preserve_only_values): Declare.
6062         (dump_cselib_table): Declare.
6063         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
6064         (try_crossjump_to_edge): Likewise.
6065         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
6066         dominated blocks when debug stmts are present.
6067         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
6068         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
6069         (set_var_live_on_entry): Likewise.
6070         * loop-invariant.c (find_invariants_bb): Skip debug insns.
6071         * cfglayout.c (curr_location, last_location): Make static.
6072         (set_curr_insn_source_location): Don't avoid bouncing.
6073         (get_curr_insn_source_location): New.
6074         (get_curr_insn_block): New.
6075         (duplicate_insn_chain): Handle debug insns.
6076         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
6077         into debug stmts.
6078         * common.opt (fcompare-debug): Move to sort order.
6079         (fdump-unnumbered-links): Likewise.
6080         (fvar-tracking-assignments): New.
6081         (fvar-tracking-assignments-toggle): New.
6082         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
6083         because of debug stmts.
6084         (mark_stmt_if_obviously_necessary): Mark debug stmts.
6085         (eliminate_unnecessary_stmts): Walk dominated blocks before
6086         dominators.
6087         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
6088         * ira.c (memref_used_between_p): Skip debug insns.
6089         (update_equiv_regs): Likewise.
6090         * sched-deps.c (sd_lists_size): Accept empty list.
6091         (sd_init_insn): Mark debug insns.
6092         (sd_finish_insn): Unmark them.
6093         (sd_add_dep): Reject non-debug deps on debug insns.
6094         (fixup_sched_groups): Give debug insns group treatment.
6095         Skip debug insns.
6096         (sched_analyze_reg): Don't mark debug insns for sched before call.
6097         (sched_analyze_2): Handle debug insns.
6098         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
6099         insns.
6100         (deps_analyze_insn): Handle debug insns.
6101         (deps_start_bb): Skip debug insns.
6102         (init_deps): Initialize last_debug_insn.
6103         * tree-ssa.c (target_for_debug_bind): New.
6104         (find_released_ssa_name): New.
6105         (propagate_var_def_into_debug_stmts): New.
6106         (propagate_defs_into_debug_stmts): New.
6107         (verify_ssa): Skip debug bind stmts without values.
6108         (warn_uninialized_vars): Skip debug stmts.
6109         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
6110         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
6111         (rtx_equal_p): Likewise.
6112         * ira-costs.c (scan_one_insn): Skip debug insns.
6113         (process_bb_node_for_hard_reg_moves): Likewise.
6114         * rtl.h (DEBUG_INSN_P): New.
6115         (NONDEBUG_INSN_P): New.
6116         (MAY_HAVE_DEBUG_INSNS): New.
6117         (INSN_P): Accept debug insns.
6118         (RTX_FRAME_RELATED_P): Likewise.
6119         (INSN_DELETED_P): Likewise
6120         (PAT_VAR_LOCATION_DECL): New.
6121         (PAT_VAR_LOCATION_LOC): New.
6122         (PAT_VAR_OCATION_STATUS): New.
6123         (NOTE_VAR_LOCATION_DECL): Reimplement.
6124         (NOTE_VAR_LOCATION_LOC): Likewise.
6125         (NOTE_VAR_LOCATION_STATUS): Likewise.
6126         (INSN_VAR_LOCATION): New.
6127         (INSN_VAR_LOCATION_DECL): New.
6128         (INSN_VAR_LOCATION_LOC): New.
6129         (INSN_VAR_LOCATION_STATUS): New.
6130         (gen_rtx_UNKNOWN_VAR_LOC): New.
6131         (VAR_LOC_UNKNOWN_P): New.
6132         (NOTE_DURING_CALL_P): New.
6133         (SCHED_GROUP_P): Accept debug insns.
6134         (emit_debug_insn_before): Declare.
6135         (emit_debug_insn_before_noloc): Declare.
6136         (emit_debug_insn_beore_setloc): Declare.
6137         (emit_debug_insn_after): Declare.
6138         (emit_debug_insn_after_noloc): Declare.
6139         (emit_debug_insn_after_setloc): Declare.
6140         (emit_debug_insn): Declare.
6141         (make_debug_insn_raw): Declare.
6142         (prev_nondebug_insn): Declare.
6143         (next_nondebug_insn): Declare.
6144         (delegitimize_mem_from_attrs): Declare.
6145         (get_max_insn_count): Declare.
6146         (wrap_constant): Declare.
6147         (unwrap_constant): Declare.
6148         (get_curr_insn_source_location): Declare.
6149         (get_curr_insn_block): Declare.
6150         * tree-inline.c (insert_debug_decl_map): New.
6151         (processing_debug_stmt): New.
6152         (remap_decl): Don't create new mappings in debug stmts.
6153         (remap_gimple_op_r): Don't add references in debug stmts.
6154         (copy_tree_body_r): Likewise.
6155         (remap_gimple_stmt): Handle debug bind stmts.
6156         (copy_bb): Skip debug stmts.
6157         (copy_edges_for_bb): Likewise.
6158         (copy_debug_stmt): New.
6159         (copy_debug_stmts): New.
6160         (copy_body): Copy debug stmts at the end.
6161         (insert_init_debug_bind): New.
6162         (insert_init_stmt): Take id.  Skip and emit debug stmts.
6163         (setup_one_parameter): Remap variable earlier, register debug mapping.
6164         (estimate_num_insns): Skip debug stmts.
6165         (expand_call_inline): Preserve debug_map.
6166         (optimize_inline_calls): Check for no debug_stmts left-overs.
6167         (unsave_expr_now): Preserve debug_map.
6168         (copy_gimple_seq_and_replace_locals): Likewise.
6169         (tree_function_versioning): Check for no debug_stmts left-overs.
6170         Init and destroy debug_map as needed.  Split edges unconditionally.
6171         (build_duplicate_type): Init and destroy debug_map as needed.
6172         * tree-inline.h: Include gimple.h instead of pointer-set.h.
6173         (struct copy_body_data): Add debug_stmts and debug_map.
6174         * sched-int.h (struct ready_list): Add n_debug.
6175         (struct deps): Add last_debug_insn.
6176         (DEBUG_INSN_SCHED_P): New.
6177         (BOUNDARY_DEBUG_INSN_P): New.
6178         (SCHEDULE_DEBUG_INSN_P): New.
6179         (sd_iterator_cond): Accept empty list.
6180         * combine.c (create_log_links): Skip debug insns.
6181         (combine_instructions): Likewise.
6182         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
6183         return value is always unshared.
6184         (struct rtx_subst_pair): New.
6185         (auto_adjust_pair): New.
6186         (propagate_for_debug_subst): New.
6187         (propagate_for_debug): New.
6188         (try_combine): Skip debug insns.  Propagate removed defs into
6189         debug insns.
6190         (next_nonnote_nondebug_insn): New.
6191         (distribute_notes): Use it.  Skip debug insns.
6192         (distribute_links): Skip debug insns.
6193         * tree-outof-ssa.c (set_location_for_edge): Likewise.
6194         * resource.c (mark_target_live_regs): Likewise.
6195         * var-tracking.c: Include cselib.h and target.h.
6196         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
6197         MO_VAL_SET.
6198         (micro_operation_type_name): New.
6199         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
6200         (struct micro_operation_def): Update comments.
6201         (decl_or_value): New type.  Use instead of decls.
6202         (struct emit_note_data_def): Add vars.
6203         (struct attrs_def): Use decl_or_value.
6204         (struct variable_tracking_info_def): Add permp, flooded.
6205         (struct location_chain_def): Update comment.
6206         (struct variable_part_def): Use decl_or_value.
6207         (struct variable_def): Make var_part a variable length array.
6208         (valvar_pool): New.
6209         (scratch_regs): New.
6210         (cselib_hook_called): New.
6211         (dv_is_decl_p): New.
6212         (dv_is_value_p): New.
6213         (dv_as_decl): New.
6214         (dv_as_value): New.
6215         (dv_as_opaque): New.
6216         (dv_onepart_p): New.
6217         (dv_pool): New.
6218         (IS_DECL_CODE): New.
6219         (check_value_is_not_decl): New.
6220         (dv_from_decl): New.
6221         (dv_from_value): New.
6222         (dv_htab_hash): New.
6223         (variable_htab_hash): Use it.
6224         (variable_htab_eq): Support values.
6225         (variable_htab_free): Free from the right pool.
6226         (attrs_list_member, attrs_list_insert): Use decl_or_value.
6227         (attrs_list_union): Adjust.
6228         (attrs_list_mpdv_union): New.
6229         (tie_break_pointers): New.
6230         (canon_value_cmp): New.
6231         (unshare_variable): Return possibly-modified slot.
6232         (vars_copy_1): Adjust.
6233         (var_reg_decl_set): Adjust.  Split out of...
6234         (var_reg_set): ... this.
6235         (get_init_value): Adjust.
6236         (var_reg_delete_and_set): Adjust.
6237         (var_reg_delete): Adjust.
6238         (var_regno_delete): Adjust.
6239         (var_mem_decl_set): Split out of...
6240         (var_mem_set): ... this.
6241         (var_mem_delete_and_set): Adjust.
6242         (var_mem_delete): Adjust.
6243         (val_store): New.
6244         (val_reset): New.
6245         (val_resolve): New.
6246         (variable_union): Adjust.  Speed up merge of 1-part vars.
6247         (variable_canonicalize): Use unshared slot.
6248         (VALUED_RECURSED_INTO): New.
6249         (find_loc_in_1pdv): New.
6250         (struct dfset_merge): New.
6251         (insert_into_intersection): New.
6252         (intersect_loc_chains): New.
6253         (loc_cmp): New.
6254         (canonicalize_loc_order_check): New.
6255         (canonicalize_values_mark): New.
6256         (canonicalize_values_star): New.
6257         (variable_merge_over_cur): New.
6258         (variable_merge_over_src): New.
6259         (dataflow_set_merge): New.
6260         (dataflow_set_equiv_regs): New.
6261         (remove_duplicate_values): New.
6262         (struct dfset_post_merge): New.
6263         (variable_post_merge_new_vals): New.
6264         (variable_post_merge_perm_vals): New.
6265         (dataflow_post_merge_adjust): New.
6266         (find_mem_expr_in_1pdv): New.
6267         (dataflow_set_preserve_mem_locs): New.
6268         (dataflow_set_remove_mem_locs): New.
6269         (dataflow_set_clear_at_call): New.
6270         (onepart_variable_different_p): New.
6271         (variable_different_p): Use it.
6272         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
6273         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
6274         if not needed.
6275         (track_loc_p): Pass it true.
6276         (struct count_use_info): New.
6277         (find_use_val): New.
6278         (replace_expr_with_values): New.
6279         (log_op_type): New.
6280         (use_type): New, partially split out of...
6281         (count_uses): ... this.  Count new micro-ops.
6282         (count_uses_1): Adjust.
6283         (count_stores): Adjust.
6284         (count_with_sets): New.
6285         (VAL_NEEDS_RESOLUTION): New.
6286         (VAL_HOLDS_TRACK_EXPR): New.
6287         (VAL_EXPR_IS_COPIED): New.
6288         (VAL_EXPR_IS_CLOBBERED): New.
6289         (add_uses): Adjust.  Generate new micro-ops.
6290         (add_uses_1): Adjust.
6291         (add_stores): Generate new micro-ops.
6292         (add_with_sets): New.
6293         (find_src_status): Adjust.
6294         (find_src_set_src): Adjust.
6295         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
6296         Handle new micro-ops.  Canonicalize value equivalances.
6297         (vt_find_locations): Compute total size of hash tables for
6298         dumping.  Perform merge for var-tracking-assignments.  Don't
6299         disregard single-block loops.
6300         (dump_attrs_list): Handle decl_or_value.
6301         (dump_variable): Take variable.  Deal with decl_or_value.
6302         (dump_variable_slot): New.
6303         (dump_vars): Use it.
6304         (dump_dataflow_sets): Adjust.
6305         (set_slot_part): New, extended to support one-part variables
6306         after splitting out of...
6307         (set_variable_part): ... this.
6308         (clobber_slot_part): New, split out of...
6309         (clobber_variable_part): ... this.
6310         (delete_slot_part): New, split out of...
6311         (delete_variable_part): .... this.
6312         (check_wrap_constant): New.
6313         (vt_expand_loc_callback): New.
6314         (vt_expand_loc): New.
6315         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
6316         EMIT_NOTE_AFTER_CALL_INSN.
6317         (emit_notes_for_differences_1): Adjust.  Handle values.
6318         (emit_notes_for_differences_2): Likewise.
6319         (emit_notes_for_differences): Adjust.
6320         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
6321         Adjust.  Handle new micro-ops.
6322         (vt_add_function_parameters): Adjust.  Create and bind values.
6323         (vt_initialize): Adjust.  Initialize scratch_regs and
6324         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
6325         operations.  Move some code to count_with_sets and add_with_sets.
6326         (delete_debug_insns): New.
6327         (vt_debug_insns_local): New.
6328         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
6329         cselib.
6330         (var_tracking_main): If var-tracking-assignments is enabled
6331         but var-tracking isn't, delete debug insns and leave.  Likewise
6332         if we exceed limits or fail the stack adjustments tests, and
6333         after all var-tracking processing.
6334         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
6335         (dataflow_set): Add traversed_vars.
6336         (value_chain, const_value_chain): New typedefs.
6337         (value_chain_pool, value_chains): New variables.
6338         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
6339         add_value_chains, add_cselib_value_chains, remove_value_chain,
6340         remove_value_chains, remove_cselib_value_chains): New functions.
6341         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
6342         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
6343         static inlines.
6344         (shared_hash_find_slot_unshare, shared_hash_find_slot,
6345         shared_hash_find_slot_noinsert, shared_hash_find): Update.
6346         (dst_can_be_shared): New variable.
6347         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
6348         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
6349         different from set->vars, look up slot again instead of using the
6350         passed in slot.
6351         (dataflow_set_init): Initialize traversed_vars.
6352         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
6353         lookup if set->vars is shared.  Don't keep slot cleared before
6354         calling unshare_variable.  Unshare set->vars if needed.  Adjust
6355         unshare_variable callers.  Clear dst_can_be_shared if needed.
6356         Even ->refcount == 1 vars must be unshared if set->vars is shared
6357         and var needs to be modified.
6358         (dataflow_set_union): Set traversed_vars during canonicalization.
6359         (VALUE_CHANGED, DECL_CHANGED): Define.
6360         (set_dv_changed, dv_changed_p): New static inlines.
6361         (track_expr_p): Clear DECL_CHANGED.
6362         (dump_dataflow_sets): Set it.
6363         (variable_was_changed): Call set_dv_changed.
6364         (emit_note_insn_var_location): Likewise.
6365         (changed_variables_stack): New variable.
6366         (check_changed_vars_1, check_changed_vars_2): New functions.
6367         (emit_notes_for_changes): Do nothing if changed_variables is
6368         empty.  Traverse changed_variables with check_changed_vars_1,
6369         call check_changed_vars_2 on each changed_variables_stack entry.
6370         (emit_notes_in_bb): Add SET argument.  Just clear it at the
6371         beginning, use it instead of local &set, don't destroy it at the end.
6372         (vt_emit_notes): Call dataflow_set_clear early on all
6373         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
6374         computed set, dataflow_set_clear also VTI(bb)->in when we are
6375         done with the basic block.  Initialize changed_variables_stack,
6376         free it afterwards.  If ENABLE_CHECKING verify that after noting
6377         differences to an empty set value_chains hash table is empty.
6378         (vt_initialize): Initialize value_chains and value_chain_pool.
6379         (vt_finalize): Delete value_chains htab, free value_chain_pool.
6380         (variable_tracking_main): Call dump_dataflow_sets before calling
6381         vt_emit_notes, not after it.
6382         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
6383         (propagate_var_def_into_debug_stmts): Declare.
6384         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
6385         (df_set_note): Reject debug insns.
6386         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
6387         add notes to debug insns.
6388         (df_note_bb_compute): Adjust.  Likewise.
6389         (df_simulate_uses): Skip debug insns.
6390         (df_simulate_initialize_backwards): Likewise.
6391         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
6392         (subst_stack_regs_pat): Reject debug insns.
6393         (convert_regs_1): Handle debug insns.
6394         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
6395         (print-rtl.o): Depend on cselib.h.
6396         (cselib.o): Depend on TREE_PASS_H.
6397         (var-tracking.o): Depend on cselib.h and TARGET_H.
6398         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
6399         (init_ready_list): Skip boundary debug insns.
6400         (add_branch_dependences): Skip debug insns.
6401         (free_block_dependencies): Check for blocks with only debug insns.
6402         (compute_priorities): Likewise.
6403         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
6404         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
6405         all callers.
6406         (gimple_build_debug_bind_stat): New.
6407         (empty_body_p): Skip debug stmts.
6408         (gimple_has_side_effects): Likewise.
6409         (gimple_rhs_has_side_effects): Likewise.
6410         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
6411         (gimple_build_debug_bind_stat): Declare.
6412         (gimple_build_debug_bind): Define.
6413         (is_gimple_debug): New.
6414         (gimple_debug_bind_p): New.
6415         (gimple_debug_bind_get_var): New.
6416         (gimple_debug_bind_get_value): New.
6417         (gimple_debug_bind_get_value_ptr): New.
6418         (gimple_debug_bind_set_var): New.
6419         (gimple_debug_bind_set_value): New.
6420         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
6421         (gimple_debug_bind_reset_value): New.
6422         (gimple_debug_bind_has_value_p): New.
6423         (gsi_next_nondebug): New.
6424         (gsi_prev_nondebug): New.
6425         (gsi_start_nondebug_bb): New.
6426         (gsi_last_nondebug_bb): New.
6427         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
6428         (print_insn): Handle DEBUG_INSN.
6429         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
6430         of first insn prevail.
6431         (first_stmt): Skip debug stmts.
6432         (first_non_label_stmt): Likewise.
6433         (last_stmt): Likewise.
6434         (has_zero_uses_1): New.
6435         (single_imm_use_1): New.
6436         (verify_gimple_debug): New.
6437         (verify_types_in_gimple_stmt): Handle debug stmts.
6438         (verify_stmt): Likewise.
6439         (debug_loop_num): Skip debug stmts.
6440         (remove_edge_and_dominated_blocks): Remove dominators last.
6441         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
6442         (linearize_expr): Likewise.
6443         * config/i386/i386.c (ix86_delegitimize_address): Call
6444         default implementation.
6445         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
6446         (group_barrier_needed): Skip debug insns.
6447         (emit_insn_group_barriers): Likewise.
6448         (emit_all_insn_group_barriers): Likewise.
6449         (ia64_variable_issue): Handle debug insns.
6450         (ia64_dfa_new_cycle): Likewise.
6451         (final_emit_insn_group_barriers): Skip debug insns.
6452         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
6453         def cfa without frame.
6454         (process_set): Likewise.
6455         (process_for_unwind_directive): Pass frame on.
6456         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
6457         (rs6000_delegitimize_address): New.
6458         (rs6000_debug_adjust_cost): Handle debug insns.
6459         (is_microcoded_insn): Likewise.
6460         (is_cracked_insn): Likewise.
6461         (is_nonpipeline_insn): Likewise.
6462         (insn_must_be_first_in_group): Likewise.
6463         (insn_must_be_last_in_group): Likewise.
6464         (force_new_group): Likewise.
6465         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
6466         contains only debug insns.
6467         (rtl_merge_blocks): Skip debug insns.
6468         (purge_dead_edges): Likewise.
6469         (rtl_block_ends_with_call_p): Skip debug insns.
6470         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
6471         (mark_reg_dependencies): Skip debug insns.
6472         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
6473         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
6474         * tree-ssa-threadedge.c
6475         (record_temporary_equivalences_from_stmts): Skip debug stmts.
6476         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
6477         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
6478         (copyprop_hardreg_forward_1): Handle debug insns.
6479         * reload1.c (reload): Skip debug insns.  Replace unassigned
6480         pseudos in debug insns with their equivalences.
6481         (eliminate_regs_in_insn): Skip debug insns.
6482         (emit_input_reload_insns): Skip debug insns at first, adjust
6483         them later.
6484         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
6485         (get_indirect_ref_operands): Pass opf_no_vops on.
6486         (get_expr_operands): Likewise.  Skip debug stmts.
6487         (parse_ssa_operands): Scan debug insns with opf_no_vops.
6488
6489 2009-09-01  Richard Henderson  <rth@redhat.com>
6490
6491         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
6492         stmt_ends_pp_p statements at least once.
6493         * tree-vrp.c (vrp_initialize): Likewise.
6494         (vrp_visit_stmt): Be prepared for non-interesting stmts.
6495
6496 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
6497
6498         PR bootstrap/41205
6499         Fix AIX bootstrap after PR debug/30161
6500         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
6501         that is a GNU extension.
6502         (tmpl_value_parm_die_table): Move the definition of this global
6503         outside #ifdef DWARF2_DEBUGGING_INFO region.
6504
6505 2009-09-01  Richard Guenther  <rguenther@suse.de>
6506
6507         * tree.c (tree_expr_size): New function.
6508         * tree.h (tree_expr_size): Declare.
6509         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
6510         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
6511         * langhooks.c (lhd_expr_size): Remove.
6512         * langhooks.h (struct lang_hooks): Remove expr_size.
6513         * explow.c (expr_size): Use tree_expr_size.
6514         (int_expr_size): Likewise.
6515         * langhooks-def.h (lhd_expr_size): Remove.
6516         (LANG_HOOKS_EXPR_SIZE): Likewise.
6517         (LANG_HOOKS_INITIALIZER): Adjust.
6518
6519 2009-09-01  Richard Guenther  <rguenther@suse.de>
6520
6521         * tree-flow.h (mark_addressable): Move declaration ...
6522         * tree.h (mark_addressable): ... here.
6523         * stmt.c (expand_asm_operands): Use mark_addressable, not
6524         lang_hooks.mark_addressable.
6525         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
6526         LANG_HOOKS_MARK_ADDRESSABLE.
6527         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
6528         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
6529
6530 2009-08-31  Chris Demetriou  <cgd@google.com>
6531
6532         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
6533         vectorize if not TARGET_SSE2.
6534
6535 2009-08-31  DJ Delorie  <dj@redhat.com>
6536
6537         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
6538         registers if no coprocessor is enabled.
6539
6540 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
6541
6542         PR debug/30161
6543         * cgraph.h (cgraph_get_node): Declare ...
6544         * cgraph.c (cgraph_get_node): ... new function.
6545         * dwarf2out.c (gen_generic_params_dies,
6546         generic_parameter_die, tree_add_const_value_attribute_for_decl,
6547         make_ith_pack_parameter_name,
6548         append_entry_to_tmpl_value_parm_die_table,
6549         gen_remaining_tmpl_value_param_die_attribute): New functions.
6550         (gen_subprogram_die): Generate debug info for template parameters
6551         if debug info level is higher than DINFO_LEVEL_TERSE.
6552         Use tree_add_const_value_attribute_for_decl instead of
6553         tree_add_const_value_attribute.
6554         (gen_const_die): Use tree_add_const_value_attribute_for_decl
6555         instead of tree_add_const_value_attribute.
6556         (gen_struct_or_union_type_die): Generate debug
6557         info for template parameters if debug info level is higher than
6558         DINFO_LEVEL_TERSE.
6559         (tree_add_const_value_attribute): Handle integral and pointer
6560         constants. Update comment.
6561         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
6562         (dwarf_attr_name): Support DW_AT_GNU_template_name.
6563         (reference_to_unused): Fix thinko. Remove redundant predicates from
6564         tests.
6565         (tree_add_const_value_attribute): Make this work for constant
6566         expressions only.
6567         tree_add_const_value_attribute_for_decl is to be used for variable
6568         DECLs now.
6569         (add_location_or_const_value_attribute): Use
6570         tree_add_const_value_attribute_for_decl now.
6571         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
6572         DW_TAG_template_value_param DIEs after function DIEs have been
6573         emitted.
6574         * langhooks.h (lang_hooks_for_types): Add
6575         get_argument_pack_elems.
6576         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
6577         (lang_hooks): Added get_innermost_generic_parms,
6578         get_innermost_generic_args.
6579         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
6580         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
6581         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
6582         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
6583
6584 2009-08-31  DJ Delorie  <dj@redhat.com>
6585
6586         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
6587         it once we start generating the prologue or epilogue.
6588         (mep_call_saves_register): If the frame is locked, re-use
6589         cached values.
6590         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
6591         (mep_expand_prologue): Call it.
6592         (mep_expand_epilogue): Likewise.
6593         (mep_start_function): Use the same logic as mep_expand_prologue.
6594         (mep_pass_by_reference): Make logic more readable.
6595         (mep_return_in_memory): Zero-sized objects are passed in memory.
6596         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
6597
6598 2009-08-31  Richard Guenther  <rguenther@suse.de>
6599
6600         * builtins.c (fold_builtin_memory_op): Use the alias oracle
6601         to query if the memory regions for memmove overlap.
6602         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
6603         asserts on pointers, instead deal with odd trees.
6604         (ptr_derefs_may_alias_p): Likewise.
6605         (refs_may_alias_p_1): Constructor bases also never alias.
6606
6607 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
6608
6609         * doc/install.texi (Final install): Adjust reference on where to
6610         order printed manuals.
6611
6612 2009-08-30  Olivier Hainque  <hainque@adacore.com>
6613
6614         * dwarf2out.c (switch_to_frame_table_section): Move
6615         definition prior to first use.
6616
6617 2009-08-30  Richard Guenther  <rguenther@suse.de>
6618
6619         PR tree-optimization/41186
6620         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
6621         (ao_ref_init_from_ptr_and_size): New function.
6622         (ref_maybe_used_by_call_p_1): Be more precise tracking
6623         used ranges for builtin functions.
6624         (ref_maybe_used_by_call_p): Adjust.
6625         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
6626         ranges for builtin functions.
6627         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
6628
6629 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
6630
6631         PR target/41081
6632         * fwprop.c (get_reg_use_in): Delete.
6633         (free_load_extend): New function.
6634         (forward_propagate_subreg): Use it.
6635
6636 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
6637
6638         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
6639
6640 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
6641
6642         PR/41184
6643         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
6644         padding.
6645
6646 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
6647
6648         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
6649         fini or fini_array section.
6650
6651 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6652
6653         * graphite-dependences.c (graphite_legal_transform_bb): Call
6654         pbb_remove_duplicate_pdrs.
6655         * graphite-poly.c (can_collapse_pdr): Removed.
6656         (pdr_find_duplicate): Removed.
6657         (can_collapse_pdrs): New.
6658         (pbb_remove_duplicate_pdrs): New.
6659         (new_poly_dr): Do not look for duplicates.
6660         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
6661         (PBB_PDR_DUPLICATES_REMOVED): New.
6662         (pbb_remove_duplicate_pdrs): Declared.
6663
6664 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6665
6666         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
6667         the strides by multiplying by PDR_NB_REFS.
6668         * graphite-poly.c (can_collapse_pdr): New.
6669         (pdr_find_duplicate): New.
6670         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
6671         Initialize PDR_NB_REFS.
6672         * graphite-poly.h (struct poly_dr): Add field nb_refs.
6673         (PDR_NB_REFS): New.
6674         (new_poly_dr): Number of subscripts is a graphite_dim_t.
6675
6676 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6677
6678         PR middle-end/40965
6679         * graphite-poly.c (apply_poly_transforms): Remove legality test before
6680         any transform.
6681
6682 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6683
6684         * graphite-dependences.c (pddr_original_scattering): Return NULL
6685         for read-read dependence relations.
6686         * graphite-poly.h (enum poly_dr_type): Fix comment.
6687         (pdr_read_p): New.
6688         (pdr_write_p): New.
6689         (pdr_may_write_p): New.
6690
6691 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6692
6693         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
6694         (struct poly_dr): Same.
6695         (new_poly_dr): Same.
6696         * graphite-poly.c (new_poly_dr): Same.
6697         * graphite-dependences.c (dot_deps): Disable call to system.
6698
6699 2009-08-28  Cary Coutant  <ccoutant@google.com>
6700
6701         PR debug/41063
6702         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
6703         struct/union/enum types local to a function.
6704
6705 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
6706             Sebastian Pop  <sebastian.pop@amd.com>
6707
6708         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
6709         pbb_strip_mine_time_depth.  Changed the implementation so that
6710         transformation is expressed as a transformation on
6711         time (scatttering) dimensions.  Also, ensures that the 2d+1
6712         scheduling format is preserved.
6713         (pbb_strip_mine_profitable_p): Profitability is based on the
6714         iteration number of a given time (scattering) dimension,
6715         and not on a original loop depth dimension.
6716         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
6717         (pbb_do_strip_mine): Call psct_dynamic_dim.
6718         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
6719         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
6720         (pbb_nb_dynamic_scattering_transform): New.
6721         (psct_dynamic_dim): New.
6722
6723 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
6724
6725         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
6726         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
6727         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
6728         * graphite-interchange.c (build_linearized_memory_access): Same.
6729         (memory_stride_in_loop): Same.
6730
6731 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6732
6733         * graphite-dependences.c (pddr_original_scattering): New.
6734         (graphite_legal_transform_dr): Call pddr_original_scattering.
6735         (dot_deps_1): New.
6736         (dot_deps): New.
6737         * graphite-dependences.h (dot_deps): Declared.
6738         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
6739         (print_pdr): Print PDR_ID.
6740         * graphite-poly.h (struct poly_dr): Add field id.
6741         (PDR_ID): New.
6742         (pbb_index): New.
6743         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
6744
6745 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6746
6747         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
6748         not delete the original dependence relation.
6749
6750 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6751
6752         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
6753         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
6754         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
6755         (free_poly_ddr): New.
6756         (pddr_is_empty): New.
6757         (dependence_polyhedron_1): Now returns a poly_ddr_p.
6758         (dependence_polyhedron): Same.  Remove useless gcc_assert.
6759         Remove fprintfs.
6760         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
6761         (graphite_carried_dependence_level_k): Call pddr_is_empty.
6762         * graphite-dependences.h (enum poly_dependence_kind): New.
6763         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
6764         (PDRP_SOURCE): Renamed PDDR_SOURCE.
6765         (PDRP_SINK): Renamed PDDR_SINK.
6766         (PDRP_DDP): Renamed PDDR_DDP.
6767         (PDDR_KIND): New.
6768         (free_poly_ddr): Declared.
6769         * graphite-poly.c (new_scop): Use the new hash function names.
6770         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
6771         into original_pddrs.
6772         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
6773
6774 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6775
6776         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
6777         bounds with LT_EXPR to make niter analysis more precise on code
6778         generated by Graphite.
6779
6780 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
6781
6782         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
6783         (graphite_legal_transform_bb): Same.
6784         (poly_drs_may_alias_p): Same.
6785
6786 2009-08-28  Richard Guenther  <rguenther@suse.de>
6787
6788         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
6789
6790 2009-08-28  Jan Beulich  <jbeulich@novell.com>
6791
6792         * config/i386/netware.c: Include langhooks.h.
6793         (i386_nlm_encode_section_info): Simplify.
6794         (netware_override_options): Delete.
6795         * config/i386/netware.h (netware_override_options): Delete
6796         declaration.
6797         (OVERRIDE_OPTIONS): Delete definition.
6798         (SUBTARGET_OVERRIDE_OPTIONS): Define.
6799         (ASM_COMMENT_START): Define.
6800         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
6801
6802 2009-08-28  Jan Beulich  <jbeulich@novell.com>
6803
6804         * configure.ac: For in-tree ld, do a plain version check to
6805         determine whether comdat groups are supported.
6806         * configure: Regenerate.
6807
6808 2009-08-28  Olivier Hainque  <hainque@adacore.com>
6809
6810         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
6811         always defined.  Reflect definition or absence of such for
6812         COLLECT_EXPORT_LIST.  Readability helper.
6813         (scanfilter): New enum, to help control what symbols
6814         are to be considered or ignored by scan_prog_file.
6815         (enum pass): Rename as "scanpass", moved together with scanfilter
6816         prior to scan_prog_file's prototype.
6817         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
6818         Group prototype with the scanpass/scanfilter definitions, factorize
6819         head comments for the several implementations at the prototype.
6820         (main): Reorganize the first pass link control to let AIX
6821         drag only the needed frame tables in executables.  Prevent
6822         frame tables collection during the scan aimed at static ctors.
6823         Pre-link and scan for frame tables later to compensate.
6824         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
6825         A C statement to issue assembly directives that create a reference
6826         to the given DWARF table identifier label from the current function
6827         section.
6828         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
6829         to differentiate first time section entry.  Only emit a .data
6830         tables start identifier label the first time around.
6831         (switch_to_frame_table_section): New function.  Helper for
6832         output_call_frame_info to switch possibly BACK into the eh_frame
6833         or the debug_frame section depending on FOR_EH.
6834         (output_call_frame_info): Use helper to first enter the proper
6835         frame section.
6836         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
6837         emit a link to the frame table start label from each function
6838         section.
6839         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
6840         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
6841         * config/rs6000/rs6000-protos.h: Declare it.
6842         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
6843
6844 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
6845
6846         * config/sh/sh.c (split_branches): Check the result of
6847         next_active_insn.
6848
6849 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
6850
6851         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
6852         using -pthread -fopenmp
6853
6854 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
6855
6856         * doc/service.texi (service directory): Update URL.
6857
6858 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
6859
6860         PR rtl-optimization/40861
6861         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
6862         extract word from a multi-word subreg for negative byte positions.
6863
6864 2009-08-27  Tristan Gingold  <gingold@adacore.com>
6865             Douglas B Rupp  <rupp@gnat.com>
6866
6867         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
6868         (SECTION_VMS_OVERLAY): Define.
6869         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
6870         attribute.
6871         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
6872         for common_object.
6873         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
6874         common_object declarations.
6875         (ia64_section_type_flags): Set section flag for common_object.
6876         * config/ia64/ia64-protos.h
6877         (ia64_vms_output_aligned_decl_common): Declare.
6878         (ia64_vms_elf_asm_named_section): Declare.
6879
6880 2009-08-27  Michael Matz  <matz@suse.de>
6881
6882         * expr.c (expand_expr_real_2): New function taking exploded
6883         unary or binary expression, split out from ...
6884         (expand_expr_real_1): ... here.  Move over all unary/binary
6885         switch parts to above function, in particular these codes:
6886         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
6887         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
6888         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
6889         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
6890         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
6891         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
6892         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
6893         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
6894         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
6895         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
6896         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
6897         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
6898         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
6899         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
6900         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
6901         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
6902         VEC_PACK_FIX_TRUNC_EXPR.
6903         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
6904         full expression.
6905
6906 2009-08-27  Richard Guenther  <rguenther@suse.de>
6907
6908         * gengtype.c (main): Handle uint64_t.
6909         * ipa-utils.c (get_base_var): Indent properly.
6910         * tree-ssa-live.c (debug_scope_block): New function.
6911         * tree-flow.h (debug_scope_block): Declare.
6912         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
6913         * basic-block.h (enum profile_status): Rename to
6914         enum profile_status_d.
6915         (x_profile_status): Adjust type.
6916
6917 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
6918
6919         PR debug/41170
6920         * dwarf2out.c (get_context_die): Declare this static function.
6921         (gen_type_die_with_usage): Make sure a DIE is a generated for
6922         the context of a typedef.
6923
6924 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
6925
6926         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
6927         switch.
6928
6929 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
6930
6931         * config/mips/mips-protos.h (mips_output_sync): Declare.
6932         (mips_sync_loop_insns): Likewise.
6933         (mips_output_sync_loop): Replace first two parameters with an rtx.
6934         * config/mips/mips.c (mips_multi_member): New structure.
6935         (mips_multi_members): New variable.
6936         (mips_multi_start): New function.
6937         (mips_multi_add): Likewise.
6938         (mips_multi_add_insn): Likewise.
6939         (mips_multi_add_label): Likewise.
6940         (mips_multi_last_index): Likewise.
6941         (mips_multi_copy_insn): Likewise.
6942         (mips_multi_set_operand): Likewise.
6943         (mips_multi_write): Likewise.
6944         (mips_print_operand_punctuation): Remove '%|' and '%-'.
6945         (mips_init_print_operand_punct): Update accordingly.
6946         (mips_start_ll_sc_sync_block): New function.
6947         (mips_end_ll_sc_sync_block): Likewise.
6948         (mips_output_sync): Likewise.
6949         (mips_sync_insn1_template): Likewise.
6950         (mips_sync_insn2_template): Likewise.
6951         (mips_get_sync_operand): Likewise.
6952         (mips_process_sync_loop): Likewise.
6953         (mips_output_sync_loop): Use mips_process_sync_loop.
6954         (mips_sync_loop_insns): New function.
6955         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
6956         (MIPS_COMPARE_AND_SWAP_12): Likewise.
6957         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
6958         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
6959         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
6960         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
6961         (MIPS_SYNC_OLD_OP_12): Likewise.
6962         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
6963         (MIPS_SYNC_NEW_OP_12): Likewise.
6964         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
6965         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
6966         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
6967         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
6968         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
6969         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
6970         * config/mips/mips.md (sync_mem): New attribute.
6971         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
6972         (sync_exclusive_mask, sync_required_oldval): Likewise.
6973         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
6974         (sync_release_barrier): Likewise.
6975         (length): Handle sync loops.
6976         (sync): Use mips_output_sync.
6977         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
6978         (sync_compare_and_swap<mode>): Set the new sync_* attributes
6979         and use mips_output_sync_loop.
6980         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
6981         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
6982         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
6983         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
6984         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
6985         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
6986         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
6987         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
6988         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
6989
6990 2009-08-26  Richard Guenther  <rguenther@suse.de>
6991
6992         PR middle-end/41163
6993         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
6994         the types to not match.
6995         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
6996         verification.
6997         * tree-ssa.c (useless_type_conversion_p): Conversions to
6998         pointers to unprototyped functions are useless.
6999
7000 2009-08-26  Richard Guenther  <rguenther@suse.de>
7001
7002         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
7003         whole-program condition, prepare to be called for non-globals.
7004         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
7005         params build a representative with known type and track its fields.
7006
7007 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
7008
7009         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
7010         clearing by a taken branch.
7011         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
7012         effectively after bbro pass.
7013         (sync_nand<mode>): Ditto.
7014         (sync_old_<fetchop_name><mode>): Ditto.
7015         (sync_old_nand<mode>): Ditto.
7016         (sync_new_<fetchop_name><mode>): Dito.
7017         (sync_new_nand<mode>): Ditto.
7018         (sync_compare_and_swap<mode>_1): Ditto.
7019         (*sync_compare_and_swap<mode>): Ditto.
7020         (sync_lock_test_and_set<mode>_1): Ditto.
7021         ("sync_lock_test_and_set<mode>): Ditto.
7022
7023 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
7024
7025         * hwint.h (HOST_LONG_FORMAT): New macro
7026         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
7027         Use HOST_PTR_PRINTF.
7028         * system.h (HOST_PTR_PRINTF): Resurrect old macro
7029         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
7030         (HOST_PTR_PRINTF): Document.
7031
7032 2009-08-25 Jan Hubicka  <jh@suse.cz>
7033
7034         * config/i386/bmmintrin.h: Replace by #error.
7035
7036         Revert:
7037         Michael Meissner  <michael.meissner@amd.com>
7038         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
7039         Tony Linthicum  <tony.linthicum@amd.com>
7040
7041         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
7042         (TARGET_ROUND): New macro for the round/ptest instructions which
7043         are shared between SSE4.1 and SSE5.
7044         (OPTION_MASK_ISA_ROUND): Ditto.
7045         (OPTION_ISA_ROUND): Ditto.
7046         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
7047         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
7048
7049         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
7050         (-mfused-madd): New switch to give users control over whether the
7051         compiler optimizes to use the multiply/add SSE5 instructions.
7052
7053         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
7054         (ix86_handle_option): Turn off 3dnow if -msse5.
7055         (override_options): Add SSE5 support.
7056         (print_operand): %Y prints comparison codes for SSE5 com/pcom
7057         instructions.
7058         (ix86_expand_sse_movcc): Add SSE5 support.
7059         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
7060         vector type to the next largest size.
7061         (ix86_expand_sse5_pack): New function to use pperm to pack a
7062         vector type to the next smallest size.
7063         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
7064         (IX86_BUILTIN_FMADDSD): Ditto.
7065         (IX86_BUILTIN_FMADDPS): Ditto.
7066         (IX86_BUILTIN_FMADDPD): Ditto.
7067         (IX86_BUILTIN_FMSUBSS): Ditto.
7068         (IX86_BUILTIN_FMSUBSD): Ditto.
7069         (IX86_BUILTIN_FMSUBPS): Ditto.
7070         (IX86_BUILTIN_FMSUBPD): Ditto.
7071         (IX86_BUILTIN_FNMADDSS): Ditto.
7072         (IX86_BUILTIN_FNMADDSD): Ditto.
7073         (IX86_BUILTIN_FNMADDPS): Ditto.
7074         (IX86_BUILTIN_FNMADDPD): Ditto.
7075         (IX86_BUILTIN_FNMSUBSS): Ditto.
7076         (IX86_BUILTIN_FNMSUBSD): Ditto.
7077         (IX86_BUILTIN_FNMSUBPS): Ditto.
7078         (IX86_BUILTIN_FNMSUBPD): Ditto.
7079         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
7080         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
7081         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
7082         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
7083         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
7084         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
7085         (IX86_BUILTIN_PPERM): Ditto.
7086         (IX86_BUILTIN_PERMPS): Ditto.
7087         (IX86_BUILTIN_PERMPD): Ditto.
7088         (IX86_BUILTIN_PMACSSWW): Ditto.
7089         (IX86_BUILTIN_PMACSWW): Ditto.
7090         (IX86_BUILTIN_PMACSSWD): Ditto.
7091         (IX86_BUILTIN_PMACSWD): Ditto.
7092         (IX86_BUILTIN_PMACSSDD): Ditto.
7093         (IX86_BUILTIN_PMACSDD): Ditto.
7094         (IX86_BUILTIN_PMACSSDQL): Ditto.
7095         (IX86_BUILTIN_PMACSSDQH): Ditto.
7096         (IX86_BUILTIN_PMACSDQL): Ditto.
7097         (IX86_BUILTIN_PMACSDQH): Ditto.
7098         (IX86_BUILTIN_PMADCSSWD): Ditto.
7099         (IX86_BUILTIN_PMADCSWD): Ditto.
7100         (IX86_BUILTIN_PHADDBW): Ditto.
7101         (IX86_BUILTIN_PHADDBD): Ditto.
7102         (IX86_BUILTIN_PHADDBQ): Ditto.
7103         (IX86_BUILTIN_PHADDWD): Ditto.
7104         (IX86_BUILTIN_PHADDWQ): Ditto.
7105         (IX86_BUILTIN_PHADDDQ): Ditto.
7106         (IX86_BUILTIN_PHADDUBW): Ditto.
7107         (IX86_BUILTIN_PHADDUBD): Ditto.
7108         (IX86_BUILTIN_PHADDUBQ): Ditto.
7109         (IX86_BUILTIN_PHADDUWD): Ditto.
7110         (IX86_BUILTIN_PHADDUWQ): Ditto.
7111         (IX86_BUILTIN_PHADDUDQ): Ditto.
7112         (IX86_BUILTIN_PHSUBBW): Ditto.
7113         (IX86_BUILTIN_PHSUBWD): Ditto.
7114         (IX86_BUILTIN_PHSUBDQ): Ditto.
7115         (IX86_BUILTIN_PROTB): Ditto.
7116         (IX86_BUILTIN_PROTW): Ditto.
7117         (IX86_BUILTIN_PROTD): Ditto.
7118         (IX86_BUILTIN_PROTQ): Ditto.
7119         (IX86_BUILTIN_PROTB_IMM): Ditto.
7120         (IX86_BUILTIN_PROTW_IMM): Ditto.
7121         (IX86_BUILTIN_PROTD_IMM): Ditto.
7122         (IX86_BUILTIN_PROTQ_IMM): Ditto.
7123         (IX86_BUILTIN_PSHLB): Ditto.
7124         (IX86_BUILTIN_PSHLW): Ditto.
7125         (IX86_BUILTIN_PSHLD): Ditto.
7126         (IX86_BUILTIN_PSHLQ): Ditto.
7127         (IX86_BUILTIN_PSHAB): Ditto.
7128         (IX86_BUILTIN_PSHAW): Ditto.
7129         (IX86_BUILTIN_PSHAD): Ditto.
7130         (IX86_BUILTIN_PSHAQ): Ditto.
7131         (IX86_BUILTIN_FRCZSS): Ditto.
7132         (IX86_BUILTIN_FRCZSD): Ditto.
7133         (IX86_BUILTIN_FRCZPS): Ditto.
7134         (IX86_BUILTIN_FRCZPD): Ditto.
7135         (IX86_BUILTIN_CVTPH2PS): Ditto.
7136         (IX86_BUILTIN_CVTPS2PH): Ditto.
7137         (IX86_BUILTIN_COMEQSS): Ditto.
7138         (IX86_BUILTIN_COMNESS): Ditto.
7139         (IX86_BUILTIN_COMLTSS): Ditto.
7140         (IX86_BUILTIN_COMLESS): Ditto.
7141         (IX86_BUILTIN_COMGTSS): Ditto.
7142         (IX86_BUILTIN_COMGESS): Ditto.
7143         (IX86_BUILTIN_COMUEQSS): Ditto.
7144         (IX86_BUILTIN_COMUNESS): Ditto.
7145         (IX86_BUILTIN_COMULTSS): Ditto.
7146         (IX86_BUILTIN_COMULESS): Ditto.
7147         (IX86_BUILTIN_COMUGTSS): Ditto.
7148         (IX86_BUILTIN_COMUGESS): Ditto.
7149         (IX86_BUILTIN_COMORDSS): Ditto.
7150         (IX86_BUILTIN_COMUNORDSS): Ditto.
7151         (IX86_BUILTIN_COMFALSESS): Ditto.
7152         (IX86_BUILTIN_COMTRUESS): Ditto.
7153         (IX86_BUILTIN_COMEQSD): Ditto.
7154         (IX86_BUILTIN_COMNESD): Ditto.
7155         (IX86_BUILTIN_COMLTSD): Ditto.
7156         (IX86_BUILTIN_COMLESD): Ditto.
7157         (IX86_BUILTIN_COMGTSD): Ditto.
7158         (IX86_BUILTIN_COMGESD): Ditto.
7159         (IX86_BUILTIN_COMUEQSD): Ditto.
7160         (IX86_BUILTIN_COMUNESD): Ditto.
7161         (IX86_BUILTIN_COMULTSD): Ditto.
7162         (IX86_BUILTIN_COMULESD): Ditto.
7163         (IX86_BUILTIN_COMUGTSD): Ditto.
7164         (IX86_BUILTIN_COMUGESD): Ditto.
7165         (IX86_BUILTIN_COMORDSD): Ditto.
7166         (IX86_BUILTIN_COMUNORDSD): Ditto.
7167         (IX86_BUILTIN_COMFALSESD): Ditto.
7168         (IX86_BUILTIN_COMTRUESD): Ditto.
7169         (IX86_BUILTIN_COMEQPS): Ditto.
7170         (IX86_BUILTIN_COMNEPS): Ditto.
7171         (IX86_BUILTIN_COMLTPS): Ditto.
7172         (IX86_BUILTIN_COMLEPS): Ditto.
7173         (IX86_BUILTIN_COMGTPS): Ditto.
7174         (IX86_BUILTIN_COMGEPS): Ditto.
7175         (IX86_BUILTIN_COMUEQPS): Ditto.
7176         (IX86_BUILTIN_COMUNEPS): Ditto.
7177         (IX86_BUILTIN_COMULTPS): Ditto.
7178         (IX86_BUILTIN_COMULEPS): Ditto.
7179         (IX86_BUILTIN_COMUGTPS): Ditto.
7180         (IX86_BUILTIN_COMUGEPS): Ditto.
7181         (IX86_BUILTIN_COMORDPS): Ditto.
7182         (IX86_BUILTIN_COMUNORDPS): Ditto.
7183         (IX86_BUILTIN_COMFALSEPS): Ditto.
7184         (IX86_BUILTIN_COMTRUEPS): Ditto.
7185         (IX86_BUILTIN_COMEQPD): Ditto.
7186         (IX86_BUILTIN_COMNEPD): Ditto.
7187         (IX86_BUILTIN_COMLTPD): Ditto.
7188         (IX86_BUILTIN_COMLEPD): Ditto.
7189         (IX86_BUILTIN_COMGTPD): Ditto.
7190         (IX86_BUILTIN_COMGEPD): Ditto.
7191         (IX86_BUILTIN_COMUEQPD): Ditto.
7192         (IX86_BUILTIN_COMUNEPD): Ditto.
7193         (IX86_BUILTIN_COMULTPD): Ditto.
7194         (IX86_BUILTIN_COMULEPD): Ditto.
7195         (IX86_BUILTIN_COMUGTPD): Ditto.
7196         (IX86_BUILTIN_COMUGEPD): Ditto.
7197         (IX86_BUILTIN_COMORDPD): Ditto.
7198         (IX86_BUILTIN_COMUNORDPD): Ditto.
7199         (IX86_BUILTIN_COMFALSEPD): Ditto.
7200         (IX86_BUILTIN_COMTRUEPD): Ditto.
7201         (IX86_BUILTIN_PCOMEQUB): Ditto.
7202         (IX86_BUILTIN_PCOMNEUB): Ditto.
7203         (IX86_BUILTIN_PCOMLTUB): Ditto.
7204         (IX86_BUILTIN_PCOMLEUB): Ditto.
7205         (IX86_BUILTIN_PCOMGTUB): Ditto.
7206         (IX86_BUILTIN_PCOMGEUB): Ditto.
7207         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
7208         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
7209         (IX86_BUILTIN_PCOMEQUW): Ditto.
7210         (IX86_BUILTIN_PCOMNEUW): Ditto.
7211         (IX86_BUILTIN_PCOMLTUW): Ditto.
7212         (IX86_BUILTIN_PCOMLEUW): Ditto.
7213         (IX86_BUILTIN_PCOMGTUW): Ditto.
7214         (IX86_BUILTIN_PCOMGEUW): Ditto.
7215         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
7216         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
7217         (IX86_BUILTIN_PCOMEQUD): Ditto.
7218         (IX86_BUILTIN_PCOMNEUD): Ditto.
7219         (IX86_BUILTIN_PCOMLTUD): Ditto.
7220         (IX86_BUILTIN_PCOMLEUD): Ditto.
7221         (IX86_BUILTIN_PCOMGTUD): Ditto.
7222         (IX86_BUILTIN_PCOMGEUD): Ditto.
7223         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
7224         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
7225         (IX86_BUILTIN_PCOMEQUQ): Ditto.
7226         (IX86_BUILTIN_PCOMNEUQ): Ditto.
7227         (IX86_BUILTIN_PCOMLTUQ): Ditto.
7228         (IX86_BUILTIN_PCOMLEUQ): Ditto.
7229         (IX86_BUILTIN_PCOMGTUQ): Ditto.
7230         (IX86_BUILTIN_PCOMGEUQ): Ditto.
7231         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
7232         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
7233         (IX86_BUILTIN_PCOMEQB): Ditto.
7234         (IX86_BUILTIN_PCOMNEB): Ditto.
7235         (IX86_BUILTIN_PCOMLTB): Ditto.
7236         (IX86_BUILTIN_PCOMLEB): Ditto.
7237         (IX86_BUILTIN_PCOMGTB): Ditto.
7238         (IX86_BUILTIN_PCOMGEB): Ditto.
7239         (IX86_BUILTIN_PCOMFALSEB): Ditto.
7240         (IX86_BUILTIN_PCOMTRUEB): Ditto.
7241         (IX86_BUILTIN_PCOMEQW): Ditto.
7242         (IX86_BUILTIN_PCOMNEW): Ditto.
7243         (IX86_BUILTIN_PCOMLTW): Ditto.
7244         (IX86_BUILTIN_PCOMLEW): Ditto.
7245         (IX86_BUILTIN_PCOMGTW): Ditto.
7246         (IX86_BUILTIN_PCOMGEW): Ditto.
7247         (IX86_BUILTIN_PCOMFALSEW): Ditto.
7248         (IX86_BUILTIN_PCOMTRUEW): Ditto.
7249         (IX86_BUILTIN_PCOMEQD): Ditto.
7250         (IX86_BUILTIN_PCOMNED): Ditto.
7251         (IX86_BUILTIN_PCOMLTD): Ditto.
7252         (IX86_BUILTIN_PCOMLED): Ditto.
7253         (IX86_BUILTIN_PCOMGTD): Ditto.
7254         (IX86_BUILTIN_PCOMGED): Ditto.
7255         (IX86_BUILTIN_PCOMFALSED): Ditto.
7256         (IX86_BUILTIN_PCOMTRUED): Ditto.
7257         (IX86_BUILTIN_PCOMEQQ): Ditto.
7258         (IX86_BUILTIN_PCOMNEQ): Ditto.
7259         (IX86_BUILTIN_PCOMLTQ): Ditto.
7260         (IX86_BUILTIN_PCOMLEQ): Ditto.
7261         (IX86_BUILTIN_PCOMGTQ): Ditto.
7262         (IX86_BUILTIN_PCOMGEQ): Ditto.
7263         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
7264         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
7265         (enum multi_arg_type): New enum for describing the various SSE5
7266         intrinsic argument types.
7267         (bdesc_multi_arg): New table for SSE5 intrinsics.
7268         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
7269         (ix86_expand_multi_arg_builtin): New function for creating SSE5
7270         intrinsics.
7271         (ix86_expand_builtin): Add SSE5 intrinsic support.
7272         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
7273         operand instructions.
7274         (ix86_expand_sse5_multiple_memory): New function to split the
7275         second memory reference from SSE5 instructions.
7276         (type_has_variadic_args_p): Delete in favor of stdarg_p.
7277         (ix86_return_pops_args): Use stdarg_p to determine if the function
7278         has variable arguments.
7279         (ix86_setup_incoming_varargs): Ditto.
7280         (x86_this_parameter): Ditto.
7281
7282         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
7283         declaration.
7284         (ix86_expand_sse5_pack): Ditto.
7285         (ix86_sse5_valid_op_p): Ditto.
7286         (ix86_expand_sse5_multiple_memory): Ditto.
7287
7288         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
7289         constant for SSE5 support.
7290         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
7291         (UNSPEC_SSE5_TRUEFALSE): Ditto.
7292         (UNSPEC_SSE5_PERMUTE): Ditto.
7293         (UNSPEC_SSE5_ASHIFT): Ditto.
7294         (UNSPEC_SSE5_LSHIFT): Ditto.
7295         (UNSPEC_FRCZ): Ditto.
7296         (UNSPEC_CVTPH2PS): Ditto.
7297         (UNSPEC_CVTPS2PH): Ditto.
7298         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
7299         (PCOM_TRUE): Ditto.
7300         (COM_FALSE_S): Ditto.
7301         (COM_FALSE_P): Ditto.
7302         (COM_TRUE_S): Ditto.
7303         (COM_TRUE_P): Ditto.
7304         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
7305         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
7306         types.
7307         (memory attribute): Ditto.
7308         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
7309         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
7310         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
7311         (floor<mode>2): Ditto.
7312         (ceil<mode>2): Ditto.
7313         (btrunc<mode>2): Ditto.
7314         (nearbyintdf2): Ditto.
7315         (nearbyintsf2): Ditto.
7316         (sse_setccsf): Disable if SSE5.
7317         (sse_setccdf): Ditto.
7318         (sse5_setcc<mode>): New support for SSE5 conditional move.
7319         (sse5_pcmov_<mode>): Ditto.
7320
7321         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
7322         (SSEMODEF4): Ditto.
7323         (SSEMODEF2P): Ditto.
7324         (ssemodesuffixf4): New mode attribute for SSE5.
7325         (ssemodesuffixf2s): Ditto.
7326         (ssemodesuffixf2c): Ditto.
7327         (sserotatemax): Ditto.
7328         (ssescalarmode): Ditto.
7329         (sse_maskcmpv4sf3): Disable if SSE5.
7330         (sse_maskcmpv2df3): Ditto.
7331         (sse_vmmaskcmpv4sf3): Ditto.
7332         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
7333         (sse5_vmfmadd<mode>4): Ditto.
7334         (sse5_fmsub<mode>4): Ditto.
7335         (sse5_vmfmsub<mode>4): Ditto.
7336         (sse5_fnmadd<mode>4): Ditto.
7337         (sse5_vmfnmadd<mode>4): Ditto.
7338         (sse5_fnmsub<mode>4): Ditto.
7339         (sse5_vmfnmsub<mode>4): Ditto.
7340         (sse5i_fmadd<mode>4): Ditto.
7341         (sse5i_fmsub<mode>4): Ditto.
7342         (sse5i_fnmadd<mode>4): Ditto.
7343         (sse5i_fnmsub<mode>4): Ditto.
7344         (sse5i_vmfmadd<mode>4): Ditto.
7345         (sse5i_vmfmsub<mode>4): Ditto.
7346         (sse5i_vmfnmadd<mode>4): Ditto.
7347         (sse5i_vmfnmsub<mode>4): Ditto.
7348         (mulv16qi3): Add SSE5 support.
7349         (mulv4si3): Ditto.
7350         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
7351         (sse2_mulv4si3): Disable if SSE5.
7352         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
7353         (sse4_1_roundps): Ditto.
7354         (sse4_1_roundsd): Ditto.
7355         (sse4_1_roundss): Ditto.
7356         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
7357         be generated.
7358         (sse_maskcmpsf3): Ditto.
7359         (sse_vmmaskcmpv4sf3): Ditto.
7360         (sse2_maskcmpv2df3): Ditto.
7361         (sse2_maskcmpdf3): Ditto.
7362         (sse2_vmmaskcmpv2df3): Ditto.
7363         (sse2_eq<mode>3): Ditto.
7364         (sse2_gt<mode>3): Ditto.
7365         (sse5_pcmov_<mode>): Add SSE5 support.
7366         (vec_unpacku_hi_v16qi): Ditto.
7367         (vec_unpacks_hi_v16qi): Ditto.
7368         (vec_unpacku_lo_v16qi): Ditto.
7369         (vec_unpacks_lo_v16qi): Ditto.
7370         (vec_unpacku_hi_v8hi): Ditto.
7371         (vec_unpacks_hi_v8hi): Ditto.
7372         (vec_unpacku_lo_v8hi): Ditto.
7373         (vec_unpacks_lo_v8hi): Ditto.
7374         (vec_unpacku_hi_v4si): Ditto.
7375         (vec_unpacks_hi_v4si): Ditto.
7376         (vec_unpacku_lo_v4si): Ditto.
7377         (vec_unpacks_lo_v4si): Ditto.
7378         (sse5_pmacsww): New SSE5 intrinsic insn.
7379         (sse5_pmacssww): Ditto.
7380         (sse5_pmacsdd): Ditto.
7381         (sse5_pmacssdd): Ditto.
7382         (sse5_pmacssdql): Ditto.
7383         (sse5_pmacssdqh): Ditto.
7384         (sse5_pmacsdqh): Ditto.
7385         (sse5_pmacsswd): Ditto.
7386         (sse5_pmacswd): Ditto.
7387         (sse5_pmadcsswd): Ditto.
7388         (sse5_pmadcswd): Ditto.
7389         (sse5_pcmov_<move>): Conditional move support on SSE5.
7390         (sse5_phaddbw): New SSE5 intrinsic insn.
7391         (sse5_phaddbd): Ditto.
7392         (sse5_phaddbq): Ditto.
7393         (sse5_phaddwd): Ditto.
7394         (sse5_phaddwq): Ditto.
7395         (sse5_phadddq): Ditto.
7396         (sse5_phaddubw): Ditto.
7397         (sse5_phaddubd): Ditto.
7398         (sse5_phaddubq): Ditto.
7399         (sse5_phadduwd): Ditto.
7400         (sse5_phadduwq): Ditto.
7401         (sse5_phaddudq): Ditto.
7402         (sse5_phsubbw): Ditto.
7403         (sse5_phsubwd): Ditto.
7404         (sse5_phsubdq): Ditto.
7405         (sse5_pperm): Ditto.
7406         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
7407         (sse5_pperm_zero_v16qi_v8hi): Ditto.
7408         (sse5_pperm_sign_v8hi_v4si): Ditto.
7409         (sse5_pperm_zero_v8hi_v4si): Ditto.
7410         (sse5_pperm_sign_v4si_v2di): Ditto.
7411         (sse5_pperm_sign_v4si_v2di): Ditto.
7412         (sse5_pperm_pack_v2di_v4si): Ditto.
7413         (sse5_pperm_pack_v4si_v8hi): Ditto.
7414         (sse5_pperm_pack_v8hi_v16qi): Ditto.
7415         (sse5_perm<mode>): New SSE5 intrinsic insn.
7416         (rotl<mode>3): Ditto.
7417         (sse5_rotl<mode>3): Ditto.
7418         (sse5_ashl<mode>3): Ditto.
7419         (sse5_lshl<mode>3): Ditto.
7420         (sse5_frcz<mode>2): Ditto.
7421         (sse5s_frcz<mode>2): Ditto.
7422         (sse5_cvtph2ps): Ditto.
7423         (sse5_cvtps2ph): Ditto.
7424         (sse5_vmmaskcmp<mode>3): Ditto.
7425         (sse5_com_tf<mode>3): Ditto.
7426         (sse5_maskcmp<mode>3): Ditto.
7427         (sse5_maskcmp_uns<mode>3): Ditto.
7428         (sse5_maskcmp_uns2<mode>3): Ditto.
7429         (sse5_pcom_tf<mode>3): Ditto.
7430
7431         * config/i386/predicates.md (sse5_comparison_float_operator):
7432         New predicate to match the comparison operators supported by
7433         the SSE5 com instruction.
7434         (ix86_comparison_int_operator): New predicate to match just the
7435         signed int comparisons.
7436         (ix86_comparison_uns_operator): New predicate to match just the
7437         unsigned int comparisons.
7438
7439         * doc/invoke.texi (-msse5): Add documentation.
7440         (-mfused-madd): Ditto.
7441
7442         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
7443
7444         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
7445         mmintrin-common.h.
7446         (x86_64-*-*): Ditto.
7447
7448         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
7449
7450         * config/i386/bmmintrin.h: New file, provide common x86 compiler
7451         intrinisics for SSE5.
7452
7453         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
7454         mmintrin-common.h.
7455
7456         * config/i386/mmintrin-common.h: New file, to contain common
7457         instructions between SSE4.1 and SSE5.
7458
7459         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
7460         FOREACH_FUNCTION_ARGS to iterate over the argument list.
7461         (gen_regparm_prefix): Ditto.
7462
7463         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
7464         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
7465         prototype_p to determine if a function is prototyped.
7466
7467 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
7468
7469         * c-common.c (c_common_reswords) add the alignof keyword,
7470         with same RID as __alignof and __alignof__
7471
7472 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
7473
7474         * hooks.h (hook_bool_const_int_const_int_true): Declare.
7475         * hooks.c (hook_bool_const_int_const_int_true): New function.
7476         * target.h (struct gcc_target): Add can_eliminate field.
7477         * target-def.h (TARGET_CAN_ELIMINATE): Define.
7478         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
7479         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
7480         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
7481         (elim_table): Revise comment.
7482         * system.h (CAN_ELIMINATE): Poison.
7483         * defaults.h (CAN_ELIMINATE): Remove.
7484         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
7485
7486         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
7487         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
7488         Define macro.
7489         (alpha_vms_can_eliminate): Declare as static, change return type to
7490         bool.
7491         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
7492
7493         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
7494         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
7495         (arm_can_eliminate): New function.
7496
7497         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
7498         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
7499         (avr_can_eliminate): Declare as static.
7500         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
7501
7502         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
7503         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
7504         (bfin_can_eliminate): New function.
7505
7506         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
7507         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
7508         (crx_can_eliminate): New function.
7509
7510         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
7511         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
7512         (fr30_can_eliminate): New function.
7513
7514         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
7515         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
7516         (frv_can_eliminate): New function.
7517
7518         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
7519         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
7520         (h8300_can_eliminate): New function.
7521
7522         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
7523         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
7524         (i386_can_eliminate): Declare as static, change return type to bool.
7525         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
7526
7527         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
7528         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
7529         (ia64_can_eliminate): New function.
7530
7531         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
7532         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
7533         (iq2000_can_eliminate): New function.
7534
7535         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
7536         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
7537         (m32r_can_eliminate): New function.
7538
7539         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
7540         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
7541         (m68hc11_can_eliminate): New function.
7542
7543         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
7544         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
7545         (m68k_can_eliminate): New function.
7546
7547         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
7548         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
7549         (mep_can_eliminate): New function.
7550
7551         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
7552         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
7553         (mips_can_eliminate): New function.
7554
7555         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
7556         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
7557         (rs6000_can_eliminate): New function.
7558
7559         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
7560         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
7561         (s390_can_eliminate): Declare as static.
7562         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
7563
7564         * config/score/score.h (CAN_ELIMINATE): Remove macro.
7565         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
7566         (score_can_eliminate): New function.
7567
7568         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
7569         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
7570         (sparc_can_eliminate): Declare as static.
7571         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
7572
7573         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
7574         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
7575         (xstormy16_can_eliminate): New function.
7576
7577         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
7578         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
7579         (v850_can_eliminate): New function.
7580
7581 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
7582
7583         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
7584         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
7585         (*movdfcc_ext[1234]): Disable for IEEE mode.
7586
7587 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
7588
7589         * gimplify.c (prepare_gimple_addressable): New static function.
7590         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
7591         it addressable.
7592         (gimplify_addr_expr): Invoke it similarly on the operand instead of
7593         manually fiddling with it.
7594
7595 2009-08-25  Michael Matz  <matz@suse.de>
7596
7597         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
7598         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
7599         full expression.
7600         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
7601         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
7602         (do_jump): Split out code for simple binary comparisons into ...
7603         (do_jump_1): ... this, taking the individual operands and code.
7604         Change callers to helper function above accordingly.
7605         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
7606         comparisons.
7607
7608 2009-08-25  Michael Matz  <matz@suse.de>
7609
7610         * expr.h (struct separate_ops, sepops): New type for passing
7611         around an exploded simple expression.
7612         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
7613         Use this structure instead of expression tree.
7614         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
7615         expression, only its type.
7616         (expand_vec_cond_expr): Take type and individual operands instead
7617         of full expression.
7618         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
7619         expand_vec_shift_expr): Change prototype accordingly.
7620         * tree-vect-stmts.c (vectorizable_condition): Change call of
7621         expand_vec_cond_expr_p to pass only type.
7622         * expr.c (do_store_flags): Change prototype and implementation
7623         to take an exploded expression.
7624         (expand_expr_real_1): New local ops initialized with details
7625         of the full expression.  Use it instead of full
7626         expression in calls to do_store_flags, expand_vec_cond_expr,
7627         expand_widen_pattern_expr and expand_vec_shift_expr.
7628
7629 2009-08-25  Michael Matz  <matz@suse.de>
7630
7631         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
7632         treeop2 initialized with first three operands of the full expression.
7633         Substitute all TREE_OPERAND (exp, [012]) calls with them.
7634
7635 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
7636
7637         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
7638         (__gthread_objc_condition_allocate): Mark arguments as unused.
7639         (__gthread_objc_condition_deallocate): Likewise.
7640         (__gthread_objc_condition_wait): Likewise.
7641         (__gthread_objc_condition_broadcast): Likewise.
7642         (__gthread_objc_condition_signal): Likewise.
7643         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
7644         (__gthread_objc_thread_id): Likewise.
7645
7646 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
7647
7648         PR middle-end/41149
7649         * tree-pretty-print.c (print_call_name): Print the correct call name
7650         for procedure pointer components.
7651
7652 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
7653
7654         * config/ia64/ia64.c (ia64_promote_function_mode): Call
7655         default_promote_function_mode when not VMS.
7656
7657 2009-08-24  Olivier Hainque  <hainque@adacore.com>
7658
7659         * convert.c (convert_to_integer): Don't assume an input pointer is
7660         POINTER_SIZE wide.  Fetch from the type instead.
7661
7662 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7663
7664         * configure.ac (AC_PREREQ): Bump to 2.64.
7665
7666 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
7667
7668         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
7669         (process_command): Don't search standard_exec_prefix_1 and
7670         standard_exec_prefix_2.
7671
7672 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7673
7674         * config/arm/arm.c (output_return_instruction): Handle for
7675         unified syntax.
7676
7677 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7678
7679         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
7680
7681 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7682
7683         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
7684         (*arm_movdf_vfp): Likewise.
7685
7686 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7687
7688         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
7689         (vashr<mode>3): Rename from ashr<mode>3.
7690         (vlshr<mode>3): Rename from lshr<mode>3.
7691
7692 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
7693
7694         PR/40786
7695         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
7696         (check_format_info_main): Use scalar_identify_flag.
7697         (check_format_types): Check for scalar size identity if
7698         scalar_identify_flag is set.
7699         (printf_length_specs): Extend by new field.
7700         (asm_fprintf_length_specs): Likewise.
7701         (gcc_diag_length_specs): Likewise.
7702         (scanf_length_specs): Likewise.
7703         (strfmon_length_specs): Likewise.
7704         (gcc_gfc_length_specs): Likewise.
7705         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
7706         (ms_printf_flag_specs): Likewise.
7707         * c-format.h (format_length_info): Add new member scalar_identity_flag.
7708
7709 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
7710
7711         PR target/40718
7712         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
7713         (*call_value_pop_1): Ditto.
7714         (*sibcall_pop_1): New insn pattern.
7715         (*sibcall_value_pop_1): Ditto.
7716
7717 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
7718
7719         PR target/41081
7720         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
7721         ashrsi3_64): New.
7722
7723 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
7724
7725         PR target/41081
7726         * fwprop.c (try_fwprop_subst): Allow multiple sets.
7727         (get_reg_use_in): New function.
7728         (forward_propagate_subreg): Propagate through subreg of zero_extend
7729         or sign_extend.
7730
7731 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
7732
7733         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
7734         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
7735
7736 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7737
7738         * configure.ac: Remove --with-datarootdir, --with-docdir,
7739         --with-htmldir switches.  No need to call AC_SUBST for
7740         datarootdir, docdir, htmldir any more.
7741         * configure: Regenerate.
7742         * doc/install.texi (Configuration): Document --datarootdir,
7743         --docdir, --htmldir, --pdfdir; update documentation for
7744         --infodir, --mandir.
7745         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
7746         M4 to 1.4.6.
7747
7748         * aclocal.m4: Regenerate.
7749         * config.in: Regenerate.
7750         * configure: Regenerate.
7751
7752 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
7753             Olivier Hainque  <hainque@adacore.com>
7754
7755         * config/ia64/ia64.c: Include libfuncs.h.
7756         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
7757         (ia64_expand_call): Use reg 25 on VMS.
7758         (ia64_initialize_trampoline): Fix for VMS ABI.
7759         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
7760         (ia64_function_arg): Initialize reg 25 on VMS.
7761         Fix OpenVMS ABI issues for varargs.
7762         For OpenVMS, emit the Argument Information register set in the
7763         incoming/sibcall case as well.
7764         (ia64_arg_type): New function.
7765         (ia64_function_arg_advance): Keep track of cum->words.
7766         Fix OpenVMS ABI issues for varargs.
7767         (ia64_function_value): On VMS, promote mode of non-aggregate types.
7768         (ia64_override_options): Set flag_no_common on VMS.
7769         (ia64_init_builtins): Disable FWRITE builtin.
7770         (ia64_asm_output_external): Call DO_CRTL_NAMES.
7771         (ia64_vms_init_libfuncs): Add decc$ routines.
7772         (ia64_vms_valid_pointer_mode): New function.
7773         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
7774         (ia64_promote_function_mode): New function
7775         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
7776         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
7777         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
7778         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
7779         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
7780         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
7781         Suppress trailing '#' if VALUE is numeric.
7782         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
7783         ia64_promote_function_mode.
7784         (TARGET_VALID_POINTER_MODE): Define.
7785
7786 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
7787
7788         PR target/40671
7789         * config/rs6000/rs6000.c (rs6000_override_options): Use
7790         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
7791
7792         PR target/41145
7793         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
7794         reporting of vector + decimal/boolean/complex error.
7795
7796 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
7797
7798         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
7799         __vector double TYPE_DECL.
7800
7801 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
7802
7803         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
7804         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
7805         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
7806         to pointer to enum machine_mode.  Update all callers as needed.
7807
7808 2009-08-21 Uros Bizjak <ubizjak@gmail.com>
7809
7810         * config/alpha/alpha.md (exception_receiver): Emit alternative
7811         GP load sequence if flag_reorder_blocks_and_partition is set.
7812         (*exception_receiver_2): Also enable when
7813         flag_reorder_blocks_and_partition is set.
7814
7815 2009-08-20  Matt Rice  <ratmice@gmail.com>
7816             Diego Novillo  <dnovillo@google.com>
7817
7818         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
7819         tree-ssa-sccvn.h.
7820
7821 2009-08-20  Richard Guenther  <rguenther@suse.de>
7822
7823         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
7824         * c-tree.h (c_dup_lang_specific_decl): Remove.
7825         (struct lang_decl, struct lang_type): Move definitions ...
7826         * c-lang.h: ... here.  New file.
7827         * c-decl.c: Include c-lang.h.
7828         (c_dup_lang_specific_decl): Remove.
7829         * c-typeck.c: Include c-lang.h.
7830         * Makefile.in (c-decl.o): Add c-lang.h dependency.
7831         (c-typeck.o): Likewise.
7832         * c-config-lang.in (gtfiles): Add c-lang.h.
7833         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
7834         like c-tree.h.
7835
7836 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
7837
7838         * config/alpha/alpha.c (alpha_end_function): Do not clear
7839         crtl->emit structure and free insn locators if cfun->is_thunk is true,
7840         this is now handled in generic code.
7841
7842 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
7843
7844         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
7845         (s390_z10_fix_long_loop_prediction): New function.
7846         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
7847         (s390_reorg): Walk over the INSNs and invoke
7848         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
7849
7850 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
7851
7852         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
7853         "*brx_64bit", "*brx_31bit"): New patterns.
7854         * config/s390/s390.c ('E'): New output modifier.
7855
7856 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7857             Richard Earnshaw  <richard.earnshaw@arm.com>
7858
7859         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
7860         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
7861
7862 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7863
7864         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
7865         patterns.
7866         * pa.c (emit_move_sequence): Check if address of operand1 is valid
7867         for mode mode of operand0 when doing secondary reload for SAR.
7868
7869 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
7870
7871         PR middle-end/41123
7872         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
7873         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
7874
7875 2009-08-19  Jason Merrill  <jason@redhat.com>
7876
7877         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
7878         supported template depth in C++0x.
7879
7880 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
7881
7882         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
7883         free_after_compilation.
7884         * config/score/score7.c (score7_output_mi_thunk): Likewise.
7885         * config/score/score3.c (score3_output_mi_thunk): Likewise.
7886         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
7887         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
7888         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
7889         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
7890         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
7891
7892 2009-08-19  Ian Lance Taylor  <iant@google.com>
7893
7894         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
7895         of (plus (mult (neg B) C) A).
7896
7897 2009-08-18  Michael Matz  <matz@suse.de>
7898
7899         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
7900         instead of comparing TYPE_MAIN_VARIANT for equality.
7901         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
7902         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
7903         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
7904         * gimplify.c (goa_lhs_expr_p): Ditto and use
7905         STRIP_USELESS_TYPE_CONVERSION.
7906
7907 2009-08-18  Michael Matz  <matz@suse.de>
7908
7909         * tree-ssa-structalias.c (create_variable_info_for): Also mark
7910         first field in a struct.
7911         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
7912
7913 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
7914
7915         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
7916         locators before emit_insn is called.  Remove assert that
7917         cfun->is_thunk.
7918         (alpha_end_function): Clear crtl->emit structure and free insn
7919         locators if cfun->is_thunk is true.
7920
7921 2009-08-18  Jason Merrill  <jason@redhat.com>
7922
7923         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
7924         type if available.
7925         * configure.ac: Test for it.
7926         * configure, config.in: Regenerate.
7927         * doc/install.texi: Document --enable-gnu-unique-object.
7928
7929 2009-08-18  Richard Guenther  <rguenther@suse.de>
7930
7931         PR middle-end/41094
7932         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
7933         pow(x,y*z) only if x is nonnegative.
7934
7935 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
7936
7937         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
7938         on jumps.
7939
7940         PR target/40971
7941         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
7942         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
7943
7944 2009-08-17  DJ Delorie  <dj@redhat.com>
7945
7946         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
7947         * config/m32c/prologue.md (epilogue_freit): New.
7948         (fset_b): New.
7949         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
7950         (bank_switch_p): Likewise.
7951         (fast_interrupt_p): Likewise.
7952         (interrupt_p): Likewise.
7953         (m32c_conditional_register_usage): Round memregs size up.
7954         (need_to_save): We only need to save $a0 when we use ENTER.
7955         (interrupt_p): Check for fast_interrupt too.
7956         (bank_switch_p): New.
7957         (fast_interrupt_p): New.
7958         (m32c_attribute_table): Add bank_switch and fast_interrupt.
7959         (m32c_emit_prolog): Support bank switching and fast interrupts.
7960         * doc/extend.texi (Function Attributes): Add bank_switch and
7961         fast_interrupt.
7962
7963 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
7964
7965         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
7966         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
7967
7968 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
7969
7970         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
7971         (menu): Add IA-64/VMS Options.
7972         (IA-64/VMS Options): Likewise.
7973
7974 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
7975
7976         PR target/38599
7977         * config/mips/mips.md (*lwxs): Use :P for pointer values.
7978
7979 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
7980
7981         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
7982         (mips_pop_asm_switch): Likewise.
7983         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
7984         with...
7985         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
7986         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
7987         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
7988         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
7989         instead of set_noreorder.
7990         (mips_output_function_prologue): Use the new functions.
7991         (mips_output_function_epilogue): Likewise.
7992         (mips_need_noat_wrapper_p): New function, split out from...
7993         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
7994         Use mips_push_asm_switch and mips_pop_asm_switch.
7995         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
7996         and mips_pop_asm_switch.
7997         (ASM_OUTPUT_REG_POP): Likewise.
7998         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
7999         Use mips_pop_asm_switch.
8000         (mips_asm_switch): New structure.
8001         (set_noreorder, set_nomacro): Replace with...
8002         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
8003         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
8004         instead of set_nomacro.
8005         (fix_truncsfsi2_macro): Likewise.
8006         (cprestore): Likewise.
8007         (hazard): Use mips_noreorder instead of set_noreorder.
8008         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
8009
8010 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
8011
8012         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
8013         from prev_active_insn.
8014
8015 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
8016
8017         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
8018         * config/avr/avr.c (avr_override_options): Initialize
8019         avr_current_arch variable.
8020         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
8021         __AVR_HAVE_16BIT_SP__ according to the device type.
8022         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
8023         TARGET_TINY_STACK.
8024         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
8025         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
8026
8027 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
8028
8029         PR debug/37801
8030         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
8031         generating inlined subroutine die only. We shouldn't be
8032         called for anything else.
8033         (gen_block_die): Don't generate inline subroutine debug info for
8034         abstract blocks.
8035
8036 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
8037
8038         * graphite-poly.c (print_pbb): Print PBB index.
8039
8040 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
8041
8042         PR middle-end/40981
8043         * graphite-interchange.c (ppl_max_for_le): Moved...
8044         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
8045         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
8046         ppl_Pointset_Powerset_C_Polyhedron_maximize.
8047         * graphite-ppl.h (ppl_max_for_le): Declared.
8048
8049 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
8050
8051         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
8052         supported on all platforms.
8053         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
8054         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
8055         * c-pragma.c: Likewise.
8056         * target-def.h (TARGET_INITIALIZER): Remove
8057         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
8058         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
8059
8060 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
8061
8062         * config/ia64/fde-vms.c: New file.
8063         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
8064         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
8065         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
8066         (uw_frame_state_for): Only register a personality routine if it is
8067         known to be compatible with our expectations.
8068         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
8069         Declare unw_table_entry stack variable and
8070         mod all calls to _Unwind_FindTableEntry to add arg.
8071         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
8072         (_Unwind_FindTableEntry): Add arg to prototype.
8073
8074 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
8075
8076         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
8077         field 'signal_pfs_loc'.
8078         (uw_frame_state_for): Remove duplicate code dealing with leaf
8079         procedures without unwind info.
8080         If in the frame after unwinding through a signal handler, restore
8081         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
8082         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
8083         'pfs_loc' to the AR.PFS location in the signal context; instead
8084         set 'signal_pfs_loc'.
8085         Manually generate the unwind info for the AR.PFS register.
8086         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
8087         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
8088         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
8089         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
8090         instead set 'signal_pfs_loc'.
8091         Remove code preventing the AR.PFS register from being restored
8092         from the signal context.
8093
8094 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
8095             Tristan Gingold  <gingold@adacore.com>
8096
8097         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
8098         * config/ia64/t-vms: New file.
8099         * config/ia64/vms64.h: New file.
8100         * config/ia64/vms.h: New file.
8101         * config/ia64/vms-crtinit.asm: New file.
8102         * config/ia64/vms_symvec_libgcc_s.opt: New file.
8103         * config/ia64/vms-unwind.h: New file.
8104
8105 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
8106
8107         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
8108         TFmode compares.
8109
8110 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8111
8112         PR middle-end/30789
8113         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
8114         Move declaration...
8115         * real.h (do_mpc_arg2): ... here.
8116         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
8117         and RDIV_EXPR.
8118
8119 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
8120
8121         * final.c (add_debug_prefix_map): Don't use GC memory for
8122         old_prefix and new_prefix.
8123
8124 2009-08-14  Richard Guenther  <rguenther@suse.de>
8125
8126         * ipa-prop.c (compute_complex_pass_through): If we cannot
8127         compute a non-varying offset for IPA_JF_ANCESTOR punt.
8128
8129 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8130
8131         * c-lex.c (c_lex_with_flags): Increase size of local variable
8132         to avoid memory clobber.
8133
8134 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
8135
8136         PR target/40934
8137         * config/i386/i386.c (ix86_fp_comparison_strategy):
8138         Only enable/disable sahf at function granularity.
8139
8140 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
8141
8142         PR rtl-optimization/41064
8143         * reload1.c (reload_as_needed): Don't call extract_insn
8144         for known invalid replacements after calling
8145         validate_replace_rtx_group and verify_changes.
8146
8147 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
8148
8149         PR target/41019
8150         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
8151         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
8152         ix86_expand_fp_vcond.
8153         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
8154         Assert that operation is supported by ix86_expand_int_vcond.
8155         (vcondu<SSEMODE124C8:mode>): Ditto.
8156
8157 2009-08-13  DJ Delorie  <dj@redhat.com>
8158
8159         * config/i386/djgpp-stdint.h: New.
8160         * config.gcc (djgpp): Use it.
8161
8162 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
8163
8164         * config/sh/sh.c (sh_override_options): When flag_exceptions or
8165         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
8166
8167 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
8168
8169         * tree-ssa-loop-prefetch.c
8170         (prune_ref_by_group_reuse): Enhance probabilistic analysis
8171         for long-stride pruning.
8172         (compute_miss_rate): New function to compute the probability
8173         that two memory references access different cache lines.
8174
8175 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
8176
8177         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
8178
8179 2009-08-13  Richard Guenther  <rguenther@suse.de>
8180
8181         PR middle-end/41047
8182         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
8183         use the constant pointer type.
8184         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
8185         of CV qualifiers on the target pointer type.
8186         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
8187         conversion check before restrict check.
8188
8189 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
8190
8191         PR target/41029
8192         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
8193
8194 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
8195
8196         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
8197
8198 2009-08-12  Richard Guenther  <rguenther@suse.de>
8199
8200         PR tree-optimization/41011
8201         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
8202         and reference constructing.
8203
8204 2009-08-12  Xinliang David Li  <davidxl@google.com>
8205
8206         PR tree-optimization/41012
8207         * tree-flow.h : New external interface.
8208         * gimple-low.c (check_call_arg): Change to public function.
8209         Remove argument mismatch check in lowering.
8210         * tree-inline.h (tree_can_inline_p): Interface change.
8211         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
8212         into this function.
8213         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
8214         Call change to tree_can_inline_p function.
8215         (cgraph_decide_inlining_incrementally): Ditto.
8216
8217 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
8218
8219         PR tree-optimization/41031
8220         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
8221         on the partition variable rather than promote_mode on the source
8222         type.  Assert that the partition variable's type has the same
8223         mode as the source value's.
8224
8225 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
8226
8227         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
8228         for for_return == 2.
8229         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
8230         comments.
8231         * calls.c (expand_call): Fix typo.
8232         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
8233         and PARM_DECL.
8234         * stmt.c (expand_value_return): Use promote_function_mode to copy out
8235         of pseudo.
8236         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
8237         * config/cris/cris.c (cris_promote_function_mode): Likewise.
8238         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
8239         * config/pa/pa.c (pa_promote_function_mode): Likewise.
8240
8241 2009-08-12  Andrew Haley  <aph@redhat.com>
8242
8243         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
8244
8245 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8246
8247         PR bootstrap/40103
8248         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
8249
8250 2009-08-12  Richard Guenther  <rguenther@suse.de>
8251
8252         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
8253         * gimplify.c (gimplify_modify_expr): Do not use
8254         lang_hooks.types_compatible_p.
8255         * tree-ssa.c (useless_type_conversion_p): For aggregates
8256         just return false if the canonical types differ.
8257
8258 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8259
8260         PR middle-end/40980
8261         * sese.c (convert_for_phi_arg): New.
8262         (add_guard_exit_phis): Use convert_for_phi_arg.
8263
8264 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8265
8266         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
8267         unknown subscript upper bounds.
8268
8269 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8270             Pranav Garg  <pranav.garg2107@gmail.com>
8271
8272         * graphite-interchange.c (gather_access_strides): Removed.
8273         (ppl_max_for_le): New.
8274         (build_linearized_memory_access): New.
8275         (memory_stride_in_loop): New.
8276         (pbb_interchange_profitable_p): Reimplemented.
8277         * graphite-ppl.h (ppl_new_id_map): New.
8278         (ppl_interchange): New.
8279
8280 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8281
8282         * graphite-interchange.c (compute_subscript): Removed.
8283         (compute_array_size_cstr): Removed.
8284         (compute_array_size_poly): Removed.
8285         (compute_array_size): Removed.
8286         (gather_access_strides_poly): Removed.
8287         (gather_access_strides): Empty.
8288
8289 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8290
8291         * graphite-dependences.c (dependence_polyhedron_1): Replace
8292         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
8293         (graphite_legal_transform_dr): Same.
8294         (graphite_carried_dependence_level_k): Same.
8295         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
8296         Initialize PDR_NB_SUBSCRIPTS.
8297         (print_pdr_access_layout): Replace pdr_nb_subscripts with
8298         PDR_NB_SUBSCRIPTS.
8299         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
8300         (PDR_NB_SUBSCRIPTS): New.
8301         (pdr_nb_subscripts): Removed.
8302         (pdr_dim): Simplified.
8303         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
8304         with PDR_NB_SUBSCRIPTS.
8305
8306 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8307
8308         * graphite-interchange.c (compute_array_size): Remove use of
8309         PDR_DATA_CONTAINER.
8310         * graphite-poly.c (new_poly_dr): Remove argument data_container.
8311         Do not initialize PDR_DATA_CONTAINER.
8312         (print_pdr): Do not print PDR_DATA_CONTAINER.
8313         * graphite-poly.h (struct poly_dr): Remove data_container field.
8314         (PDR_DATA_CONTAINER): Removed.
8315         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
8316         PDR_DATA_CONTAINER.
8317         (build_poly_dr): Same.
8318
8319 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
8320             Sebastian Pop  <sebastian.pop@amd.com>
8321
8322         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
8323         copy of the dependence polyhedron.  Free the temporary objects.
8324         (graphite_carried_dependence_level_k): Free unused objects before
8325         returning.
8326
8327 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8328
8329         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
8330         Early return without analyzing the data dependences if no
8331         transform has been done.  Call restore_scattering if the transform
8332         is not legal.
8333         (graphite-interchange.c): Same.
8334         * graphite-poly.c (print_scattering_function): Test for
8335         PBB_TRANSFORMED.
8336         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
8337         (apply_poly_transforms): Do not gcc_assert that
8338         the transform is legal.
8339         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
8340         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
8341         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
8342         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
8343         * graphite-poly.h (struct poly_scattering): New.
8344         (struct poly_bb): Add original, transformed, and saved fields.
8345         Remove transformed_scattering, original_scattering,
8346         nb_local_variables and nb_scattering_transform fields.
8347         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
8348         (poly_scattering_new): New.
8349         (poly_scattering_free): New.
8350         (poly_scattering_copy): New.
8351         (store_scattering_pbb): New.
8352         (store_scattering): New.
8353         (restore_scattering_pbb): New.
8354         (restore_scattering): New.
8355         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
8356         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
8357
8358 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8359
8360         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
8361         (print_scop): Same.
8362
8363 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8364
8365         * Makefile.in (graphite.o): Depends on PREDICT_H.
8366         * graphite.c: Include predict.h.
8367         (graphite_finalize): Call tree_estimate_probability.
8368         * predict.c (predict_loops): Do not call scev_initialize and
8369         scev_finalize.
8370         (tree_estimate_probability_bb): New.
8371         (tree_estimate_probability): Do not initialize loops: move that
8372         code to the driver.  Call tree_estimate_probability_bb.
8373         (tree_estimate_probability_driver): New.
8374         (pass_profile): Use tree_estimate_probability_driver.
8375         * predict.h (tree_estimate_probability): Declared.
8376
8377 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
8378
8379         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
8380         * graphite-dependences.c (graphite_legal_transform): Add time to
8381         TV_GRAPHITE_DATA_DEPS.
8382         (dependency_between_pbbs_p): Same.
8383         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
8384
8385 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
8386
8387         PR rtl-optimization/41033
8388         * alias.c (nonoverlapping_component_refs_p): Punt when strict
8389         aliasing is disabled.
8390
8391 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
8392
8393         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
8394         si_mask_operand, and_load_operand, low_bitmask_operand,
8395         and_reg_operand, and_operand): New predicates.
8396         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
8397         * config/mips/mips.c (and_operands_ok): New function.
8398         * config/mips/mips-protos.h (and_operands_ok): Declare it.
8399         * config/mips/mips.md (move_type): Add ext_ins and logical.
8400         (type): Handle them.
8401         (and<mode>3): Use and_reg_operand as the second operand's predicate.
8402         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
8403         shift_shift.  Remove commutative constraint modifier.
8404         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
8405         shift_shift.
8406         (*clear_upper32_dext): Remove define_insn_and_split.
8407         (*clear_upper32): Turn this define_insn_and_split ...
8408         (splitter for ANDing register with 0xffff_ffff): .. into this.
8409
8410 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
8411
8412         * combine.c (try_widen_shift_mode): Factor out code to check if an
8413         integer constant is a low-order bitmask from here ...
8414         * rtlanal.c (low_bitmask_len): ... to here.
8415         * rtl.h (low_bitmask_len): Declare.
8416
8417 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
8418
8419         PR target/8603
8420         * config/alpha/alpha.md (addsi3): Remove expander.
8421         (addsi3): Rename from *addsi3_internal insn pattern.
8422         (subsi3): Remove expander.
8423         (subsi3): Rename from *subsi3_internal insn pattern.
8424
8425 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
8426
8427         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
8428         FWRITE_UNLOCKED.
8429
8430 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
8431             Eric Botcazou  <botcazou@adacore.com>
8432             Douglas B Rupp  <rupp@gnat.com>
8433
8434         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
8435         that records that fit in 64 bits are returned by immediate value,
8436         as required by OpenVMS Calling Standard.
8437         (function_value): Adjust for above modification.
8438         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
8439         virtual_incoming_args_rtx as base object, not next_arg.
8440         * config/alpha/vms.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
8441
8442 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8443
8444         * reload.c (find_reloads_subreg_address): Check the original
8445         req_equiv_mem address to detect the case where an address is
8446         not valid in the outer mode.
8447
8448 2009-08-11  Richard Guenther  <rguenther@suse.de>
8449
8450         PR bootstrap/40788
8451         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
8452
8453 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
8454
8455         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
8456         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
8457
8458 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
8459             Douglas B Rupp  <rupp@gnat.com>
8460
8461         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
8462         PT_STACK when frame_pointer_needed on OpenVMS.
8463         (alpha_pv_save_size, alpha_using_fp): Remove.
8464         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
8465         with proper processing for PT_NULL.
8466         (alpha_vms_initial_elimination_offset): New function. Support for
8467         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
8468         (alpha_sa_size): Force procedure type to PT_STACK when
8469         frame_pointer_needed on OpenVMS.
8470         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
8471         (alpha_using_fp): Likewise.
8472         (alpha_vms_can_eliminate): Add prototype.
8473         (alpha_vms_initial_elimination_offset): Likewise.
8474         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
8475         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
8476
8477 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
8478             Douglas B Rupp  <rupp@gnat.com>
8479
8480         * config/alpha/alpha.c (common_object_handler): New function.
8481         (vms_attribute_table): Declare a single attribute "common_object".
8482         (vms_output_aligned_decl_common): New global function.
8483         (SECTION_VMS_OVERLAY): Delete.
8484         (SECTION_VMS_GLOBAL): Likewise.
8485         (SECTION_VMS_INITIALIZE): Likewise.
8486         (vms_asm_named_section): Remove support for above flags.
8487         (vms_section_type_flags): Delete.
8488         (TARGET_SECTION_TYPE_FLAGS): Likewise.
8489         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
8490         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
8491         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
8492
8493 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
8494
8495         PR target/41015
8496         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
8497         (sub_ddmmss): Likewise.
8498
8499 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
8500
8501         PR bootstrap/41018
8502         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
8503         year.
8504
8505 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8506
8507         PR target/37053
8508         * reload1.c (reload_as_needed): Use cancel_changes to completely
8509         undo a failed replacement attempt.
8510
8511 2009-08-10  Richard Guenther  <rguenther@suse.de>
8512
8513         PR middle-end/41006
8514         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
8515         (useless_type_conversion_p): ... here.  Require pointer targets
8516         to be compatible.
8517
8518 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
8519
8520         PR c++/40866
8521         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
8522         loose the original type of the statement list.
8523
8524 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
8525
8526         * config/alpha/alpha.c: Include libfuncs.h
8527         (avms_asm_output_extern): New function.
8528         (alpha_init_libfuncs): Init some decc libfuncs.
8529         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
8530         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
8531         (DO_CRTL_NAMES): Define.
8532         (LIB_SPEC): Remove.
8533         * config/alpha/vms64.h (POINTERS_EXTEND_UNSIGNED): Remove undef.
8534         (LONG_TYPE_SIZE): Define.
8535         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
8536         (SUBTARGET_SWITCHES): Define malloc64 switch.
8537         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
8538         (MASK_RETURN_ADDR): Define.
8539         doc/invoke.texi (mmalloc64): Document switch.
8540
8541 2009-08-09  Olivier Hainque  <hainque@adacore.com>
8542             Douglas B Rupp  <rupp@gnat.com>
8543
8544         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
8545         uses_condition_handler.
8546         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
8547         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
8548         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
8549         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
8550         (code_for_builtin): New insn codes for the new alpha_builtins.
8551         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
8552         (alpha_sa_size): Account for uses_condition_handler.
8553         (alpha_expand_prologue): Likewise.
8554         (alpha_start_function): Likewise.
8555         (alpha_expand_epilogue): Likewise.
8556         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
8557         establish/revert expanders.
8558         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
8559         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
8560         New expander, resorting to the alpha.c associated function.
8561         (builtin_revert_vms_condition_handler): Likewise.
8562         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
8563         __gcc_shell_handler, the static VMS condition handler used as
8564         an indirection wrapper to the current dynamically established
8565         handler.
8566         * config/alpha/vms-unwind.h: Complete rewrite.
8567         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
8568         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
8569
8570 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
8571             Douglas B Rupp  <rupp@gnat.com>
8572
8573         * config/alpha/alpha.c (alpha_links): Add 'target' field.
8574         (alpha_need_linkage): Handle aliases.  Return function symbol.
8575         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
8576         Use ultimate alias target for the linkage name.
8577         * config/alpha/alpha.md (movmemdi): Use the symbol returned
8578         by alpha_need_linkage for the function symbol.
8579         (setmemdi): Likewise.
8580
8581 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
8582
8583         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
8584         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
8585         (ASM_WEAKEN_LABEL): Define.
8586         (CRT_CALL_STATIC_FUNCTION): Define.
8587         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
8588         (ENDFILE_SPEC): Define.
8589         (INIT_SECTION_ASM_OP): Define.
8590         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
8591         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
8592         crtend.o crtendS.o.
8593         (MULTILIB_OSDIRNAMES): Define.
8594         (shlib_version): Define.
8595         (SHLIB_EXT): Define.
8596         (SHLIB_OBJS): Define.
8597         (SHLIB_NAME): Define.
8598         (SHLIB_MULTILIB): Define.
8599         (SHLIB_INSTALL): Define.
8600         (SHLIB_SYMVEC): Define.
8601         (SHLIB_SYMVECX2): Define.
8602         (SHLIB_LINK): Define.
8603
8604 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
8605
8606         * config/alpha/alpha.c (alpha_initialize_trampoline):
8607         Initialize VMS trampoline IAW ABI for bounded procedure calls.
8608         (alpha_start_function): Emit transfer address on nested functions
8609         for VMS trampoline call.
8610         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
8611         since no longer used.
8612         * config/alpha/vms-tramp.asm: Remove.
8613         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
8614         since now only data initialized at runtime.
8615
8616 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
8617
8618         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
8619         (LINK_GCC_C_SEQUENCE_SPEC): Define.
8620         (MD_EXEC_PREFIX): Remove, no longer used.
8621         (MD_STARTFILE_PREFIX): Likewise.
8622         (INCLUDE_DEFAULTS): Likewise.
8623         * config/alpha/t-vms:
8624         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
8625
8626 2009-08-09  Richard Guenther  <rguenther@suse.de>
8627
8628         PR tree-optimization/41016
8629         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
8630         (operand_precision): Remove.
8631         (integral_operand_p): Likewise.
8632         (recognize_single_bit_test): Adjust.
8633
8634 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
8635
8636         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
8637         operation overflows.  Likewise non-cast unary arithmetic.
8638         If one arm of a conditional expression is always taken,
8639         inhibit evaluation warnings for the other arm.  Likewise inhibit
8640         evaluation warnings for the second && or || operand if the first
8641         operand is enough to determine the result.
8642         * c-typeck.c (build_conditional_expr): Apply the same inhibition
8643         rules here.
8644         (build_binary_op): Prevent duplicate evaluation warnings.
8645
8646 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
8647
8648         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
8649         and destination have different modes, Use promote_mode to
8650         determine the signedness of the conversion.  Assert that the
8651         promoted source mode matches the destination mode.  Don't pass
8652         the destination and destination mode to expand_expr if the source
8653         mode is different.  Simplify conversion logic.
8654
8655 2009-08-09  Ira Rosen  <irar@il.ibm.com>
8656
8657         PR tree-optimization/41008
8658         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
8659         from condition only in case it's a comparison. Adjust checks.
8660
8661 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
8662
8663         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
8664         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
8665         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
8666         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
8667         (dump_cand): Handle them.
8668         (struct iv_cand): New members COST_STEP and AINC_USE.
8669         (stmt_after_increment): Likewise.
8670         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
8671         callers changed.  Use gimple_uid comparison instead of scanning.
8672         (add_candidate_1): When looking for identical candidates, take
8673         AINC_USE into account.  Set it for new candidates.
8674         (force_expr_to_var_cost): Cast target_spill_cost to int.
8675         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
8676         All callers changed.  Check for availability of autoinc addressing
8677         modes, both in general for a given mode, and in the specific use case.
8678         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
8679         changed.
8680         (get_computation_cost): Likewise.
8681         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
8682         add_autoinc_candidates): New static functions.
8683         (add_candidate): Call add_autoinc_candidates for candidates based on
8684         a USE_ADDRESS use.
8685         (find_iv_candidates): Call set_autoinc_for_original_candidates.
8686         (determine_use_iv_cost_address): If we have an autoinc candidate at
8687         the matching use, verify autoinc is possible and subtract the cost
8688         of the candidate's step from the cost.
8689         (determine_iv_cost): Record the cost of the increment in the COST_STEP
8690         member of the candidate.
8691         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
8692         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
8693
8694 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
8695
8696         * config.build (ia64-hp-*vms*): New target.
8697         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
8698         with ia64-hp-*vms*.
8699         * config.gcc (ia64-hp-*vms*): New target.
8700         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
8701         with ia64-hp-*vms*.
8702         * config.host (ia64-hp-*vms*): New target.
8703         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
8704         with ia64-hp-*vms*.
8705
8706 2009-08-08  Richard Guenther  <rguenther@suse.de>
8707
8708         PR tree-optimization/40991
8709         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
8710
8711 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
8712
8713         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
8714         mode check.  Do truncations in an integer mode.
8715         (force_to_mode): Handle subregs for all mode types.  Only do
8716         arithmetic simplifications on integer modes.
8717
8718 2009-08-07  Richard Guenther  <rguenther@suse.de>
8719
8720         PR tree-optimization/40999
8721         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
8722         (maybe_fold_reference): Lookup constant initializers.
8723         (fold_gimple_assign): Likewise.
8724
8725 2009-08-07  Richard Guenther  <rguenther@suse.de>
8726
8727         * tree-ssa.c (useless_type_conversion_p_1): Only for types
8728         that require structural equality defer to the langhook.
8729
8730 2009-08-07  Martin Jambor  <mjambor@suse.cz>
8731
8732         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
8733         comments.
8734         (struct ipa_pass_through_data): New type.
8735         (struct ipa_ancestor_jf_data): New type.
8736         (union jump_func_value): Removed field formal_id, added fields
8737         pass_through and ancestor.
8738         (struct ipa_param_call_note): Changed type of formal_id to int from
8739         unsigned.
8740         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
8741         operations jump functions and ancestor jump functions.
8742         (compute_complex_pass_through): New function.
8743         (compute_scalar_jump_functions): Call compute_complex_pass_through,
8744         reflect changes in the jump function strucutre.
8745         (update_jump_functions_after_inlining): Ignore complex pass-through
8746         and ancestor jump functions.
8747         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
8748         polynomial pass-through with operation jump functions.
8749
8750 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
8751
8752         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
8753         fde->dw_fde_begin as begin label instead of hot/cold label.
8754         Use LLSDAC label instead of LLSDA for second section lsda.
8755         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
8756         label instead of LLSDA if it is true.
8757         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
8758         callers.
8759         * except.c (add_call_site, dw2_size_of_call_site_table): Add
8760         SECTION argument.  Use it as index into crtl->eh.call_site_record
8761         array.
8762         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
8763         use it to determine how to print table entries instead of using
8764         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
8765         label instead of normal begin label as base.
8766         (sjlj_assign_call_site_values): Adjust add_call_site caller.
8767         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
8768         ensure no EH range spans between sections and that landing pads
8769         are always in the corresponding section.
8770         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
8771         for crtl->eh.call_site_record being an array rather than scalar.
8772         (output_one_function_exception_table): New function, copied
8773         from output_function_exception_table.  Adjust
8774         dw2_size_of_call_site_table, dw2_output_call_site_table
8775         callers.  For SECOND section use *C suffixed labels.
8776         (output_function_exception_table): Call
8777         output_one_function_exception_table and, when doing hot/cold
8778         partitioning, also another time for the second section.
8779         * opts.c: Include except.h.
8780         (decode_options): Allow -freorder-blocks-and-partition with
8781         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
8782         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
8783         * function.h (struct rtl_eh): Change call_site_record from
8784         scalar into array of 2 elements.
8785
8786 2009-08-07  Martin Jambor  <mjambor@suse.cz>
8787
8788         * ipa-prop.c (count_formal_params_1): New function.
8789         (ipa_get_vector_of_formal_parms): New function.
8790         (get_vector_of_formal_parm_types): New function.
8791         (ipa_modify_formal_parameters): New function.
8792         (ipa_modify_call_arguments): New function.
8793         (index_in_adjustments_multiple_times_p): New function.
8794         (ipa_combine_adjustments): New function.
8795         (ipa_dump_param_adjustments): New function.
8796         * ipa-prop.h (struct ipa_parm_adjustment): New type.
8797         (ipa_get_vector_of_formal_parms): Declare.
8798         (ipa_modify_formal_parameters): Declare.
8799         (ipa_modify_call_arguments): Declare.
8800         (ipa_combine_adjustments): Declare.
8801         (ipa_dump_param_adjustments): Declare.
8802         (build_ref_for_offset): Declare.
8803         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
8804         * tree-sra.c: Include ipa-prop.c.
8805         (build_ref_for_offset): Make public.
8806
8807 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
8808
8809         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
8810
8811 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
8812
8813         * gcc/doc/extend.texi (__builtin_extract_return_address)
8814         (__builtin_frob_return_address): Document.
8815
8816 2009-08-06  Paul Brook  <paul@codesourcery.com>
8817
8818         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
8819         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
8820         implementation on ARMv6-M.
8821
8822 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
8823
8824         * doc/extend.texi (pcs): Document new attribute for ARM.
8825
8826 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
8827
8828         * arm.c (pcs_attribute_args): Comment out unsupported attribute
8829         variants.
8830
8831 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
8832
8833         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
8834         warning ().
8835
8836 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
8837
8838         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
8839
8840 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
8841
8842         Merge ARM/hard_vfp_branch to trunk.
8843
8844         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
8845
8846         * arm.c (libcall_eq): New function.
8847         (libcall_hash): New function.
8848         (add_libcall): New function.
8849         (arm_libcall_uses_aapcs_base): New function.
8850         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
8851         libcalls using the base PCS.
8852         (arm_init_cumulative_args): Likewise.
8853
8854         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
8855
8856         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
8857         Use base ABI for conversion libfuncs between HFmode and SFmode.
8858
8859         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
8860
8861         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
8862         V4SImode as representatives of all 64-bit and 128-bit vector
8863         types.  Allow vector types without vector modes.
8864         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
8865         without vector modes like BLKmode.
8866         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
8867         BLKmode.  Avoid unsupported vector modes or TImode moves for
8868         non-TARGET_NEON.
8869         (aapcs_vfp_allocate_return_reg): Likewise.
8870         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
8871         V8QImode if TARGET_NEON || TARGET_IWMMXT.
8872
8873         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
8874
8875         * config/arm/arm.c (arm_handle_pcs_attribute): New.
8876         (arm_get_pcs_model): Pass attribute arguments to
8877         arm_pcs_from_attribute.
8878         (arm_init_cumulative_args): Use base AAPCS for conversions from
8879         floating-point types to DImode.
8880         (arm_attribute_table): Add pcs attribute.
8881         (arm_handle_pcs_attribute): New.
8882         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
8883         conversions from floating-point types to DImode, also declare them
8884         to use base AAPCS and declare functions they call to use base
8885         AAPCS and their RTABI names.
8886
8887         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
8888
8889         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
8890         -mfloat-abi=hard not being supported for VFP.
8891
8892         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
8893
8894         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
8895         SYMBOL_REF to hard_libcall_value.
8896
8897         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
8898             Richard Earnshaw  <rearnsha@arm.com>
8899
8900         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
8901         has been put on the stack, all remaining co-processory arguments for
8902         that co-processor also go on the stack.
8903
8904         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
8905
8906         * config/arm/arm.c (arm_return_in_memory): Handle returning
8907         vectors of suitable size in registers also for AAPCS case.
8908
8909         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
8910
8911         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
8912
8913         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
8914
8915         ARM Hard-VFP calling convention
8916         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
8917         * target.h (gcc_target): Add libcall_value to table of call hooks.
8918         * targhooks.h (default_libcall_value): Default implementation.
8919         * targhooks.c (default_libcall_value): Likewise.
8920         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
8921         * optabs.c (expand_unop): Use it.
8922         * expr.h (hard_libcall_value): Pass the function RTX through.
8923         * calls.c (emit_library_call_value_1): Update call to
8924         hard_libcall_value.
8925         * explow.c (hard_libcall_value): Use new target hook.
8926         * testsuite/lib/target-supports.exp
8927         (check_effective_target_arm_hard_vfp_ok): New hook.
8928         (check_effective_target_arm_neon_ok): Improve test for neon
8929         availability.
8930         * testsuite/gcc.target/arm/eabi1.c: Only run test in base variant.
8931         * config/arm/arm.c: Include cgraph.h
8932         (TARGET_FUNCTION_VALUE): Override default hook.
8933         (arm_pcs_default): New variable.
8934         (arm_override_options): Don't fault hard calling convention with VFP.
8935         Add support for AAPCS variants.
8936         (arm_function_value): Make static.  Handle AAPCS variants.
8937         (arm_libcall_value): New function.
8938         (arm_apply_result_size): Handle VFP registers in results.
8939         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
8940         conventions.
8941         (pcs_attribute_args): New variable.
8942         (arm_pcs_from_attribute): New function.
8943         (arm_get_pcs_model): New function.
8944         (aapcs_vfp_cum_init): New function.
8945         (aapcs_vfp_sub_candidate): New function.
8946         (aapcs_vfp_is_return_candidate): New function.
8947         (aapcs_vfp_is_call_candidate): New function.
8948         (aapcs_vfp_allocate): New function.
8949         (aapcs_vfp_allocate_return_reg): New function.
8950         (aapcs_vfp_advance): New function.
8951         (aapcs_cp_arg_layout): New variable.
8952         (aapcs_select_call_coproc): New function.
8953         (aapcs_select_return_coproc): New function.
8954         (aapcs_allocate_return_reg): New function.
8955         (aapcs_libcall_value): New function.
8956         (aapcs_layout_arg): New function.
8957         (arm_init_cumulative_args): Initialize AAPCS args data.
8958         (arm_function_arg): Handle AAPCS variants using new interface.
8959         (arm_arg_parital_bytes): Likewise.
8960         (arm_function_arg_advance): New function.
8961         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
8962         calling conventions.
8963         (arm_setup_incoming_varargs): Handle new AAPCS args data.
8964         * arm.h (NUM_VFP_ARG_REGS): Define.
8965         (LIBCALL_VALUE): Update.
8966         (FUNCTION_VALUE): Delete.
8967         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
8968         (arm_pcs): New enum.
8969         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
8970         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
8971         (FUNCTION_ARG_REGNO_P): Add VFP regs.
8972         * arm-protos.h (arm_function_arg_advance): Add.
8973         (aapcs_libcall_value): Add.
8974         (arm_function_value): Delete.
8975
8976 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
8977             H.J. Lu  <hongjiu.lu@intel.com>
8978
8979         PR target/40957
8980         * config/i386/i386.c (standard_sse_mode_p): Remove.
8981         (standard_sse_constant_p): Return 2 for integer mode
8982         vector_all_ones_operand when SSE2 is enabled.
8983         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
8984         (ix86_expand_vector_move): Do not check for negative values from
8985         standard_sse_constant_p.
8986
8987 2009-08-06  Richard Guenther  <rguenther@suse.de>
8988
8989         * tree-ssa.c (useless_type_conversion_p_1): Make function and
8990         array type comparisons frontend independent.
8991         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
8992         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
8993         out array reference lower bound and element size operands.
8994         (ao_ref_init_from_vn_reference): Properly compute the offset
8995         for ARRAY_RANGE_REF.
8996         (vn_reference_fold_indirect): Fill out array reference lower
8997         bound and element size operands.
8998         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
8999         a non gimple valued reference operand which can happen for
9000         array reference lower bound or element size.
9001         (create_component_ref_by_pieces_1): Properly generate the
9002         element size operand for array references.
9003
9004 2009-08-06  Richard Guenther  <rguenther@suse.de>
9005
9006         PR tree-optimization/40964
9007         * tree.c (iterative_hash_host_wide_int): Export.
9008         * tree.h (iterative_hash_host_wide_int): Declare.
9009         * tree-ssa-structalias.c (heapvar_map): New struct.
9010         (heapvar_map_eq): New function.
9011         (heapvar_map_hash): Likewise.
9012         (heapvar_lookup): Adjust.
9013         (heapvar_insert): Likewise.
9014         (make_constraint_from_heapvar): Allow multiple heap variables
9015         per decl at different offsets.
9016         (init_alias_heapvars): Adjust.
9017
9018 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
9019
9020         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
9021         * mips_output_sync_loop (mips_output_sync_loop): Only emit
9022         trailing sync if TARGET_SYNC_AFTER_SC.
9023
9024 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
9025
9026         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
9027         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
9028         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
9029         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
9030         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
9031         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
9032         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
9033         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
9034         test_and_set_12): Rewrite calls to mips_output_sync_loop.
9035         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
9036         the prototype declaration match the definition.
9037         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
9038         instructions explicitly.  Add barrier_before and operands
9039         parameters.
9040         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
9041         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
9042         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
9043         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
9044         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
9045         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
9046
9047 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
9048
9049         * tree-ssa-alias.c: Fix intervals to use [) syntax.
9050
9051 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
9052             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
9053
9054         PR target/40906
9055         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
9056         source operand.
9057
9058 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
9059
9060         PR rtl-optimization/40924
9061         * dse.c (canon_address): Before calling cselib_expand_value_rtx
9062         make sure canon_rtx (mem_address) isn't simpler than
9063         canon_rtx (expanded_mem_address).
9064
9065 2009-08-05  Li Feng  <nemokingdom@gmail.com>
9066
9067         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
9068         for each poly_bb_p.
9069         (build_scop_drs): Build alias set for each SCoP.
9070
9071 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
9072
9073         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
9074         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
9075         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
9076         (MIPS_ARCH_FLOAT_SPEC): Likewise.
9077         (BASE_DRIVER_SELF_SPECS): Likewise.
9078
9079 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
9080
9081         * tree-ssa-alias.c: Fix some comment typos.
9082
9083 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
9084
9085         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
9086         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
9087
9088 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
9089
9090         PR c/39902
9091         * simplify-rtx.c (simplify_binary_operation_1): Disable
9092         simplifications for decimal float operations.
9093
9094 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
9095
9096         PR middle-end/40943
9097         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
9098         operand of INDIRECT_REF.
9099
9100 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
9101
9102         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
9103         constants referencing TLS symbols.
9104
9105 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
9106
9107         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
9108         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
9109
9110 2009-08-03  Richard Guenther  <rguenther@suse.de>
9111
9112         * tree.c (make_vector_type): Build a main variant first,
9113         get the canonical one and then build the variant.
9114         * tree-ssa.c (useless_type_conversion_p_1): Handle
9115         fixed-point types.
9116         (useless_type_conversion_p): Conversions to pointers to
9117         incomplete record types are useless.
9118
9119 2009-08-03  Richard Guenther  <rguenther@suse.de>
9120
9121         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
9122         file will be created.
9123         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
9124         * toplev.c (compile_file): Adjust comment.
9125
9126 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
9127
9128         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
9129         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
9130         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9131         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
9132         (sh_promote_function_mode): Fix typo.
9133
9134 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
9135
9136         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
9137
9138 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9139
9140         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
9141         declaration arguments.
9142
9143 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
9144
9145         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
9146         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
9147         (ix86_split_ashl): Ditto.
9148         (ix86_expand_vector_init_one_nonzero): Ditto.
9149         (ix86_expand_vector_set): Ditto.
9150         (ix86_expand_reduc_v4sf): Ditto.
9151
9152 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
9153
9154         * explow.c (promote_function_mode): Remove assert.
9155         * config/sh/sh.c (sh_promote_function_mode): Declare.
9156
9157 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9158
9159         * config/pa/pa.c (pa_promote_function_mode): Declare.
9160         Change to static.  Fix promote_mode call.
9161
9162         * gthr-dce.h (CONST_CAST2): Define if not defined.
9163         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
9164
9165         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
9166
9167 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
9168
9169         * expr.c (store_constructor): Use promote_decl_mode.  Remove
9170         now write-only variable unsignedp.
9171         (expand_expr_real_1): Use promote_decl_mode.
9172         * expr.h (promote_function_mode, promote_decl_mode): New.
9173         (promote_mode): Remove last argument.
9174         * function.c (assign_temp): Drop last argument of promote_mode.
9175         (assign_parm_find_data_types): Use promote_function_mode.
9176         (assign_parm_setup_reg): Likewise.
9177         (expand_function_end): Use promote_function_mode.
9178         * calls.c (initialize_argument_information): Use promote_function_mode.
9179         (precompute_arguments): Use promote_mode instead of checking if
9180         only PROMOTE_FUNCTION_MODE is defined.
9181         (expand_call): When making sibcall decisions, use promote_function_mode.
9182         Below, remove an if for targetm.calls.promote_function_return and
9183         and use promote_function_mode.
9184         (emit_library_call_value_1): Use promote_function_mode, fix bug
9185         where promote_mode was passed FOR_CALL == 0 for a return value in an
9186         assertion.
9187         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
9188         * explow.c (promote_function_mode, promote_decl_mode): New.
9189         (promote_mode): Keep only the FOR_CALL == 0 case.
9190         * combine.c (setup_incoming_promotion): Remove test of
9191         promote_function_args.  Use promote_function_mode.
9192         * stmt.c (expand_value_return): Use promote_decl_mode.
9193         (expand_decl): Use promote_decl_mode.
9194
9195         * expr.c (store_constructor): Use promote_decl_mode.  Remove
9196         now write-only variable unsignedp.
9197         (expand_expr_real_1): Use promote_decl_mode.
9198         * expr.h (promote_function_mode, promote_decl_mode): New.
9199         (promote_mode): Remove last argument.
9200         * function.c (assign_temp): Drop last argument of promote_mode.
9201         (assign_parm_find_data_types): Use promote_function_mode.
9202         (assign_parm_setup_reg): Likewise.
9203         (expand_function_end): Use promote_function_mode.
9204         * calls.c (initialize_argument_information): Use promote_function_mode.
9205         (precompute_arguments): Use promote_mode instead of checking if
9206         only PROMOTE_FUNCTION_MODE is defined.
9207         (expand_call): When making sibcall decisions, use promote_function_mode.
9208         Below, remove an if for targetm.calls.promote_function_return and
9209         and use promote_function_mode.
9210         (emit_library_call_value_1): Use promote_function_mode, fix bug
9211         where promote_mode was passed FOR_CALL == 0 for a return value in an
9212         assertion.
9213         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
9214         * explow.c (promote_function_mode, promote_decl_mode): New.
9215         (promote_mode): Keep only the FOR_CALL == 0 case.
9216         * combine.c (setup_incoming_promotion): Remove test of
9217         promote_function_args.  Use promote_function_mode.
9218         * stmt.c (expand_value_return): Use promote_decl_mode.
9219         (expand_decl): Use promote_decl_mode.
9220
9221         * explow.c (promote_function_mode): Just call the target hook.
9222         * targhooks.c (default_promote_function_mode,
9223         default_promote_function_mode_always_promote): New.
9224         * targhooks.h (default_promote_function_mode,
9225         default_promote_function_mode_always_promote): Declare.
9226         * target.h (promote_function_args, promote_function_return): Remove.
9227         (promote_function_mode): New.
9228         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
9229         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9230         (TARGET_PROMOTE_FUNCTION_MODE): New.
9231         (TARGET_CALLS): Adjust.
9232         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
9233         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
9234
9235         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
9236         * config/s390/s390.c (s390_promote_function_mode): ... here,
9237         with pointer handling.
9238         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9239         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9240
9241         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
9242         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
9243         with pointer handling.
9244         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9245         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9246
9247         * config/sh/sh-protos.h (sh_promote_function_mode): New.
9248         * config/sh/sh.c (sh_promote_function_mode): New.
9249         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9250         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9251
9252         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
9253         * config/cris/cris.c (cris_promote_function_mode): ... here.
9254         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9255         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
9256
9257         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
9258         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
9259         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9260         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
9261
9262         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
9263         * config/arm/arm.c (arm_promote_function_mode): ... here, without
9264         complex type handling.
9265         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9266         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9267
9268         * config/pa/pa.c (pa_promote_function_mode): New.
9269         (TARGET_PROMOTE_FUNCTION_MODE): Define.
9270         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9271
9272         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
9273         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9274         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
9275         * config/xtensa/xtensa.c: Likewise.
9276         * config/stormy16/stormy16.c: Likewise.
9277         * config/iq2000/iq2000.c: Likewise.
9278         * config/rs6000/rs6000.c: Likewise.
9279         * config/picochip/picochip.c: Likewise.
9280         * config/arc/arc.c: Likewise.
9281         * config/mcore/mcore.c: Likewise.
9282         * config/score/score.c: Likewise.
9283         * config/mips/mips.c: Likewise.
9284         * config/bfin/bfin.c: Likewise.
9285         * config/ia64/ia64.c: Likewise (disabled though).
9286
9287         * config/frv/frv.h: Remove pointless remark.
9288
9289         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
9290         TARGET_PROMOTE_FUNCTION_ARGS,
9291         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
9292         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
9293
9294 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
9295
9296         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
9297         -floop-parallelize-all.
9298         * toplev.c (process_options): Rename flag_graphite_force_parallel to
9299         flag_loop_parallelize_all.
9300         * tree-ssa-loop.c (gate_graphite_transforms): Same.
9301         * graphite.c (graphite_transform_loops): Same.
9302         * common.opt: Same.
9303         * graphite-poly.c (apply_poly_transforms): Same.
9304
9305 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
9306
9307         PR tree-optimization/40914
9308         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
9309         if set, then check the delta field of the PMF record.
9310         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
9311         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
9312         call is stored in the delta.
9313
9314 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
9315
9316         * config/mips/mips.md (*clear_upper32_dext): New pattern.
9317
9318 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
9319
9320         * config/i386/bsd.h (ASM_BYTE): New define.
9321         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
9322         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
9323         .byte.  Use fputs or putc instead of fprintf where appropriate.
9324         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
9325         fputs or putc instead of fprintf where appropriate.
9326         * config/i386/i386elf.h: Ditto.
9327         * config/i386/sysv4.h: Ditto.
9328
9329         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
9330         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
9331         (*tls_global_dynamic_64): Ditto.
9332
9333 2009-07-31  Christian Bruel  <christian.bruel@st.com>
9334
9335         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
9336
9337 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9338
9339         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
9340         Remove dead code for MINUS.
9341
9342 2009-07-31  Anthony Green  <green@moxielogic.com>
9343
9344         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
9345         $r12 in prologue.
9346         (moxie_expand_epilogue): Ditto for epilogue.
9347         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
9348         incoming arguments.
9349         (moxie_function_arg): Ditto.
9350         (moxie_pass_by_reference): Ditto.
9351         (moxie_arg_partial_bytes): Ditto.
9352         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
9353         (FUNCTION_ARG_ADVANCE) Ditto.
9354         (REG_PARM_STACK_SPACE) Ditto.
9355         (FUNCTION_ARG_REGNO_P) Dito.
9356
9357         * config.gcc: Add moxie linux config support.
9358         * gcc/config/moxie/uclinux.h: New file.
9359
9360 2009-07-31  DJ Delorie  <dj@redhat.com>
9361
9362         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
9363         (UNSPECV_SP_SWITCH_E): New.
9364         (sp_switch_1): Change to an unspec.
9365         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
9366         replace $r15.
9367         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
9368         reference the new stack's address
9369
9370 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9371
9372         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
9373         graphite-clast-to-gimple.o, graphite-dependences.o,
9374         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
9375         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
9376         (graphite-blocking.o,
9377         graphite-clast-to-gimple.o, graphite-dependences.o,
9378         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
9379         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
9380         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
9381         * cfgloop.h (struct loop): Add can_be_parallel field.
9382         * common.opt (fgraphite-identity): Moved up.
9383         (fgraphite-force-parallel): New flag.
9384         * graphite.c: Rewrite.
9385         * graphite.h: Rewrite.
9386         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
9387         after Graphite.
9388         * toplev.c (graphite_out_file): New file descriptor.
9389         (graphite_in_file): New.
9390         (process_options): flag_graphite_force_parallel cannot be used without
9391         Graphite.
9392         * tree-ssa-loop.c: Include toplev.h.
9393         (gate_graphite_transforms): Enable flag_graphite for
9394         flag_graphite_force_parallel.
9395
9396 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9397
9398         * ChangeLog.graphite: New.
9399         * graphite-blocking.c: New.
9400         * graphite-clast-to-gimple.c: New.
9401         * graphite-clast-to-gimple.h: New.
9402         * graphite-dependences.c: New.
9403         * graphite-dependences.h: New.
9404         * graphite-interchange.c: New.
9405         * graphite-poly.c: New.
9406         * graphite-poly.h: New.
9407         * graphite-ppl.c: New.
9408         * graphite-ppl.h: New.
9409         * graphite-scop-detection.c: New.
9410         * graphite-scop-detection.h: New.
9411         * graphite-sese-to-poly.c: New.
9412         * graphite-sese-to-poly.h: New.
9413         * sese.c: New.
9414         * sese.h: New.
9415
9416 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9417
9418         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
9419         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
9420
9421 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9422
9423         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
9424         (scev_is_linear_expression): Return false if the evolution is not
9425         affine multivariate.
9426
9427 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9428
9429         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
9430         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
9431
9432 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9433
9434         * tree-data-ref.c (debug_data_references): New.
9435         (debug_data_reference): New.
9436         * tree-data-ref.h (debug_data_references): Declared.
9437         (debug_data_reference): Declared.
9438
9439 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9440
9441         * tree-data-ref.c (stmt_simple_memref_p: Removed.
9442         * tree-data-ref.h (scop_p): Removed.
9443         (struct data_reference): Remove field scop.
9444         (DR_SCOP): Removed.
9445         (stmt_simple_memref_p): Removed.
9446
9447 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9448
9449         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
9450         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
9451         basic block empty.
9452
9453 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9454
9455         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
9456
9457 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9458
9459         * doc/invoke.texi (-fgraphite-identity): Documented.
9460
9461 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9462
9463         * tree-scalar-evolution.c: Fix comment.
9464         (instantiate_scev_1): Return unknow from scev instantiation if the
9465         result is not above instantiate_below.
9466
9467 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
9468
9469         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
9470         static anymore.  Instantiate the symbols that may have been introduced
9471         by chrec_apply.
9472         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
9473         Declared.
9474
9475 2009-07-30  DJ Delorie  <dj@redhat.com>
9476
9477         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
9478         .vliw directive to VLIW sections.
9479
9480 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9481
9482         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
9483         New variables.
9484         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
9485         (AUTOHEADER): New variable.
9486         ($(srcdir)/cstamp-h.in): Use it.
9487
9488 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
9489             Pat Haugen  <pthaugen@us.ibm.com>
9490             Revital Eres <ERES@il.ibm.com>
9491
9492         * config/rs6000/vector.md (VEC_F): Add VSX support.
9493         (VEC_A): Ditto.
9494         (VEC_N): Ditto.
9495         (mov<mode>): Ditto.
9496         (vector_load_<mode>): Ditto.
9497         (vector_store_<mode>): Ditto.
9498         (vector GPR move split): Ditto.
9499         (vec_reload_and_plus_<mptrsize>): Ditto.
9500         (vec_reload_and_reg_<mptrsize>): Ditto.
9501         (add<mode>3): Ditto.
9502         (sub<mode>3): Ditto.
9503         (mul<mode>3): Ditto.
9504         (neg<mode>2): Ditto.
9505         (abs<mode>2): Ditto.
9506         (smin<mode>3): Ditto.
9507         (smax<mode>3): Ditto.
9508         (vector_eq<mode>): Ditto.
9509         (vector_gt<mode>): Ditto.
9510         (vector_ge<mode>): Ditto.
9511         (vector_gtu<mode>): Ditto.
9512         (vector_select_<mode>_uns): Ditto.
9513         (vector_eq_<mode>_p): Ditto.
9514         (vector_gt_<mode>_p): Ditto.
9515         (vector_ge_<mode>_p): Ditto.
9516         (vector_gtu_<mode>_p): Ditto.
9517         (cr6_test_for_zero): Ditto.
9518         (cr6_test_for_zero_reverse): Ditto.
9519         (cr6_test_for_lt): Ditto.
9520         (cr6_test_for_lt_reverse): Ditto.
9521         (xor<mode>3): Ditto.
9522         (ior<mode>3): Ditto.
9523         (and<mode>3): Ditto.
9524         (one_cmpl<mode>2): Ditto.
9525         (nor<mode>2): Ditto.
9526         (andc<mode>2): Ditto.
9527         (float<VEC_int<mode>2): Ditto.
9528         (unsigned_float<VEC_int><mode>2): Ditto.
9529         (fix_trunc<mode><VEC_int>2): Ditto.
9530         (fixuns_trunc<mode><VEC_int>2): Ditto.
9531         (vec_init<mode>):
9532         (vec_set<mode>): Ditto.
9533         (vec_extract<mode>): Ditto.
9534         (vec_interleave_highv4sf): Ditto.
9535         (vec_interleave_lowv4sf): Ditto.
9536         (vec_realign_load_<mode>): Ditto.
9537         (vec_shl_<mode>): Ditto.
9538         (vec_shr_<mode>): Ditto.
9539         (div<mode>3): New patterns for VSX.
9540         (vec_interleave_highv2df): Ditto.
9541         (vec_interleave_lowv2df): Ditto.
9542         (vec_pack_trunc_v2df): Ditto.
9543         (vec_pack_sfix_trunc_v2df): Ditto.
9544         (vec_pack_ufix_trunc_v2df): Ditto.
9545         (vec_unpacks_hi_v4sf): Ditto.
9546         (vec_unpacks_lo_v4sf): Ditto.
9547         (vec_unpacks_float_hi_v4si): Ditto.
9548         (vec_unpacks_float_lo_v4si): Ditto.
9549         (vec_unpacku_float_hi_v4si): Ditto.
9550         (vec_unpacku_float_lo_v4si): Ditto.
9551         (movmisalign<mode>): Ditto.
9552         (vector_ceil<mode>2): New patterns for vectorizing math library.
9553         (vector_floor<mode>2): Ditto.
9554         (vector_btrunc<mode>2): Ditto.
9555         (vector_copysign<mode>3): Ditto.
9556
9557         * config/rs6000/predicates.md (easy_vector_constant_msb): New
9558         predicate for setting the high bit in each word, used for copysign.
9559
9560         * config/rs6000/ppc-asm.h (f19): Whitespace.
9561         (f32-f63): Define if VSX.
9562         (v0-v31): Define if Altivec.
9563         (vs0-vs63): Define if VSX.
9564
9565         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
9566
9567         * config/rs6000/power7.md: New file, provide tuning parameters for
9568         -mcpu=power7.
9569
9570         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
9571         (rs6000_cpu_cpp_builtins): Ditto.
9572         (altivec_overloaded_builtins): Ditto.
9573         (altivec_resolve_overloaded_builtin): Ditto.
9574
9575         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
9576         debug switch to disable vectorizing simple math builtin
9577         functions.
9578
9579         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
9580         Vectorize simple math builtin functions.
9581         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
9582         hook to vectorize math builtins.
9583         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
9584         (rs6000_builtin_conversion): Add VSX/power7 support.
9585         (rs6000_builtin_vec_perm): Ditto.
9586         (vsplits_constant): Add support for loading up a vector constant
9587         with just the high bit set in each part.
9588         (rs6000_expand_vector_init): Add VSX/power7 support.
9589         (rs6000_expand_vector_set): Ditto.
9590         (rs6000_expand_vector_extract): Ditto.
9591         (rs6000_emit_move): Ditto.
9592         (bdesc_3arg): Ditto.
9593         (bdesc_2arg): Ditto.
9594         (bdesc_1arg): Ditto.
9595         (rs6000_expand_ternop_builtin): Ditto.
9596         (altivec_expand_builtin): Ditto.
9597         (rs6000_expand_unop_builtin): Ditto.
9598         (rs6000_init_builtins): Ditto.
9599         (altivec_init_builtins): Ditto.
9600         (builtin_function_type): Ditto.
9601         (rs6000_common_init_builtins): Ditto.
9602         (rs6000_handle_altivec_attribute); Ditto.
9603         (rs6000_mangle_type): Ditto.
9604         (rs6000_vector_mode_supported_p): Ditto.
9605         (rs6000_mode_dependent_address): Altivec addresses with AND -16
9606         are mode dependent.
9607
9608         * config/rs6000/vsx.md: New file for VSX support.
9609
9610         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
9611         identifing values with just the most significant bit set.
9612         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
9613         vectorized builtins.
9614
9615         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
9616         (UNSPEC_VRFIM): Delete.
9617         (splitter for loading up vector with most significant bit): New
9618         splitter for vectorizing copysign.
9619         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
9620         vectorizing simple math functions.
9621         (altivec_vrfip): Add support for vectorizing simple math functions.
9622         (altivec_vrfim): Ditto.
9623         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
9624
9625         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
9626         (power7.md, vsx.md): Include for power7 support.
9627         (copysigndf3): Use VSX instructions if -mvsx.
9628         (negdf2_fpr): Ditto.
9629         (absdf2_fpr): Ditto.
9630         (nabsdf2_fpr): Ditto.
9631         (adddf3_fpr): Ditto.
9632         (subdf3_fpr): Ditto.
9633         (muldf3_fpr): Ditto.
9634         (divdf3_fpr): Ditto.
9635         (fix_truncdfdi2_fpr): Ditto.
9636         (cmpdf_internal1): Ditto.
9637         (fred, fred_fpr): Convert into expander/insn to add VSX support.
9638         (btruncdf2, btruncdf2_fpr): Ditto.
9639         (ceildf2, ceildf2_fpr): Ditto.
9640         (floordf2, floordf2_fpr): Ditto.
9641         (floatdidf2, floatdidf2_fpr): Ditto.
9642         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
9643         (fmsubdf4_fpr): Ditto.
9644         (fnmadddf4_fpr_1): Ditto.
9645         (fnmadddf4_fpr_2): Ditto.
9646         (fnmsubdf4_fpr_1): Ditto.
9647         (fnmsubdf4_fpr_2): Ditto.
9648         (fixuns_truncdfdi2): Add expander for VSX support.
9649         (fix_truncdfdi2): Ditto.
9650         (fix_truncdfsi2): Ditto.
9651         (ftruncdf2): Ditto.
9652         (btruncsf2): Whitespace.
9653         (movdf_hardfloat32): Add support for VSX registers.
9654         (movdf_softfloat32): Ditto.
9655         (movdf_hardfloat64): Ditto.
9656         (movdf_hardfloat64_mfpgpr): Ditto.
9657         (movdf_softfloat64): Ditto.
9658         (movti splitters): Add check for vector registers supporting
9659         TImode in the future.
9660         (bpermd): Add power7 bpermd instruction.
9661
9662         * config/rs6000/altivec.h (vec_div): Define if VSX.
9663         (vec_mul): Ditto.
9664         (vec_msub): Ditto.
9665         (vec_nmadd): Ditto.
9666         (vec_nearbyint): Ditto.
9667         (vec_rint): Ditto.
9668         (vec_sqrt): Ditto.
9669         (all predicates): Use the generic builtin function, and not the V4SF
9670         specific function so that the predicates will work with VSX's V2DF.
9671         (vec_all_*): Ditto.
9672         (vec_any_*): Ditto.
9673
9674         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
9675         Document new VSX functions and types.
9676
9677         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
9678         switches.
9679
9680         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
9681         "wa", and "j" constraints.  Modify "v" to talk about Altivec
9682         instead of just vector.
9683
9684 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
9685
9686         PR debug/26475
9687         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
9688         location for phi arguments.
9689         (rewrite_update_phi_arguments): Find locations for reaching defs.
9690         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
9691         Add location to add_phi_arg calls.
9692         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
9693         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
9694         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
9695         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
9696         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
9697         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
9698         * tree-phinodes.c (make_phi_node): Initialize location.
9699         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
9700         (add_phi_arg): Add location parameter.
9701         (remove_phi_arg_num): Move location when moving phi argument.
9702         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
9703         location.
9704         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
9705         slpeel_update_phi_nodes_for_guard1,
9706         slpeel_update_phi_nodes_for_guard2,
9707         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
9708         vect_loop_versioning): Set locations.
9709         * tree-parloops.c (create_phi_for_local_result,
9710         transform_to_exit_first_loop, create_parallel_loop): Add locations.
9711         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
9712         * tree-vect-loop.c (get_initial_def_for_induction,
9713         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
9714         locations.
9715         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
9716         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
9717         (gimple_phi_arg_set_location): New.  Set locus.
9718         (gimple_phi_arg_has_location): New.  Check for locus.
9719         (redirect_edge_var_map_location): New.  Return locus from var_map.
9720         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
9721         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
9722         combining PHI arguments.
9723         (cond_store_replacement): Set location.
9724         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
9725         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
9726         scop_add_exit_phis_edge): Add locations.
9727         * tree-cfgcleanup.c (remove_forwarder_block,
9728         remove_forwarder_block_with_phi): Add locations.
9729         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
9730         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
9731         locations.
9732         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
9733         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
9734         flush_pending_stmts): Add source location.
9735         * lambda-code.c (perfect_nestify): Maintain location stack with argument
9736         stack to preserve locations.
9737         * tree-vect-stmts.c (vectorizable_load): Add location.
9738         * tree-inline.c (copy_phis_for_bb): Copy locus.
9739         (setup_one_parameter): Add call locus to inlined parameter stmts.
9740         (initialize_inlined_parameters): Pass in call location as parameter
9741         assignment locus.
9742         (tree_function_versioning): Pass location to setup_one_parameter.
9743         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
9744         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
9745         copy and edge lists.
9746         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
9747         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
9748         locus parameter and override the stmt default if provided.
9749         (new_elim_graph, clear_elim_graph, delete_elim_graph,
9750         elim_graph_add_edge, elim_graph_remove_succ_edge,
9751         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
9752         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
9753         eliminate_phi):  Add locus info in elimination graph for each edge and
9754         value copy.
9755         (insert_backedge_copies): Copy locus if present.
9756         * tree-flow.h (struct _edge_var_map): Add locus field.
9757         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
9758         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
9759         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
9760         locations.
9761         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
9762
9763 2009-07-30  Martin Jambor  <mjambor@suse.cz>
9764
9765         PR tree-optimization/40570
9766         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
9767         use inlining loops.
9768
9769 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
9770
9771         * ssa-loop-manip.c: Include langhooks.h.
9772         (rewrite_phi_with_iv): New.
9773         (rewrite_all_phi_nodes_with_iv): New.
9774         (canonicalize_loop_ivs): Move here from tree-parloops.c.
9775         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
9776         * tree-parloops.c (loop_parallel_p): Move out all conditions
9777         except dependency check.
9778         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
9779         (gen_parallel_loop): Call canonicalize_loop_ivs without
9780         reduction_list argument.
9781         (build_new_reduction): New.
9782         (gather_scalar_reductions): New.
9783         (try_get_loop_niter): New.
9784         (try_create_reduction_list): New.
9785         (parallleize_loops): Change the parallel conditions check.
9786         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
9787         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
9788
9789 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
9790
9791         * opt-functions.awk (opt_args): Allow argument to be enclosed in
9792         curly braces.
9793         * doc/options.texi (Option properties):  Mention new quoting syntax.
9794
9795 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
9796
9797         * config/alpha/alpha.c (alpha_start_function):
9798         Handle VMS_DEBUG_MAIN_POINTER
9799         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
9800         * doc/invoke.texi: Document -mdebug-main switch.
9801
9802 2009-07-29  Richard Henderson  <rth@redhat.com>
9803
9804         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
9805         (cgraph_create_edge_including_clones): Likewise.
9806         * tree-inline.c (copy_bb): Operate on the correct edges
9807         when updating the callgraph.
9808
9809 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
9810
9811         * config/alpha/vms-cc.c: Deleted.
9812         * config/alpha/vms-ld.c: Deleted.
9813         * config/alpha/t-vms64: Moved to config/vms
9814         * config/alpha/vms-crt0-64.c: Moved to config/vms
9815         * config/alpha/vms-crt0.c: Moved to config/vms
9816         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
9817         * config/alpha/vms-psxcrt0.c: Moved to config/vms
9818         * config/alpha/xm-vms.h: Moved to config/vms
9819         * config/alpha/x-vms: Moved to config/vms
9820         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
9821         config/vms/t-vms.
9822         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
9823         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
9824         (version): Set.
9825         * config/vms/t-vms64: Moved here from config/alpha
9826         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
9827         (argc,argv,envp): Enforce 32bit malloc'ing.
9828         * config/vms/vms-psxcrt0-64.c: Likewise.
9829         * config/vms/vms-crt0.c: Moved here from config/alpha.
9830         * config/vms/vms-psxcrt0.c: Likewise.
9831         * config/vms/vms-crtl-64.h: New file.
9832         * config/vms/vms-crtl.h: New file.
9833         * config/vms/vms.opt: New file.
9834         * config/vms/xm-vms64.h: New file.
9835         * config/vms/xm-vms.h: Moved here from config/alpha.
9836         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
9837         Set.
9838         * config/vms/x-vms: Moved here from config/alpha.
9839         (version, VMS_EXTRA_PARTS): Moved to t-vms.
9840         (vms-ld.o, vms-cc.o): Removed.
9841         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
9842
9843 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
9844
9845         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
9846         correct stack (obvious VMS fix).
9847
9848 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
9849
9850         * dwarf2out.c (output_file_names): Output VMS style file name, size,
9851         date, version info if VMS_DEBUGGING_INFO defined.
9852         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
9853         size, date calculating code moved here.
9854
9855 2009-07-29  Paul Brook  <paul@codesourcery.com>
9856
9857         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
9858         do_push/do_pop.
9859
9860 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
9861
9862         PR target/40577
9863         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
9864         to DImode when generating insq_le insn.
9865
9866 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
9867
9868         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
9869         New macro set for VMS_DEBUGGGING_INFO.
9870         (AT_string_form): Use it.
9871
9872 2009-07-28  DJ Delorie  <dj@redhat.com>
9873
9874         * config/mep/mep.c (vtext_section): New.
9875         (vftext_section): New.
9876         (ftext_section): New.
9877         (mep_select_section): Add support for functions.
9878         (mep_unique_section): Likewise.
9879         (mep_asm_init_sections): Likewise.
9880         (mep_encode_section_info): Remove it from here.
9881
9882         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
9883
9884 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
9885
9886         * tree.h (TREE_DEPRECATED): Document it is used for types too.
9887         (TYPE_VECTOR_OPAQUE): Use default_def_flag
9888
9889 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
9890
9891         * dwarf2out.c (output_file_names): Test new macro
9892         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
9893         (add_comp_dir_attribute): Likewise.
9894
9895 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
9896
9897         * config/i386/mingw-w64.h (LINK_SPEC): Add
9898         separating space between commands.
9899
9900 2009-07-28  Jan Hubicka  <jh@suse.cz>
9901
9902         PR tree-optimization/40759
9903         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
9904         for renaming.
9905
9906 2009-07-27  DJ Delorie  <dj@redhat.com>
9907
9908         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
9909         types are dword-aligned.
9910         (mep_expand_va_start): Likewise.
9911
9912 2009-07-27  Olivier Hainque  <hainque@adacore.com>
9913             Douglas B Rupp  <rupp@gnat.com>
9914
9915         * convert.c (convert_to_pointer): Don't assume the target
9916         pointer type is POINTER_SIZE long. Fetch its precision instead.
9917
9918 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
9919
9920         * system.h (fopen): Undefine if macro.
9921
9922 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
9923
9924         * dwarf2out.c (output_cfi_p): Removed.
9925         (output_cfis): New function.
9926         (output_fde): New function, split from output_call_frame_info.
9927         (output_call_frame_info): Use it.
9928         (dwarf2out_switch_text_section): Use output_cfis.
9929
9930 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
9931
9932         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
9933         TARGET_BI_ARCH is specified without enabling SJLJ.
9934         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
9935         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
9936
9937 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
9938
9939         * arm.md (negdi2): Use DImode if forcing a value into a register.
9940
9941 2009-07-26  Ira Rosen  <irar@il.ibm.com>
9942
9943         PR tree-optimization/40801
9944         * tree-vect-stmts.c (vectorizable_call): Get previous copy
9945         of vector operand from the previous copy of vector statement.
9946         Pass the correct definition type value to
9947         vect_get_vec_def_for_stmt_copy().
9948
9949 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9950
9951         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
9952         const char ** conversion.
9953
9954 2009-07-25 David Daney <ddaney@caviumnetworks.com>
9955
9956         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
9957         fancy_abort() if !ENABLE_ASSERT_CHECKING.
9958         (gcc_unreachable): Invoke __builtin_unreachable() if
9959         !ENABLE_ASSERT_CHECKING.
9960
9961 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
9962
9963         PR rtl-optimization/40445
9964         * emit-rtl.c (next_nonnote_insn_bb): New function.
9965         * rtl.h (next_nonnote_insn_bb): Declare new function.
9966         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
9967         with no successors that is the successor of the ENTRY_BLOCK.
9968         Continue from the top after removing an empty fallthrough block.
9969         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
9970         of next_nonnote_insn.
9971
9972 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
9973
9974         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
9975
9976 2009-07-25  Martin Jambor  <mjambor@suse.cz>
9977
9978         * c-common.c (c_common_attribute_table): New element for noclone.
9979         (handle_noclone_attribute): New function. Forward-declare.
9980         * tree-inline.c (tree_versionable_function_p): Check for noclone
9981         attribute.
9982         * doc/extend.texi (Labels as Values): Document need for noclone.
9983         (Function Attributes): Document noclone attribute.
9984
9985 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
9986
9987         PR rtl-optimization/34999
9988         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
9989         and dw_fde_switched_cold_to_hot fields.
9990         (output_cfi_p): New function.
9991         (output_call_frame_info): If fde->dw_fde_switched_sections,
9992         output 2 FDEs instead of one with corrupted header.
9993         (dwarf2out_do_cfi_startproc): New function.
9994         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
9995         and fde->dw_fde_switched_cold_to_hot.
9996         (dwarf2out_switch_text_section): Compute
9997         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
9998         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
9999         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
10000         Otherwise, compute fde->dw_fde_switch_cfi.
10001
10002 2009-07-24  Cary Coutant  <ccoutant@google.com>
10003
10004         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
10005
10006 2009-07-24  Cary Coutant  <ccoutant@google.com>
10007
10008         * cfghooks.c (split_block): Copy discriminator to new block.
10009         * tree-cfg.c (assign_discriminator): Check location of last
10010         instruction in block as well as first.
10011
10012 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
10013
10014         * config/i386/linux.c: Use fputs or putc instead of fprintf
10015         where appropriate.
10016         * config/i386/gas.h: Ditto.
10017         * config/i386/x86-64.h: Ditto.
10018         * config/i386/att.h: Ditto.
10019
10020 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
10021
10022         * expmed.c (emit_store_flag): Use a recursive call to optimize the
10023         xor case.
10024
10025 2009-07-24  Martin Jambor  <mjambor@suse.cz>
10026
10027         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
10028         (ipa_push_func_to_list_1): Declare.
10029         (ipa_push_func_to_list): New function.
10030
10031         * ipa-prop.c (ipa_push_func_to_list_1): New function.
10032         (ipa_init_func_list): Call ipa_push_func_to_list_1.
10033         (ipa_push_func_to_list): Removed.
10034         (ipa_pop_func_from_list): Clear node_enqueued flag.
10035
10036 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
10037
10038         * config/s390/s390.c (override_options): Default
10039         max-unrolled-insns to 100 for z10 tuning.
10040
10041 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
10042
10043         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
10044         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
10045         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
10046         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
10047         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
10048         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
10049         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
10050
10051 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
10052
10053         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
10054         use default set in mingw32.h header.
10055         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
10056         64-bit /mingw/include path.
10057         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
10058         path.
10059
10060 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
10061
10062         PR rtl-optimization/40209
10063         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
10064
10065 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
10066
10067         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
10068         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
10069         with the rest of string where appropriate.  Use fputs or putc
10070         instead of fprintf where appropriate.
10071
10072 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
10073             Pat Haugen  <pthaugen@us.ibm.com>
10074             Revital Eres <ERES@il.ibm.com>
10075
10076         * config/rs6000/vector.md: New file.  Move most of the vector
10077         expander support here from altivec.md to allow for the VSX vector
10078         unit in the future.  Add support for secondary_reload patterns.
10079         Rewrite the patterns for vector comparison, and vector comparison
10080         predicate instructions so that the RTL expresses the desired
10081         behavior, instead of using unspec.
10082
10083         * config/rs6000/constraints.md ("f" constraint): Use
10084         rs6000_constraints to hold the precalculated register class.
10085         ("d" constraint): Ditto.
10086         ("wd" constraint): New constraint for VSX.
10087         ("wf" constraint): Ditto.
10088         ("ws" constraint): Ditto.
10089         ("wa" constraint): Ditto.
10090         ("wZ" constraint): Ditto.
10091         ("j" constraint): Ditto.
10092
10093         * config/rs6000/predicates.md (vsx_register_operand): New
10094         predicate for VSX.
10095         (vfloat_operand): New predicate for vector.md.
10096         (vint_operand): Ditto.
10097         (vlogical_operand): Ditto.
10098         (easy_fp_constant): If VSX, 0.0 is an easy constant.
10099         (easy_vector_constant): Add VSX support.
10100         (altivec_indexed_or_indirect_operand): New predicate for
10101         recognizing Altivec style memory references with AND -16.
10102
10103         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
10104         for vector secondary reload support.
10105         (rs6000_vector_reg_class): Delete, replacing it with
10106         rs6000_constraints.
10107         (rs6000_vsx_reg_class): Ditto.
10108         (rs6000_constraints): New array to hold the register classes of
10109         each of the register constraints that can vary at runtime.
10110         (builtin_mode_to_type): New static array for builtin function type
10111         creation.
10112         (builtin_hash_table): New static hash table for builtin function
10113         type creation.
10114         (TARGET_SECONDARY_RELOAD): Define target hook.
10115         (TARGET_IRA_COVER_CLASSES): Ditto.
10116         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
10117         registers are 128 bits if VSX memory reference instructions are used.
10118         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
10119         unit is being used.
10120         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
10121         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
10122         Print several of the scheduling related parameters.
10123         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
10124         rs6000_constraints instead of rs6000_vector_reg_class.  Move
10125         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
10126         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
10127         Altivec.  Add VSX support.  Setup for secondary reload support on
10128         Altivec/VSX registers.
10129         (rs6000_override_options): Make power7 set the scheduling groups
10130         like the power5.  Add support for new debug switches to override
10131         the scheduling defaults.  Temporarily disable -mcpu=power7 from
10132         setting -mvsx.  Add support for debug switches -malways-hint,
10133         -msched-groups, and -malign-branch-targets.
10134         (rs6000_buitlin_conversion): Add support for returning unsigned
10135         vector conversion functions to fix regressions due to stricter
10136         type checking.
10137         (rs6000_builtin_mul_widen_even): Ditto.
10138         (rs6000_builtin_mul_widen_odd): Ditto.
10139         (rs6000_builtin_vec_perm): Ditto.
10140         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
10141         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
10142         to zero a register.
10143         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
10144         generated upstream.
10145         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
10146         VSX types for bit operations.  Changes to accomidate vector.md.
10147         (bdesc_2arg): Ditto.
10148         (bdesc_1arg): Ditto.
10149         (struct builtin_description_predicates): Rewrite predicate
10150         handling so that RTL describes the operation, instead of passing
10151         the instruction to be used as a string argument.
10152         (bdesc_altivec_preds): Ditto.
10153         (altivec_expand_predicate_builtin): Ditto.
10154         (altivec_expand_builtin): Ditto.
10155         (rs6000_expand_ternop_builtin): Use a switch instead of an if
10156         statement for vsldoi support.
10157         (altivec_expand_ld_builtin): Change to use new names from vector.md.
10158         (altivec_expand_st_builtin): Ditto.
10159         (paired_expand_builtin): Whitespace changes.
10160         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
10161         builtin_mode_to_type table for secondary reload.  Call
10162         builtin_function_type to build random builtin functions.
10163         (altivec_init_builtins): Change to use builtin_function_type to
10164         create builtin function types dynamically as we need them.
10165         (builtin_hash_function): New support for hashing the tree types
10166         for builtin function as we need it, rather than trying to build
10167         all of the trees that we need.  Add initial preliminary VSX support.
10168         (builtin_function_type): Ditto.
10169         (builtin_function_eq): Ditto.
10170         (builtin_hash_struct): Ditto.
10171         (rs6000_init_builtins): Ditto.
10172         (rs6000_common_init_builtins): Ditto.
10173         (altivec_init_builtins): Ditto.
10174         (rs6000_common_init_builtins): Ditto.
10175         (enum reload_reg_type): New enum for simplifing reg classes.
10176         (rs6000_reload_register_type): Simplify register classes into GPR,
10177         Vector, and other registers.  Altivec and VSX addresses in reload.
10178         (rs6000_secondary_reload_inner): Ditto.
10179         (rs6000_ira_cover_classes): New target hook, that returns the
10180         appropriate cover classes, based on -mvsx being used or not.
10181         (rs6000_secondary_reload_class): Add VSX support.
10182         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
10183         (get_vsel_insn): Ditto.
10184         (rs6000_emit_vector_compare): Rewrite vector conditional support
10185         so that where we can, we use RTL operators, instead of blindly use
10186         UNSPEC.
10187         (rs6000_emit_vector_select): Ditto.
10188         (rs6000_emit_vector_cond_expr): Ditto.
10189         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
10190         (create_TOC_reference): Add -mdebug=addr support.
10191         (emit_frame_save): VSX loads/stores need register indexed addressing.
10192
10193         * config/rs6000/rs6000.md: Include vector.md.
10194
10195         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
10196
10197         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
10198         support for V2DI, V2DF in logical, permute, select operations.
10199
10200         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
10201         switch for vsx/power7.
10202         (-mvsx-scalar-memory): Ditto.
10203         (-mvsx-align-128): Ditto.
10204         (-mallow-movmisalign): Ditto.
10205         (-mallow-df-permute): Ditto.
10206         (-msched-groups): Ditto.
10207         (-malways-hint): Ditto.
10208         (-malign-branch-targets): Ditto.
10209
10210         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
10211         hook instead.
10212         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
10213         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
10214         (rs6000_vector_reg_class): Delete.
10215         (rs6000_vsx_reg_class): Ditto.
10216         (enum rs6000_reg_class_enum): New enum for the constraints that
10217         vary based on target switches.
10218         (rs6000_constraints): New array to hold the register class for all
10219         of the register constraints that vary based on the switches used.
10220         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
10221         (enum rs6000_builtins): Add unsigned varients for the builtin
10222         declarations returned by target hooks for expanding multiplies,
10223         select, and permute operations.  Add VSX builtins.
10224         (enum rs6000_builtin_type_index): Add entries for VSX.
10225         (V2DI_type_node): Ditto.
10226         (V2DF_type_node): Ditto.
10227         (unsigned_V2DI_type_node): Ditto.
10228         (bool_long_type_node): Ditto.
10229         (intDI_type_internal_node): Ditto.
10230         (uintDI_type_internal_node): Ditto.
10231         (double_type_internal_node): Ditto.
10232
10233         * config/rs6000/altivec.md (whole file): Move all expanders to
10234         vector.md from altivec.md.  Rename insn matching functions to be
10235         altivec_foo.
10236         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
10237         (altivec_vcmp*): Ditto.
10238         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
10239         (VM): New iterator for moves that includes the VSX types.
10240         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
10241         (altivec_vperm_<mode>_uns): New, for unsigned types.
10242         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
10243         (altivec_eq<mode>): Ditto.
10244         (altivec_gt<mode>): Ditto.
10245         (altivec_gtu<mode>): Ditto.
10246         (altivec_eqv4sf): Ditto.
10247         (altivec_gev4sf): Ditto.
10248         (altivec_gtv4sf): Ditto.
10249         (altivec_vcmpbfp_p): Ditto.
10250
10251 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
10252
10253         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
10254         unsigned HWI.
10255
10256 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
10257
10258         PR target/40832
10259         * config/i386/i386.c (output_387_ffreep): Rewrite to use
10260         ASM_SHORT instead of .word.
10261         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
10262         instead of .word in asm template.
10263
10264 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
10265
10266         PR target/37488
10267         * ira-lives.c (bb_has_abnormal_call_pred): New function.
10268         (process_bb_node_lives): Use it.
10269
10270         * ira.c (setup_cover_and_important_classes): Don't setup
10271         ira_important_class_nums.  Add cover classes to the end of
10272         important classes.
10273         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
10274         New.
10275         (find_reg_class_closure): Use reorder_important_classes.
10276
10277         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
10278
10279         * config/i386/i386.c (i386_ira_cover_classes): New function.
10280         (TARGET_IRA_COVER_CLASSES): Redefine.
10281
10282         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
10283         importance of order of cover classes in the array.
10284
10285 2009-07-22  Diego Novillo  <dnovillo@google.com>
10286
10287         * tree-pass.h (TDF_EH): Define.
10288         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
10289         contains TDF_EH, print the EH region number holding GS.
10290         * tree-dump.c (dump_options): Add "eh".
10291         * doc/invoke.texi: Document it.
10292
10293 2009-07-22  Doug Kwan  <dougkwan@google.com>
10294
10295         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
10296
10297 2009-07-22  Michael Matz  <matz@suse.de>
10298
10299         PR tree-optimization/35229
10300         PR tree-optimization/39300
10301
10302         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
10303         (inhibit_phi_insertion): New function.
10304         (insert_into_preds_of_block): Call it for REFERENCEs.
10305         (init_pre): Initialize and finalize scalar evolutions.
10306         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
10307
10308 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
10309
10310         * config/i386/predicates.md (zero_extended_scalar_load_operand):
10311         Use CONST_VECTOR_NUNITS to determine number of elements.
10312
10313 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
10314
10315         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
10316         (U, W): Constraints are now deprecated and will be removed if we
10317         run out of letters.
10318         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
10319         the file.
10320         ("prefetch"): Add the stcmh instruction for prefetching.
10321         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
10322         changes.
10323         (s390_short_displacement): Return always true if compiling for
10324         machines not providing the long displacement facility.
10325         (s390_mem_constraint): Support the new constraint letter Z.
10326         (s390_check_qrst_address): New function.
10327
10328 2009-07-21  DJ Delorie  <dj@redhat.com>
10329
10330         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
10331         alone too.
10332
10333 2009-07-21  Jason Merrill  <jason@redhat.com>
10334
10335         * c-common.c (max_tinst_depth): Increase default to 1024.
10336
10337 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
10338
10339         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
10340         (vec_unpacku_float_lo_v4si): Ditto.
10341
10342 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
10343
10344         PR target/40811
10345         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
10346         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
10347         (builtin_description): Add __builtin_ia32_cvtudq2ps.
10348         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
10349
10350 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
10351
10352         PR tree-optimization/40813
10353         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
10354         it.
10355
10356 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
10357
10358         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
10359         with a NOP_EXPR if needed.
10360
10361 2009-07-21  Paul Brook <paul@codesourcery.com>
10362
10363         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
10364         Terminate debug dump with newline.
10365
10366 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10367
10368         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
10369         Cast "1" to unsigned HOST_WIDE_INT.
10370         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
10371         deposit length to the maximum length - lsb.  Extend length if
10372         HOST_BITS_PER_WIDE_INT is 32.
10373
10374 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
10375
10376         * cgraph.h (constant_pool_htab): New function.
10377         (constant_descriptor_tree): Move from varasm.c.
10378         * varasm.c (constant_pool_htab): New function.
10379         (constant_descriptor_tree): Move to cgraph.h.
10380
10381 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
10382
10383         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
10384
10385 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
10386
10387         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
10388         $(VARRAY_H).
10389
10390 2009-07-20  Xinliang David Li  <davidxl@google.com>
10391
10392         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
10393
10394 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
10395
10396         * config/mips/mips.md (move_type): Add arith.
10397         (type): Handle arith.
10398         (zero_extendsidi2): Rename this into ...
10399         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
10400         (zero_extendsidi2): New expander.
10401         (*zero_extendsidi2_dext): New pattern.
10402
10403 2009-07-20  Nick Clifton  <nickc@redhat.com>
10404
10405         * config.gcc (mips64-*-*): Add definition of tm_defines in order
10406         to set MIPS_ABI_DEFAULT.
10407         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
10408
10409 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
10410
10411         * tree-object-size.c (addr_object_size): Handle unions with
10412         array in it as last field of structs in __bos (, 1) as __bos (, 0).
10413
10414         PR tree-optimization/40792
10415         * tree.c (build_function_type_skip_args): Remove bogus assert.
10416
10417 2009-07-20  Jan Hubicka  <jh@suse.cz>
10418             Martin Jambor  <mjambor@suse.cz>
10419
10420         * cgraph.h (combined_args_to_skip): New field.
10421         * cgraph.c (cgraph_create_virtual_clone): Properly handle
10422         combined_args_to_skip and args_to_skip.
10423         * tree-inline.c (update_clone_info): New function.
10424         (tree_function_versioning): Call update_clone_info.
10425         * cgraphunit.c (cgraph_materialize_clone): Dump materialized
10426         functions.
10427         (cgraph_materialize_all_clones): More extensive dumping, working
10428         with combined_args_to_skip rather than args_to_skip.
10429
10430 2009-07-20  Ira Rosen  <irar@il.ibm.com>
10431
10432         * tree-vectorizer.h (vectorizable_condition): Add parameters.
10433         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
10434         (get_initial_def_for_reduction): Likewise.
10435         (vectorizable_reduction): Skip the check of first operand in case
10436         of COND_EXPR. Add check that it is outer loop vectorization if
10437         nested cycle was detected. Call vectorizable_condition() for
10438         COND_EXPR. If reduction epilogue cannot be created do not fail for
10439         nested cycles (if it is not double reduction). Assert that there
10440         is only one type in the loop in case of COND_EXPR. Call
10441         vectorizable_condition() to vectorize COND_EXPR.
10442         * tree-vect-stmts.c (vectorizable_condition): Update comment.
10443         Add parameters. Allow nested cycles if called from
10444         vectorizable_reduction(). Use reduction vector variable if provided.
10445         (vect_analyze_stmt): Call vectorizable_reduction() before
10446         vectorizable_condition().
10447         (vect_transform_stmt): Update call to vectorizable_condition().
10448
10449 2009-07-20  Christian Bruel  <christian.bruel@st.com>
10450
10451         * config/sh/sh.opt (-mfmovd): Resurrect and document.
10452         * doc/invoke.texi (-mfmovd): Likewise.
10453         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
10454
10455 2009-07-20  Jan Hubicka  <jh@suse.cz>
10456
10457         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
10458         when handling SSA name.
10459
10460 2009-07-19  Jan Hubicka  <jh@suse.cz>
10461
10462         PR tree-optimization/40676
10463         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
10464         virtual PHIs in empty BBs.
10465
10466 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
10467
10468         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
10469         re-expanded the compound use gen_lowpart instead to convert to the
10470         desired mode.
10471
10472 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
10473
10474         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
10475         OUTER_CONST arguments.
10476         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
10477         the new wider mode will be masked off.
10478         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
10479
10480 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
10481
10482         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
10483         high-order bits are zero.
10484
10485 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
10486
10487         * combine.c (simplify_shift_const_1): Split code to determine
10488         shift_mode into ...
10489         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
10490         new bits shifted in are identical to the old sign bit.
10491
10492 2009-07-18  Richard Guenther  <rguenther@suse.de>
10493
10494         PR c/40787
10495         * gimplify.c (gimplify_call_expr): Reject code using results from
10496         functions returning void.
10497
10498 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
10499
10500         * doc/md.texi: Document the new PowerPC "es" constraint.
10501         Document that "m" can include automodified addresses on this target,
10502         and explain how %U must be used.  Extend the "Q" and "Z" documentation
10503         to suggest "es" as well as "m".
10504         * config/rs6000/constraints.md (es): New memory constraint.
10505         (Q, Z): Update strings to match new documentation.
10506
10507 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
10508
10509         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
10510         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
10511         * config/rs6000/predicates.md (volatile_mem_operand): Use
10512         offsettable_nonstrict_memref_p.
10513         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
10514         (*floatunssidf2_internal): Likewise.
10515         (*fix_truncdfsi2_internal): Likewise.
10516         (*fix_trunctfsi2_internal): Likewise.
10517
10518 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
10519
10520         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
10521         atmega32u2 devices.
10522         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
10523
10524 2009-07-17  Richard Guenther  <rguenther@suse.de>
10525
10526         PR c/40401
10527         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
10528         (pass_warn_unused_result): Likewise.
10529         (TODO_set_props): Remove.
10530         * omp-low.c (diagnose_omp_structured_block_errors): Change to
10531         run as a pass.
10532         (pass_diagnose_omp_blocks): Define.
10533         * c-decl.c (pop_file_scope): Do not finalize the CU here.
10534         (c_gimple_diagnostics_recursively): Remove.
10535         (finish_function): Do not call it.
10536         (c_write_global_declarations): Continue after errors.
10537         Finalize the CU here.
10538         * c-gimplify.c (c_genericize): Do not gimplify here.
10539         * c-common.c (c_warn_unused_result): Move ...
10540         * tree-cfg.c (do_warn_unused_result): ... here.
10541         (run_warn_unused_result): New function.
10542         (gate_warn_unused_result): New function.
10543         (pass_warn_unused_result): New pass.
10544         * c-common.h (c_warn_unused_result): Remove.
10545         * flags.h (flag_warn_unused_result): Declare.
10546         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
10547         * opts.c (flag_warn_unused_result): Initialize to false.
10548         * toplev.c (compile_file): Add comment.
10549         * omp-low.c (create_omp_child_function): Do not register
10550         the function with the frontend.
10551         (diagnose_omp_structured_block_errors): Prepare to be
10552         called as optimization pass.
10553         (gate_diagnose_omp_blocks): New function.
10554         (pass_diagnose_omp_blocks): New pass.
10555         * cgraph.h (cgraph_optimize): Remove.
10556         (cgraph_analyze_function): Likewise.
10557         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
10558         * cgraphunit.c (cgraph_lower_function): Lower nested functions
10559         before their parents here.
10560         (cgraph_finalize_function): Not here.
10561         (cgraph_analyze_function): Gimplify functions here.
10562         (cgraph_finalize_compilation_unit): Continue after errors.
10563         Optimize the callgraph from here.
10564         (cgraph_optimize): Make static.
10565         * langhooks.c (write_global_declarations): Finalize the CU.
10566         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
10567         (gimplify_function_tree): Assert we gimplify only once.
10568         Set PROP_gimple_any property.
10569         * tree-nested.c (gimplify_all_functions): New function.
10570         (lower_nested_functions): Gimplify all nested functions.
10571         * gimple.h (diagnose_omp_structured_block_errors): Remove.
10572         * passes.c (init_optimization_passes): Add pass_warn_unused_result
10573         and pass_diagnose_omp_blocks after gimplification.  Do not
10574         set TODO_set_props on all_lowering_passes.
10575         (execute_one_pass): Do not handle TODO_set_props.
10576         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
10577         (gimplify.o): Add tree-pass.h dependency.
10578         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
10579         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
10580         (unsave_r): Likewise.
10581         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
10582         temporary variable.
10583
10584 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
10585
10586         * doc/service.texi (Service): Restore previously removed link,
10587         which isn't broken after all.
10588
10589 2009-07-17  Richard Guenther  <rguenther@suse.de>
10590
10591         PR tree-optimization/40321
10592         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
10593         PHI nodes to the maximal set.
10594         (make_values_for_phi): Add PHI arguments to the maximal set.
10595         (execute_pre): Dump PHI_GEN and the maximal set.
10596
10597 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
10598
10599         PR c++/40780
10600         * gimplify.c (gimplify_conversion): Don't change non-conversions into
10601         VIEW_CONVERT_EXPR.
10602
10603 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
10604
10605         * doc/extend.texi (Nested Functions): Replace broken link with
10606         textual reference.
10607         * doc/service.texi (Service): Remove broken link.
10608
10609 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
10610
10611         PR bootstrap/40781
10612         * builtins.c (expand_builtin_memcmp): Use loc instead of
10613         EXPR_LOCATION (exp).
10614         (expand_builtin_strncmp): Likewise.
10615
10616 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
10617             Manuel López-Ibáñez  <manu@gcc.gnu.org>
10618
10619         PR 40435
10620         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
10621         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
10622         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
10623         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
10624         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
10625         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
10626         tree-inline.c, c-common.c, c-common.h, gimple.c,
10627         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
10628         convert.c: Add location argument to fold_{unary,binary,ternary},
10629         fold_build[123], build_call_expr, build_size_arg,
10630         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
10631         fold_build1_initializer, fold_build2_initializer,
10632         fold_build3_initializer, fold_build_call_array,
10633         fold_build_call_array_initializer, fold_single_bit_test,
10634         omit_one_operand, omit_two_operands, invert_truthvalue,
10635         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
10636         combine_comparisons, fold_builtin_*, fold_call_expr,
10637         build_range_check, maybe_fold_offset_to_address, round_up,
10638         round_down.
10639
10640 2009-07-16  Jason Merrill  <jason@redhat.com>
10641
10642         PR libstdc++/37907
10643         * c-common.c (c_common_reswords): Add __is_standard_layout
10644         and __is_trivial.
10645         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
10646         * doc/implement-cxx.texi: New.
10647         * doc/gcc.texi: Include it.
10648
10649 2009-07-16  DJ Delorie  <dj@redhat.com>
10650
10651         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
10652         compares that may be indirectly affected by previous instructions.
10653
10654 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10655
10656         * builtins.c (do_mpc_arg2): New.
10657         (fold_builtin_2): Fold builtin cpow.
10658         * real.h (HAVE_mpc_pow): New.
10659
10660 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
10661
10662         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
10663         comparison to skip unprofitable schedule
10664
10665 2009-07-16  Simon Baldwin  <simonb@google.com>
10666
10667         * gcc.c (option_map): New flag -no-canonical-prefixes.
10668         * (display_help): Print help text for new flag.
10669         * (process_command): Move options translation and language specifics
10670         and handle new flag early.  Use it to set a function pointer to a
10671         prefix builder.  Replace make_relative_prefix calls with calls to
10672         the function pointed to.  Ignore new flag in regular options handling.
10673         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
10674
10675 2009-07-15  DJ Delorie  <dj@redhat.com>
10676
10677         * config/mep/mep.md (sibcall_internal): Change register to avoid
10678         argument registers.
10679         (sibcall_value_internal): Likewise.
10680
10681 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
10682
10683         PR rtl-optimization/40710
10684         * resource.c (mark_target_live_regs): Reset DF problem to LR.
10685
10686 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
10687
10688         * config/mips/mips.md (*extenddi_truncate<mode>,
10689         *extendsi_truncate<mode>): Change type attribute to move_type
10690         with shift_shift.  Split out code handling exts from here ...
10691         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
10692         pattern.
10693         (*extendhi_truncateqi): Change type attribute to move_type with
10694         shift_shift.  Split out code handling exts from here ...
10695         (*extendhi_truncateqi_exts): ... to this new pattern.
10696
10697 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
10698
10699         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
10700         instead of "and" with inverted sign bit mask value.  Use
10701         "nonimmediate_operand" for operand 1 and operand 2 predicate.
10702         Allocate registers only for operand 4 and operand 5.
10703
10704 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
10705
10706         PR middle-end/40747
10707         * fold-const.c (fold_cond_expr_with_comparison): When folding
10708         < and <= to MIN, make sure the MIN uses the same type as the
10709         comparison's operands.
10710
10711 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
10712
10713         * arm.md (ior_xor): New code iterator.
10714         (split for ior/xor with shift and zero-extend): New split pattern.
10715         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
10716
10717 2009-07-15  Richard Guenther  <rguenther@suse.de>
10718
10719         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
10720         offset member.
10721
10722 2009-07-15  Richard Guenther  <rguenther@suse.de>
10723
10724         PR middle-end/40753
10725         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
10726
10727 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
10728
10729         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
10730         handle 2.6.30 kernel.
10731
10732 2009-07-15  DJ Delorie  <dj@redhat.com>
10733
10734         * config/mep/mep.md (sibcall_internal): Change register to allow
10735         for 24-bit addresses.
10736         (sibcall_value_internal): Likewise.
10737
10738 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
10739
10740         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
10741         that are enabled/disabled by the flags introduced by a previous patch.
10742
10743 2009-07-14  DJ Delorie  <dj@redhat.com>
10744
10745         * config/mep/mep.md (sibcall_internal): Include non-toggling
10746         non-jmp case.
10747         (sibcall_value_internal): Likewise.
10748
10749 2009-07-14  Taras Glek  <tglek@mozilla.com>
10750             Rafael Espindola  <espindola@google.com>
10751
10752         * doc/sourcebuild.texi: Document install-plugin target.
10753         * configure.ac: Added install-plugin target to language makefiles.
10754         * configure: Regenerate.
10755         * Makefile.in (install-plugin): Install more headers,
10756         depend on lang.install-plugin.
10757
10758 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
10759
10760         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
10761         translation.
10762
10763 2009-07-14  DJ Delorie  <dj@redhat.com>
10764
10765         * config/mep/mep.c (mep_vliw_jmp_match): New function.
10766         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
10767         * config/mep/mep.md (sibcall_internal): Change test from
10768         mep_vliw_mode_match to mep_vliw_jmp_match.
10769         (sibcall_value_internal): Likewise.
10770
10771 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
10772
10773         * config/i386/sse.md (copysign<mode>3): New expander.
10774         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
10775         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
10776         Use ix86_build_const_vector.
10777         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
10778         IX86_BUILTIN_CPYSGNPD.
10779         (builtin_description): Add __builtin_ia32_copysignps and
10780         __builtin_ia32_copysignpd.
10781         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
10782         and BUILT_IN_COPYSIGNF.
10783
10784 2009-07-13  Jason Merrill  <jason@redhat.com>
10785
10786         * builtins.c (can_trust_pointer_alignment): New fn.
10787         (get_pointer_alignment): Factor it out from here.
10788         * tree.h: Declare it.
10789
10790 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
10791
10792         * config/rs6000/predicates.md (offsettable_mem_operand): Test
10793         RTX_AUTOINC class.
10794
10795 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
10796
10797         PR debug/40705
10798         PR c++/403057
10799         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
10800
10801 2009-07-14  Richard Guenther  <rguenther@suse.de>
10802             Andrey Belevantsev <abel@ispras.ru>
10803
10804         PR middle-end/40745
10805         * cfgexpand.c (partition_stack_vars): Do not bother to update
10806         alias information when not optimizing.
10807
10808 2009-07-14  Richard Guenther  <rguenther@suse.de>
10809             Andrey Belevantsev <abel@ispras.ru>
10810
10811         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
10812         (pt_solution_set): Likewise.
10813         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
10814         * tree-ssa-structalias.c (pt_solution_set): New function.
10815         * final.c (rest_of_clean_state): Free SSA data structures.
10816         * print-rtl.c (print_decl_name): Remove.
10817         (print_mem_expr): Implement in terms of print_generic_expr.
10818         * alias.c (ao_ref_from_mem): New function.
10819         (rtx_refs_may_alias_p): Likewise.
10820         (true_dependence): Query alias-export info.
10821         (canon_true_dependence): Likewise.
10822         (write_dependence_p): Likewise.
10823         * tree-dfa.c (get_ref_base_and_extent): For void types leave
10824         size unknown.
10825         * emit-rtl.c (component_ref_for_mem_expr): Remove.
10826         (mem_expr_equal_p): Use operand_equal_p.
10827         (set_mem_attributes_minus_bitpos): Do not use
10828         component_ref_for_mem_expr.
10829         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
10830         (update_alias_info_with_stack_vars): Likewise.
10831         (partition_stack_vars): Call update_alias_info_with_stack_vars.
10832         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
10833         explicitly nor clear stmt operands.
10834         Free the decl-to-pointer map.
10835         * tree-optimize.c (execute_free_datastructures): Do not free
10836         SSA data structures here.
10837         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
10838         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
10839         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
10840         dependencies.
10841         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
10842
10843 2009-07-13  DJ Delorie  <dj@redhat.com>
10844
10845         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
10846         unrolling at the right iteration count.
10847
10848         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
10849         calculations.
10850
10851 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
10852
10853         * haifa-sched.c (rank_for_schedule): Introduced flags to
10854         enable/disable individual scheduling heuristics.
10855         * common.opt: Introduced flags to enable/disable individual
10856         heuristics in the scheduler.
10857         * doc/invoke.texi: Introduced flags to enable/disable individual
10858         heuristics in the scheduler.
10859
10860 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
10861
10862         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
10863         config/i386/mingw-tls.c.
10864         * config/i386/mingw-tls.c: Removed.
10865
10866 2009-07-13  Ira Rosen  <irar@il.ibm.com>
10867
10868         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
10869         checks access only relevant statements.
10870         (vectorizable_reduction): Likewise.
10871
10872 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
10873
10874         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
10875         just for 32-bit case.
10876
10877 2009-07-12  Jan Hubicka  <jh@suse.cz>
10878
10879         PR tree-optimization/40585
10880         * except.c (expand_resx_expr): When there already is resume
10881         instruction, produce linked list.
10882         (build_post_landing_pads): Assert that resume is empty.
10883         (connect_post_landing_pads): Handle resume lists.
10884         (dump_eh_tree): Dump resume list.
10885
10886 2009-07-12  Ira Rosen  <irar@il.ibm.com>
10887
10888         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
10889         with additional argument.
10890         * tree-vectorizer.h (enum vect_def_type): Add
10891         vect_double_reduction_def.
10892         (vect_is_simple_reduction): Add argument.
10893         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
10894         indentation.
10895         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
10896         vect_is_simple_reduction with additional argument.
10897         (vect_analyze_loop_operations): Handle exit phi nodes in case of
10898         double reduction.
10899         (reduction_code_for_scalar_code): Handle additional codes by
10900         returning ERROR_MARK for them. Fix comment and indentation.
10901         (vect_is_simple_reduction): Fix comment, add argument to specify
10902         double reduction. Detect double reduction.
10903         (get_initial_def_for_induction): Fix indentation.
10904         (get_initial_def_for_reduction): Fix comment and indentation.
10905         Handle double reduction. Create initial definitions that do not
10906         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
10907         (vect_create_epilog_for_reduction): Fix comment, add argument to
10908         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
10909         epilogue result extraction. Create double reduction phi node and
10910         replace relevant uses.
10911         (vectorizable_reduction): Call vect_is_simple_reduction with
10912         additional argument. Fix indentation. Update epilogue code treatment
10913         according to the changes in reduction_code_for_scalar_code. Check
10914         for double reduction. Call vect_create_epilog_for_reduction with
10915         additional argument.
10916         * tree-vect-stmts.c (process_use): Handle double reduction, update
10917         documentation.
10918         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
10919         (vect_get_vec_def_for_operand): Likewise.
10920
10921 2009-07-12  Danny Smith  <dansmister@gmail.com>
10922
10923         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
10924         dllexport if !TREE_PUBLIC.
10925         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
10926
10927 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
10928
10929         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
10930         (avr_extra_arch_macro) Remove declatation.
10931         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
10932         (avr_extra_arch_macro) Declare as static.
10933         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
10934
10935 2009-07-11  Jan Hubicka  <jh@suse.cz>
10936
10937         PR middle-end/48388
10938         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
10939
10940 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
10941
10942         PR debug/40713
10943         * dwarf2out.c (dw_fde_struct): Add in_std_section and
10944         cold_in_std_section bits.
10945         (dwarf2out_begin_prologue): Initialize them.
10946         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
10947         if already covered by text_section or cold_text_section range.
10948
10949         PR rtl-optimization/40667
10950         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
10951         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
10952         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
10953         * config/i386/i386.c (ix86_minimum_alignment): New function.
10954         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
10955         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
10956         * emit-rtl.c (gen_reg_rtx): Likewise.
10957         * function.c (assign_parms): Likewise.  If nominal_type needs
10958         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
10959         rather than passed_type's alignment.
10960
10961         PR target/40668
10962         * function.c (assign_parm_setup_stack): Adjust
10963         MEM_OFFSET (data->stack_parm) if promoted_mode is different
10964         from nominal_mode on big endian.
10965
10966 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
10967
10968         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
10969
10970 2009-07-10  DJ Delorie  <dj@redhat.com>
10971
10972         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
10973
10974 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
10975
10976         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
10977         attribute.
10978         (thumb2_cbnz): Likewise.
10979
10980 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
10981
10982         PR target/39079
10983         * config.gcc (supported_defaults): Add synci.
10984         (with_synci): Add validation.
10985         (all_defaults): Add synci.
10986         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
10987         ISA_HAS_SYNCI.
10988         (synci): Same.
10989         * config/mips/mips.opt (msynci): New option.
10990         * config/mips/mips.c (mips_override_options): Warn on use of
10991         -msynci for targets that do now support it.
10992         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
10993         msynci.
10994         * gcc/doc/invoke.texi (-msynci): Document the new option.
10995         * doc/install.texi (--with-synci): Document the new option.
10996
10997 2009-07-10  Richard Guenther  <rguenther@suse.de>
10998
10999         PR tree-optimization/40496
11000         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
11001         the PHI result with a compatible type.
11002
11003 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11004
11005         PR 25509
11006         PR 40614
11007         * c.opt (Wunused-result): New.
11008         * doc/invoke.texi: Document it.
11009         * c-common.c (c_warn_unused_result): Use it.
11010
11011 2009-07-09  DJ Delorie  <dj@redhat.com>
11012
11013         * targhooks.c (default_target_can_inline_p): Rename from
11014         default_target_option_can_inline_p.
11015         * targhooks.h (default_target_can_inline_p): Likewise.
11016         * target-def.h (TARGET_CAN_INLINE_P): Rename from
11017         TARGET_OPTION_CAN_INLINE_P.
11018         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
11019         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
11020         (mep_target_can_inline_p): Rename from
11021         mep_target_option_can_inline_p.
11022
11023         PR target/40626
11024         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
11025         registers used to pass vectors.
11026
11027         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
11028
11029 2009-07-09  Tom Tromey  <tromey@redhat.com>
11030
11031         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
11032         * config/mmix/mmix.c: Include dwarf2.h.
11033         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
11034         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
11035         * config/sh/sh.c: Include dwarf2.h.
11036         * config/i386/i386.c: Include dwarf2.h.
11037         * Makefile.in (DWARF2_H): Remove 'elf'.
11038         * except.c: Include dwarf2.h.
11039         * unwind-dw2.c: Include dwarf2.h.
11040         * dwarf2out.c: Include dwarf2.h.
11041         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
11042         * unwind-dw2-fde.c: Include dwarf2.h.
11043         * dwarf2asm.c: Include dwarf2.h.
11044
11045 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
11046
11047         * haifa-sched.c (insn_finishes_cycle_p): New static function.
11048         (max_issue): Use it.
11049         * sched-int.h (struct sched_info: insn_finishes_block_p): New
11050         scheduler hook.
11051         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
11052         (region_sched_info): Update.
11053         * sched-ebb.c (ebb_sched_info): Update.
11054         * modulo-sched.c (sms_sched_info): Update.
11055         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
11056
11057 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
11058
11059         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
11060
11061 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
11062
11063         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
11064
11065 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
11066
11067         PR middle-end/40692
11068         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
11069         arg1 with arg01 if arg1 is already INTEGER_CST.
11070
11071 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
11072
11073         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
11074         Transform (and (truncate)) into (truncate (and)).
11075
11076 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
11077
11078         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
11079         creating LHS paradoxical subregs.  Fix surrounding returns to
11080         use NULL_RTX rather than 0.
11081
11082 2009-07-08  DJ Delorie  <dj@redhat.com>
11083
11084         * config/mep/mep.c (mep_option_can_inline_p): New.
11085         (TARGET_OPTION_CAN_INLINE_P): Define.
11086
11087 2009-07-08  Mark Wielaard  <mjw@redhat.com>
11088
11089         PR debug/40659
11090         * dwarf2out.c (add_data_member_location_attribute): When we have
11091         only a constant offset don't emit a new location description using
11092         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
11093         dwarf_version > 2.
11094
11095 2009-07-08  Richard Henderson  <rth@redhat.com>
11096
11097         PR target/38900
11098         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
11099         (enum reg_class): Add CLOBBERED_REGS.
11100         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
11101         * config/i386/i386.c (ix86_conditional_register_usage): Moved
11102         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
11103         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
11104         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
11105         force 64-bit sibcalls into R11.
11106         * config/i386/constraints.md (U): New constraint.
11107         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
11108         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
11109         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
11110
11111 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
11112
11113         * basic-block.h (dump_regset, debug_regset): Remove duplicate
11114         prototypes.
11115         * c-objc-common.h (c_initialize_diagnostics): Ditto.
11116         * ebitmap.h (dump_ebitmap): Ditto.
11117         * optabs.h (optab_libfunc): Ditto.
11118         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
11119         * tree-flow.h (vect_can_force_dr_alignment_p,
11120         get_vectype_for_scalar_type): Ditto.
11121         (vectorize_loops): Move prototype to ...
11122         * tree-vectorizer.h: ... here. Also, adjust comment.
11123         (vect_set_verbosity_level): Remove duplicate prototype.
11124         * tree-ssa-loop.c: Include tree-vectorizer.h.
11125         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
11126
11127 2009-07-08  Nick Clifton  <nickc@redhat.com>
11128
11129         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
11130         forward slash.
11131
11132 2009-07-08  DJ Delorie  <dj@redhat.com>
11133
11134         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
11135         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
11136         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
11137         written to.
11138         * config/mep/intrinsics.md: Regenerated.
11139         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
11140         registers when asm() or calls are detected.
11141
11142 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11143
11144         PR c++/31246
11145         * gimplify.c (gimplify_expr): Propagate no_warning flag when
11146         gimplifying.
11147         * gimple (gimple_build_call_from_tree): Likewise.
11148         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
11149         no_warning flag before warning.
11150
11151 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11152
11153         * tree.c (set_expr_locus): Remove.
11154         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
11155         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
11156         EXPR_LOCATION.
11157         * gimplify.c (internal_get_tmp_var): Likewise.
11158         (gimplify_call_expr): Likewise.
11159         (gimplify_one_sizepos): Likewise.
11160
11161 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
11162
11163         PR debug/40666
11164         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
11165         to variables for debugging purposes.
11166
11167 2009-06-23  Mark Loeser  <mark@halcy0n.com>
11168
11169         PR build/40010
11170         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
11171
11172 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11173
11174         * pretty-print.c (pp_base_format): Remove %J.
11175         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
11176         gcc_cxxdiag_char_table): Likewise.
11177         (init_dynamic_diag_info): Likewise.
11178
11179 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11180
11181         * pretty-print.c (pp_base_format): Remove %H.
11182         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
11183         gcc_cxxdiag_char_table): Likewise.
11184         (init_dynamic_diag_info): Likewise.
11185         * config/mep/mep.c (mep_select_section): Likewise.
11186
11187 2009-07-07  Duncan Sands  <baldrick@free.fr>
11188
11189         * final.c (pass_clean_state): Give the pass a name.
11190         * passes.c (pass_rest_of_compilation): Likewise.
11191         * tree-optimize.c (pass_all_optimizations): Likewise.
11192
11193 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
11194
11195         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
11196         an extra 'decl' for error_at.
11197
11198 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
11199
11200         PR middle-end/40669
11201         * tree-tailcall.c (adjust_return_value_with_ops,
11202         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
11203         if it has complex or vector type.
11204
11205 2009-07-07  Olivier Hainque  <hainque@adacore.com>
11206
11207         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
11208         pthread symbols.
11209
11210 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
11211
11212         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
11213
11214 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11215
11216         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
11217         * c-decl.c: Likewise.
11218         * function.c: Likewise.
11219         * varasm.c: Likewise.
11220         * tree-ssa.c: Likewise.
11221         * c-common.c: Likewise.
11222         * tree-cfg.c: Likewise.
11223         * config/spu/spu.c: Likewise.
11224         * config/ia64/ia64.c: Likewise.
11225         * config/v850/v850.c: Likewise.
11226
11227 2009-07-06  DJ Delorie  <dj@redhat.com>
11228
11229         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
11230         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
11231         unspecified accesses to control registers.
11232         * config/mep/intrinsics.md: Regenerate.
11233         * config/mep/intrinsics.h: Regenerate.
11234         * config/mep/mep-intrin.h: Regenerate.
11235
11236 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11237
11238         * c-lex.c: Replace %H by an explicit location. Update all calls.
11239         * c-common.c: Likewise.
11240         * c-decl.c: Likewise.
11241         * c-typeck.c: Likewise.
11242         * fold-const.c: Likewise.
11243         * gimplify.c: Likewise.
11244         * stmt.c: Likewise.
11245         * tree-cfg.c: Likewise.
11246         * tree-ssa-loop-niter.c: Likewise.
11247         * tree-vrp.c: Likewise.
11248         * value-prof.c: Likewise.
11249
11250 2009-07-06  Diego Novillo  <dnovillo@google.com>
11251
11252         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
11253         if it has one.  Handle cases where VAR does not have an
11254         annotation or cfun is NULL.
11255
11256 2009-07-06  Diego Novillo  <dnovillo@google.com>
11257
11258         * tree.c: Include debug.h.
11259         (initialize_tree_contains_struct): New.
11260         (init_ttree): Call it.
11261         (tree_node_structure_for_code): Factor out of ...
11262         (tree_node_structure): ... here.
11263         * treestruct.def (TS_PHI_NODE): Remove.
11264         (TS_GIMPLE_STATEMENT): Remove.
11265
11266 2009-07-06  Diego Novillo  <dnovillo@google.com>
11267
11268         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
11269         (debug_tree_chain): Handle cycles.
11270
11271 2009-07-06  Nick Clifton  <nickc@redhat.com>
11272             DJ Delorie  <dj@redhat.com>
11273
11274         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
11275         __FMOVD_ENABLED__ is defined.
11276         * config/sh/sh.h
11277         (TARGET_FMOVD): Provide a default definition.
11278         (MASK_FMOVD): Likewise.
11279         (TARGET_CPU_CPP_BUILTINS): Define
11280         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
11281         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
11282         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
11283         (split for DF load from memory into register): Also handle
11284         MEMs which consist of REG+DISP addressing.
11285         (split for DF store from register to memory): Likewise.
11286         (movsf_ie): Always use single fp_mode.
11287         * config/sh/sh.c (sh_override_options): Do not automatically
11288         enable TARGET_MOVD for the SH2A when supporting doubles - leave
11289         that to the -mfmovd command line switch.
11290         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
11291         (fldi_ok): Always allow.
11292         * config/sh/sh.opt (mfmovd): Remove this switch.
11293         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
11294
11295 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
11296             Kaz Kojima  <kkojima@gcc.gnu.org>
11297
11298         PR rtl-optimization/30807
11299         * postreload.c (reload_combine): For every new use of REG_SUM,
11300         record the use of BASE.
11301
11302 2009-07-06  Jan Hubicka  <jh@suse.cz>
11303
11304         * params.def: Revert my accidental commit at 2009-06-30.
11305
11306 2009-07-04  Ian Lance Taylor  <iant@google.com>
11307
11308         PR target/40636
11309         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
11310         EXPORTED_CONST.
11311         (mingw_format_attribute_overrides): Likewise.
11312
11313 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
11314
11315         PR debug/40596
11316         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
11317         don't check cfa.reg.  Instead of cfa.indirect use
11318         fde && fde->drap_reg != INVALID_REGNUM test.
11319
11320 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
11321
11322         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
11323
11324 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
11325
11326         PR target/40587
11327         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
11328
11329 2009-07-03  Richard Guenther  <rguenther@suse.de>
11330
11331         PR tree-optimization/40640
11332         * tree-switch-conversion.c (build_arrays): Perform arithmetic
11333         in original type.
11334
11335 2009-07-03  Jan Hubicka  <jh@suse.cz>
11336
11337         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
11338         for size, reduce amount of inlining.
11339
11340 2009-07-03  Richard Guenther  <rguenther@suse.de>
11341
11342         PR middle-end/34163
11343         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
11344         if t +- x is known to not overflow and the conversion widens the
11345         operation.
11346         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
11347
11348 2009-07-03  Jan Hubicka  <jh@suse.cz>
11349
11350         * ipa-pure-const.c (analyze): Update loop optimizer init.
11351         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
11352         try_remove_empty_loop, remove_empty_loops): Remove.
11353         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
11354         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
11355         to mark regular loops as neccesary.
11356         (degenerate_phi_p): New function.
11357         (propagate_necessity, remove_dead_phis): Use it.
11358         (forward_edge_to_pdom): Likewise.
11359         (eliminate_unnecessary_stmts): Take care to remove uses of results of
11360         virtual PHI nodes that became unreachable.
11361         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
11362         * tree-flow.h (remove_empty_loops): Remove.
11363         * passes.c (init_optimization_passes): Remove.
11364
11365 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
11366
11367         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
11368         can_create_pseudo_p.
11369         (*fix_trunc<mode>_i387_1): Ditto.
11370         (*floathi<mode>2_1): Ditto.
11371         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
11372         (*fistdi2_1): Ditto.
11373         (*fist<mode>2_1): Ditto.
11374         (frndintxf2_floor): Ditto.
11375         (*fist<mode>2_floor_1): Ditto.
11376         (frndintxf2_ceil): Ditto.
11377         (*fist<mode>2_ceil_1): Ditto.
11378         (frndintxf2_trunc): Ditto.
11379         (frndintxf2_mask_pm): Ditto.
11380         (fxam<mode>2_i387_with_temp): Ditto.
11381         * config/i386/sse.md (mulv16qi3): Ditto.
11382         (*sse2_mulv4si3): Ditto.
11383         (mulv2di3): Ditto.
11384         (sse4_2_pcmpestr): Ditto.
11385         (sse4_2_pcmpistr): Ditto.
11386
11387 2009-07-03  Jan Hubicka  <jh@suse.cz>
11388
11389         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
11390         (mark_stmt_necessary): Set it.
11391         (mark_operand_necessary): Set it.
11392         (mark_control_dependent_edges_necessary): Set it.
11393         (mark_virtual_phi_result_for_renaming): New function.
11394         (get_live_post_dom): New function.
11395         (forward_edge_to_pdom): New function.
11396         (remove_dead_stmt): Fix handling of control dependences.
11397         (tree_dce_init): Init new bitmap.
11398         (tree_dce_done): Free it.
11399
11400 2009-07-02  Richard Guenther  <rguenther@suse.de>
11401
11402         PR bootstrap/40617
11403         * tree-ssa-structalias.c (new_var_info): Initialize
11404         is_restrict_var.
11405
11406 2009-07-02  Jan Hubicka  <jh@suse.cz>
11407
11408         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
11409         local.
11410
11411 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
11412
11413         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
11414         instead of recomputing it.  Adjust calls.
11415         (emit_store_flag): Adjust recursive calls.
11416
11417 2009-07-02  Richard Guenther  <rguenther@suse.de>
11418
11419         * tree-ssa-live.c (remove_unused_locals): Do not remove
11420         heap variables.
11421         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
11422         of DECL_EXTERNAL for HEAP variables.
11423         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
11424         HEAP variables.  Do not adjust RESTRICT vars.
11425         (find_what_var_points_to): Nobody cares if something
11426         points to READONLY.
11427
11428 2009-07-02  Ben Elliston  <bje@au.ibm.com>
11429
11430         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
11431         pc_low and pc_high declarations to the top of the function.
11432
11433 2009-07-01  DJ Delorie  <dj@redhat.com>
11434
11435         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
11436         registers as fixed.
11437         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
11438         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
11439         unspecified accesses to control registers.
11440         * config/mep/intrinsics.md: Regenerate.
11441         * config/mep/intrinsics.h: Regenerate.
11442         * config/mep/mep-intrin.h: Regenerate.
11443
11444 2009-07-01  Anthony Green  <green@moxielogic.com>
11445
11446         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
11447         instruction when possible.
11448         (moxie_expand_prologue): Ditto.  Also, save an instruction and
11449         some complexity by popping off of $r12 instead of $sp.
11450         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
11451         operands.
11452
11453 2009-07-01  Richard Henderson  <rth@redhat.com>
11454
11455         PR bootstrap/40347
11456         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
11457         contained no insns, reposition note before last insn.
11458
11459 2009-07-01  Richard Henderson  <rth@redhat.com>
11460
11461         PR debug/40431
11462         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
11463         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
11464
11465 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
11466
11467         PR bootstrap/40558
11468         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
11469         darwin9 for printing reg addresses with %y.
11470
11471 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
11472
11473         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
11474         truncation from operands in binary operations.
11475
11476 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
11477
11478         Revert:
11479         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
11480         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
11481         subreg of op0 to the original op0.
11482
11483         * expmed.c (store_bit_field_1): Use a temporary as the destination
11484         instead of a paradoxical subreg when we need to truncate the result.
11485
11486 2009-07-01  DJ Delorie  <dj@redhat.com>
11487
11488         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
11489         names to VLIW variants.
11490         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
11491         * config/mep/intrinsics.md: Regenerate.
11492         * config/mep/intrinsics.h: Regenerate.
11493         * config/mep/mep-intrin.h: Regenerate.
11494
11495 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
11496
11497         PR debug/40462
11498         * jump.c (returnjump_p): Revert last patch.
11499         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
11500
11501 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11502
11503         PR target/40575
11504         * pa.md (casesi32p): Use jump table label to determine the offset
11505         of the jump table.
11506         (casesi64p): Likewise.
11507
11508         * pa.c (forward_branch_p): Return bool type.  Use instruction
11509         addresses when available.  Assert that INSN has a jump label.
11510         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
11511         have a jump label.
11512
11513 2009-07-01  Richard Guenther  <rguenther@suse.de>
11514
11515         PR tree-optimization/19831
11516         * tree-ssa-dce.c (propagate_necessity): Calls to functions
11517         that only act as barriers do not make any previous stores necessary.
11518         * tree-ssa-structalias.c (handle_lhs_call): Delay making
11519         HEAP variables global, do not add a constraint from nonlocal.
11520         (find_func_aliases): Handle escapes through return statements.
11521         (compute_points_to_sets): Make escaped HEAP variables global.
11522
11523 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
11524
11525         PR bootstrap/40597
11526         * expmed.c (emit_store_flag): Perform a conversion if necessary,
11527         after reducing a DImode cstore to SImode.
11528
11529 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
11530
11531         * expr.c (expand_expr_real_1): Reinstate fallthrough to
11532         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
11533
11534 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
11535
11536         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
11537         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
11538         to 0.
11539         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
11540         and umod_optab if TARGET_BSD_DIVMOD.
11541         * config/vax/lib1funcs.asm: New file.
11542         * config/vax/t-linux: New file.
11543         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
11544
11545 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
11546
11547         PR c++/40566
11548         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
11549         to type arguments that have void type.
11550
11551         PR debug/40573
11552         * dwarf2out.c (gen_formal_parameter_die): Call
11553         equate_decl_number_to_die if node is different from origin.
11554
11555 2009-06-30  Anthony Green  <green@moxielogic.com>
11556
11557         Clean up moxie port for --enable-build-with-cxx.
11558         * config/moxie/moxie.c (moxie_function_value): First two
11559         parameters are const_tree, not tree.
11560         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
11561         (REG_CLASS_NAMES): Ditto.
11562         (REGNO_REG_CLASS): Ditto.
11563         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
11564         (moxie_function_value): Fix constyness of arguments.
11565
11566 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
11567
11568         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
11569         finalize_size_functions before further processing.
11570         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
11571         (variable_size): Call self_referential_size on size expressions
11572         that contain a PLACEHOLDER_EXPR.
11573         (size_functions): New static variable.
11574         (copy_self_referential_tree_r): New static function.
11575         (self_referential_size): Likewise.
11576         (finalize_size_functions): New global function.
11577         * tree.c: Include tree-inline.h.
11578         (push_without_duplicates): New static function.
11579         (find_placeholder_in_expr): New global function.
11580         (substitute_in_expr) <tcc_declaration>: Return the replacement object
11581         on equality.
11582         <tcc_expression>: Likewise.
11583         <tcc_vl_exp>: If the replacement object is a constant, try to inline
11584         the call in the expression.
11585         * tree.h (finalize_size_functions): Declare.
11586         (find_placeholder_in_expr): Likewise.
11587         (FIND_PLACEHOLDER_IN_EXPR): New macro.
11588         (substitute_placeholder_in_expr): Update comment.
11589         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
11590         is true.
11591         (copy_tree_body_r): Likewise.
11592         (copy_tree_body): New static function.
11593         (maybe_inline_call_in_expr): New global function.
11594         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
11595         (maybe_inline_call_in_expr): Declare.
11596         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
11597         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
11598         GIMPLE_H.
11599
11600 2009-06-30  Richard Guenther  <rguenther@suse.de>
11601
11602         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
11603         continue walking.
11604         (propagate_necessity): Do not mark reaching defs of stores
11605         as necessary.
11606
11607 2009-06-30  Jan Hubicka  <jh@suse.cz>
11608
11609         * cfgloopanal.c (check_irred): Move into ...
11610         (mark_irreducible_loops): ... here; return true if ireducible
11611         loops was found.
11612         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
11613         (analyze_function): Try to prove loop finiteness.
11614         * cfgloop.h (mark_irreducible_loops): Update prototype.
11615         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
11616
11617 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
11618
11619         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
11620
11621 2009-06-30  Ira Rosen  <irar@il.ibm.com>
11622
11623         PR tree-optimization/40542
11624         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
11625         types.
11626
11627 2009-06-30  Martin Jambor  <mjambor@suse.cz>
11628
11629         PR tree-optimization/40582
11630         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
11631         than useless_type_conversion_p.
11632         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
11633         proper place.
11634
11635 2009-06-30  Martin Jambor  <mjambor@suse.cz>
11636
11637         PR middle-end/40554
11638         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
11639
11640 2009-06-30  Richard Guenther  <rguenther@suse.de>
11641
11642         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
11643         use ao_ref references.
11644         (walk_aliased_vdefs): Likewise.
11645         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
11646         * tree-ssa-dce.c (struct ref_data): Remove.
11647         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
11648         (mark_aliased_reaching_defs_necessary): Adjust.
11649         (mark_all_reaching_defs_necessary_1): Likewise.
11650
11651 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
11652
11653         PR boostrap/40597
11654         * expmed.c (emit_cstore): New name of emit_store_flag_1.
11655         (emit_store_flag_1): Extract from emit_store_flag, adjust
11656         calls to (what now is) emit_cstore.
11657         (emit_store_flag): Call emit_store_flag_1 and also use it
11658         for what used to be recursive calls.
11659
11660 2009-06-30  Wei Guozhi  <carrot@google.com>
11661
11662         PR/40416
11663         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
11664         if the target bb post dominates from bb.
11665         * config/i386/i386.c (memory_address_length): Check existence of base
11666         register before using it.
11667
11668 2009-06-30  Nick Clifton  <nickc@redhat.com>
11669             DJ Delorie  <dj@redhat.com>
11670
11671         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
11672         __FMOVD_ENABLED__ is defined.
11673         * config/sh/sh.h
11674         (TARGET_FMOVD): Provide a default definition.
11675         (MASK_FMOVD): Likewise.
11676         (TARGET_CPU_CPP_BUILTINS): Define
11677         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
11678         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
11679         two fmov instructions depending upon whether TARGET_FMOVD is
11680         enabled.
11681         (split for DF load from memory into register): Also handle
11682         MEMs which consist of REG+DISP addressing.
11683         (split for DF store from register to memory): Likewise.
11684         * config/sh/sh.opt (mfmovd): Remove this switch.
11685         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
11686         * config/sh/sh.c (sh_override_options): Do not automatically
11687         enable TARGET_MOVD for the SH2A when supporting doubles - leave
11688         that to the -mfmovd command line switch.
11689
11690         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
11691         the SH4 and SH4A.
11692         (fldi_ok): Always allow.
11693         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
11694
11695 2009-06-29  DJ Delorie  <dj@redhat.com>
11696
11697         * doc/install.texi (mep-x-elf): Correct chip's full name.
11698
11699 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
11700
11701         * doc/extend.texi: Fix typo.
11702
11703 2009-06-29  Tom Tromey  <tromey@redhat.com>
11704
11705         * dwarf2.h: Remove.
11706         * Makefile.in (DWARF2_H): New variable.
11707         (except.o): Use it.
11708         (dwarf2out.o): Likewise.
11709         (dwarf2asm.o): Likewise.
11710         * config/i386/t-i386: Use DWARF2_H.
11711         * except.c: Include elf/dwarf2.h.
11712         * unwind-dw2.c: Include elf/dwarf2.h.
11713         * dwarf2out.c: Include elf/dwarf2.h.
11714         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
11715         <dtprel>: New field.
11716         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
11717         (size_of_loc_descr): Likewise.
11718         (output_loc_operands_raw): Likewise.
11719         (output_loc_operands): Handle new dtprel field.
11720         (loc_checksum): Update.
11721         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
11722         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
11723         * unwind-dw2-fde.c: Include elf/dwarf2.h.
11724         * dwarf2asm.c: Include elf/dwarf2.h.
11725         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
11726         * config/mmix/mmix.c: Include elf/dwarf2.h.
11727         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
11728         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
11729         * config/sh/sh.c: Include elf/dwarf2.h.
11730         * config/i386/i386.c: Include elf/dwarf2.h.
11731
11732 2009-06-29  DJ Delorie  <dj@redhat.com>
11733
11734         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
11735
11736         * doc/extend.texi: Add MeP attributes and pragmas.
11737         * doc/invoke.text: Add MeP Options.
11738         * doc/contrib.texi: Add MeP contribution.
11739         * doc/md.texi: Add MeP constraints.
11740         * doc/install.texi: Add MeP target.
11741
11742 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
11743
11744         * target.h (struct gcc_target): Add frame_pointer_required field.
11745         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
11746         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
11747         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
11748         hook.
11749         * reload1.c (update_eliminables): (Ditto.).
11750         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
11751         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
11752         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
11753
11754         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
11755
11756         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
11757         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
11758         (arm_frame_pointer_required): New function.
11759
11760         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
11761         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11762         (avr_frame_pointer_required_p): Declare as static.
11763         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
11764
11765         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
11766         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
11767         (bfin_frame_pointer_required): Make as static, change return type
11768         to bool.
11769         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
11770
11771         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
11772         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11773         (cris_frame_pointer_required): New function.
11774
11775         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
11776
11777         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
11778         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11779         (fr30_frame_pointer_required): New function.
11780
11781         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
11782         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
11783         (frv_frame_pointer_required): Make as static, change return type
11784         to bool.
11785         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
11786
11787         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
11788         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11789         (ix86_frame_pointer_required): Make as static, change return type to
11790         bool.
11791         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
11792
11793         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
11794         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11795
11796         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
11797
11798         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
11799
11800         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
11801
11802         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
11803         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11804         (mips_frame_pointer_required): Make as static.
11805         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
11806
11807         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
11808         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11809         (mmix_frame_pointer_required): Mew function.
11810
11811         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
11812         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11813
11814         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
11815
11816         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
11817
11818         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
11819
11820         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
11821         (CAN_ELIMINATE): Redefine.
11822         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11823         (sparc_frame_pointer_required): New function.
11824         (sparc_can_eliminate): New function.
11825         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
11826
11827         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
11828         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
11829
11830         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
11831         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
11832         (xtensa_frame_pointer_required): Make as static, change return type
11833         to bool.
11834         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
11835         Remove.
11836
11837 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
11838
11839         * doc/plugins.texi: Document PLUGIN_START_UNIT.
11840         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
11841         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
11842         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
11843         (register_callback): Handle PLUGIN_START_UNIT.
11844         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
11845
11846 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
11847
11848         * tree.c (process_call_operands): Propagate TREE_READONLY from the
11849         operands.
11850         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
11851         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
11852
11853 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
11854
11855         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
11856         move cost.
11857
11858 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
11859
11860         * doc/extend.texi (Additional Floating Types): __float128 is also
11861         supported on i386 targets.
11862
11863 2009-06-29  Richard Guenther  <rguenther@suse.de>
11864
11865         PR middle-end/14187
11866         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
11867         flag.
11868         (pt_solutions_same_restrict_base): Declare.
11869         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
11870         flag.
11871         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
11872         (make_constraint_from, make_copy_constraint): Move earlier.
11873         (make_constraint_from_heapvar): New function.
11874         (make_constraint_from_restrict): Likewise.
11875         (handle_lhs_call): Use it.
11876         (find_func_aliases): Use it to track conversions to restrict
11877         qualified pointers.
11878         (struct fieldoff): Add only_restrict_pointers flag.
11879         (push_fields_onto_fieldstack): Initialize it.
11880         (create_variable_info_for): Track global restrict qualified pointers.
11881         (intra_create_variable_infos): Use make_constraint_from_heapvar.
11882         Track restrict qualified pointer arguments.
11883         (set_uids_in_ptset): Use varinfo is_global_var flag.
11884         (find_what_var_points_to): Set the vars_contains_restrict flag.
11885         Always create the points-to solution for sets including restrict tags.
11886         (pt_solutions_same_restrict_base): New function.
11887         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
11888         qualified pointers use pt_solutions_same_restrict_base as
11889         additional source for disambiguation.
11890
11891 2009-06-29  Richard Guenther  <rguenther@suse.de>
11892
11893         PR middle-end/38212
11894         * alias.c (find_base_decl): Remove.
11895         (get_deref_alias_set_1): Remove restrict handling.
11896         * c-common.c (c_apply_type_quals_to_decl): Do not set
11897         DECL_POINTER_ALIAS_SET.
11898         * gimplify.c (find_single_pointer_decl_1): Remove.
11899         (find_single_pointer_decl): Likewise.
11900         (internal_get_tmp_var): Remove restrict handling.
11901         (gimple_regimplify_operands): Likewise.
11902         * omp-low.c (expand_omp_atomic_pipeline): Do not set
11903         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
11904         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
11905         * tree.c (restrict_base_for_decl): Remove.
11906         (init_ttree): Do not allocate it.
11907         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
11908         LABEL_DECL_UID for label decls.
11909         (copy_node_stat): Do not copy restrict information.
11910         (decl_restrict_base_lookup): Remove.
11911         (decl_restrict_base_insert): Likewise.
11912         (print_restrict_base_statistics): Likewise.
11913         (dump_tree_statistics): Do not call print_restrict_base_statistics.
11914         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
11915         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
11916         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
11917         (LABEL_DECL_UID): Adjust.
11918         (DECL_BASED_ON_RESTRICT_P): Remove.
11919         (DECL_GET_RESTRICT_BASE): Likewise.
11920         (SET_DECL_RESTRICT_BASE): Likewise.
11921         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
11922
11923         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
11924         instead of DECL_POINTER_ALIAS_SET.
11925         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
11926         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
11927         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
11928
11929 2009-06-29  Richard Guenther  <rguenther@suse.de>
11930
11931         PR tree-optimization/40579
11932         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
11933         the IL to simplify has constants that overflowed.
11934
11935 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
11936
11937         PR tree-optimization/40550
11938         * tree-vect-generic.c (expand_vector_operations_1): Compute in
11939         vector_compute_type only when the size of vector_compute_type is
11940         less than the size of type.
11941
11942 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
11943
11944         * fold-const.c (contains_label_1): Fix comments.
11945         (contains_label_p): Do not walk trees multiple time.
11946
11947 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
11948
11949         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
11950         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
11951         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
11952         ix86_fp_comparison_operator.
11953         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
11954         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
11955         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
11956         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
11957         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
11958         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
11959         (related splits): Change predicate to ix86_fp_comparison_operator.
11960         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
11961         instead of ix86_fp_comparison_codes.
11962         (ix86_trivial_fp_comparison_operator,
11963         ix86_fp_comparison_operator): New.
11964         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
11965         (ix86_expand_compare): Eliminate last two parameters.
11966         (ix86_fp_jump_nontrivial_p): Kill.
11967         * config/i386/i386.c (put_condition_code): Eliminate call to
11968         ix86_fp_comparison_codes and subsequent assertion.
11969         (ix86_fp_comparison_codes): Eliminate.
11970         (ix86_fp_swap_condition): New.
11971         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
11972         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
11973         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
11974         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
11975         and ix86_fp_swap_condition.
11976         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
11977         Use ix86_fp_comparison_strategy.
11978         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
11979         (ix86_fp_jump_nontrivial_p): Eliminate.
11980         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
11981         call to ix86_expand_compare.
11982         (ix86_split_fp_branch, ix86_expand_setcc,
11983         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
11984         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
11985
11986 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
11987
11988         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
11989         related to jump_clobbers.
11990         * config/arm/arm.md (conds): Remove jump_clob case.
11991         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
11992         splits): Change comparison_operator to arm_comparison_operator.
11993         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
11994         Eliminate.
11995
11996 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
11997
11998         * dojump.c (do_compare_rtx_and_jump): Try swapping the
11999         condition for floating point modes.
12000         * expmed.c (emit_store_flag_1): Move here a bigger part
12001         of emit_store_flag.
12002         (emit_store_flag): Try swapping the condition for floating point
12003         modes.
12004         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
12005
12006 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
12007
12008         * expr.c (expand_expr_real_1): Just use do_store_flag.
12009         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
12010         emit_store_flag_force.
12011         * expmed.c (emit_store_flag_force): Copy here trick
12012         previously in expand_expr_real_1.  Try reversing the comparison.
12013         (emit_store_flag_1): Work if target is NULL.
12014         (emit_store_flag): Work if target is NULL, using the result mode
12015         from the comparison.  Use split_comparison, restructure final part
12016         to simplify conditionals.
12017
12018 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
12019
12020         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
12021         * dojump.c (do_jump): Change handling of floating-point
12022         ops to use just do_compare_and_jump.
12023         (split_comparison): New.
12024         (do_compare_rtx_and_jump): Add here logic coming previously
12025         in do_jump, using split_comparison.
12026
12027 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
12028
12029         PR target/40489
12030         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
12031
12032 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
12033
12034         * tree-ssa-alias.c: Fix unintentional commit.
12035
12036 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
12037
12038         * passes.c (execute_one_pass): Fix unintentional commit.
12039
12040 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
12041
12042         * df-problems.c (df_set_seen, df_unset_seen): Delete.
12043         (df_rd_local_compute, df_md_local_compute): Inline them.
12044
12045         (df_md_scratch): New.
12046         (df_md_alloc, df_md_free): Allocate/free it.
12047         (df_md_local_compute): Only include live registers in init.
12048         (df_md_transfer_function): Prune the in-set computed by
12049         the confluence function, and the gen-set too.
12050
12051 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
12052
12053         PR rtl-optimization/26854
12054         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
12055         * df-problems.c (df_rd_add_problem): Fix comment.
12056         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
12057         df_md_simulate_artificial_defs_at_top,
12058         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
12059         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
12060         df_md_transfer_function, df_md_init, df_md_confluence_0,
12061         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
12062         problem_MD, df_md_add_problem): New.
12063         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
12064         df_md_get_bb_info): New.
12065         (DF_LAST_PROBLEM_PLUS1): Adjust.
12066
12067         * Makefile.in (fwprop.o): Include domwalk.h.
12068         * fwprop.c: Include domwalk.h.
12069         (reg_defs, reg_defs_stack): New.
12070         (bitmap_only_bit_between): Remove.
12071         (process_defs): New.
12072         (process_uses): Use reg_defs and local_md instead of
12073         bitmap_only_bit_between and local_rd.
12074         (single_def_use_enter_block): New, from build_single_def_use_links.
12075         (single_def_use_leave_block): New.
12076         (build_single_def_use_links): Remove code moved to
12077         single_def_use_enter_block, invoke domwalk.
12078         (use_killed_between): Adjust comment.
12079
12080 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
12081
12082         * bitmap.h (bitmap_ior_and_into): New.
12083         * bitmap.c (bitmap_ior_and_into): New.
12084
12085 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
12086
12087         * domwalk.h (struct dom_walk_data): Remove all callbacks except
12088         before_dom_children_before_stmts and after_dom_children_after_stmts.
12089         Rename the two remaining callbacks to just before_dom_children and
12090         after_dom_children. Remove other GIMPLE statement walking bits.
12091         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
12092         * graphite.c: Do not include domwalk.h.
12093         * tree-into-ssa.c (interesting_blocks): New global.
12094         (struct mark_def_sites_global_data): Remove it and names_to_rename.
12095         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
12096         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
12097         now that they're not domwalk callbacks.
12098         (rewrite_initialize_block): Rename to...
12099         (rewrite_enter_block): ... this, place after called functions.  Test
12100         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
12101         (rewrite_finalize_block): Rename to...
12102         (rewrite_leave_block): ... this, place after called functions.
12103         (rewrite_update_init_block): Rename to...
12104         (rewrite_update_enter_block): ... this, place after called functions.
12105         Test interesting_blocks, call rewrite_update_stmt and
12106         rewrite_update_phi_arguments.
12107         (rewrite_update_fini_block): Rename to...
12108         (rewrite_leave_block): ... this, place after called functions.
12109         (rewrite_blocks): Remove last argument, simplify initialization of
12110         walk_data.
12111         (mark_def_sites_initialize_block): Rename to...
12112         (mark_def_sites_block): ... this, call mark_def_sites.
12113         (mark_def_sites_blocks): Remove argument, simplify initialization of
12114         walk_data.
12115         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
12116         (update_ssa): Likewise.
12117         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
12118         callback.
12119         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
12120         (dom_opt_initialize_block): Rename to...
12121         (dom_opt_enter_block): ... this, place after called functions.  Walk
12122         statements here, inline propagate_to_outgoing_edges.
12123         (dom_opt_finalize_block): Rename to...
12124         (dom_opt_leave_block): ... this, place after called functions.
12125         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
12126         domwalk callback.
12127         (dse_enter_block, dse_record_phi): New.
12128         (dse_record_phis): Delete.
12129         (dse_finalize_block): Rename to...
12130         (dse_leave_block): ... this.
12131         (tree_ssa_dse): Simplify initialization of walk_data.
12132         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
12133         Adjust initialization of walk_data.
12134         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
12135         * tree-ssa-loop-phiopt.c (get_non_trapping):
12136         Adjust initialization of walk_data.
12137         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
12138         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
12139         it's not a domwalk callback.
12140         (uncprop_initialize_block): Rename to...
12141         (dse_enter_block): ... this, call uncprop_into_successor_phis.
12142         (dse_finalize_block): Rename to...
12143         (dse_leave_block): ... this.
12144         (tree_ssa_uncprop): Simplify initialization of walk_data.
12145         * Makefile.in: Adjust dependencies.
12146
12147 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
12148
12149         * arm.md (casesi): Fix test for Thumb1.
12150         (thumb1_casesi_internal_pic): Likewise.
12151         (thumb1_casesi_dispatch): Likewise.
12152
12153 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
12154
12155         * config/arm/arm-cores.def: Added core cortex-m0.
12156         * config/arm/arm-tune.md: Regenerated.
12157         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
12158
12159 2009-06-26  DJ Delorie  <dj@redhat.com>
12160
12161         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
12162
12163         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
12164         the scheduler doesn't tag jump insns.
12165
12166 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
12167
12168         * c-decl.c (merge_decls): Re-indent.
12169
12170 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
12171
12172         PR c/39902
12173         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
12174         Special-case decimal float constants.
12175
12176 2009-06-26  Richard Henderson  <rth@redhat.com>
12177
12178         * function.h (struct function): Add cannot_be_copied_reason,
12179         and cannot_be_copied_set.
12180         * tree-inline.c (has_label_address_in_static_1): Rename from
12181         inline_forbidden_p_2; don't set inline_forbidden_reason here.
12182         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
12183         don't set inline_forbidden_reason.
12184         (copy_forbidden): New function, split out of inline_forbidden_p.
12185         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
12186         (inline_forbidden_p): Use copy_forbidden.
12187         (tree_versionable_function_p): Likewise.
12188         (inlinable_function_p): Merge into tree_inlinable_function_p.
12189         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
12190         * ipa-cp.c (ipcp_versionable_function_p): New function.
12191         (ipcp_cloning_candidate_p): Use it.
12192         (ipcp_node_modifiable_p): Likewise.
12193
12194 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
12195
12196         * builtins.c (expand_builtin_alloca): Handle builtin alloca
12197         that is marked not to be inlined. Remove flag_mudflap use.
12198         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
12199         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
12200
12201 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
12202
12203         PR bootstrap/40338
12204         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
12205         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
12206
12207 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
12208
12209         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
12210         shared libgcc.
12211         (__mingwthr_remove_key_dtor): Likewise.
12212
12213 2009-06-26  Richard Guenther  <rguenther@suse.de>
12214
12215         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
12216
12217 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
12218
12219         PR middle-end/40525
12220         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
12221         try the non-cond_exec path also.
12222
12223 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12224
12225         PR target/40468
12226         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
12227         (output_cbranch): Use new functions.
12228         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
12229         Likewise.
12230
12231 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
12232             Pat Haugen  <pthaugen@us.ibm.com>
12233             Revital Eres <ERES@il.ibm.com>
12234
12235         * config/rs6000/rs6000.c (print_operand): Correct lossage message
12236         for %c error.  Add %x support to print VSX registers as a unified
12237         register set, instead of separate float and altivec registers.
12238         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
12239         %y case, and add support for VSX pre-modify addresses.
12240         (output_toc): Add assert for CONST containing an integer constant
12241         in the PLUS case.
12242         (rs6000_adjust_cost): Add POWER7 support.
12243         (insn_must_be_first_in_group): Ditto.
12244         (insn_must_be_last_in_group): Ditto.
12245         (rs6000_emit_popcount): Ditto.
12246         (rs6000_vector_mode_supported_p): Ditto.
12247
12248         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
12249         Change some of the functions called by macros to being called
12250         through a pointer, so debug functions can be inserted if
12251         -mdebug=addr or -mdebug=cost.
12252         (rs6000_preferred_reload_class_ptr): Ditto.
12253         (rs6000_secondary_reload_class_ptr): Ditto.
12254         (rs6000_secondary_memory_needed_ptr): Ditto.
12255         (rs6000_cannot_change_mode_class_ptr): Ditto.
12256         (rs6000_secondary_reload_inner): Ditto.
12257         (rs6000_legitimize_reload_address): Ditto.
12258         (rs6000_legitimize_reload_address_ptr): Ditto.
12259         (rs6000_mode_dependent_address): Ditto.
12260         (rs6000_mode_dependent_address_ptr): Ditto.
12261
12262         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
12263         function to return true if the mode allows reg + integer
12264         addresses.
12265         (virtual_stack_registers_memory_p): New function to return true if
12266         the address refers to a virtual stack register.
12267         (rs6000_legitimate_offset_address_p): Move code to say whether a
12268         mode supports reg+int addressing to reg_offset_addressing_ok_p and
12269         call it.
12270         (rs6000_legitimate_address_p): Add checks for modes that only can
12271         do reg+reg addressing.  Start adding VSX support.
12272         (rs6000_legitimize_reload_address): Ditto.
12273         (rs6000_legitimize_address): Ditto.
12274         (rs6000_debug_legitimate_address_p): New debug functions for
12275         -mdebug=addr and -mdebug=cost.
12276         (rs6000_debug_rtx_costs): Ditto.
12277         (rs6000_debug_address_costs): Ditto.
12278         (rs6000_debug_adjust_cost): Ditto.
12279         (rs6000_debug_legitimize_address): Ditto.
12280         (rs6000_legitimize_reload_address_ptr): Point to call normal
12281         function or debug function.  Make functions called via pointer
12282         static.
12283         (rs6000_mode_dependent_address_ptr): Ditto.
12284         (rs6000_secondary_reload_class_ptr): Ditto.
12285         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
12286         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
12287         into a friendlier error.
12288         (rs6000_init_builtins): Add initial VSX support.
12289         (rs6000_adjust_cost): Fix some spacing issues.
12290
12291         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
12292         (REG_CLASS_NAMES): Ditto.
12293         (REG_CLASS_CONTENTS): Ditto.
12294         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
12295         pointer, to add -mdebug=addr support.
12296         (CANNOT_CHANGE_MODE_CLASS): Ditto.
12297         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
12298         -mdebug=addr support.
12299         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
12300         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
12301         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
12302
12303         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
12304         16-bit values.
12305         (bswapsi*): Set attribute types for load/store.  Add combiner
12306         patterns to eliminate zero extend on 64-bit.
12307         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
12308         stdbrx if the hardware supports those instructions.
12309
12310 2009-06-25  Ian Lance Taylor  <iant@google.com>
12311
12312         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
12313         (Link Options): Document -static-libstdc++.
12314
12315 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12316
12317         PR target/38731
12318         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
12319         DATA_ALIGNMENT instead.
12320
12321 2009-06-25  Richard Guenther  <rguenther@suse.de>
12322
12323         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
12324         indirect references against the callused/escaped solutions.
12325         (call_may_clobber_ref_p_1): Likewise.
12326
12327 2009-06-25  Martin Jambor  <mjambor@suse.cz>
12328
12329         PR tree-optimization/40493
12330         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
12331         (enum unscalarized_data_handling): New type.
12332         (handle_unscalarized_data_in_subtree): Return what has been done.
12333         (load_assign_lhs_subreplacements): Handle left flushes differently.
12334         (sra_modify_assign): Use unscalarized_data_handling, simplified
12335         condition determining whether to remove the statement.
12336
12337 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
12338
12339         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
12340         excerpt - @ should be doubled for texinfo.
12341
12342 2009-06-24  Ian Lance Taylor  <iant@google.com>
12343
12344         * config/arc/arc.c: Include "df.h".
12345         (arc_attribute_table): Make static.  Move higher in file.
12346         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
12347         (output_shift): Initialize n later to avoid warning.
12348         * config/arm/arm.c (arm_attribute_table): Make static.  Move
12349         higher in file.
12350         * config/avr/avr.c (avr_attribute_table): Make static.  Move
12351         higher in file.
12352         (reg_class_tab): Change array type from int to enum reg_class.
12353         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
12354         LABEL_REF.
12355         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
12356         (lshrhi3_out): Likewise.
12357         (class_likely_spilled_p): Change return type to bool.
12358         (avr_rtx_costs): Use local code variable with enum type.
12359         * config/avr/avr.md (movmemhi): Use add_reg_note.
12360         (andhi3, andsi3): Don't use AS2 with "and".
12361         (iorhi3, iorsi3): Don't use AS2 with "or".
12362         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
12363         * config/crx/crx.c: Include "df.h".
12364         (crx_attribute_table): Make static.
12365         * config/m32r/m32r.c: Include "df.h".
12366         (m32r_attribute_table): Make static.  Move higher in file.
12367         (pop): Use add_reg_note.
12368         (block_move_call): Change 0 to LCT_NORMAL in function call.
12369         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
12370         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
12371         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
12372         declare, not just when TREE_CODE is defined.
12373         * config/m68hc11/m68hc11.c: Include "expr.h".
12374         (m68hc11_attribute_table): Make static.  Move higher in file.
12375         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
12376         function call.
12377         (m68hc11_register_indirect_p): Likewise.
12378         (m68hc11_function_arg_padding): Change return type to enum
12379         direction.
12380         (emit_move_after_reload): Use add_reg_note.
12381         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
12382         (m68hc11_split_logical): Likewise.
12383         (m68hc11_rtx_costs): Add local code_and outer_code variables with
12384         enum type.
12385         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
12386         to VOIDmode in function call.
12387         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
12388         tree is defined.
12389         (m68hc11_split_logical): Update declaration.
12390         (m68hc11_function_arg_padding): Update declaration.
12391         * config/mcore/mcore.c (regno_reg_class): Change form array of int
12392         to array of enum reg_class.
12393         (mcore_attribute_table): Make static.  Move higher in file.
12394         (mcore_rtx_costs): Add cast to enum type.
12395         * config/mcore/mcore.h (regno_reg_class): Update declaration.
12396         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
12397         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
12398         in file.
12399         * config/sh/predicates.md (trapping_target_operand): Rename and to
12400         and_expr.
12401         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
12402         higher in file.
12403         * config/spu/spu.c (spu_attribute_table): Make static.  Move
12404         higher in file.
12405         * config/v850/v850.c (v850_attribute_table): Make static.  Move
12406         higher in file.
12407         (v850_rtx_costs): Use local code with enum type.
12408         (expand_epilogue): Add cast.
12409         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
12410
12411 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
12412
12413         PR target/40515
12414         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
12415         -m2a-single-only and -m2a-nofpu.
12416         * config/sh/sh.opt: Document m2a generates FPU code.
12417
12418 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
12419
12420         * defaults.h (CAN_ELIMINATE): Provide default.
12421         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
12422         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
12423         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
12424         * config/spu/spu.h (CAN_ELIMINATE): Delete.
12425         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
12426         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
12427         * config/cris/cris.h (CAN_ELIMINATE): Delete.
12428         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
12429         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
12430         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
12431
12432 2009-06-24  DJ Delorie  <dj@redhat.com>
12433
12434         * mep-ext-cop.cpu: Fix copyright notice.
12435         * mep-default: Fix copyright notice.
12436         * mep-core: Fix copyright notice.
12437         * mep: Fix copyright notice.
12438         * mep-ivc2: Fix copyright notice.
12439         * mep-c5: Fix copyright notice.
12440
12441 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
12442
12443         * doc/contrib.texi (Contributors):
12444
12445 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12446
12447         PR middle-end/40501
12448         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
12449         src and dst operands if necessary.
12450
12451 2009-06-23  DJ Delorie  <dj@redhat.com>
12452
12453         Add MeP port.
12454         * config.gcc: Add mep support.
12455         * recog.c: Resurrect validate_replace_rtx_subexp().
12456         * recog.h: Likewise.
12457         * config/mep/: Add new port:
12458         * config/mep/constraints.md: New file.
12459         * config/mep/default.h: New file.
12460         * config/mep/intrinsics.h: New file.
12461         * config/mep/intrinsics.md: New file.
12462         * config/mep/ivc2-template.h: New file.
12463         * config/mep/mep-c5.cpu: New file.
12464         * config/mep/mep-core.cpu: New file.
12465         * config/mep/mep-default.cpu: New file.
12466         * config/mep/mep-ext-cop.cpu: New file.
12467         * config/mep/mep-intrin.h: New file.
12468         * config/mep/mep-ivc2.cpu: New file.
12469         * config/mep/mep-lib1.asm: New file.
12470         * config/mep/mep-lib2.c: New file.
12471         * config/mep/mep-pragma.c: New file.
12472         * config/mep/mep-protos.h: New file.
12473         * config/mep/mep-tramp.c: New file.
12474         * config/mep/mep.c: New file.
12475         * config/mep/mep.cpu: New file.
12476         * config/mep/mep.h: New file.
12477         * config/mep/mep.md: New file.
12478         * config/mep/mep.opt: New file.
12479         * config/mep/predicates.md: New file.
12480         * config/mep/t-mep: New file.
12481
12482 2009-06-23  Ian Lance Taylor  <iant@google.com>
12483
12484         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
12485         from loose_warn into c_loose_warn and from strict_warn into
12486         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
12487         --enable-build-with-cxx.  Set and substitute
12488         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
12489         * Makefile.in (CXXFLAGS): New variable.
12490         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
12491         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
12492         the default is the same as $(STRICT_WARN).
12493         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
12494         (CXX): New variable.
12495         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
12496         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
12497         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
12498         (HOST_LIBS): New variable.
12499         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
12500         (ALL_CXXFLAGS): New variable.
12501         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
12502         * doc/install.texi (Configuration): Document
12503         --enable-build-with-cxx, --with-stage1-ldflags,
12504         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
12505         * configure: Rebuild.
12506
12507 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12508
12509         * config/arm/arm.c (arm_override_options): Fix braces and formatting
12510         from previous commit.
12511
12512 2009-06-23  Ian Lance Taylor  <iant@google.com>
12513
12514         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
12515
12516 2009-06-23  Ian Lance Taylor  <iant@google.com>
12517
12518         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
12519         with ATTRIBUTE_UNUSED.
12520
12521 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
12522             Pat Haugen  <pthaugen@us.ibm.com>
12523             Revital Eres  <eres@il.ibm.com>
12524
12525         * config.in (HAVE_AS_POPCNTD): Add default definition.
12526         (HAVE_AS_LWSYNC): Ditto.
12527
12528         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
12529         release number.
12530         (gcc_cv_as_powerpc_cmpb): Ditto.
12531         (gcc_cv_as_powerpc_dfp): Ditto.
12532         (gcc_cv_as_powerpc_vsx): Ditto.
12533         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
12534         supporting the popcntd/lwsync instructions.
12535         (gcc_cv_as_powerpc_lwsync): Ditto.
12536         * configure: Regenerate.
12537
12538         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
12539         -mcpu=native and -mcpu=power7.
12540         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
12541
12542         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
12543         a variable instead of a mask to reduce the number of mask bits.
12544         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
12545         (-mbit-word): Ditto.
12546         (-mregnames): Ditto.
12547         * config/rs6000/rs6000.opt (-mupdate): Ditto.
12548         (-mfused-madd): Ditto.
12549
12550         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
12551         2.06 instructions.
12552         (-mvsx): New switch for VSX instructions.
12553         (-misel): Move from a variable to a mask to allow it to be set by
12554         -mcpu=.
12555
12556         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
12557         function declaration to an array declaration.
12558         (rs6000_hard_regno_nregs): New external array declaration.
12559
12560         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
12561         files included by rs6000.md.
12562
12563         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
12564         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
12565
12566         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
12567         a target mask.
12568         (rs6000_debug_reg): New -mdebug= variables.
12569         (rs6000_debug_addr): Ditto.
12570         (rs6000_debug_cost): Ditto.
12571         (rs6000_pmode): New variable to hold Pmode.
12572         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
12573         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
12574         calculated at compiler start.
12575         (rs6000_hard_regno_nregs): Change function to an array which holds
12576         HARD_REGNO_NREGS calculated at compiler start.
12577         (rs6000_explicit_options): Delete isel field.
12578         (rs6000_vector_unit): New array to hold which vector unit
12579         supports arithmetic options for a given type.
12580         (rs6000_vector_mem): New array to hold which vector unit supports
12581         memory reference operations for a given type.
12582         (rs6000_vector_align): New array to given the alignment of each
12583         vector type.
12584         (power7_cost): New basic costs for power7.
12585         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
12586         (rs6000_hard_regno_nregs_internal): New function, moved from
12587         HARD_REGNO_NREGS, to calculate the number of registers each hard
12588         register takes for each type.
12589         (rs6000_debug_reg_print): New function for -mdebug=reg support.
12590         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
12591         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
12592         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
12593         unit information here so it is calculated once at compiler startup
12594         time.
12595         (rs6000_override_options): Make -misel a target mask.  Add more
12596         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
12597         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
12598         -mdebug=cost.
12599         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
12600         (rs6000_handle_option): Move -misel from variable to target mask.
12601         (rs6000_builtin_mask_for_load): Add VSX support.
12602         (rs6000_conditional_register_usage): Ditto.
12603         (USE_ALTIVEC_FOR_ARG_P): Ditto.
12604         (function_arg_boundary): Ditto.
12605         (rs6000_expand_builtin): Ditto.
12606         (def_builtin): Make abort message a little friendlier.
12607         (rs6000_emit_int_cmove): Add support for 64-bit isel.
12608
12609         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
12610         assembler support the popcntd instruction instead of a vsx
12611         instruction to enable power7 support.
12612         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
12613         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
12614         option to the assembler if -mcpu=native.
12615         (ASM_CPU_NATIVE_SPEC): Ditto.
12616         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
12617         ISA 2.06 features.
12618         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
12619         the lwsync instruction.
12620         (enum processor_type): Add PROCESSOR_POWER7.
12621         (rs6000_debug_reg): New -mdebug= options.
12622         (rs6000_debug_addr): Ditto.
12623         (rs6000_debug_cost): Ditto.
12624         (rs6000_isel): Delete.
12625         (enum rs6000_vector): New enum to say what vector unit we have.
12626         (VECTOR_UNIT_*): New macros to say which vector unit has
12627         arithmetic operations for a given type.
12628         (VECTOR_MEM_*): New macros to say which vector unit has memory
12629         operations for a given type.
12630         (TARGET_LDBRX): Whether the machine supports the ldbrx
12631         instruction.
12632         (TARGET_ISEL): Delete, -misel moved to be a mask.
12633         (TARGET_ISEL64): New macro for 64-bit isel support.
12634         (UNITS_PER_VSX_WORD): New macro.
12635         (POINTER_SIZE): Move to be an external variable, rather than
12636         calculating whether we are generating 32 ot 64-bit code.
12637         (Pmode): Ditto.
12638         (STACK_BOUNDARY): Add VSX support.
12639         (LOCAL_ALIGNMENT): Ditto.
12640         (SLOW_UNALIGNED_ACCESS): Ditto.
12641         (VSX_REGNO_P): New macro for VSX support.
12642         (VFLOAT_REGNO_P): Ditto.
12643         (VINT_REGNO_P): Ditto.
12644         (VLOGICAL_REGNO_P): Ditto.
12645         (VSX_VECTOR_MODE): Ditto.
12646         (VSX_SCALAR_MODE): Ditto.
12647         (VSX_MODE): Ditto.
12648         (VSX_MOVE_MODE): Ditto.
12649         (VSX_REG_CLASS_P): Ditto.
12650         (HARD_REGNO_NREGS): Instead of calling a function, use an array
12651         lookup.
12652         (UNITS_PER_SIMD_WORD): Add VSX support.
12653         (MODES_TIEABLE_P): Ditto.
12654         (STARTING_FRAME_OFFSET): Ditto.
12655         (STACK_DYNAMIC_OFFSET): Ditto.
12656         (EPILOGUE_USES): Ditto.
12657         (REGNO_REG_CLASS): Move to array lookup.
12658         (CLASS_MAX_NREGS): Ditto.
12659         (rs6000_vector_reg_class): Add declaration.
12660         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
12661         overlap with the floating point and Altivec registers.
12662
12663         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
12664
12665         * config/rs6000/driver-rs6000.c (asm_names): New static array to
12666         give the appropriate asm switches if -mcpu=native.
12667         (host_detect_local_cpu): Add support for "asm".
12668         (host_detect_local_cpu): Follow GNU code guidelines for name.
12669
12670         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
12671         -mbit-word to a variable instead of being a target mask.
12672
12673         * config/rs6000/sync.md (lwsync): If the assembler supports it,
12674         emit the lwsync instruction instead of emitting the instruction as
12675         an integer constant.
12676
12677         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
12678         fixuns_trundfsi2, move expander into rs6000.md.
12679
12680         * config/rs6000/rs6000.md (cpu): Add power7.
12681         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
12682         (logical predicate patterns): Change the single instruction
12683         primitives that set CR0 to be fast_compare instead of compare.
12684         (norsi*): Ditto.
12685         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
12686         (popcntddi2): Ditto.
12687         (popcount<mode>): Ditto.
12688         (floating multiply/add insns): Name the floating point
12689         multiply/add insns.
12690         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
12691         (isel_unsigned_<mode>): Ditto.
12692         (fixuns_trundfsi2): Move expander here from spe.md.
12693         (smindi3): Define if we have -misel on 64-bit systems.
12694         (smaxdi3): Ditto.
12695         (umindi3): Ditto.
12696         (umaxdi3): Ditto.
12697
12698 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
12699
12700         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
12701         extra_objs.
12702         * config/avr/avr.c (avr_current_device): New variable.
12703         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
12704         (avr_arch, mcu_type_s): Move to avr.h.
12705         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
12706         default_data_section_start fields.
12707         (avr_arch): Moved from avr.c.
12708         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
12709         library_name fields.
12710         (avr_current_device, avr_mcu_types, avr_arch_types,
12711         avr_device_to_arch, avr_device_to_data_start,
12712         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
12713         (EXTRA_SPEC_FUNCTIONS): Define.
12714         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
12715         options mapping. Use device_to_arch and device_to_data_start insted.
12716         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
12717         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
12718         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
12719         * config/avr/driver-avr.c: New file.
12720         * config/avr/avr-devices.c: New file.
12721
12722 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
12723
12724         * var-tracking.c (unshare_variable): Force initialized to
12725         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
12726         (set_variable_part): Likewise.
12727         (struct variable_union_info): Remove pos_src field.
12728         (vui_vec, vui_allocated): New variables.
12729         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
12730         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
12731         == 1 use a simpler sorting algorithm.  Compute pos field right
12732         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
12733         Avoid quadratic comparison if !flag_var_tracking_uninit.
12734         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
12735         unshare_variable unconditionally.
12736         (dataflow_set_different_2): Removed.
12737         (dataflow_set_different): Don't traverse second hash table.
12738         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
12739         unconditionally to var_reg_set or var_mem_set.
12740         (emit_notes_in_bb): Likewise.
12741         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
12742         unshare_variable.
12743         (emit_note_insn_var_location): Don't set initialized to
12744         VAR_INIT_STATUS_INITIALIZED early.
12745         (vt_finalize): Free vui_vec if needed, clear vui_vec and
12746         vui_allocated.
12747         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
12748
12749         * tree-object-size.c (addr_object_size): Instead of checking
12750         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
12751         are no FIELD_DECLs following it.
12752
12753 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
12754
12755         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
12756         order to match bswaps with signed source operands.
12757
12758 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
12759
12760         * sdbout.c (sdbout_one_type): Fix braces in switch.
12761
12762 2009-06-23  Richard Guenther  <rguenther@suse.de>
12763
12764         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
12765         member.
12766         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
12767         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
12768         var_callused, callused_tree, var_storedanything, storedanything_tree,
12769         var_integer, integer_tree): Remove global variables.
12770         (new_var_info): Do not pass new id, append the new var to the
12771         global variable vector.
12772         (do_ds_constraint): Use is_global_var member of the variable-info.
12773         (new_scalar_tmp_constraint_exp): Adjust.
12774         (create_function_info_for): Likewise.
12775         (create_variable_info_for): Likewise.
12776         (find_what_var_points_to): Remove dead code.
12777         (init_base_vars): Simplify.
12778         (compute_points_to_sets): Adjust.
12779
12780 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
12781
12782         * combine.c (try_combine): Dump information about the insns we're
12783         combining.
12784
12785 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
12786
12787         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
12788         check when calling force_to_mode on TRUNCATE's operand.
12789
12790 2009-06-22  Ian Lance Taylor  <iant@google.com>
12791
12792         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
12793
12794 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
12795
12796         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
12797
12798 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12799
12800         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
12801         override library linkage flags such as -static-libgcc or
12802         -shared-libgcc.
12803
12804 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
12805
12806         * config/m68k/m68k-devices.def: Add line for MCF5221x.
12807
12808 2009-06-22  Ian Lance Taylor  <iant@google.com>
12809
12810         * config/linux.opt: Put mglibc ahead of muclibc.
12811
12812         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
12813         for duplicate decls.
12814
12815 2009-06-22  Matthias Klose  <doko@ubuntu.com>
12816
12817         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
12818
12819 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
12820
12821         PR objc/28050
12822         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
12823         instead of NULL if a parser error occurs.
12824
12825 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
12826
12827         * dwarf2out.c (dwarf2_debug_hooks): Initialize
12828         non-DWARF2_DEBUGGING_INFO version.
12829
12830 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
12831
12832         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
12833         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
12834
12835         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
12836         (LIBGCC2_TF_CEXT): Define.
12837         (TF_SIZE): Define.
12838
12839 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12840
12841         PR target/40463
12842         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
12843
12844 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12845
12846         * config/arm/arm.c (arm_override_options): Disable
12847         -mcaller-super-interworking and -mcallee-super-interworking.
12848         * doc/invoke.texi (ARM Options): Document this.
12849
12850 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
12851
12852         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
12853         * config/arm/constraints.md (j): New constraint for movw operands.
12854         (N): Remove thumb2 meaning.
12855         * config/arm/arm.md (*arm_movw): Delete.
12856         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
12857         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
12858         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
12859
12860 2009-06-22  Martin Jambor  <mjambor@suse.cz>
12861
12862         PR tree-optimization/40492
12863         * tree-sra.c (sra_modify_assign): Pass zero offsets to
12864         build_ref_for_offset.
12865
12866 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
12867
12868         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
12869         JUMP_TABLE_DATA_P predicates where applicable.
12870         * auto-inc-dec.c: Ditto.
12871         * builtins.c: Ditto.
12872         * caller-save.c: Ditto.
12873         * calls.c: Ditto.
12874         * cfgcleanup.c: Ditto.
12875         * cfglayout.c: Ditto.
12876         * cfgrtl.c: Ditto.
12877         * combine.c: Ditto.
12878         * combine-stack-adj.c: Ditto.
12879         * cse.c: Ditto.
12880         * cselib.c: Ditto.
12881         * dbxout.c: Ditto.
12882         * df-scan.c: Ditto.
12883         * dse.c: Ditto.
12884         * dwarf2asm.c: Ditto.
12885         * dwarf2out.c: Ditto.
12886         * emit-rtl.c: Ditto.
12887         * except.c: Ditto.
12888         * explow.c: Ditto.
12889         * expmed.c: Ditto.
12890         * expr.c: Ditto.
12891         * final.c: Ditto.
12892         * function.c: Ditto.
12893         * fwprop.c: Ditto.
12894         * gcse.c: Ditto.
12895         * genpreds.c: Ditto.
12896         * genrecog.c: Ditto.
12897         * ifcvt.c: Ditto.
12898         * ira-costs.c: Ditto.
12899         * ira-lives.c: Ditto.
12900         * jump.c: Ditto.
12901         * loop-iv.c: Ditto.
12902         * lower-subreg.c: Ditto.
12903         * modulo-sched.c: Ditto.
12904         * optabs.c: Ditto.
12905         * postreload.c: Ditto.
12906         * print-rtl.c: Ditto.
12907         * recog.c: Ditto.
12908         * reginfo.c: Ditto.
12909         * regmove.c: Ditto.
12910         * reload1.c: Ditto.
12911         * reload.c: Ditto.
12912         * reorg.c: Ditto.
12913         * rtlanal.c: Ditto.
12914         * rtl.c: Ditto.
12915         * sched-vis.c: Ditto.
12916         * sdbout.c: Ditto.
12917         * sel-sched-ir.c: Ditto.
12918         * simplify-rtx.c: Ditto.
12919         * targhooks.c: Ditto.
12920         * var-tracking.c: Ditto.
12921         * vmsdbgout.c: Ditto.
12922
12923 2009-06-22  Matthias Klose  <doko@ubuntu.com>
12924
12925         * Makefile.in (install-plugin): Always use DESTDIR.
12926
12927 2009-06-22  Olivier Hainque  <hainque@adacore.com>
12928
12929         * config/pa/pa.c (output_call): Don't optimize post call jumps
12930         into return address adjustments if the call may throw.
12931
12932 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
12933
12934         * arm.c (thumb1_output_casesi): New function.
12935         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
12936         optimizing for size or PIC.
12937         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
12938         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
12939         (casesi): Handle Thumb-1 when optimizing for size or PIC.
12940         (thumb1_casesi_internal_pic): New expand rule.
12941         (thumb1_casesi_dispatch): New pattern.
12942         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
12943         thumb-1 mode.
12944         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
12945         in the text seciton when PIC or optimizing for size.
12946         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
12947         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
12948         preservation properties of code.
12949         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
12950         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
12951         (__gnu_thumb1_case_si): New function.
12952         * t-arm (LIB1ASMSRC): Define here.
12953         (LIB1ASMFUNCS): Add some common functions.
12954         * t-arm-elf (LIB1ASMSRC): Delete.
12955         (LIB1ASMFUNCS): Append to existing set.
12956         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
12957         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
12958         * t-symbian (LIB1ASMFUNCS): Likewise.
12959         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
12960         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
12961
12962 2009-06-21  Richard Guenther  <rguenther@suse.de>
12963
12964         PR tree-optimization/38729
12965         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
12966         to loops with a single exit if -fno-expensive-optimizations.
12967
12968 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
12969
12970         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
12971         (dataflow_set): Change vars type from htab_t to shared_hash.
12972         (shared_hash_pool, empty_shared_hash): New variables.
12973         (vars_clear): Removed.
12974         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
12975         shared_hash_find_slot_unshare, shared_hash_find_slot,
12976         shared_hash_find_slot_noinsert, shared_hash_find): New
12977         static inlines.
12978         (shared_hash_unshare, shared_hash_destroy): New functions.
12979         (unshare_variable): Unshare set->vars if shared, use
12980         shared_hash_htab.
12981         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
12982         (get_init_value, find_src_set_src, dump_dataflow_set,
12983         clobber_variable_part, emit_notes_for_differences): Use
12984         shared_hash_htab.
12985         (dataflow_set_init): Remove second argument, set vars to
12986         empty_shared_hash instead of creating a new htab.
12987         (dataflow_set_clear): Call shared_hash_destroy and set vars
12988         to empty_shared_hash instead of calling vars_clear.
12989         (dataflow_set_copy): Don't call vars_copy, instead just share
12990         the src htab with dst.
12991         (variable_union): Use shared_hash_*, use initially NO_INSERT
12992         lookup if set->vars is shared.  Don't keep slot cleared before
12993         calling unshare_variable.  Unshare set->vars if needed.
12994         Even ->refcount == 1 vars must be unshared if set->vars is shared
12995         and var needs to be modified.
12996         (variable_canonicalize): New function.
12997         (dataflow_set_union): If dst->vars is empty, just share src->vars
12998         with dst->vars and traverse with variable_canonicalize to canonicalize
12999         and unshare what is needed.
13000         (dataflow_set_different): If old_set and new_set use the same shared
13001         htab, they aren't different.  If number of htab elements is different,
13002         htabs are different.  Use shared_hash_*.
13003         (dataflow_set_destroy): Call shared_hash_destroy instead of
13004         htab_delete.
13005         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
13006         second argument to dataflow_set_init.
13007         (vt_initialize): Likewise.  Initialize shared_hash_pool and
13008         empty_shared_hash, move bb in/out initialization afterwards.
13009         Use variable_htab_free instead of NULL as changed_variables del hook.
13010         (variable_was_changed): Change type of second argument to pointer to
13011         dataflow_set.  When inserting var into changed_variables, bump
13012         refcount.  Unshare set->vars if set is shared htab and slot needs to
13013         be cleared.
13014         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
13015         lookup if set->vars is shared.  Unshare set->vars if needed.
13016         Even ->refcount == 1 vars must be unshared if set->vars is shared
13017         and var needs to be modified.  Adjust variable_was_changed caller.
13018         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
13019         vars must be unshared if set->vars is shared and var needs to be
13020         modified.  Adjust variable_was_changed caller.
13021         (emit_note_insn_var_location): Don't pool_free var.
13022         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
13023         instead of 1.
13024         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
13025         free_alloc_pool on shared_hash_pool.
13026
13027 2009-06-20  Anthony Green  <green@moxielogic.com>
13028
13029         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
13030         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
13031
13032 2009-06-20  Richard Guenther  <rguenther@suse.de>
13033
13034         * tree-ssa-structalias.c (find_func_aliases): For memset use
13035         a constraint from NULL if we memset to zero.
13036         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
13037         we explicitly handle that do not read from memory.
13038         (call_may_clobber_ref_p_1): Properly handle builtins that may
13039         set errno.
13040
13041 2009-06-20  Richard Guenther  <rguenther@suse.de>
13042
13043         PR tree-optimization/40495
13044         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
13045         (new_scalar_tmp_constraint_exp): New function.
13046         (process_constraint): Do not create temporary decls.
13047         (process_all_all_constraints): Likewise.
13048         (handle_const_call): Likewise.
13049         (create_function_info_for): Do not set decl.
13050
13051 2009-06-19  Ian Lance Taylor  <iant@google.com>
13052
13053         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
13054         (rs6000_attribute_table): Make static; move before use.
13055
13056 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
13057
13058         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
13059         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
13060         Propagate the TREE_READONLY flag without overwriting it.
13061         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
13062         Propagate the TREE_READONLY flag onto the result.
13063         (process_call_operands): Move around.  Use correct constant value.
13064
13065 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13066
13067         PR target/40482
13068         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
13069         * config/arm/arm.md: Likewise.
13070
13071 2009-06-19  Ian Lance Taylor  <iant@google.com>
13072
13073         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
13074         to GIMPLE_ERROR_MARK.
13075
13076         * c-typeck.c (build_conditional_expr): Add op1_original_type and
13077         op2_original_type parameters.  Warn about using different enum types.
13078         * c-parser.c (c_parser_conditional_expression): Pass original
13079         types to build_conditional_expr.
13080         * c-tree.h (build_conditional_expr): Update declaration.
13081
13082 2009-06-19  Ian Lance Taylor  <iant@google.com>
13083
13084         * config/i386/i386.c (ix86_function_specific_save): Test that
13085         fields match values, rather than testing the values are in a
13086         certain range.
13087
13088 2009-06-19  Richard Guenther  <rguenther@suse.de>
13089
13090         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
13091         ADDR_EXPR pointers.
13092         (ptr_derefs_may_alias_p): Likewise.
13093         (ptr_deref_may_alias_ref_p_1): New function.
13094         (ptr_deref_may_alias_ref_p): Likewise.
13095         (ref_maybe_used_by_call_p_1): Handle builtins that are not
13096         covered by looking at the ESCAPED solution.
13097         (call_may_clobber_ref_p_1): Likewise.
13098         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
13099         Handle NULL_TREE offset.  Do not produce redundant constraints.
13100         (process_all_all_constraints): New helper function.
13101         (do_structure_copy): Use it.
13102         (handle_lhs_call): Likewise.
13103         (find_func_aliases): Handle some builtins with pointer arguments
13104         and/or return values explicitly.
13105
13106 2009-06-19  Ian Lance Taylor  <iant@google.com>
13107
13108         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
13109
13110 2009-06-19  Ian Lance Taylor  <iant@google.com>
13111
13112         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
13113
13114 2009-06-19  Ian Lance Taylor  <iant@google.com>
13115
13116         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
13117         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
13118         version.
13119
13120         * c-decl.c (finish_decl): If -Wc++-compat, warn about
13121         uninitialized const.
13122
13123 2009-06-19  Ian Lance Taylor  <iant@google.com>
13124
13125         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
13126         all uses.
13127
13128         * c-decl.c (in_struct, struct_types): Remove.
13129         (struct c_binding): Add in_struct field.
13130         (c_binding_ptr): Define type, along with VEC.
13131         (struct c_struct_parse_info): Define.
13132         (struct_parse_info): New static variable.
13133         (bind): Initialize in_struct field.
13134         (start_struct): Remove enclosing_in_struct and
13135         enclosing_struct_types parameters.  Add
13136         enclosing_struct_parse_info parameter.  Change all callers.  Set
13137         struct_parse_info rather than in_struct and struct_types.
13138         (grokfield): If -Wc++-compat and there is a symbol binding for the
13139         field name, set the in_struct flag and push it on the
13140         struct_parse_info->fields vector.
13141         (warn_cxx_compat_finish_struct): New static function.
13142         (finish_struct): Remove enclosing_in_struct and
13143         enclosing_struct_types parameters.  Add
13144         enclosing_struct_parse_info parameter.  Change all callers.  Don't
13145         set C_TYPE_DEFINED_IN_STRUCT here.  Call
13146         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
13147         parameter.  Only push on struct_types if warn_cxx_compat.
13148         (finish_enum): Only push on struct_types if warn_cxx_compat.
13149         (declspecs_add_type): Add loc parameter.  Change all callers.
13150         Change all error calls to error_at.  Pass loc, not input_location,
13151         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
13152         defined in a struct.  If -Wc++-compat and parsing a struct, record
13153         that a typedef name was used.
13154         * c-parser.c (c_parser_declspecs): Get location to pass to
13155         declspecs_add_type.
13156         (c_parser_struct_or_union_specifier): Update calls to start_struct
13157         and finish_struct.
13158         * c-tree.h (struct c_struct_parse_info): Declare.
13159         (finish_struct, start_struct): Update declarations.
13160         (declspecs_add_type): Update declaration.
13161
13162 2009-06-19  Ian Lance Taylor  <iant@google.com>
13163
13164         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
13165         variable with an anonymous type.
13166
13167 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
13168
13169         * see.c: Remove for real.
13170
13171 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
13172
13173         * optabs.h (enum optab_index): Add new OTI_significand.
13174         (significand_optab): Define corresponding macro.
13175         * optabs.c (init_optabs): Initialize significand_optab.
13176         * genopinit.c (optabs): Implement significand_optab using
13177         significand?f2 patterns.
13178         * builtins.c (expand_builtin_mathfn): Handle
13179         BUILT_IN_SIGNIFICAND{,F,L}.
13180         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
13181         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
13182
13183         * config/i386/i386.md (significandxf2, significand<mode>2): New
13184         expanders to implement significandf, significand and significandl
13185         built-ins as inline x87 intrinsics.
13186
13187 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
13188
13189         * config/avr/avr.c (avr_override_options): Remove setting value of
13190         PARAM_INLINE_CALL_COST.
13191
13192 2009-06-18  Richard Henderson  <rth@redhat.com>
13193
13194         PR 40488
13195         * tree-pass.h (TDF_ASMNAME): New.
13196         * tree-dump.c (dump_options): Add asmname.
13197         * doc/invoke.texi: Document it.
13198
13199         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
13200         (dump_decl_name): ...here.
13201         (dump_function_name): New flags arg; mind TDF_ASMNAME.
13202         (dump_generic_node): Update dump_function_name calls.
13203         (print_call_name): New flags arg; update all dump calls.
13204         * diagnostic.h (print_call_name): Update.
13205         * gimple-pretty-print.c (dump_gimple_call): Update.
13206
13207 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
13208
13209         PR target/40470
13210         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
13211
13212 2009-06-18  Diego Novillo  <dnovillo@google.com>
13213
13214         * doc/plugins.texi: Document plugin_is_GPL_compatible.
13215         * plugin.c (str_license): Declare.
13216         (try_init_one_plugin): Assert that the symbol
13217         'plugin_is_GPL_compatible' exists.
13218
13219 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
13220
13221         * see.c: Remove.
13222         * Makefile.in (OBJS-common): Remove see.o.
13223         (see.o): Remove.
13224         * common.opt (fsee): Mark as preserved for backward compatibility.
13225         * opts.c (common_handle_option): Add OPT_fsee to the backward
13226         compatibility section.
13227         * passes.c (init_optimization_passes, pass_see): Remove pass.
13228         * timevar.def (TV_SEE): Remove.
13229         * tree-pass.h (pass_see): Remove declaration.
13230         * doc/invoke.texi (-fsee): Remove documentation.
13231
13232 2009-06-18  Martin Jambor  <mjambor@suse.cz>
13233
13234         * tree-sra.c: Include statistics.h
13235         (sra_stats): New variable.
13236         (sra_initialize): Clear sra_stats.
13237         (create_access_replacement): Increment sra_stats.replacements.
13238         (get_access_replacement): Do not return twice.
13239         (analyze_all_variable_accesses): Increment statistics counter by the
13240         number of scalarized aggregates.
13241         (generate_subtree_copies): Increment sra_stats.subtree_copies.
13242         (sra_modify_expr): Increment sra_stats.exprs.
13243         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
13244         (sra_modify_assign): Increment sra_stats.exprs,
13245         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
13246         (perform_intra_sra): Update statistics counters.
13247         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
13248
13249 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
13250
13251         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
13252         (arm_scalar_mode_supported_p): New function.
13253
13254 2009-06-18  Paul Brook  <paul@codesourcery.com>
13255             Sandra Loosemore  <sandra@codesourcery.com>
13256
13257         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
13258         (__extendhfsf2, __truncsfhf2): Define.
13259         * config/arm/fp16.c: New file.
13260         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
13261         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
13262
13263 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
13264
13265         * doc/extend.texi (Half-Precision): New section.
13266         * doc/invoke.texi (Option Summary): List -mfp16-format.
13267         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
13268         * config/arm/arm.opt (mfp16-format=): New.
13269         * config/arm/arm.c: Include intl.h.
13270         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
13271         (TARGET_INVALID_RETURN_TYPE): Redefine.
13272         (TARGET_PROMOTED_TYPE): Redefine.
13273         (TARGET_CONVERT_TO_TYPE): Redefine.
13274         (arm_fp16_format): Define.
13275         (all_fpus): Add entry for neon-fp16.
13276         (fp_model_for_fpu): Likewise.
13277         (struct fp16_format): Declare.
13278         (all_fp16_formats): Define.
13279         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
13280         functions.
13281         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
13282         and no ldrh.
13283         (arm_legitimate_index_p): Treat HFmode like HImode.
13284         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
13285         (coproc_secondary_reload_class): Special-case HFmode.
13286         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
13287         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
13288         (arm_init_fp16_builtins): New.
13289         (arm_init_builtins): Call it.
13290         (arm_invalid_parameter_type): New.
13291         (arm_invalid_return_type): New.
13292         (arm_promoted_type): New.
13293         (arm_convert_to_type).
13294         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
13295         format.
13296         (arm_emit_fp16_const): New function.
13297         (arm_mangle_type): Mangle __fp16 as "Dh".
13298         * config/arm/arm.h (TARGET_VFPD32): Make it know about
13299         FPUTYPE_NEON_FP16.
13300         (TARGET_NEON_FP16): New.
13301         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
13302         (enum fputype): Add FPUTYPE_NEON_FP16.
13303         (enum arm_fp16_format_type): Declare.
13304         (arm_fp16_format): Declare.
13305         (LARGEST_EXPONENT_IS_NORMAL): Define.
13306         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
13307         * config/arm/arm-modes.def (HFmode): Define.
13308         * config/arm/vfp.md (*movhf_vfp): New.
13309         (extendhfsf2): New.
13310         (truncsfhf2): New.
13311         * config/arm/arm.md (fpu): Add neon_fp16.
13312         (floatsihf2, floatdihf2): New.
13313         (fix_trunchfsi2, fix_trunchfdi2): New.
13314         (truncdfhf2): New.
13315         (extendhfdf2): New.
13316         (movhf): New.
13317         (*arm32_movhf): New.
13318         (*thumb1_movhf): New.
13319         (consttable_2): Add check for HFmode constants.
13320         (consttable_4): Handle HFmode constants.
13321
13322 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
13323
13324         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
13325
13326 2009-06-17  Olivier Hainque  <hainque@adacore.com>
13327
13328         * collect2.c (main): Use CONST_CAST2 to perform char ** to
13329         const char ** conversion in AIX specific section.
13330
13331 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
13332
13333         * config/i386/i386.c (ix86_special_builtin_type): Remove
13334         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
13335         (bdesc_special_args): Updated.
13336         (ix86_init_mmx_sse_builtins): Likewise.
13337         (ix86_expand_special_args_builtin): Likewise.
13338
13339 2009-06-17  Richard Henderson  <rth@redhat.com>
13340
13341         * tree-pretty-print.c (maybe_dump_asm_name): New.
13342         (dump_decl_name): Use it.
13343         (PRINT_FUNCTION_NAME): Merge into...
13344         (dump_function_name): ... here.  Use maybe_dump_asm_name.
13345
13346 2009-06-17  Cary Coutant  <ccoutant@google.com>
13347
13348         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
13349         Change caller.
13350         * debug.c (struct gcc_debug_hooks): Change placeholder for
13351         source_line hook.
13352         (debug_nothing_int_charstar_int): Replaced by...
13353         (debug_nothing_int_charstar_int_bool): ...this.
13354         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
13355         source_line prototype.
13356         (debug_nothing_int_charstar_int): Replaced by...
13357         (debug_nothing_int_charstar_int_bool): ...this.
13358         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
13359         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
13360         Output is_stmt operand when necessary.
13361         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
13362         (notice_source_line): Add is_stmt parameter.
13363         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
13364         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
13365         Change callers.
13366         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
13367         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
13368
13369 2009-06-17  Ian Lance Taylor  <iant@google.com>
13370
13371         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
13372         Change all uses.
13373         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
13374         call uses.
13375
13376 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
13377
13378         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
13379         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
13380         tree_strip_sign_nop_conversions and
13381         tree_ssa_strip_useless_type_conversions rather than stripping
13382         the operations here.
13383         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
13384         Declare them.
13385         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
13386         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
13387         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
13388         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
13389         functions.
13390
13391 2009-06-17  Michael Eager  <eager@eagercon.com>
13392
13393         * config/rs6000/constraints.md (register_constraint "d"): New.
13394         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
13395         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
13396         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
13397         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
13398         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
13399         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
13400         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
13401         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
13402         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
13403         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
13404         __fctiwz): Same.
13405         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
13406         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
13407         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
13408         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
13409         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
13410         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
13411         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
13412         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
13413         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
13414         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
13415         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
13416         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
13417         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
13418         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
13419
13420 2009-06-16  Ian Lance Taylor  <iant@google.com>
13421
13422         * profile.c (total_num_never_executed): Don't define.
13423         (compute_branch_probabilities): Don't count or print
13424         num_never_executed.
13425         (init_branch_prob): Don't set total_num_never_executed.
13426         (end_branch_prob): Don't print total_num_never_executed.
13427
13428 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
13429
13430         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
13431
13432 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
13433
13434         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
13435         (nabstd2_fpr): Same.
13436
13437 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
13438
13439         * expr.c (expand_assignment): Change complex type check.
13440
13441 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
13442
13443         * doc/plugins.texi (Building GCC plugins): Added new section.
13444
13445 2009-06-17  Ian Lance Taylor  <iant@google.com>
13446
13447         * c-pch.c (get_ident): Don't set size of templ array.
13448         (pch_init): Don't set size of partial_pch array.
13449
13450         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
13451         string constant to intialize an array whose size is the length of
13452         the string.
13453
13454 2009-06-17  Richard Guenther  <rguenther@suse.de>
13455
13456         PR tree-optimization/40389
13457         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
13458         to addressable types.
13459         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
13460
13461 2009-06-17  Richard Guenther  <rguenther@suse.de>
13462
13463         PR middle-end/40460
13464         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
13465         if there is no evolution of left in the loop bail out.
13466         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
13467         chrec_fold_multiply.
13468
13469 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
13470             Janis Johnson  <janis187@us.ibm.com>
13471
13472         PR target/39254
13473         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
13474         for the symbol ref of a constant that is the source of a move
13475         - nor for any other not-obvious-label-ref constants.
13476
13477 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
13478
13479         * plugin.c (position_pass): Skip newly inserted pass during list
13480         traversal to avoid repeated insertion.
13481
13482 2009-06-16  Ian Lance Taylor  <iant@google.com>
13483
13484         * vec.h (VEC_stack_alloc): Define different version if
13485         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
13486         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
13487         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
13488         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
13489
13490 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
13491
13492         * config.gcc (extra_headers): Add ia32intrin.h for x86.
13493
13494         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
13495         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
13496         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
13497         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
13498         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
13499         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
13500         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
13501         (bdesc_special_args): Add __builtin_ia32_rdtsc and
13502         __builtin_ia32_rdtscp.
13503         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
13504         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
13505         and __builtin_ia32_rorhi.
13506         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
13507         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
13508         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
13509         (ix86_expand_args_builtin): Likewise.
13510         (ix86_expand_special_args_builtin): Likewise.
13511
13512         * config/i386/i386.md (UNSPECV_RDTSCP): New.
13513         (UNSPECV_RDTSC): Likewise.
13514         (UNSPECV_RDPMC): Likewise.
13515         (*bsr): Renamed to ...
13516         (bsr): This
13517         (*bsr_rex64): Renamed to ...
13518         (bsr_rex64): This.
13519         (rdpmc): New.
13520         (*rdpmc): Likewise.
13521         (*rdpmc_rex64): Likewise.
13522         (rdtsc): Likewise.
13523         (*rdtsc): Likewise.
13524         (*rdtsc_rex64): Likewise.
13525         (rdtscp): Likewise.
13526         (*rdtscp): Likewise.
13527         (*rdtscp_rex64): Likewise.
13528
13529         * config/i386/ia32intrin.h: New.
13530
13531         * config/i386/x86intrin.h: Include <ia32intrin.h>.
13532
13533 2009-06-16  Ian Lance Taylor  <iant@google.com>
13534
13535         * ira-build.c (copy_info_to_removed_store_destinations):
13536         Initialize parent_a.
13537
13538 2009-06-16  Ian Lance Taylor  <iant@google.com>
13539
13540         * c-decl.c (grokdeclarator): Change size_varies to bool.
13541
13542 2009-06-16  Ian Lance Taylor  <iant@google.com>
13543
13544         * sel-sched.c: Make forward declarations of move_op_hooks and
13545         fur_hooks explicitly extern.
13546
13547 2009-06-16  Ian Lance Taylor  <iant@google.com>
13548
13549         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
13550         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
13551
13552 2009-06-16  Ian Lance Taylor  <iant@google.com>
13553
13554         * resource.c (mark_referenced_resources): Change
13555         include_delayed_effects parameter to bool.  Change all callers.
13556         (mark_end_of_function_resources): Likewise.
13557         * reorg.c (insn_references_resource_p): Likewise.
13558         (insn_sets_resource_p): Likewise.
13559         * resource.h (mark_referenced_resources): Update declaration.
13560         (mark_end_of_function_resources): Update declaration.
13561
13562 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
13563
13564         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
13565
13566 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
13567
13568         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
13569         GCC can bootstrap on AIX with GNU Binutils 2.20.
13570
13571 2009-06-16  Ian Lance Taylor  <iant@google.com>
13572
13573         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
13574
13575 2009-06-16  Ian Lance Taylor  <iant@google.com>
13576
13577         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
13578         inline, not extern inline.
13579         (exact_log2): Likewise.
13580         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
13581         test CLZ_HWI.
13582         (exact_log2): Likewise, but don't test CTZ_HWI.
13583
13584 2009-06-16  Ian Lance Taylor  <iant@google.com>
13585
13586         * bitmap.c (bitmap_clear): Don't declare as inline.
13587         * gimple.c (gimplify_assign): Likewise.
13588         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
13589         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
13590         (sched_scan_info): Remove duplicate definition.
13591
13592 2009-06-16  Ian Lance Taylor  <iant@google.com>
13593
13594         * c-common.c (skip_evaluation): Don't define.
13595         (c_inhibit_evaluation_warnings): Define global variable.
13596         (overflow_warning): Check c_inhibit_evaluation_warnings rather
13597         than skip_evaluation.
13598         (convert_and_check, warn_for_div_by_zero): Likewise.
13599         * c-common.h (skip_evaluation): Don't declare.
13600         (c_inhibit_evaluation_warnings): Declare.
13601         * c-parser.c (c_parser_typeof_specifier): Set
13602         c_inhibit_evaluation_warnings rather than skip_evaluation.
13603         (c_parser_conditional_expression): Likewise.
13604         (c_parser_binary_expression): Likewise.
13605         (c_parser_sizeof_expression): Likewise.
13606         (c_parser_alignof_expression): Likewise.
13607         * c-typeck.c (build_indirect_ref): Check
13608         c_inhibit_evaluation_warnings rather than skip_evaluation.
13609         (build_conditional_expr, build_binary_op): Likewise.
13610
13611 2009-06-16  Richard Guenther  <rguenther@suse.de>
13612
13613         * tree-ssa-alias.c (is_escape_site): Remove.
13614         * tree-ssa-alias.h (enum escape_type): Remove.
13615         (is_escape_site): Likewise.
13616         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
13617         via casts and asms without deferring to is_escape_site.
13618
13619 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
13620
13621         PR middle-end/40446
13622         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
13623         use gen_lowpart if op0 has complex mode.
13624
13625 2009-06-16  Richard Guenther  <rguenther@suse.de>
13626
13627         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
13628         variables add them to ESCAPED.
13629         (find_func_aliases): Do not make all indirectly stored values escaped.
13630
13631 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
13632
13633         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
13634         make_decl_one_only.
13635
13636 2009-06-16  Martin Jambor  <mjambor@suse.cz>
13637
13638         PR tree-optimization/40432
13639         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
13640         check whether we need to force gimple register operand.
13641
13642 2009-06-16  Martin Jambor  <mjambor@suse.cz>
13643
13644         PR tree-optimization/40413
13645         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
13646         build_ref_for_offset.
13647         (propagate_subacesses_accross_link): Fix a typo in a comment.
13648
13649 2009-06-16  Ira Rosen  <irar@il.ibm.com>
13650
13651         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
13652         with additional parameter.
13653         * tree-vectorizer.h (enum vect_def_type): Add new value
13654         vect_nested_cycle.
13655         (enum vect_relevant): Add comments.
13656         (vect_is_simple_reduction): Add new argument.
13657         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
13658         Detect nested cycles.
13659         (vect_is_simple_reduction): Update documentation, add an argument to
13660         distinguish inner-loop reduction from nested cycle, detect nested
13661         cycles, fix printings and indentation, don't swap operands in case
13662         of nested cycle.
13663         (get_initial_def_for_reduction): Handle subtraction.
13664         (vect_create_epilog_for_reduction): Add new argument to specify
13665         reduction variable.
13666         (vect_finalize_reduction): Handle subtraction, fix comments.
13667         (vectorizable_reduction): Handle nested cycles. In case of nested
13668         cycle keep track of the reduction variable position. Call
13669         vect_is_simple_reduction with additional parameter. Use original
13670         statement code in reduction epilogue for nested cycle. Call
13671         vect_create_epilog_for_reduction with additional parameter.
13672         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
13673         inner-loop vectorization.
13674         (vect_recog_widen_sum_pattern): Likewise.
13675         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
13676         and reductions.
13677         (vect_mark_stmts_to_be_vectorized): Likewise.
13678         (vect_get_vec_def_for_operand): Handle nested cycles.
13679
13680 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13681
13682         * doc/invoke.texi (Debugging Options): Fix option index entries
13683         for -fdump-statistics, -frandom-seed add entries for
13684         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
13685         (FRV Options): Fix entries for -mTLS, -mtls.
13686         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
13687         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
13688         (M68hc1x Options): Fix @itemx for -mnominmax.
13689         (MCore Options): Fix entry for -mno-lsim.
13690         (MMIX Options): Fix entry for -mabi=mmixware.
13691         (PDP-11 Options): Fix entry for -mbcopy-builtin.
13692
13693 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
13694
13695         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
13696         Mention the plugin mode of gengtype.
13697         * doc/gty.texi (Source Files Containing Type Information): Likewise.
13698         * gengtype.c: Updated copyright.
13699         (plugin_files, nb_plugin_files) Added new static variables.
13700         (measure_input_list) Care about plugin_files.
13701         (write_rtx_next): Added early return in plugin mode.
13702         (create_file): Updated copyright year in generated file. Added
13703         asserts.
13704         (oprintf): Added early return if NULL outf.
13705         (get_output_file_with_visibility): Care of plugin_files.
13706         (get_output_file_name): May return null.
13707         (write_local): Added early return.
13708         (put_mangled_filename): Ditto.
13709         (finish_root_table): Added check for base_files.
13710         (write_roots): Care about null when plugins.
13711         (main): Added plugin mode.
13712
13713 2009-06-15  Ian Lance Taylor  <iant@google.com>
13714
13715         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
13716         * gcov.c (read_count_file): Add braces around variables declared
13717         before label.
13718
13719         * c.opt (Wjump-misses-init): New warning.
13720         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
13721         -Wall and -Wc++-compat if not already set.
13722         (c_common_post_options): Clear warn_jump_misses_init if it was not
13723         set.
13724         * c-decl.c (struct c_binding): Change type field to a union with
13725         new label field.  Make it the first field in the struct.  Update
13726         references to type to use u.type instead.
13727         (struct c_spot_bindings): Define.
13728         (struct c_goto_bindings): Define.
13729         (c_goto_bindings_p): Define, along with VECs.
13730         (struct c_label_vars): Define.
13731         (struct c_scope): Add has_label_bindings field.
13732         (bind_label, set_spot_bindings): New static functions.
13733         (decl_jump_unsafe, update_spot_bindings): New static functions.
13734         (update_label_decls): New static function.
13735         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
13736         Update binding u.label field to shadowed field.
13737         (c_binding_start_stmt_expr): New function.
13738         (c_binding_end_stmt_expr): New function.
13739         (pushdecl): Don't call c_begin_vm_scope.
13740         (make_label): Add defining and p_label_vars parameters.  Change
13741         all callers.
13742         (lookup_label): Correct test for whether a label has not yet been
13743         defined.  Call bind_label rather than bind.
13744         (warn_about_goto): New static function.
13745         (lookup_label_for_goto): New function.
13746         (declare_label): Call bind_label rather than bind.
13747         (check_earlier_gotos): New static function.
13748         (define_label): Don't give errors about jumping into statement
13749         expressions or scopes of variably modified types.  Call
13750         set_spot_bindings and check_earlier_gotos.  Call bind_label
13751         instead of bind.  Don't set label_context_stack_se or
13752         label_context_stack_vm.
13753         (c_get_switch_bindings): New function.
13754         (c_release_switch_bindings): New function.
13755         (c_check_switch_jump_warnings): New function.
13756         (start_function): Don't set label_context_stack_se or
13757         label_context_stack_vm.
13758         (finish_function): Likewise.
13759         * c-typeck.c (label_context_stack_se): Don't define.
13760         (label_context_stack_vm): Don't define.
13761         (c_finish_goto_label): Call lookup_label_for_goto rather than
13762         lookup_label.  Don't give errors about jumping into a statement
13763         expression or the scope of a variably modified type.  Don't set
13764         label_context_stack_se or label_context_stack_vm.
13765         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
13766         fields.  Add bindings field.
13767         (c_start_case): Don't set deleted fields.  Set bindings field.
13768         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
13769         or blocked_vm.  Call c_check_switch_jump_warnings.
13770         (c_finish_case): Don't test blocked_stmt_expr field.  Call
13771         c_release_switch_bindings.
13772         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
13773         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
13774         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
13775         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
13776         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
13777         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
13778         (c_begin_vm_scope, c_end_vm_scope): Don't define.
13779         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
13780         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
13781         (C_DECL_UNJUMPABLE_VM): Don't define.
13782         (C_DECL_UNDEFINABLE_VM): Don't define.
13783         (struct c_label_list): Don't define.
13784         (struct c_label_context_se): Don't define.
13785         (struct c_label_context_vm): Don't define.
13786         (struct c_spot_bindings): Declare.
13787         (c_bindings_start_stmt_expr): Declare.
13788         (c_bindings_end_stmt_expr): Declare.
13789         (lookup_label_for_goto): Declare.
13790         (c_get_switch_bindings, c_release_switch_bindings): Declare.
13791         (c_check_switch_jump_warnings): Declare.
13792         (label_context_stack_se, label_context_stack_vm): Don't declare.
13793         (c_finish_goto_label): Update declaration.
13794         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
13795         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
13796         (Warning Options): Document -Wjump-misses-init.
13797
13798 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
13799
13800         * tree-object-size.c (addr_object_size): Fix a pasto in the last
13801         change.
13802
13803 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
13804
13805         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
13806
13807 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
13808
13809         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
13810
13811 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
13812
13813         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
13814
13815 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
13816
13817         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
13818         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
13819         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
13820         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
13821         * dwarf2asm.c (dw2_force_const_mem): Update call to
13822         make_decl_one_only.
13823         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
13824         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
13825         * langhooks.c (lhd_comdat_group): Remove.
13826         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
13827         * tree.h (DECL_COMDAT_GROUP): New.
13828         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
13829         (tree_decl_with_vis): Add comdat_group. Remove one_only.
13830         (make_decl_one_only): Change signature.
13831         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
13832         make_decl_one_only.
13833         (make_decl_one_only): Change signature.
13834         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
13835
13836 2009-06-15  Richard Guenther  <rguenther@suse.de>
13837
13838         PR middle-end/40439
13839         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
13840
13841 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
13842
13843         * tree-ssa-math-opts.c: Remove extra divide.
13844
13845 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
13846
13847         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
13848
13849 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
13850
13851         * passes.c: Add bswap pass.
13852         * tree-pass.h: Add pass_optimize_bswap declaration.
13853         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
13854         Include rtl.h, expr.h and optabs.h for optab_handler check.
13855         (struct symbolic_number, pass_optimize_bswap): New definition.
13856         (do_shift_rotate, verify_symbolic_number_p): New functions.
13857         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
13858         (gate_optimize_bswap): New function.
13859         * tree.c (widest_int_cst_value): New function.
13860         * tree.h (widest_int_cst_value): Prototype added.
13861
13862 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
13863
13864         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
13865         REG_EQUAL/REG_EQUIV notes.
13866
13867 2009-06-14  Richard Guenther  <rguenther@suse.de>
13868
13869         PR middle-end/40389
13870         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
13871         has its address taken if NRV was applied and it is addressable.
13872         * tree-ssa-structalias.c (get_constraint_for_address_of): New
13873         function split out from ...
13874         (get_constraint_for_1): ... here.
13875         (handle_rhs_call): Use it to mark the return slot escaped if
13876         it is addressable and NRV was applied.
13877
13878 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
13879
13880         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
13881         Change first argument type to location_t.
13882         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
13883         Do not set input_location.
13884         Use loc instead of input_location throughout.
13885
13886 2009-06-13  Richard Guenther  <rguenther@suse.de>
13887
13888         PR tree-optimization/40421
13889         * tree-predcom.c (should_unroll_loop_p): Remove.
13890         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
13891
13892 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
13893
13894         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
13895         Add location argument.
13896
13897 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
13898
13899         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
13900         build_decl.
13901         * config/s390/s390.c (s390_build_builtin_va_list): Same.
13902         (s390_gimplify_va_arg): Pass location to create_artificial_label.
13903         * config/spu/spu-protos.h: Add location to
13904         spu_resolve_overloaded_builtin.
13905         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
13906         spu_build_builtin_va_list.
13907         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
13908         argument.  Pass location to build_function_call_vec.
13909         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
13910         build_decl.
13911         (emit_fpu_switch): Same.
13912         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
13913         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
13914         to build_decl and create_artificial_label.
13915         (xtensa_gimplify_va_arg_expr): Same.
13916         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
13917         (xstormy16_gimplify_va_arg_expr): Same.
13918         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
13919         * config/arm/arm.c (arm_build_builtin_va_list): Same.
13920         * config/mips/mips.c (mips_build_builtin_va_list): Same.
13921         (mips16_build_function_stub): Same.
13922         (mips16_build_call_stub): Same.
13923
13924 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
13925
13926         PR target/40327
13927         * arm/constraints.md (Pa, Pb): New constraints.
13928         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
13929         split pattern to deal with them.
13930
13931 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
13932
13933         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
13934         fix index entry for -Xpreprocessor.
13935
13936 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
13937
13938         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
13939         Add location argument to build_decl call.
13940         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
13941         (rs6000_init_builtins): Same.
13942         (spe_init_builtins): Same.
13943         (rs6000_gimplify_va_arg): Add location argument to
13944         create_artificial_label call.
13945
13946 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
13947
13948         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
13949         * combine-stack-adj.c (pass_stack_adjustments): Use it.
13950         * Makefile.in: Fix GGC dependency for gcse.o.
13951
13952 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
13953
13954         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
13955         * gimple-pretty-print.c (dump_gimple_stmt): Same.
13956         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
13957         created.
13958         * c-parser.c (c_parser_binary_expression): Use current column while
13959         building binary operations.
13960         * common.opt (fshow-column): Enable by default.
13961         * tree-vrp.c (check_array_ref): Use warning_at.
13962         (check_array_bounds): Use location from call back if expr has no
13963         location.
13964         * tree.h: Add location argument to maybe_fold_*.
13965         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
13966         (maybe_fold_offset_to_array_ref): Add location argument and use it.
13967         (maybe_fold_offset_to_component_ref): Same.
13968         (maybe_fold_offset_to_reference): Same.
13969         (maybe_fold_offset_to_address): Same.
13970         (maybe_fold_stmt_indirect): Same.
13971         (maybe_fold_stmt_addition): Same.
13972         (fold_stmt_r): Pass location to maybe_fold_*.
13973         (fold_gimple_assign): Same.
13974         * c-tree.h: Add location argument to finish_decl,
13975         default_function_array_conversion, store_init_value.
13976         * c-decl.c (define_label): Use error_at.
13977         (c_make_fname_decl): Pass location to finish_decl.
13978         (finish_decl): New location argument.
13979         (build_compound_literal): Pass location to store_init_value.
13980         (grokdeclarator): Pass location to finish_decl.
13981         (grokfield): Same.
13982         * c-typeck.c (array_to_pointer_conversion): New location argument.
13983         (function_to_pointer_conversion): Same.
13984         (default_function_array_conversion): Same.
13985         (parser_build_unary_op): Pass location to overflow_warning.
13986         (parser_build_binary_op): Same.  Use warning_at.
13987         (build_unary_op): Pass location to array_to_pointer_conversion.
13988         (build_c_cast): Pass location to digest_init.
13989         (build_modify_expr): New location argument.
13990         (convert_for_assignment): Same.
13991         (store_init_value): Same.
13992         (digest_init): Same.
13993         (output_init_element): Pass location to digest_init and
13994         array_to_pointer_conversion.
13995         (c_finish_return): Pass location to convert_for_assignment.
13996         * gimplify.c (gimplify_conversion): Pass location to
13997         maybe_fold_offset_to_address.
13998         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
13999         to maybe_fold_stmt_addition.
14000         * c-omp.c (c_finish_omp_atomic): Pass new location to
14001         build_modify_expr.
14002         (c_finish_omp_for): Same.
14003         * c-common.c (overflow_warning): New argument.
14004         * c-common.h: New argument to build_modify_expr, overflow_warning.
14005         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
14006         finish_decl.
14007         (c_parser_initializer): Pass location to
14008         default_function_array_conversion.
14009         (c_parser_initelt): Same.
14010         (c_parser_initval): Same.
14011         (c_parser_asm_operands): Same.
14012         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
14013         (c_parser_conditional_expression): Same.
14014         (c_parser_binary_expression): Add location info to stack.  Use it.
14015         (c_parser_unary_expression): Pass location to
14016         default_function_array_conversion, parser_build_unary_op,
14017         build_indirect_ref, c_parser_postfix_expression_after_primary.
14018         (c_parser_postfix_expression_after_primary): New location argument.
14019         Use it.
14020         (c_parser_expression_conv): Pass location to
14021         default_function_array_conversion.
14022         (c_parser_expr_list): Same.
14023         (c_parser_omp_atomic): Same.
14024         (c_parser_omp_for_loop): Same.
14025         * c-tree.h (struct c_declarator): Add comment to id_loc.
14026         (build_array_declarator): New argument.
14027         * c-decl.c (build_array_declarator): Add location argument.
14028         (grokdeclarator): Set id_loc for cdk_array.
14029         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
14030         build_array_declarator.
14031         * tree.c (build_omp_clause): Add location argument.
14032         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
14033         (OMP_CLAUSE_LOCATION): New macro.
14034         (struct tree_omp_clause): Add location field.
14035         (build_omp_clause): Add argument.
14036         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
14037         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
14038         build_omp_clause.
14039         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
14040         (cp_parser_omp_clause_collapse): Same.
14041         (cp_parser_omp_clause_default): Same.
14042         (cp_parser_omp_clause_if): Same.
14043         (cp_parser_omp_clause_nowait): Same.
14044         (cp_parser_omp_clause_num_threads): Same.
14045         (cp_parser_omp_clause_ordered): Same.
14046         (cp_parser_omp_clause_schedule): Same.
14047         (cp_parser_omp_clause_untied): Same.
14048         (cp_parser_omp_for_loop): Same.
14049         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
14050         * c-tree.h (c_start_case): Add location argument.
14051         (c_process_expr_stmt): Same.
14052         (c_finish_goto_*): Same.
14053         * tree-parloops.c (initialize_reductions): Pass location to
14054         build_omp_clause.
14055         (create_parallel_loop): Same.
14056         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
14057         (gfc_trans_omp_reduction_list): Same.
14058         (gfc_trans_omp_clauses): Same.
14059         (gfc_trans_omp_do): Same.
14060         * c-typeck.c (c_finish_goto_label): Same.
14061         (c_finish_goto_ptr): New location argument.
14062         (c_start_case): Same.
14063         (emit_side_effect_warnings): Same.
14064         (c_process_expr_stmt): Same.
14065         (c_finish_stmt_expr): Same.
14066         (c_finish_omp_clauses): Use error_at instead of error.
14067         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
14068         build_omp_clause.
14069         * c-omp.c (c_split_parallel_clauses): New location argument.
14070         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
14071         to build_omp_clause.
14072         (convert_local_reference_stmt): Same.
14073         (convert_gimple_call): Same.
14074         * c-common.h (c_split_parallel_clauses): New argument.
14075         * c-parser.c (c_parser_statement_after_labels): Pass location to
14076         c_finish_goto_label.
14077         (c_parser_switch_statement): Pass location to c_start_case.
14078         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
14079         and c_process_expr_stmt.
14080         (c_parser_omp_variable_list): Add location argument.
14081         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
14082         (c_parser_omp_clause_default): Same.
14083         (c_parser_omp_clause_if): Same.
14084         (c_parser_omp_clause_num_threads): Same.
14085         (-c_parser_omp_clause_ordered): Same.
14086         (c_parser_omp_clause_reduction): Pass location to
14087         c_parser_omp_variable_list.
14088         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
14089         (c_parser_omp_clause_untied): Same.
14090         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
14091         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
14092
14093         * c-tree.h (check_for_loop_decls, undeclared_variable,
14094         build_component_ref, build_array_ref, build_external_ref,
14095         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
14096         build_conditional_expr, build_compound_expr, c_cast_expr,
14097         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
14098         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
14099         argument.
14100         * c-semantics.c (build_stmt): Same.
14101         (build_case_label): Same.
14102         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
14103         (undeclared_variable): New argument.
14104         (make_label): Same.
14105         (lookup_label): Pass location on down.
14106         (define_label): Same.
14107         (finish_decl): Same.
14108         (build_compound_literal): Same.
14109         (finish_struct): Same.
14110         (finish_function): Do not set location here.
14111         (check_for_loop_decls): New argument.
14112         * tree.c (save_expr): Set location.
14113         (build_empty_stmt): New argument.
14114         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
14115         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
14116         * builtins.c (gimplify_va_arg_expr): Use locations.
14117         (expand_builtin_sync_operation): Same.
14118         * c-typeck.c (build_component_ref): New argument.
14119         (build_array_ref): Same.
14120         (build_external_ref): Same.
14121         (c_expr_sizeof_expr): Same.
14122         (c_expr_sizeof_type): Same.
14123         (parser_build_unary_op): Same.
14124         (build_conditional_expr): Same.
14125         (build_compound_expr): Pass location on down.
14126         (build_compound_expr): New argument.
14127         (build_c_cast): Same.
14128         (c_cast_expr): Same.
14129         (build_asm_expr): Same.
14130         (c_finish_return): Same.
14131         (c_process_expr_stmt): Pass location on down.
14132         (c_finish_stmt_expr): New argument.
14133         (push_clenaup): Same.
14134         (c_finish_omp_parallel): Same.
14135         (c_finish_omp_task): Same.
14136         * gimplify.c (gimplify_call_expr): Pass location on down.
14137         * c-omp.c (c_finish_omp_master): New argument.
14138         (c_finish_omp_critical): Same.
14139         (c_finish_omp_ordered): Same.
14140         (c_finish_omp_barrier): Same.
14141         (-c_finish_omp_taskwait): Same.
14142         (c_finish_omp_atomic): Same.
14143         (c_finish_omp_flush): Same.
14144         * tree-inline.c (copy_tree_body_r): Pass location on down.
14145         (inline_forbidden_p): Remove use of input_location.
14146         * c-gimplify.c (c_build_bind_expr): New argument.
14147         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
14148         (c_sizeof_or_alignof_type): New argument.
14149         (c_alignof_expr): Same.
14150         (build_va_arg): Same.
14151         (c_add_case_label): Same.
14152         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
14153         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
14154         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
14155         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
14156         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
14157         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
14158         New argument.
14159         * stub-objc.c (objc_build_selector_expr): Same.
14160         (objc_build_throw_stmt): Same.
14161         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
14162         (c_parser_initelt): Same.
14163         (c_parser_compound_statement): Same.
14164         (c_parser_compound_statement_nostart): Same.
14165         (c_parser_label): Same.
14166         (c_parser_statement_after_labels): Same.
14167         (c_parser_if_body): Same.
14168         (c_parser_else_body): Same.
14169         (c_parser_if_statement): Same.
14170         (c_parser_switch_statement): Same.
14171         (c_parser_while_statement): Same.
14172         (c_parser_do_statement): Same.
14173         (c_parser_for_statement): Same.
14174         (c_parser_asm_statement): Same.
14175         (c_parser_conditional_expression): Same.
14176         (c_parser_binary_expression): Same.
14177         (c_parser_cast_expression): Same.
14178         (c_parser_unary_expression): Same.
14179         (c_parser_sizeof_expression): Same.
14180         (c_parser_alignof_expression): Same.
14181         (c_parser_postfix_expression): Same.
14182         (c_parser_expression): Same.
14183         (c_parser_objc_receiver): Same.
14184         (c_parser_omp_variable_list): Same.
14185         (c_parser_omp_structured_block): Same.
14186         (c_parser_omp_atomic): New argument.
14187         (c_parser_omp_barrier): Same.
14188         (c_parser_omp_critical): Same.
14189         (c_parser_omp_flush): Pass location on down.
14190         (c_parser_omp_for_loop): New argument.
14191         (c_parser_omp_for): Same.
14192         (c_parser_omp_master): Same.
14193         (c_parser_omp_ordered): Same.
14194         (c_parser_omp_sections_scope): Same.
14195         (c_parser_omp_sections): Same.
14196         (c_parser_omp_parallel): Same.
14197         (c_parser_omp_single): Same.
14198         (c_parser_omp_task): Same.
14199         (c_parser_omp_taskwait): Pass location on down.
14200         (c_parser_omp_construct): Same.
14201         (c_parser_omp_threadprivate): Same.
14202         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
14203         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
14204         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
14205         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
14206         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
14207         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
14208         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
14209         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
14210         config/i386/i386.c, stmt.c:
14211         Add location argument to the following function definitions and/or
14212         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
14213         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
14214         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
14215         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
14216         do_case, c_finish_bc_stmt, build_compound_literal,
14217         build_function_call.
14218         * c-decl.c (build_compound_literal): Add location argument.
14219         Make all diagnostic calls use location.
14220         (start_struct): Same.
14221         (finish_struct): Same.
14222         (start_enum): Same.
14223         (build_enumerator): Same.
14224         (start_function): Same.
14225         (grokdeclarator): Make all diagnostic calls use location.
14226         (store_parm_decls_oldstyle): Same.
14227         * c-typeck.c (build_function_call): Add location argument.
14228         Make all diagnostic calls use location.
14229         (do_case): Same.
14230         (c_finish_bc_stmt): Same.
14231         * tree-nested.c (get_trampoline_type): Add argument.
14232         Pass location to build_decl.
14233         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
14234         * rtl.h (RTL_LOCATION): New.
14235         * c-common.c (c_add_case_label): Add location argument.
14236         Make all diagnostic calls use location.
14237         * c-common.h: Add location argument to make_fname_decl, do_case,
14238         c_add_case_label, build_function_call, resolve_overloaded_builtin.
14239         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
14240         Set it appropriately for every case.  Pass enum_loc to start_enum
14241         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
14242         parser_xref_tag.
14243         (c_parser_struct_or_union_specifier): Save location.  Use it for
14244         start_struct, finish_struct, and parser_xref_tag.
14245
14246 2009-06-12  Ian Lance Taylor  <iant@google.com>
14247
14248         * fold-const.c (fold_unary): Rename local variable and to and_expr.
14249
14250         * c-opts.c (c_common_handle_option): For -Wc++-compat set
14251         cpp_opts->warn_cxx_operator_names.
14252
14253 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14254
14255         PR tree-opt/38865
14256         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
14257         is returns NULL and OP is a VCE, look through the VCE.
14258
14259 2009-06-12  Ian Lance Taylor  <iant@google.com>
14260
14261         PR bootstrap/40430
14262         * collect2.c (main): Use CONST_CAST2 in code inside #if
14263         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
14264
14265 2009-06-12  Joey Ye  <joey.ye@intel.com>
14266
14267         PR middle-end/39146
14268         * cfgexpand.c (get_decl_align_unit): Update
14269         max_used_stack_slot_alignment with align instead of
14270         stack_alignment_needed.
14271
14272         * function.c (assign_stack_local_1): Update
14273         max_used_stack_slot_alignment with alignment_in_bits instead
14274         of stack_alignment_needed.
14275         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
14276         here.
14277
14278 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
14279
14280         * dwarf2out.c (last_var_location_insn): New variable.
14281         (dwarf2out_end_epilogue): Clear last_var_location_insn.
14282         (dwarf2out_var_location): Don't record anything after last real
14283         insn.  Only change labels if there were any real instructions
14284         in between last note and this one, or if changed sections.
14285
14286 2009-06-11  Richard Henderson  <rth@redhat.com>
14287
14288         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
14289         note when storing the frame pointer in a register.
14290         (FRP): Don't redefine to nothing for epilogue.
14291         (alpha_expand_epilogue): Mark register and sp restores.
14292         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
14293
14294         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
14295         when gen_lowpart is needed.
14296
14297 2009-06-11  Richard Henderson  <rth@redhat.com>
14298
14299         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
14300
14301         * dwarf2out.c (need_data_align_sf_opcode): New.
14302         (div_data_align): Move earlier.
14303         (def_cfa_1, reg_save): Use it.
14304
14305 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
14306
14307         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
14308         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
14309         (ix86_handle_option): Handle OPT_mcrc32.
14310         (ix86_target_string): Add -mcrc32.
14311         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
14312
14313         * config/i386/i386.h (TARGET_CRC32): New.
14314
14315         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
14316         (sse4_2_crc32di): Likewise.
14317
14318         * config/i386/i386.opt (mcrc32): New.
14319
14320         * doc/invoke.texi: Document -mcrc32.
14321
14322 2009-06-11  Richard Henderson  <rth@redhat.com>
14323
14324         * common.opt (gdwarf-): Accept a version number.
14325         * doc/invoke.texi (gdwarf-): Update docs.
14326         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
14327         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
14328         version level, and record it.
14329
14330         * dwarf2.h (DW_CIE_VERSION): Remove.
14331         * dwarf2out.c (DWARF_VERSION): Remove.
14332         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
14333         (output_call_frame_info): Use CIE version 3 for dwarf3,
14334         or if the return register column is out of range for version 1.
14335         (dwarf_stack_op_name): Add all dwarf3 values.
14336         (DEBUG_PUBTYPES_SECTION): New.
14337         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
14338         encoding change for dwarf3.
14339         (output_die) [dw_val_class_die_ref]: Likewise.
14340         (output_compilation_unit_header): Emit correct version for dwarf3.
14341         (output_line_info): Likewise.
14342         (output_pubnames): Update for DWARF_VERSION removal.
14343         (output_aranges): Likewise.
14344         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
14345         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
14346         (dwarf2out_finish): Likewise.
14347
14348 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
14349
14350         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
14351         in r148403.
14352
14353 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
14354
14355         PR c/39252
14356         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
14357         * builtins.c (expand_builtin_unreachable): New function.
14358         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
14359         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
14360         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
14361         successors.
14362         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
14363         searching for missing barriers.
14364
14365 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
14366
14367         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
14368         when -fprofile-generate* was passed.
14369         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
14370
14371 2009-06-11  Anthony Green  <green@moxielogic.com>
14372
14373         * config/moxie/moxie.md: Define length attribute for all instructions.
14374         (rCC): Define.
14375         (*b<cond:code>): Support limited branch ranges for new PC-relative
14376         branch instructions.
14377         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
14378
14379 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
14380
14381         * config/i386/i386.c (min_insn_size): Use get_attr_length
14382         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
14383         For __asm return 0.
14384
14385         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
14386         instead of emit_insn_before.
14387
14388 2009-06-10  Ian Lance Taylor  <iant@google.com>
14389
14390         PR bootstrap/40408
14391         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
14392         GIMPLE_SWITCH.
14393
14394 2009-06-10  Revital Eres  <eres@il.ibm.com>
14395
14396         * passes.c (init_optimization_passes): Reschedule
14397         predictive-commoning pass before complete unroll pass.
14398
14399 2009-06-10  Martin Jambor  <mjambor@suse.cz>
14400
14401         * cgraph.c (cgraph_node_can_be_local_p): New function.
14402         (cgraph_make_node_local): New function.
14403         * cgraph.h (cgraph_node_can_be_local_p): Declare.
14404         (cgraph_make_node_local): Declare.
14405
14406 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
14407
14408         * tree.h (tree_base): Add packed_flag and user_align fields.
14409         Decrease size of spare field.
14410         (TYPE_USER_ALIGN): Use user_align from tree_base.
14411         (DECL_USER_ALIGN): Likewise.
14412         (TYPE_PACKED): Use packed_flag from tree_base.
14413         (DECL_PACKED): Likewise.
14414         (tree_type): Delete packed_flag and user_align fields.  Widen
14415         precision field.  Widen mode field and shuffle fields to align
14416         mode on an 8-bit boundary.
14417         (tree_decl_common): Delete decl_flag_1 and user_align fields.
14418         Renumber decl_flag_* fields.  Fix comments.  Widen
14419         decl_common_unused field.
14420         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
14421         (DECL_EXTERNAL): Likewise.
14422         (DECL_BIT_FIELD): Likewise.
14423         (DECL_NONADDRESSABLE_P): Likewise.
14424         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
14425         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
14426
14427 2009-06-10  Ian Lance Taylor  <iant@google.com>
14428
14429         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
14430         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
14431         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
14432         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
14433         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
14434         DEF_VEC_ALLOC_FUNC_P.
14435         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
14436         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
14437         DEF_VEC_ALLOC_FUNC_O.
14438         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
14439         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
14440         DEF_VEC_ALLOC_FUNC_I.
14441         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
14442         (vec_stack_p_reserve_exact_1): Declare.
14443         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
14444         (vec_stack_free): Declare.
14445         (VEC_stack_alloc): Define.
14446         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
14447         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
14448         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
14449         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
14450         for void_p.
14451         (stack_vecs): New static variable.
14452         (vec_stack_p_reserve_exact_1): New function.
14453         (vec_stack_o_reserve_1): New static function.
14454         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
14455         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
14456         (vec_stack_free): New function.
14457         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
14458         (VEC_df_ref_stack_alloc): Define.
14459         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
14460         DEF_VEC_ALLOC_P_STACK.
14461         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
14462         (struct df_collection_rec): Change _vec fields to VEC.  Remove
14463         _use fields.
14464         (df_free_collection_rec): Adjust for new fields.
14465         (df_insn_rescan): Use new df_collection_rec fields.
14466         (df_notes_rescan, df_canonize_collection_rec): Likewise.
14467         (df_ref_create_structure, df_ref_record): Likewise.
14468         (df_get_conditional_uses, df_get_call_refs): Likewise.
14469         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
14470         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
14471         (df_record_exit_block_uses, df_bb_verify): Likewise.
14472         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
14473         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
14474         Remove count parameter.  Change return type to void.  Change all
14475         callers.
14476         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
14477         Remove count parameter.  Change return type to void.  Change all
14478         callers.
14479         (df_install_refs): Change old_vec parameter to VEC.  Remove count
14480         parameter.  Change all callers.
14481         (df_install_mws): Change old_vec parameter to VEC.  Remove count
14482         parameter.  Change all callers.
14483         (df_refs_verify): Change new_rec parameter to VEC.  Change call
14484         callers.
14485         (df_mws_verify): Likewise.
14486
14487 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
14488
14489         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
14490
14491 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
14492
14493         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
14494
14495 2009-06-10  Anthony Green  <green@moxielogic.com>
14496
14497         * config/moxie/crti.asm: New file.
14498         * config/moxie/crtn.asm: New file.
14499         * config/moxie/moxie.c: New file.
14500         * config/moxie/moxie.h: New file.
14501         * config/moxie/sfp-machine.h: New file.
14502         * config/moxie/moxie-protos.h: New file.
14503         * config/moxie/t-moxie: Created.
14504         * config/moxie/t-moxie-softfp: Created.
14505         * config/moxie/moxie.md: Created.
14506         * config/moxie/constraints.md: Created.
14507         * config.gcc: Add moxie support.
14508         * doc/md.texi (Machine Constraints): Add moxie constraints.
14509         * doc/contrib.texi (Contributors): Mention moxie port.
14510         * doc/install.texi (Specific): Mention the moxie port.
14511
14512 2009-06-09  Ian Lance Taylor  <iant@google.com>
14513
14514         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
14515         compiling with C++.
14516         * optabs.c (optab_table): Only use designated initializers if
14517         HAVE_DESIGNATED_INITIALIZERS is defined.
14518         (convert_optab_table): Likewise.
14519         (init_optabs): Always call init_insn_codes if
14520         HAVE_DESIGNATED_INITIALIZERS is not defined.
14521
14522 2009-06-09  Ian Lance Taylor  <iant@google.com>
14523
14524         * targhooks.c (default_builtin_vectorized_function): Change fn
14525         parameter to unsigned int.
14526         (default_builtin_vectorized_conversion): Change code parameter to
14527         unsigned int.
14528         (default_builtin_reciprocal): Change fn parameter to unsigned int.
14529         * targhooks.h: Update declarations.
14530         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
14531         parameter to unsigned int.
14532
14533         * c-typeck.c (comptypes_check_enum_int): New static function.
14534         (comptypes_internal): Add enum_and_int_p parameter.  Change all
14535         callers.
14536         (comp_target_types): Add location parameter.  Change all callers.
14537         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
14538         Change all callers.
14539         (function_types_compatible_p, type_lists_compatible_p): Likewise.
14540         (build_conditional_expr): Add colon_loc parameter.  Change all
14541         callers.
14542         (convert_for_assignment): Add location parameter.  Change all callers.
14543         * c-parser.c (c_parser_conditional_expression): Pass location of
14544         colon to build_conditional_expr.
14545         * c-tree.h (build_conditional_expr): Update declaration.
14546
14547 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
14548
14549         * graphite.c: Revert previous patch.
14550
14551 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
14552
14553         PR bootstrap/40103
14554         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
14555
14556 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
14557
14558         * tree-ssa-loop-prefetch.c
14559         (loop_prefetch_arrays): Fixed a portability problem in printf format
14560         string.
14561
14562 2009-06-09  Martin Jambor  <mjambor@suse.cz>
14563
14564         PR tree-optimization/40351
14565         * tree-sra.c (propagate_subacesses_accross_link): Check that a
14566         refrence to a potential artifical subaccess can be constructed.
14567
14568 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
14569
14570         * config/sh/sh-protos.h (sh_optimization_options): Declare.
14571         (sh_override_options): Likewise.
14572         * config/sh/sh.c: Include params.h.
14573         (sh_optimization_options): New.
14574         (sh_override_options): Likewise.
14575         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
14576         (OVERRIDE_OPTIONS): Use sh_override_options.
14577
14578 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
14579
14580         * dwarf2out.c (emit_cfa_remember): New variable.
14581         (add_fde_cfi): If emit_cfa_remember, recurse to add
14582         DW_CFA_remember_state first.
14583         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
14584         instead just set emit_cfa_remember.
14585
14586 2009-06-08  Jan Hubicka  <jh@suse.cz>
14587
14588         PR debug/40126
14589         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
14590
14591 2009-06-08  Jan Hubicka  <jh@suse.cz>
14592
14593         PR middle-end/39834
14594         * cgraphunit.c (save_inline_function_body): Do not copy transform
14595         hooks for saved inline bodies.
14596         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
14597         for given function.
14598
14599 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
14600
14601         * jump.c (returnjump_p): Handle delayed branches.  Add missing
14602         function comment.
14603
14604 2009-06-08  Jan Hubicka  <jh@suse.cz>
14605
14606         PR middle-end/40102
14607         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
14608         original node might've been modified.
14609         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
14610
14611 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
14612
14613         * tree-object-size.c (addr_object_size): Add OSI argument.
14614         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
14615         (compute_builtin_object_size, expr_object_size): Adjust callers.
14616         (plus_stmt_object_size): Call addr_object_size instead of
14617         compute_builtin_object_size.
14618
14619 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
14620             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
14621
14622         * tree-ssa-loop-prefetch.c
14623         (gather_memory_references): Introduced a counter for the number of
14624         memory references.
14625         (anything_to_prefetch_p): Introduced a counter for the number of
14626         prefetches.
14627         (is_loop_prefetching_profitable): New function with a cost model
14628         for prefetching.
14629         (loop_prefetch_arrays): Use the new cost model to determine if
14630         prefetching is profitable.
14631         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
14632         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
14633         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
14634         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
14635         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
14636         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
14637
14638 2009-06-08  Michael Matz  <matz@suse.de>
14639
14640         PR debug/40012
14641         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
14642         partitions use the same.
14643         (expand_one_var): Deal with DECL_RTL sometimes begin set also
14644         for basevars of SSA_NAMEs.
14645         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
14646         to not expand them twice.
14647         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
14648         multiple places.
14649
14650 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
14651
14652         * common.opt (fcompare-debug=, fcompare-debug-second): New.
14653         (fdump-final-insns=, gtoggle): New.
14654         * doc/invoke.texi: Document them.
14655         * final.c (rest_of_clean_state): Dump final insn stream.
14656         * gcc.c (invoke_as): Hook in -fcompare-debug.
14657         (static_spec_functions): Add compare-debug-dump-opt,
14658         compare-debug-self-opt and compare-debug-auxbase-opt.
14659         (compare_debug, compare_debug_second, compare_debug_opt): New.
14660         (switches_debug_check, n_switches_debug_check): New.
14661         (debug_auxbase_opt, debug_check_temp_file): New.
14662         (process_command): Handle -fno-compare-debug, -fcompare-debug and
14663         -fcompare-debug=*.
14664         (do_self_spec): Handle arguments after switches.
14665         (do_spec_1): Add .gk extension to temp file basenames for compare.
14666         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
14667         (cc1_options): Use it instead of normal auxbase computation for
14668         the second compare-debug compilation.
14669         (compare_files): New.
14670         (main): Set up and implement compare debug mode.
14671         (compare_debug_dump_opt_spec_function): New.
14672         (compare_debug_self_opt_spec_function): New.
14673         (compare_debug_auxbase_opt_spec_function): New.
14674         * toplev.c (process_options): Handle flag_gtoggle,
14675         flag_dump_final_insns.
14676         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
14677         during -fcompare-debug-second compilation.
14678
14679 2009-06-07  Ian Lance Taylor  <iant@google.com>
14680
14681         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
14682         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
14683
14684         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
14685         with no default node.  Change warning with %H to warning_at.
14686         Don't clear warn_switch around case checking.
14687         * doc/invoke.texi (Warning Options): Clarify distinction between
14688         -Wswitch and -Wswitch-enum.
14689
14690 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14691
14692         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
14693
14694 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14695
14696         * gbl-ctors.h: Add header guard.
14697
14698 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14699
14700         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
14701         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
14702         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
14703         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
14704         prototypes for removed functions.
14705         (expressions_equal_p): Move to ...
14706         * tree-ssa-sccvn.h: ... here and ...
14707         * matrix-reorg.c: ... adjust includes.
14708
14709 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14710
14711         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
14712
14713 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14714
14715         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
14716         (finish_function): Remove erroneous whitespace.
14717
14718 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14719
14720         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
14721         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
14722
14723 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14724
14725         * errors.c (internal_error): Commentary typo fix.
14726         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
14727         * tree-ssa-pre.c: Ditto.
14728
14729 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14730
14731         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
14732         them is supposed to hold actual statements.
14733
14734 2009-06-06  Ian Lance Taylor  <iant@google.com>
14735
14736         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
14737         empty statements can now have attributes.
14738
14739 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
14740
14741         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
14742         * config/mips/mips.md: Ditto.
14743
14744 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
14745
14746         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
14747         _RELOCATABLE.
14748         (__eabi_uconvert): Likewise.
14749
14750 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
14751
14752         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
14753         CFI_* definitions with IN_GCC.
14754
14755 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
14756
14757         * xcoffout.h (xcoffout_source_line): Update prototype.
14758
14759 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14760
14761         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
14762         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
14763
14764 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
14765
14766         PR middle-end/40340
14767         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
14768         inlined_function_outer_scope_p blocks for artificial inlines
14769         even at -g0/-g1.
14770         * tree.c (tree_nonartificial_location): Rewrite using
14771         block_nonartificial_location.
14772
14773 2009-06-05  Revital Eres  <eres@il.ibm.com>
14774             Leehod Baruch  <leehod@il.ibm.com>
14775
14776         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
14777         (expand_expr_real_1): Remove comment.
14778         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
14779         Vectorize misaligned access when the target supports it.
14780         (vect_supportable_dr_alignment): Check for unaligned access support.
14781         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
14782         and remove asset.
14783
14784 2009-06-05  Julian Brown  <julian@codesourcery.com>
14785
14786         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
14787         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
14788
14789 2009-06-05  Richard Guenther  <rguenther@suse.de>
14790
14791         PR bootstrap/40350
14792         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
14793         as possibly unused.
14794
14795 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
14796
14797         * config/s390/s390.c (global_not_special_regno_p): New static inline.
14798         (save_gprs): Don't tell unwinder when a global register is saved.
14799         (s390_emit_epilogue): Emit needed epilogue unwind info.
14800
14801 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
14802
14803         * dwarf2out.c (deferred_asm_name): New.
14804         (add_name_and_src_coords_attributes): Defer creation of
14805         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
14806         computed yet.
14807         (move_linkage_attr): New.
14808         (dwarf2out_finish): Revisit deferrals and emit attributes at the
14809         right place.
14810
14811 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
14812
14813         * tree-nested.c (finalize_nesting_tree_1): Declare the
14814         frame_decl in the binding tree.
14815
14816 2009-06-04  Cary Coutant  <ccoutant@google.com>
14817
14818         * basic-block.h (struct basic_block_def): Add discriminator field.
14819         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
14820         callers.
14821         * debug.c (do_nothing_debug_hooks): Add additional entry.
14822         (debug_nothing_int_charstar_int): New function.
14823         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
14824         (debug_nothing_int_charstar_int): New declaration.
14825         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
14826         discriminator value in .loc directive.
14827         * final.c (last_discriminator): New variable.
14828         (discriminator): New variable.
14829         (final_start_function): Initialize above variables, pass current
14830         discriminator to debug hook.
14831         (notice_source_line): Check for discriminator change.
14832         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
14833         * sdbout.c (sdbout_source_line): New parameter.
14834         * tree-cfg.c (struct locus_discrim_map): New structure type.
14835         (discriminator_per_locus): New hash table.
14836         (build_gimple_cfg): Allocate and free discriminator hash table.
14837         (make_edges): Call assign_discriminator.
14838         (locus_map_hash): New function.
14839         (locus_map_eq): New function.
14840         (next_discriminator_for_locus): New function.
14841         (same_line_p): New function.
14842         (assign_discriminator): New function.
14843         (make_cond_expr_edges): Call assign_discriminator.
14844         (make_gimple_switch_edges): Likewise.
14845         (first_non_label_stmt): New function.
14846         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
14847         all callers.
14848         * xcoffout.c (xcoffout_source_line): Add new parameter.
14849
14850         * configure.ac (gcc_cv_as_discriminator): New configury check for
14851         gas support for discriminator.
14852         * configure: Regenerate.
14853         * config.in: Regenerate.
14854
14855 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
14856
14857         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
14858         val after checking for integers.
14859
14860 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
14861
14862         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
14863         X64_REGPARM_MAX.
14864         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
14865         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
14866         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
14867         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
14868         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
14869         X64_SSE_REGPARM_MAX.
14870         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
14871         X64_SSE_REGPARM_MAX.
14872
14873 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
14874
14875         * gcc.c (report_times_to_file): New.
14876         (execute): Implement it.
14877         (process_command): Support -time=.
14878         * doc/invoke.texi: Document it.
14879
14880 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
14881
14882         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
14883         that have value exprs.
14884
14885 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
14886
14887         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
14888         declarations for constants until...
14889         (dw2_output_indirect_constant_1): ... this point.
14890
14891 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
14892
14893         PR target/10242
14894         * arm.md (arm_addsi3): Don't try to split an add with an
14895         eliminable register until after reload has completed.
14896
14897 2009-06-03  Ian Lance Taylor  <iant@google.com>
14898
14899         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
14900         * genattrtab.c (write_length_unit_log): Likewise.
14901         * genchecksum.c (dosum): Likewise.
14902         * gengtype.c (write_rtx_next): Likewise.
14903         (finish_root_table, write_roots): Likewise.
14904         * gimple.c (gimple_ops_offset_): Likewise.
14905         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
14906         * config/arc/arc.c (arc_attribute_table): Likewise.
14907         * config/arm/arm.c (arm_attribute_table): Likewise.
14908         * config/avr/avr.c (avr_attribute_table): Likewise.
14909         * config/crx/crx.c (crx_attribute_table): Likewise.
14910         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
14911         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
14912         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
14913         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
14914         * config/sh/sh.c (sh_attribute_table): Likewise.
14915         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
14916         * config/spu/spu.c (spu_attribute_table): Likewise.
14917         * config/v850/v850.c (v850_attribute_table): Likewise.
14918
14919         * config/alpha/alpha.c (vms_attribute_table): Make static.
14920         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
14921         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
14922         * config/mips/mips.c (mips_attribute_table): Likewise.
14923
14924         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
14925         $(SYSTEM_H).
14926         (cc1-checksum.o): Likewise.
14927
14928 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
14929
14930         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
14931
14932 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
14933
14934         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
14935         insn if it is changing sp.  Use gen_add3_insn instead of
14936         conditionally gen_addsi3 and gen_adddi3.
14937         (offset_below_red_zone_p): New static inline function.
14938         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
14939         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
14940         * config/rs6000/ppc-asm.h: Include auto-host.h.
14941         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
14942         CFI_RESTORE): Define.
14943         * config/rs6000/crtresxgpr.asm: Add unwind info.
14944         * config/rs6000/crtresxfpr.asm: Likewise.
14945         * config/rs6000/crtresgpr.asm: Likewise.
14946         * config/rs6000/crtresfpr.asm: Likewise.
14947         * config/rs6000/crtsavgpr.asm: Likewise.
14948         * config/rs6000/crtsavfpr.asm: Likewise.
14949
14950         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
14951         argument of DWARF2_FRAME_REG_OUT macros.
14952
14953 2009-06-03  Julian Brown  <julian@codesourcery.com>
14954
14955         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
14956         words or less (including TImode) in core registers.
14957
14958 2009-06-03  Richard Guenther  <rguenther@suse.de>
14959
14960         PR middle-end/40328
14961         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
14962
14963 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
14964
14965         * statistics.c (statistics_counter_event): Do not record event
14966         in pass dump if its number == -1.
14967         (curr_statistics_hash): Add assert that we never get passes
14968         with static number == -1.
14969
14970 2009-06-03  Richard Guenther  <rguenther@suse.de>
14971             Andrey Belevantsev  <abel@ispras.ru>
14972
14973         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
14974         non-BLKmode arrays addressable.
14975
14976 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
14977
14978         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
14979         * config/m68k/m68k.h: ... here.
14980
14981 2009-06-03  Martin Jambor  <mjambor@suse.cz>
14982
14983         PR tree-optimization/40323
14984         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
14985         assignment.
14986
14987 2009-06-03  Richard Guenther  <rguenther@suse.de>
14988
14989         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
14990         consistently.
14991
14992 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
14993
14994         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
14995         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
14996         JUMP_TABLE_DATA_P where applicable.
14997         * config/sh/sh.c: Ditto.
14998         * config/sh/sh.h: Ditto.
14999         * config/sh/sh.md: Ditto.
15000         * config/sh/symbian.c: Ditto.
15001
15002 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
15003
15004         * config/i386/driver-i386.c (describe_cache): Optimize
15005         concatenation of strings.  Use snprintf instead of sprintf.
15006         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
15007         target when not compiling with GCC.
15008
15009 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
15010
15011         * config/sh/sh.c: Revert last change.
15012         (sh_expand_epilogue): Emit a blockage insn before the frame
15013         pointer adjustment unconditionally.
15014
15015 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
15016
15017         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
15018         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
15019         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
15020         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
15021         to COLLECT_GCC_OPTIONS.
15022
15023 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
15024
15025         * collect2.c (target_system_root): New variable.
15026         (main): Handle --sysroot=.
15027         (ignore_library): Strip the sysroot from the library path.
15028
15029 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
15030
15031         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
15032         (collect2.o): Depend on collect2-aix.h.
15033         (collect2-aix.o): New rule.
15034         * collect2-aix.h: New file.
15035         * collect2-aix.c: Likewise.
15036         * collect2.c: Include collect2-aix.h.  Don't undefine
15037         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
15038         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
15039         Use TARGET_AIX_VERSION instead of _AIX51.
15040         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
15041         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
15042         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
15043         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
15044         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
15045
15046 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
15047
15048         * collect2.c (ignore_library): Avoid premature post-increment
15049         and null deference.
15050
15051 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
15052
15053         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
15054         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
15055         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
15056         CROSS_DIRECTORY_STRUCTURE too.
15057         (LINK_LIBG_SPEC): Likewise.
15058         (LIB_SPEC): Add %R to sysroot paths.
15059         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
15060         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
15061         * config/rs6000/aix51.h: As for aix43.h.
15062         * config/rs6000/aix52.h: Likewise.
15063         * config/rs6000/aix53.h: Likewise.
15064         * config/rs6000/aix61.h: Likewise.
15065         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
15066         to the beginning of sysroot paths.
15067
15068 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15069
15070         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
15071         INSN_LISTs that are out of the REG_NOTE range.
15072
15073 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15074
15075         * loop-unroll.c (struct iv_to_split): Add pointer to next.
15076         (struct var_to_expand): Likewise.
15077         (struct opt_info): Add head and tail for linked lists of the above.
15078         (analyze_insn_to_expand_var): Initialize next.
15079         (analyze_iv_to_split_insn): Likewise.
15080         (analyze_insns_in_loop): Create linked lists.
15081         (allocate_basic_variable): Simplify for use without hash table.
15082         (insert_var_expansion_initialization): Likewise, make it type-safer.
15083         (combine_var_copies_in_loop_exit): Likewise.
15084         (apply_opt_in_copies): Walk lists rather than hash tables.
15085         (release_var_copies): Simplified and inlined by hand into...
15086         (free_opt_info): ... this function.
15087
15088 2009-06-02  Richard Guenther  <rguenther@suse.de>
15089
15090         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
15091         for field decls.
15092
15093 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15094
15095         * cfgexpand.c (gimple_expand_cfg): Discard the source location
15096         only for builtins that are not overridden.
15097
15098 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15099
15100         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
15101         label string.
15102
15103 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15104
15105         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
15106
15107 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15108
15109         * combine.c (move_deaths): Compare LUIDs within the same BB only.
15110
15111 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
15112
15113         * common.opt (fdump-unnumbered-links): New.
15114         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
15115         * print-rtl.c (flag_dump_unnumbered_links): New.
15116         (print_rtx): Test it.
15117
15118 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
15119
15120         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
15121         push/pop multiple to 8-byte alignment.
15122
15123 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
15124
15125         * config/i386/i386.c (queued_cfa_restores): New static variable.
15126         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
15127         functions.
15128         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
15129         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
15130         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
15131         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
15132         note unconditionally.
15133         (ix86_emit_restore_regs_using_mov): Likewise.
15134         (ix86_emit_restore_sse_regs_using_mov): Likewise.
15135         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
15136         it through to ix86_emit_restore_reg_using_pop.
15137         (ix86_emit_leave): Add RED_OFFSET argument.  Call
15138         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
15139         instead of adding REG_CFA_OFFSET note unconditionally.
15140         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
15141         the above functions.  Call ix86_add_queued_cfa_restore_notes when
15142         needed.
15143
15144         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
15145         force output of the label even for dwarf2out_do_cfi_asm.
15146         (add_fde_cfi): If -g2 and above and cfi might change CFA,
15147         force creation of CFI label and chain DW_CFA_set_loc jumping to it
15148         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
15149         caller.
15150         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
15151         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
15152         dwarf2out_cfi_label callers.
15153         * tree.h (dwarf2out_cfi_label): Adjust prototype.
15154         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
15155         Adjust dwarf2out_cfi_label callers.
15156         * config/vax/vax.c (vax_output_function_prologue): Likewise.
15157
15158         * config/i386/i386.h (struct machine_cfa_state,
15159         struct machine_function): Guard with ifndef USED_FOR_TARGET
15160         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
15161
15162         PR other/40024
15163         * emutls.c (__emutls_get_address): Change arr->size to mean number
15164         of allocated arr->data entries instead of # of slots + 1.
15165
15166         PR middle-end/40316
15167         * recog.c (peep2_reinit_state): New function.
15168         (peephole2_init_state): Use it at the end of a basic block and also
15169         when seeing a RTX_FRAME_RELATED_P insn.
15170
15171 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
15172
15173         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
15174         fixuns_truncrfdi2): New.
15175         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
15176         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
15177         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
15178         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
15179         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
15180         *recip_approx): Remove.
15181         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
15182         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
15183         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
15184         move to div.md.
15185         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
15186         setf_exp_rf): New.
15187
15188 2009-06-01  Ian Lance Taylor  <iant@google.com>
15189
15190         * attribs.c (register_attribute): Use CONST_CAST.
15191         * collect2.c (main): Use CONST_CAST2.
15192         (scan_prog_file): Likewise.
15193         * gcc.c (process_command, main): Likewise.
15194         * toplev.c (toplev_main): Likewise.
15195
15196         * c-typeck.c (handle_warn_cast_qual): New static function,
15197         partially broken out of build_c_cast.
15198         (build_c_cast): Call handle_warn_cast_qual.
15199         * doc/invoke.texi (Warning Options): Document new effect of
15200         -Wcast-qual.
15201
15202 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
15203
15204         * diagnostic.c (diagnostic_build_prefix): Always print columns.
15205         (diagnostic_report_current_module): Print columns.
15206         * common.opt (flag_show_column): Enable by default.
15207
15208 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
15209
15210         * alias.c (find_base_term): Check for NULL term before returning.
15211
15212 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
15213
15214         Revert due to PR40320:
15215         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
15216         * calls.c (emit_library_call_value_1): Don't force_operand for move
15217         and push insns.
15218
15219 2009-06-01  Olivier Hainque  <hainque@adacore.com>
15220             Eric Botcazou  <ebotcazou@adacore.com>
15221
15222         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
15223         to be processed as a bitfield for constructor output purposes.
15224         * output.h (initializer_constant_valid_for_bitfield_p): Declare
15225         new function.
15226         * varasm.c (oc_local_state): New type, output_constructor
15227         local state to support communication with helpers.
15228         (oc_outer_state): New type, output_constructor outer state of
15229         relevance in recursive calls.
15230         (output_constructor_array_range): New output_constructor helper,
15231         extracted code for an array range element.
15232         (output_constructor_regular_field): New output_constructor helper,
15233         extracted code for an element that is not a bitfield.
15234         (output_constructor_bitfield): New output_constructor helper,
15235         extracted code for a bitfield element.  Accept an OUTER state
15236         argument for recursive processing.  Recurse on record or array
15237         CONSTRUCTOR values, possibly past noop conversions.
15238         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
15239         VALUE is a valid constant-valued expression for use in a static
15240         bit-field initializer.
15241         (output_constructor): Rework to use helpers.  Accept and honor an
15242         OUTER state argument for recursive calls.  Return total size.  Be
15243         prepared for nested constructors initializing bitfields.
15244         (output_constant): Feed OUTER in calls to output_constructor.
15245
15246 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
15247
15248         * calls.c (emit_library_call_value_1): Don't force_operand for move
15249         and push insns.
15250
15251 2009-06-01  Nick Clifton  <nickc@redhat.com>
15252
15253         * doc/invoke.texi (IA-64 Options): Fix typo.
15254
15255 2009-06-01  Ira Rosen  <irar@il.ibm.com>
15256
15257         PR tree-optimization/39129
15258         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
15259         printed message.
15260         (vect_do_peeling_for_loop_bound): Use
15261         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
15262         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
15263         (vect_loop_versioning): Likewise.
15264         (vect_create_cond_for_alias_checks): Fix indentation.
15265         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
15266         macros.
15267         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
15268         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
15269         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
15270         "control flow in loop".
15271         (vect_estimate_min_profitable_iters): Use
15272         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
15273         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
15274         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
15275         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
15276         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
15277         statement belongs to a group of strided accesses with the exact code
15278         check.
15279         (vectorizable_load): Likewise.
15280         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
15281         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
15282
15283 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
15284
15285         * config/freebsd-stdint.h: New file.
15286         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
15287         Add freebsd-stdint.h to tm_file.
15288
15289 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
15290
15291         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
15292         (thumb2_extendhidi2): Likewise.
15293
15294 2009-05-31  Ian Lance Taylor  <iant@google.com>
15295
15296         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
15297
15298 2009-05-31  Ian Lance Taylor  <iant@google.com>
15299
15300         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
15301         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
15302         (ipa-reference.o): Depend upon gt-ipa-reference.h.
15303
15304 2009-05-31  Jason Merrill  <jason@redhat.com>
15305
15306         * tree-pretty-print.c (print_call_name): Take the callee, not the
15307         call itself.  Make non-static.  Use dump_function_name for functions.
15308         (dump_generic_node): Adjust.
15309         * diagnostic.h: Declare print_call_name.
15310         * gimple-pretty-print.c (dump_gimple_call): Use it.
15311
15312 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
15313
15314         * config/sh/sh.md (ashldi3_std): New define_expand.
15315         (ashldi3): Use it.
15316
15317 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
15318
15319         PR target/40313
15320         * config/sh/sh.c: Include debug.h.
15321         (sh_expand_epilogue): Emit a blockage insn before the frame
15322         pointer adjustment also when dwarf2out_do_frame returns true.
15323
15324 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
15325
15326         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
15327         (thumb2_extendqidi2): New pattern.
15328
15329 2009-05-31  Ira Rosen  <irar@il.ibm.com>
15330
15331         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
15332         mark phis for renaming.
15333         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
15334         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
15335         Call mark_sym_for_renaming.
15336         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
15337         * tree-vect-loop.c (vect_transform_loop): Remove
15338         vect_memsyms_to_rename initialization and a call to
15339         mark_set_for_renaming.
15340
15341 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
15342
15343         PR middle-end/40304
15344         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
15345         frame related even if !set_cfa && style < 0.
15346
15347 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
15348
15349         * config/i386/mingw-tls.c: New file.
15350         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
15351         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
15352         defining _WIN32 but not __CYGWIN__.
15353
15354 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15355
15356         * configure.ac: Add MPC support.
15357
15358         * config.in, configure: Regenerate.
15359
15360 2009-05-29  Richard Henderson  <rth@redhat.com>
15361
15362         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
15363         NOTE_INSN_BASIC_BLOCK.
15364         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
15365         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
15366         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
15367         to be deleted.
15368         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
15369         add in_use field.
15370         (add_cfi): Disable check redefining cfa away from drap.
15371         (lookup_cfa_1): Add remember argument; handle remember/restore.
15372         (lookup_cfa): Pass remember argument.
15373         (cfa_remember): New.
15374         (compute_barrier_args_size_1): Remove sibcall check.
15375         (dwarf2out_frame_debug_def_cfa): New.
15376         (dwarf2out_frame_debug_adjust_cfa): New.
15377         (dwarf2out_frame_debug_cfa_offset): New.
15378         (dwarf2out_frame_debug_cfa_register): New.
15379         (dwarf2out_frame_debug_cfa_restore): New.
15380         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
15381         (dwarf2out_begin_epilogue): New.
15382         (dwarf2out_frame_debug_restore_state): New.
15383         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
15384         DW_CFA_restore_state.
15385         (output_cfi_directive): Likewise.
15386         (convert_cfa_to_fb_loc_list): Likewise.
15387         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
15388         * dwarf2out.h: Update.
15389         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
15390         (copy_insn_1): Early out for null.
15391         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
15392         and dwarf2out_frame_debug_restore_state.
15393         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
15394         (prologue_insn_hash, epilogue_insn_hash): New.
15395         (free_after_compilation): Adjust freeing accordingly.
15396         (record_insns): Create hash table if needed; push insns into
15397         hash instead of array.
15398         (maybe_copy_epilogue_insn): New.
15399         (contains): Search hash table instead of array.
15400         (sibcall_epilogue_contains): Remove.
15401         (thread_prologue_and_epilogue_insns): Split eh_return insns
15402         and mark them as epilogues.
15403         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
15404         scanning in terms of basic blocks.
15405         * insn-notes.def (CFA_RESTORE_STATE): New.
15406         * jump.c (returnjump_p_1): Accept EH_RETURN.
15407         (eh_returnjump_p_1, eh_returnjump_p): New.
15408         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
15409         CFA_REGISTER, CFA_RESTORE): New.
15410         * rtl.def (EH_RETURN): New.
15411         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
15412
15413         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
15414         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
15415
15416         * config/i386/i386.c (gen_push): Update cfa state.
15417         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
15418         add a CFA_ADJUST_CFA note.
15419         (ix86_dwarf_handle_frame_unspec): Remove.
15420         (ix86_expand_prologue): Update cfa state.
15421         (ix86_emit_restore_reg_using_pop): New.
15422         (ix86_emit_restore_regs_using_pop): New.
15423         (ix86_emit_leave): New.
15424         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
15425         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
15426         * config/i386/i386.h (struct machine_cfa_state): New.
15427         (ix86_cfa_state): New.
15428         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
15429         (eh_return_internal): Merge from eh_return_<mode>,
15430         use eh_return rtx, split w/ epilogue.
15431
15432 2009-05-29  Ian Lance Taylor  <iant@google.com>
15433
15434         * builtins.c (validate_gimple_arglist): Don't use va_arg with
15435         enum type.
15436         * calls.c (emit_library_call_value_1): Likewise.
15437
15438         * c-typeck.c (c_build_va_arg): New function.
15439         * c-tree.h (c_build_va_arg): Declare.
15440         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
15441         instead of build_va_arg.
15442
15443 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
15444
15445         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
15446         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
15447         (ptr_difference_cost): Use affine combinations to compute it.
15448         (difference_cost): Likewise.
15449         (get_computation_cost_at): Compute more accurate cost for addresses
15450         if the ratio is a multiplier allowed in addresses.
15451         For non-addresses, consider that an additional offset or symbol is
15452         added only once.
15453
15454 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
15455
15456         * config/i386/i386.c (ix86_decompose_address): Avoid useless
15457         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
15458
15459         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
15460         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
15461         (prefix_rex): For UNIT_MMX don't imply the prefix by default
15462         if MODE_DI.
15463         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
15464         to 1 for TYPE_SSE{IADD1,CVT1}.
15465         (prefix_vex_imm8): Removed.
15466         (length_vex): Only pass 1 as second argument to
15467         ix86_attr_length_vex_default if prefix_extra is 0.
15468         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
15469         (length): For prefix vex computation use length_immediate
15470         attribute instead of prefix_vex_imm8.
15471         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
15472         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
15473         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
15474         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
15475         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
15476         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
15477         a space in between the operands.
15478         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
15479         if one operand is 0xff and the other one si, di, bp or sp.
15480         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
15481         other one si, di, bp or sp.
15482         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
15483         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
15484         type and mode attributes.
15485         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
15486         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
15487         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
15488         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
15489         prefix_data16 attribute iff MODE_DF.
15490         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
15491         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
15492         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
15493         constm128_operand in length_immediate computation.
15494         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
15495         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
15496         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
15497         length_immediate attribute to 1.
15498         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
15499         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
15500         for certain alternatives.
15501         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
15502         prefix_data16 attribute if MODE_V1DF.
15503         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
15504         length_immediate to 1.
15505         (set_got_rex64, set_rip_rex64): Remove length attribute, set
15506         length_address to 4, set mode attribute to MODE_DI.
15507         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
15508         (fxam<mode>2_i387): Set length attribute to 4.
15509         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
15510         *prefetch_3dnow_rex): Override length_address attribute.
15511         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
15512         attributes.
15513         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
15514         (constm128_operand): Removed.
15515         * config/i386/i386.c (memory_address_length): For
15516         disp && !index && !base in 64-bit mode account for SIB byte if
15517         print_operand_address can't optimize disp32 into disp32(%rip)
15518         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
15519         for fs: or gs: segment.
15520         (ix86_attr_length_immediate_default): When checking if shortform
15521         is possible, truncate immediate to the length of the non-shortened
15522         immediate.
15523         (ix86_attr_length_address_default): Ignore MEM_P operands
15524         with X constraint.
15525         (ix86_attr_length_vex_default): Only check for DImode on
15526         GENERAL_REG_P operands.
15527         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
15528         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
15529         (sse_cvttps2pi): Clear prefix_rep attribute.
15530         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
15531         attribute.
15532         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
15533         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
15534         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
15535         iff operand 2 is const_int_operand.
15536         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
15537         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
15538         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
15539         instead of vex.
15540         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
15541         prefix_data16.
15542         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
15543         prefix_data16 attribute for movlpd and movhpd instructions.
15544         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
15545         length_immediate for shufpd instruction.
15546         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
15547         (avx_cmpp<avxmodesuffixf2c><mode>3,
15548         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
15549         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
15550         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
15551         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
15552         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
15553         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
15554         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
15555         prefix_data16 attribute for the first alternative to 1.
15556         (*avx_loadlps): Override length_immediate for the first alternative.
15557         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
15558         attributes for second alternative.
15559         (*vec_concatv2sf_sse4_1): Override length_immediate and
15560         prefix_data16 attributes for second alternative.
15561         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
15562         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
15563         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
15564         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
15565         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
15566         prefix_data16 and length_immediate to 1.
15567         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
15568         to 1.
15569         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
15570         prefix_extra attribute for variants that don't have 0f prefix alone.
15571         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
15572         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
15573         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
15574         *sse4_1_pextrd): Set length_immediate to 1.
15575         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
15576         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
15577         to 1.
15578         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
15579         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
15580         length_immediate to 1 for second alternative.
15581         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
15582         prefix_extra and length_immediate attributes for the first
15583         alternative.
15584         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
15585         first alternative.
15586         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
15587         to 1 for the first and third alternative.
15588         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
15589         alternative.
15590         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
15591         attribute.
15592         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
15593         attribute to 0.
15594         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
15595         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
15596         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
15597         *avx_psign<mode>3): Set prefix_extra attribute to 1.
15598         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
15599         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
15600         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
15601         ssse3_psign<mode>3): Override prefix_rex attribute.
15602         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
15603         (ssse3_palignrti): Override length_immediate to 1.
15604         (ssse3_palignrdi): Override length_immediate to 1, override
15605         prefix_rex attribute.
15606         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
15607         (sse4a_extrqi): Override length_immediate to 2.
15608         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
15609         (sse4a_insertq): Override prefix_data16 to 0.
15610         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
15611         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
15612         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
15613         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
15614         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
15615         and length_immediate to 1.
15616         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
15617         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
15618         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
15619         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
15620         and length_immediate to 1.
15621         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
15622         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
15623         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
15624         avx_ptest256): Override prefix_extra to 1.
15625         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
15626         Override prefix_data16 and length_immediate to 1.
15627         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
15628         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
15629         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
15630         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
15631         prefix_data16 to 0 and prefix_extra to 2.
15632         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
15633         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
15634         attribute.
15635         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
15636         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
15637         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
15638         and prefix_extra to 2.
15639         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
15640         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
15641         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
15642         avx_vpermilvar<mode>3,
15643         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
15644         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
15645         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
15646         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
15647         Override prefix_extra to 1.
15648         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
15649         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
15650         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
15651         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
15652         prefix_extra and length_immediate to 1.
15653         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
15654         modrm to 0.
15655         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
15656         to 1 for the first alternative.
15657         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
15658         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
15659         cases.
15660         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
15661         *movv2sf_internal_avx, *movv2sf_internal): Override
15662         prefix_rep attribute for certain alternatives.
15663         (*mov<mode>_internal): Override prefix_rep or prefix_data16
15664         attributes for certain alternatives.
15665         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
15666         attributes for certain alternatives.
15667         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
15668         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
15669         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
15670         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
15671         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
15672         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
15673         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
15674         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
15675         length_immediate to 1 if operand 2 is const_int_operand.
15676         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
15677         *vec_extractv2si_1): Set length_immediate attribute to 1.
15678         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
15679         using old 3DNOW insn rather than SSE/3DNOW_A.
15680         (mmx_emms, mmx_femms): Clear modrm attribute.
15681
15682 2009-05-29  Martin Jambor  <mjambor@suse.cz>
15683
15684         * tree-sra.c:  New implementation of SRA.
15685
15686         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
15687         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
15688         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
15689         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
15690         (SRA_MAX_STRUCTURE_COUNT): Removed.
15691         (SRA_FIELD_STRUCTURE_RATIO): Removed.
15692         * doc/invoke.texi (sra-max-structure-size): Removed.
15693         (sra-field-structure-ratio): Removed.
15694
15695 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
15696
15697         PR middle-end/40291
15698         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
15699         before expansion.
15700
15701 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
15702
15703         PR rtl-optimization/40101
15704         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
15705         seqno.  Adjust comment.
15706         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
15707         inserting bookkeeping before a jump, the jump is not scheduled.
15708         When no positive seqno found, provide a value.  Add comment.
15709
15710 2009-05-29  Richard Guenther  <rguenther@suse.de>
15711
15712         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
15713         short-cutting on the first component.
15714
15715 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
15716
15717         PR middle-end/39958
15718         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
15719         for trees other than decls/types.
15720
15721 2009-05-29  Richard Guenther  <rguenther@suse.de>
15722
15723         * tree-ssa-operands.c (get_expr_operands): Do not handle
15724         INDIRECT_REFs in the handled-component case.  Remove
15725         unused get_ref_base_and_extent case.
15726         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
15727         tree_low_cst and host_integerp where possible.
15728         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
15729         codes for equivalence.
15730         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
15731
15732 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
15733
15734         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
15735         to tmake_file for i[34567]86-*-cygwin*.
15736
15737 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
15738
15739         PR target/40017
15740         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
15741         (altivec_categorize_keyword, init_vector_keywords,
15742         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
15743         similar to bool.
15744
15745 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
15746
15747         * tree.c (handle_dll_attribute): Check if node is
15748         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
15749
15750 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
15751
15752         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
15753         component.
15754         (thumb2_zero_extendqidi2): Likewise.
15755
15756 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
15757
15758         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
15759         instead of gen_movrt.
15760         * config/sh/sh.md (movrt): Remove.
15761
15762 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
15763
15764         * doc/invoke.texi (IA-64 Options):
15765         Add -msdata, -mfused-madd, -mno-inline-float-divide,
15766         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
15767         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
15768         -msched-prefer-non-control-spec-insns,
15769         -msched-stop-bits-after-every-cycle,
15770         -msched-count-spec-in-critical-path,
15771         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
15772         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
15773         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
15774         and -msched-spec-verbose.
15775
15776 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
15777
15778         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
15779         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
15780         error if used.
15781         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
15782
15783 2009-05-28  Richard Guenther  <rguenther@suse.de>
15784
15785         * tree-ssa-alias.c (ao_ref_init): New function.
15786         (ao_ref_base): Likewise.
15787         (ao_ref_base_alias_set): Likewise.
15788         (ao_ref_alias_set): Likewise.
15789         (refs_may_alias_p_1): Change signature.
15790         (refs_may_alias_p): Adjust.
15791         (refs_anti_dependent_p): Likewise.
15792         (refs_output_dependent_p): Likewise.
15793         (call_may_clobber_ref_p_1): Change signature.
15794         (call_may_clobber_ref_p): Adjust.
15795         (stmt_may_clobber_ref_p_1): New function split out from ...
15796         (stmt_may_clobber_ref_p): ... here.
15797         (maybe_skip_until): Adjust signature.
15798         (get_continuation_for_phi): Likewise.
15799         (walk_non_aliased_vuses): Likewise.
15800         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
15801         (ao_ref_init): Declare.
15802         (ao_ref_base): Likewise.
15803         (ao_ref_alias_set): Likewise.
15804         (stmt_may_clobber_ref_p_1): Likewise.
15805         (walk_non_aliased_vuses): Adjust.
15806         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
15807         (get_ref_from_reference_ops): remove.
15808         (vn_reference_lookup_2): Adjust signature.
15809         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
15810         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
15811         (vn_reference_lookup): Adjust.
15812         (vn_reference_insert): Likewise.
15813         (vn_reference_insert_pieces): Adjust signature.
15814         (visit_reference_op_call): Adjust.
15815         * tree-ssa-pre.c (get_expr_type): Simplify.
15816         (phi_translate_1): Adjust.
15817         (compute_avail): Likewise.
15818         (translate_vuse_through_block): Do not re-build trees.
15819         (value_dies_in_block_x): Likewise.
15820         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
15821         fields.
15822         (vn_reference_lookup_pieces): Adjust declaration.
15823         (vn_reference_insert_pieces): Likewise.
15824
15825 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
15826
15827         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
15828         with checking disabled.
15829
15830 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
15831
15832         PR target/37216
15833
15834         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
15835         macro definition for support of three-operand format aligned
15836         .comm directive in assembler on cygwin/pe/mingw target OS.
15837         * configure:  Regenerate.
15838         * config.h:  Regenerate.
15839
15840         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
15841         aligned form of .comm directive if -mpe-aligned-commons is in effect.
15842         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
15843
15844         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
15845         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
15846
15847 2009-05-28  Ira Rosen  <irar@il.ibm.com>
15848
15849         PR tree-optimization/40254
15850         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
15851         in analysis of basic blocks.
15852
15853 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
15854
15855         PR middle-end/33699
15856         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
15857         * target-def.h (TARGET_CONST_ANCHOR): New macro.
15858         (TARGET_INITIALIZER): Use it.
15859         * cse.c (CHEAPER): Move it up to the other macros.
15860         (insert): Rename this ...
15861         (insert_with_costs): ... to this.  Add cost parameters.  Update
15862         function comment.
15863         (insert): New function.  Call insert_with_costs.
15864         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
15865         find_reg_offset_for_const, try_const_anchors): New functions.
15866         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
15867         when using a const-anchor.  Call insert_const_anchors.
15868         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
15869         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
15870
15871 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
15872
15873         * tree-inline.c (remap_decls): Enable nonlocalized variables
15874         when not optimizing.
15875
15876 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
15877
15878         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
15879         Simplify other tests involving optimize.
15880
15881 2009-05-27  Tom Tromey  <tromey@redhat.com>
15882
15883         * unwind-dw2.c (_Unwind_DebugHook): New function.
15884         (uw_install_context): Call _Unwind_DebugHook.
15885
15886 2009-05-27  Tom Tromey  <tromey@redhat.com>
15887
15888         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
15889
15890 2009-05-27  Ian Lance Taylor  <iant@google.com>
15891
15892         * Makefile.in (LINKER, LINKER_FLAGS): Define.
15893         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
15894         (ALL_LINKERFLAGS): Define.
15895         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
15896         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
15897         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
15898         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
15899         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
15900         $(LINKER_FOR_BUILD).
15901         (build/gcov-iov$(build_exeext)): Likewise.
15902
15903 2009-05-27  Julian Brown  <julian@codesourcery.com>
15904
15905         * gcse.c (target.h): Include.
15906         (can_assign_to_reg_without_clobbers_p): Check that the target allows
15907         copy of argument to a pseudo register.
15908
15909 2009-05-27  Diego Novillo  <dnovillo@google.com>
15910
15911         * tree-ssa-live.c (dump_scope_block): Document arguments.
15912         (dump_scope_blocks): Document.
15913         (debug_scope_blocks): New.
15914         * tree-flow.h (debug_scope_blocks): Declare.
15915
15916 2009-05-21  Denis Chertykov  <denisc@overta.ru>
15917
15918         * doc/contrib.texi (Contributors): Add myself to the list.
15919
15920 2009-05-27  Olivier Hainque  <hainque@adacore.com>
15921
15922         * expr.c (target_align): New function.  Alignment the TARGET of an
15923         assignment may be assume to have.
15924         (highest_pow2_factor_for_target): Use it instead of relying on
15925         immediate tree attributes of TARGET, not necessarily honored when
15926         intermediate bitfields are involved.
15927
15928 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
15929
15930         PR target/40266
15931         * config/i386/driver-i386.c (host_detect_local_cpu): Support
15932         AVX, SSE4, AES, PCLMUL and POPCNT.
15933
15934 2009-05-27  Diego Novillo  <dnovillo@google.com>
15935
15936         * tree-pretty-print.c (dump_location): New.
15937         (dump_generic_node): Call it.
15938         Factor code to handle BLOCK nodes ...
15939         (dump_block_node): ... here.
15940
15941 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
15942
15943         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
15944         with it.
15945         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
15946         included.
15947         * gcc-plugin.h: Include config.h and system.h.
15948         (IN_GCC): Define if not defined.
15949
15950 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
15951
15952         PR middle-end/40249
15953         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
15954         with -fno-inline.
15955
15956 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
15957
15958         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
15959         applicable.
15960         * config/m32r/m32r.h: Ditto.
15961         * config/m32r/m32r.md: Ditto.
15962         * config/m32r/predicates.md: Ditto.
15963
15964 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
15965
15966         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
15967
15968 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
15969
15970         * doc/plugins.texi
15971         (Loading plugins): typo.
15972         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
15973         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
15974         (Interacting with the GCC Garbage Collector): Added new section.
15975         (Giving information about a plugin): Added new section for
15976         PLUGIN_INFO.
15977         * ggc.h (ggc_register_root_tab): Added declaration.
15978         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
15979         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
15980         (register_callback): Improved comment in declaration.
15981         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
15982         (extra_root_vec) Added static variable for dynamic roots registration.
15983         (ggc_register_root_tab) Added new routine.
15984         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
15985         PLUGIN_GGC_MARKING event.
15986         * ggc-zone.c: Include plugin.h.
15987         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
15988         * ggc-page.c: Include plugin.h.
15989         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
15990         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
15991         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
15992         (register_callback): check lack of callbacks for
15993         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
15994         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
15995         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
15996         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
15997         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
15998         dependency on plugin.h.
15999         (plugin.o): Added dependency on ggc.h...
16000
16001 2009-05-26  Richard Guenther  <rguenther@suse.de>
16002
16003         PR middle-end/40248
16004         Revert
16005         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
16006         with mismatched comparison modes.
16007
16008         * expr.c (expand_expr_real_1): Expand the operand of a
16009         VIEW_CONVERT_EXPR in its natural mode.
16010
16011 2009-05-26  Ian Lance Taylor  <iant@google.com>
16012
16013         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
16014         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
16015         (ALL_COMPILERFLAGS): Define.
16016         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
16017         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
16018         (collect2$(exeext), collect2.o): Likewise.
16019         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
16020         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
16021         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
16022         (libbackend.o, intl.o, cppdefault.o): Likewise.
16023         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
16024         (build/%.o): Use $(COMPILER_FOR_BUILD).
16025         (build/gen%$(build_exeext)): Likewise.
16026         (build/gcov-iov$(build_exeext)): LIkewise.
16027         * config/t-darwin (darwin.o): Use $(COMPILER).
16028         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
16029         * config/t-sol2 (sol2-c.o): Likewise.
16030         (sol2.o): Likewise.
16031         * config/t-vxworks (vxworks.o): Likewise.
16032         * config/x-darwin (host-darwin.o): Likewise.
16033         * config/x-hpux (host-hpux.o): Likewise.
16034         * config/x-linux (host-linux.o): Likewise.
16035         * config/x-solaris (host-solaris.o): Likewise.
16036         * config/alpha/x-alpha (driver-alpha.o): Likewise.
16037         * config/arm/t-arm (arm-c.o): Likewise.
16038         * config/arm/t-pe (pe.o): Likewise.
16039         * config/arm/t-wince-pe (pe.o): Likewise.
16040         * config/i386/t-cygming (winnt.o): Likewise.
16041         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
16042         * config/i386/t-cygwin (cygwin1.o): Likewise.
16043         (cygwin2.o): Likewise.
16044         * config/i386/t-i386 (i386-c.o): Likewise.
16045         * config/i386/t-interix (winnt.o): Likewise.
16046         * config/i386/t-netware (netware.o): Likewise.
16047         * config/i386/t-nwld (nwld.o): Likewise.
16048         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
16049         * config/i386/x-i386 (driver-i386.o): Likewise.
16050         * config/i386/x-cygwin (host-cygwin.o): Likewise.
16051         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
16052         * config/ia64/t-ia64 (ia64-c.o): Likewise.
16053         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
16054         * config/mips/x-native (driver-native.o): Likewise.
16055         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
16056         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
16057         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
16058         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
16059         * config/score/t-score-elf (score7.o): Likewise.
16060         (score3.o): Likewise.
16061         * config/sh/t-sh (sh-c.o): Likewise.
16062         * config/sh/t-symbian (sh-c.o): Likewise.
16063         (symbian.o): Likewise.
16064         * config/spu/t-spu-elf (spu-c.o): Likewise.
16065         * config/v850/t-v850 (v850-c.o): Likewise.
16066         * config/v850/t-v850e (v850-c.o): Likewise.
16067
16068 2009-05-26  Richard Guenther  <rguenther@suse.de>
16069
16070         PR tree-optimization/40122
16071         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
16072         VECTOR_CSTs if possible.
16073         (fold_gimple_assign): Likewise.
16074
16075 2009-05-26  Richard Guenther  <rguenther@suse.de>
16076
16077         PR middle-end/40252
16078         * fold-const.c (fold_binary): Use the correct types for building
16079         rotates.
16080
16081 2009-05-26  Richard Guenther  <rguenther@suse.de>
16082
16083         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
16084         redundant calls to merge_alias_info.
16085         (bump_vector_ptr): Likewise.
16086         * tree-ssa-copy.c (merge_alias_info): Remove.
16087         (replace_exp_1): Remove call to merge_alias_info.
16088         (propagate_tree_value): Likewise.
16089         (fini_copy_prop): Propagate points-to info.
16090         * tree-flow.h (merge_alias_info): Remove.
16091
16092 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
16093
16094         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
16095
16096 2009-05-25  Jan Hubicka  <jh@suse.cz>
16097
16098         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
16099         * cgraph.h (struct inline_summary): New filed self_wize,
16100         size_inlining_benefit, self_time and time_inlining_benefit.
16101         (struct cgraph_global_info): Replace insns by time ans size fields.
16102         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
16103         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
16104         (ipcp_update_callgraph): Do not touch function bodies.
16105         * ipa-inline.c: Include except.h
16106         (MAX_TIME): New constant.
16107         (overall_insns): Remove.
16108         (leaf_node_p): New.
16109         (overall_size, max_benefit): New static variables.
16110         (cgraph_estimate_time_after_inlining): New function.
16111         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
16112         (cgraph_clone_inlined_nodes): Update size.
16113         (cgraph_mark_inline_edge): Update size.
16114         (cgraph_estimate_growth): Use size info.
16115         (cgraph_check_inline_limits): Check size.
16116         (cgraph_default_inline_p): Likewise.
16117         (cgraph_edge_badness): Compute badness based on benefit and size cost.
16118         (cgraph_decide_recursive_inlining): Check size.
16119         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
16120         and times.
16121         (cgraph_decide_inlining): Likewise.
16122         (cgraph_decide_inlining_incrementally): Likewise; honor
16123         PARAM_EARLY_INLINING_INSNS.
16124         (likely_eliminated_by_inlining_p): New predicate.
16125         (estimate_function_body_sizes): New function.
16126         (compute_inline_parameters): Use it.
16127         * except.c (must_not_throw_labels): New function.
16128         * except.h (must_not_throw_labels): Declare.
16129         * tree-inline.c (init_inline_once): Kill inlining_weigths
16130         * tree-ssa-structalias.c: Avoid uninitialized warning.
16131         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
16132         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
16133         (PARAM_INLINE_CALL_COST): Remove.
16134         (PARAM_EARLY_INLINING_INSNS): New.
16135
16136 2009-05-25  Richard Guenther  <rguenther@suse.de>
16137
16138         PR tree-optimization/36327
16139         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
16140         callback for reference translation or lookup at the point of may-defs.
16141         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
16142         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
16143         for union COMPONENT_REFs.
16144         (vn_reference_lookup_3): New callback.  Lookup from memset
16145         and CONSTRUCTOR assignment, translate through struct copies.
16146         (vn_reference_lookup_pieces): Make sure to not free the
16147         passed operands array.  Adjust walk_non_aliased_vuses call.
16148         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
16149         make sure we do not leak memory.
16150
16151 2009-05-25  Richard Guenther  <rguenther@suse.de>
16152
16153         * tree-ssa-alias.h (dump_points_to_solution): Declare.
16154         * tree-inline.c (expand_call_inline): Reset the escaped and
16155         callused solutions.
16156         * tree-ssa-structalias.c (pass_build_ealias): New.
16157         * tree-pass.h (pass_build_ealias): Declare.
16158         * passes.c (init_optimization_passes): Add PTA during
16159         early optimizations.
16160         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
16161         and CALLUSED solutions.
16162         (dump_points_to_solution): New function, split out from ...
16163         (dump_points_to_info_for): ... here.
16164         * tree-parloops.c (parallelize_loops): Reset the escaped and
16165         callused solutions.
16166
16167 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
16168
16169         PR bootstrap/40027
16170         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
16171         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
16172
16173 2009-05-25  Ira Rosen  <irar@il.ibm.com>
16174
16175         PR tree-optimization/40238
16176         * tree-vect-stmts.c (vect_init_vector): Insert initialization
16177         statements after basic block's labels.
16178         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
16179         to free the allocated memory.
16180
16181 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
16182
16183         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
16184         return address with a USE.
16185
16186 2009-05-24  Richard Guenther  <rguenther@suse.de>
16187
16188         PR middle-end/40233
16189         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
16190         array type from the main variant of the inner type.
16191
16192 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
16193
16194         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
16195         definition to bool (from int) to un-break build.
16196         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
16197
16198 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
16199
16200         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
16201         discard_stmt_changes): Delete.
16202         * tree-ssa-operands.c (scb_stack): Delete.
16203         (init_ssa_operands): Do not initialize it.
16204         (fini_ssa_operands): Do not free it.
16205         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
16206
16207         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
16208         update_stmt, remove the others.  Fix comments.
16209         * tree-dfa.c (optimize_stack_restore): Likewise.
16210         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
16211         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
16212         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
16213         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
16214         Likewise.
16215         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
16216         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
16217         (dom_opt_finalize_block): Likewise, adjusting access to
16218         stmts_to_rescan.
16219         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
16220         (stmts_to_rescan): Change item type to gimple.
16221         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
16222
16223 2009-05-24  Ira Rosen  <irar@il.ibm.com>
16224
16225         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
16226         * tree-pass.h (pass_slp_vectorize): New pass.
16227         * params.h (SLP_MAX_INSNS_IN_BB): Define.
16228         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
16229         * tree-vectorizer.c (timevar.h): Include.
16230         (user_vect_verbosity_level): Declare.
16231         (vect_location): Fix comment.
16232         (vect_set_verbosity_level): Update user_vect_verbosity_level
16233         instead of vect_verbosity_level.
16234         (vect_set_dump_settings): Add an argument. Ignore user defined
16235         verbosity if dump flags require higher level of verbosity. Print to
16236         stderr only for loop vectorization.
16237         (vectorize_loops): Update call to vect_set_dump_settings.
16238         (execute_vect_slp): New function.
16239         (gate_vect_slp): Likewise.
16240         (struct gimple_opt_pass pass_slp_vectorize): New.
16241         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
16242         access its members.
16243         (vec_info_for_bb): New function.
16244         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
16245         (VECTORIZATION_ENABLED): New macro.
16246         (SLP_ENABLED, SLP_DISABLED): Likewise.
16247         (vect_is_simple_use): Add bb_vec_info argument.
16248         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
16249         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
16250         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
16251         vect_schedule_slp, vect_analyze_slp): Likewise.
16252         (vect_analyze_stmt): Add slp_tree argument.
16253         (find_bb_location): Declare.
16254         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
16255         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
16256         (vect_analyze_loop_operations, vect_analyze_loop,
16257         get_initial_def_for_induction, vect_create_epilog_for_reduction,
16258         vect_finalize_reduction, vectorizable_reduction,
16259         vectorizable_live_operation, vect_transform_loop): Likewise.
16260         * tree-data-ref.c (dr_analyze_innermost): Update comment,
16261         skip evolution analysis if analyzing a basic block.
16262         (dr_analyze_indices): Likewise.
16263         (initialize_data_dependence_relation): Skip the test whether the
16264         object is invariant for basic blocks.
16265         (compute_all_dependences): Skip dependence analysis for data
16266         references in basic blocks.
16267         (find_data_references_in_stmt): Don't fail in case of invariant
16268         access in basic block.
16269         (find_data_references_in_bb): New function.
16270         (find_data_references_in_loop): Move code to
16271         find_data_references_in_bb and add a call to it.
16272         (compute_data_dependences_for_bb): New function.
16273         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
16274         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
16275         that STEP is 0.
16276         (vect_analyze_data_ref_dependence): Check for interleaving in case of
16277         unknown dependence in basic block and fail in case of dependence in
16278         basic block.
16279         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
16280         dependence instances from either loop or basic block vectorization
16281         info.
16282         (vect_compute_data_ref_alignment): Check if it is loop vectorization
16283         before calling nested_in_vect_loop_p.
16284         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
16285         dependence instances from either loop or basic block vectorization
16286         info.
16287         (vect_verify_datarefs_alignment): Likewise.
16288         (vect_enhance_data_refs_alignment): Adjust function calls.
16289         (vect_analyze_data_refs_alignment): Likewise.
16290         (vect_analyze_group_access): Fix printing. Skip different checks if
16291         DR_STEP is 0. Keep strided stores either in loop or basic block
16292         vectorization data structure. Fix indentation.
16293         (vect_analyze_data_ref_access): Fix comments, allow zero step in
16294         basic blocks.
16295         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
16296         dependence instances from either loop or basic block vectorization
16297         info.
16298         (vect_analyze_data_refs): Update comment. Call
16299         compute_data_dependences_for_bb to analyze basic blocks.
16300         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
16301         case of loop vectorization. In case of basic block vectorization use
16302         data-ref itself as a base.
16303         (vect_create_data_ref_ptr): In case of basic block vectorization:
16304         don't advance the pointer, add new statements before the current
16305         statement.  Adjust function calls.
16306         (vect_supportable_dr_alignment): Support only aligned accesses in
16307         basic block vectorization.
16308         * common.opt (ftree-slp-vectorize): New flag.
16309         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
16310         (vect_pattern_recog_1): Likewise.
16311         * tree-vect-stmts.c (process_use): Likewise.
16312         (vect_init_vector): Add new statements in the beginning of the basic
16313         block in case of basic block SLP.
16314         (vect_get_vec_def_for_operand): Adjust function calls.
16315         (vect_finish_stmt_generation): Likewise.
16316         (vectorizable_call): Add assert that it is loop vectorization, adjust
16317         function calls.
16318         (vectorizable_conversion, vectorizable_assignment): Likewise.
16319         (vectorizable_operation): In case of basic block SLP, take
16320         vectorization factor from statement's type and skip the relevance
16321         check. Adjust function calls.
16322         (vectorizable_type_demotion): Add assert that it is loop
16323         vectorization, adjust function calls.
16324         (vectorizable_type_promotion): Likewise.
16325         (vectorizable_store): Check for outer loop only in case of loop
16326         vectorization. Adjust function calls. For basic blocks, skip the
16327         relevance check and don't advance pointers.
16328         (vectorizable_load): Likewise.
16329         (vectorizable_condition): Add assert that it is loop vectorization,
16330         adjust function calls.
16331         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
16332         that it is not reduction, get vector type, call only supported
16333         functions, skip loop specific parts.
16334         (vect_transform_stmt): Check for outer loop only in case of loop
16335         vectorization.
16336         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
16337         (vect_is_simple_use): Fix comment, add new argument, fix conditions
16338         for external definition.
16339         * passes.c (pass_slp_vectorize): New pass.
16340         * tree-vect-slp.c (find_bb_location): New function.
16341         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
16342         check for patterns only in loops.
16343         (vect_build_slp_tree): Add argument, adjust function calls, fail in
16344         case of multiple types in basic block SLP.
16345         (vect_mark_slp_stmts_relevant): New function.
16346         (vect_supported_load_permutation_p): Fix comment.
16347         (vect_analyze_slp_instance): Add argument. In case of basic block
16348         SLP, take vectorization factor from statement's type, check that
16349         unrolling factor is 1. Adjust function call. Save SLP instance in
16350         either loop or basic block vectorization structure. Return FALSE,
16351         if SLP failed.
16352         (vect_analyze_slp): Add argument. Get strided stores groups from
16353         either loop or basic block vectorization structure. Return FALSE
16354         if basic block SLP failed.
16355         (new_bb_vec_info): New function.
16356         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
16357         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
16358         (vect_schedule_slp): Add argument. Get SLP instances from either
16359         loop or basic block vectorization structure. Set vectorization factor
16360         to be 1 for basic block SLP.
16361         (vect_slp_transform_bb): New function.
16362         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
16363
16364 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
16365
16366         * final.c (shorten_branches): Do not align labels for jump tables.
16367         (final_scan_insn): Use JUMP_TABLE_DATA_P.
16368
16369 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
16370
16371         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
16372         Remove outdated reference to flow.c and fix nits.
16373         * doc/gccint.texi: Tweak RTL description.
16374         * doc/rtl.texi: Likewise.
16375
16376 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
16377
16378         * config/avr/avr.c: Change my email address.
16379         * config/avr/avr.h: Likewise.
16380         * config/avr/avr.md: Likewise.
16381         * config/avr/avr-protos.h: Likewise.
16382         * config/avr/libgcc.S: Likewise.
16383
16384 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
16385
16386         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
16387         (spu_split_load, spu_split_store): Change return type to int.
16388         (spu_split_convert): Declare.
16389         * config/spu/predicates.md (spu_mem_operand): Remove.
16390         (spu_mov_operand): Update.
16391         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
16392         * config/spu/spu.c (regno_aligned_for_load): Remove.
16393         (reg_aligned_for_addr, spu_expand_load): Define.
16394         (spu_expand_extv): Reimplement and handle MEM.
16395         (spu_expand_insv): Handle MEM.
16396         (spu_sched_reorder): Handle insn's with length 0.
16397         (spu_legitimate_address_p): Reimplement.
16398         (store_with_one_insn_p): Return TRUE for any mode with size
16399         larger than 16 bytes.
16400         (address_needs_split): Define.
16401         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
16402         operands.
16403         (spu_convert_move): Define.
16404         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
16405         (spu_split_store): Change all MEM's to TImode.
16406         (spu_init_expanders): Preallocate registers that correspond to
16407         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
16408         mark_reg_pointer.
16409         (spu_split_convert): Define.
16410         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
16411         (_move<mode>, _movdi, _movti): Update predicate and condition.
16412         (load, store): Change to define_split.
16413         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
16414         extend<mode>ti2.
16415         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
16416         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
16417         define_insn_and_split of lshr<mode>3.
16418         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
16419         (<v>ashr<mode>3_imm): Define.
16420         (extv, extzv, insv): Allow MEM operands.
16421         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
16422         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
16423         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
16424         (_spu_convert2): Change to define_insn_and_split and remove the
16425         corresponding define_peephole2.
16426         (stack_protect_set, stack_protect_test, stack_protect_test_si):
16427         Change predicates to memory_operand.
16428
16429 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
16430
16431         * config/arm/thumb2.md: Add 16-bit multiply instructions.
16432
16433 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
16434
16435         PR tree-optimization/40219
16436         * tree.c (iterative_hash_expr): Make sure the builtin function is
16437         a normal builtin function and not a front end or back end builtin
16438         before indexing into the built_in_decls array.
16439
16440 2009-05-22  Richard Guenther  <rguenther@suse.de>
16441
16442         PR middle-end/38964
16443         * alias.c (write_dependence_p): Do not use TBAA for answering
16444         anti-dependence or output-dependence.
16445         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
16446         (emit_pointer_definition): Remove.
16447         (emit_alias_warning): Likewise.
16448         (find_what_var_points_to): Remove TBAA pruning code.
16449         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
16450         violations.
16451         (compute_points_to_sets): Remove code computing the set of
16452         dereferenced pointers.
16453         * tree-data-ref.c (dr_may_alias_p): Properly use the split
16454         oracle for querying anti and output dependencies.
16455         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
16456         if TBAA may be applied.
16457         (refs_anti_dependent_p): New function.
16458         (refs_output_dependent_p): Likewise.
16459         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
16460         (refs_output_dependent_p): Likewise.
16461         * doc/tree-ssa.texi (Memory model): New section.
16462         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
16463         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
16464         * cfgexpand.c (expand_gimple_basic_block): Do not handle
16465         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
16466         * expr.c (expand_expr_real_1): Likewise.
16467         * gimple-low.c (lower_stmt): Likewise.
16468         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
16469         (dump_gimple_cdt): Remove.
16470         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
16471         (gimple_size): Likewise.
16472         (walk_gimple_op): Likewise.
16473         (is_gimple_stmt): Likewise.
16474         (walk_stmt_load_store_addr_ops): Likewise.
16475         (gimple_build_cdt): Remove.
16476         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
16477         * gimple.h (gimple_cdt_new_type): Remove.
16478         (gimple_cdt_new_type_ptr): Likewise.
16479         (gimple_cdt_set_new_type): Likewise.
16480         (gimple_cdt_location): Likewise.
16481         (gimple_cdt_location_ptr): Likewise.
16482         (gimple_cdt_set_location): Likewise.
16483         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
16484         * tree-cfg.c (remove_useless_stmts_1): Do not handle
16485         GIMPLE_CHANGE_DYNAMIC_TYPE.
16486         (verify_types_in_gimple_stmt): Likewise.
16487         * tree-inline.c (estimate_num_insns): Likewise.
16488         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
16489         (copy_decl_to_var): Likewise.
16490         (copy_result_decl_to_var): Likewise.
16491         * tree-pretty-print.c (dump_generic_node): Do not handle
16492         CHANGE_DYNAMIC_TYPE_EXPR.
16493         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
16494         * tree-ssa-operands.c (get_expr_operands): Likewise.
16495         * tree-ssa-structalias.c (struct variable_info): Remove
16496         no_tbaa_pruning member.
16497         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
16498         (unify_nodes): Do not copy it.
16499         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
16500         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
16501         (set_uids_in_ptset): Do not check it.
16502         (find_what_var_points_to): Likewise.
16503         (compute_tbaa_pruning): Remove.
16504         (compute_points_to_sets): Do not call it.
16505         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
16506         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
16507         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
16508         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
16509         (DECL_NO_TBAA_P): Likewise.
16510         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
16511         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
16512         (expand_omp_atomic_pipeline): Do not set it.
16513         * print-tree.c (print_node): Do not dump it.
16514         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
16515         redundant check.
16516
16517 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
16518
16519         PR target/39856
16520         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
16521         for clobber.
16522
16523 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
16524
16525         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
16526         non-external.
16527
16528 2009-05-22  Ben Elliston  <bje@au.ibm.com>
16529
16530         * Makefile.in (bversion.h, s-bversion): New targets.
16531         (TOPLEV_H): Add bversion.h.
16532         * toplev.h: Include "bversion.h".
16533         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
16534         the __format__ attribute only if compiling with the same version
16535         of GCC as the sources (the "build version").
16536
16537 2009-05-22  Ben Elliston  <bje@au.ibm.com>
16538
16539         * c-format.c (handle_format_attribute): Fix comment typo.
16540
16541 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
16542
16543         PR target/37846
16544         * config/ia64/ia64.opt (mfused-madd): New.
16545         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
16546         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
16547         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
16548         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
16549         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
16550         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
16551         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
16552         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
16553         instruction if !TARGET_FUSED_MADD.
16554         (fpma, fpms): Remove colon from name.
16555
16556 2009-05-22  Richard Guenther  <rguenther@suse.de>
16557
16558         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
16559         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
16560         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
16561         TARGET_MEM_REF.
16562         (create_expression_by_pieces): Only convert if necessary.
16563         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
16564         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
16565
16566 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
16567
16568         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
16569         regular pattern from a template and rename it ...
16570         (*extzv_truncsi_exts): ... to this.
16571
16572 2009-05-21  Richard Guenther  <rguenther@suse.de>
16573
16574         * cgraph.h (struct cgraph_node): Remove inline_decl member.
16575         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
16576         (cgraph_default_inline_p): Likewise.
16577         (cgraph_decide_inlining_incrementally): Likewise.
16578
16579 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16580             Uros Bizjak  <ubizjak@gmail.com>
16581
16582         * config/i386/cpuid.h (bit_MOVBE): New.
16583
16584         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
16585
16586         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
16587         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
16588         (ix86_handle_option): Handle OPT_mmovbe.
16589         (ix86_target_string): Add -mmovbe.
16590         (pta_flags): Add PTA_MOVBE.
16591         (processor_alias_table): Add PTA_MOVBE to "atom".
16592         (override_options): Handle PTA_MOVBE.
16593
16594         * config/i386/i386.h (TARGET_MOVBE): New.
16595
16596         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
16597         (*bswapsi_movbe): New.
16598         (*bswapdi_movbe): Likewise.
16599         (bswapdi2): Renamed to ...
16600         (*bswapdi_1): This.
16601         (bswapdi2): New expander.
16602
16603         * config/i386/i386.opt (mmovbe): New.
16604
16605         * doc/invoke.texi: Document -mmovbe.
16606
16607 2009-05-21  Taras Glek  <tglek@mozilla.com>
16608
16609         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
16610         * gcc-plugin.h (plugin_init): Updated signature.
16611         * gcc-plugin.h (plugin_name_args): Moved to this header.
16612         * doc/plugins.texi (plugin_init): Updated documention to reflect
16613         API change.
16614         * doc/plugins.texi (plugin_name_args): Added to documention.
16615
16616 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
16617
16618         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
16619         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
16620
16621 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
16622
16623         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
16624         JUMP_TABLE_DATA_P predicates where applicable.
16625         * config/i386/predicates.md: Ditto.
16626         * config/i386/sse.md: Ditto.
16627
16628 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
16629
16630         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
16631         operand2 -128 override length_immediate attribute to 1.
16632         * config/i386/predicates.md (constm128_operand): New predicate.
16633
16634         * config/i386/i386.c (memory_address_length): Handle %r12
16635         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
16636         also check REGNO.
16637         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
16638         mode look through optional ZERO_EXTEND and SUBREG.
16639         * config/i386/i386.md (R12_REG): New define_constant.
16640         (prefix_data16): For sse unit set also for MODE_TI insns.
16641         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
16642         insns set if operand 1 is ext_QIreg_operand.
16643         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
16644         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
16645         immediate.
16646         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
16647         mode from MODE_DI to MODE_SI.
16648         (movdi_1_rex64): Override modrm and length_immediate attributes
16649         only for movabs (TYPE_IMOV, alternative 2).
16650         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
16651         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
16652         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
16653         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
16654         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
16655         prefix_rex attribute if DImode.
16656         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
16657         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
16658         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
16659         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
16660         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
16661         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
16662         Likewise.  For TYPE_IMOV clear length_immediate attribute.
16663         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
16664         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
16665         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
16666         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
16667         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
16668         or one operand TYPE_ISHIFT.
16669         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
16670         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
16671         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
16672         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
16673         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
16674         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
16675         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
16676         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
16677         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
16678         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
16679         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
16680         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
16681         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
16682         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
16683         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
16684         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
16685         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
16686         set mode attribute, don't override length attribute.
16687         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
16688         to 1.
16689         (return_internal_long): Set length attribute to 2 instead of 1.
16690         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
16691         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
16692         prefix_rex attribute.
16693         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
16694         New predicates.
16695         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
16696
16697 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16698
16699         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
16700
16701 2009-05-20  Ian Lance Taylor  <iant@google.com>
16702
16703         * tree.c (build_tree_list_vec_stat): New function.
16704         (ctor_to_vec): New function.
16705         (build_nt_call_vec): New function.
16706         (build_call_array): Change args to be a const pointer.
16707         (build_call_vec): New function.
16708         * tree.h (build_nt_call_vec): Declare.
16709         (build_tree_list_vec_stat): Declare.
16710         (build_tree_list_vec): Define.
16711         (build_call_array): Update declaration.
16712         (build_call_vec): Declare.
16713         (ctor_to_vec): Declare.
16714         * c-common.c (tree_vector_cache): New static variable.
16715         (make_tree_vector): New function.
16716         (release_tree_vector): New function.
16717         (make_tree_vector_single): New function.
16718         (make_tree_vector_copy): New function.
16719         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
16720         (make_tree_vector_single, make_tree_vector_copy): Declare.
16721         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
16722         (c_parser_expr_list): Don't manage cache here, instead call
16723         make_tree_vector.
16724         (c_parser_release_expr_list): Remove static function.
16725         (c_parser_vec_to_tree_list): Remove static function.
16726         (c_parser_attributes): Call build_tree_list_vec instead of
16727         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
16728         c_parser_release_expr_list.
16729         (c_parser_postfix_expression_after_primary): Likewise.
16730         (c_parser_objc_keywordexpr): Likewise.
16731
16732 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
16733
16734         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
16735         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
16736         TARGET_CONVERT_TO_TYPE.
16737         * hooks.c (hook_tree_const_tree_null): Define.
16738         * hooks.h (hook_tree_const_tree_null): Declare.
16739         * target.h (struct gcc_target):  Add invalid_parameter_type,
16740         invalid_return_type, promoted_type, and convert_to_type fields.
16741         * target-def.h (TARGET_INVALID_PARAMETER_TYPE): Define.
16742         (TARGET_INVALID_RETURN_TYPE): Define.
16743         (TARGET_PROMOTED_TYPE): Define.
16744         (TARGET_CONVERT_TO_TYPE): Define.
16745         (TARGET_INITIALIZER): Update for new fields.
16746         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
16747         (grokparms): Check targetm.invalid_parameter_type.
16748         * c-typeck.c (default_conversion): Check targetm.promoted_type.
16749         * c-convert.c (convert): Check targetm.convert_to_type.
16750
16751 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
16752
16753         * config/mips/mips.md (*extenddi_truncate<mode>,
16754         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
16755         defintions.
16756         (*extendhi_truncateqi): New define_insn_and_sptit.
16757
16758 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
16759
16760         PR middle-end/40204
16761         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
16762         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
16763
16764 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
16765
16766         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
16767         the operand of VIEW_CONVERT_EXPR.
16768
16769 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
16770
16771         * config/i386/driver-i386.c (host_detect_local_cpu): Check
16772         extended family and model for Intel processors.  Support Intel Atom.
16773
16774 2009-05-20  Olivier Hainque  <hainque@adacore.com>
16775
16776         * gstab.h (stab_code_type): Define, to be used instead of the
16777         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
16778         notice.
16779         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
16780         occurrences by stab_code_type.
16781         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
16782
16783 2009-05-20  Martin Jambor  <mjambor@suse.cz>
16784
16785         * tree-flow.h (insert_edge_copies_seq): Undeclare.
16786         (sra_insert_before): Likewise.
16787         (sra_insert_after): Likewise.
16788         (sra_init_cache): Likewise.
16789         (sra_type_can_be_decomposed_p): Likewise.
16790         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
16791         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
16792         (sra_insert_before): Likewise.
16793         (sra_insert_after): Likewise.
16794         (sra_init_cache): Likewise.
16795         (insert_edge_copies_seq): Made static and moved upwards.
16796
16797         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
16798         case.
16799
16800         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
16801
16802         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
16803         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
16804         simple copies.
16805
16806 2009-05-20  Richard Guenther  <rguenther@suse.de>
16807
16808         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
16809         with mismatched comparison modes.
16810
16811 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16812
16813         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
16814         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
16815         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
16816         with shifts for Thumb2.
16817         (orsi_notsi): New for orn.
16818         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
16819         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
16820         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
16821         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
16822         Don't invert remainder for IOR.
16823
16824 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
16825
16826         PR tree-optimization/40087
16827         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
16828         number_of_iterations_ne): Rename never_infinite argument.
16829         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
16830         number_of_iterations_le): Handle pointer-type ivs when
16831         exit_must_be_taken is false.
16832         (number_of_iterations_cond):  Do not always assume that
16833         exit_must_be_taken if the control variable is a pointer.
16834
16835 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16836
16837         * c-typeck.c (build_binary_op): Allow % on integal vectors.
16838         * doc/extend.texi (Vector Extension): Document that % is allowed too.
16839
16840 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
16841
16842         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
16843         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
16844
16845 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16846
16847         PR c/40172
16848         * c.opt (Wlogical-op): Disabled by default.
16849         * c-opt (c_common_post_options): Do not enable Wlogical-op with
16850         Wextra.
16851         * doc/invoke.texi (Wlogical-op): Likewise.
16852
16853 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
16854
16855         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
16856         into CASE_CONVERT.
16857         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
16858         Propagate the type of the first operand.
16859         <ASSERT_EXPR>: Simplify.
16860         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
16861         Rewrite using the RHS code as discriminant.
16862         <NOP_EXPR>: Turn into CASE_CONVERT.
16863         <PLUS_EXPR>: Propagate the type of the first operand.
16864
16865 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
16866
16867         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
16868         (ia64_dconst_0_375): New.
16869         * config/ia64/ia64.c (ia64_override_options): Remove
16870         -minline-sqrt-min-latency warning.
16871         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
16872         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
16873         * config/ia64/ia64.md (*sqrt_approx): Remove.
16874         (sqrtsf2): Remove #if 0.
16875         (sqrtsf2_internal_thr): Rewrite and move to div.md.
16876         (sqrtdf): Remove assert.
16877         (sqrtdf2_internal_thr): Rewrite and move to div.md.
16878         (sqrtxf2): Remove #if 0.
16879         (sqrtxf2_internal_thr): Rewrite and move to div.md.
16880         * div.md (sqrt_approx_rf): New.
16881         (sqrtsf2_internal_thr): New implementation.
16882         (sqrtsf2_internal_lat): New.
16883         (sqrtdf2_internal_thr: New implementation.
16884         (sqrtxf2_internal): New implementation.
16885
16886 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
16887             Hans-Peter Nilsson  <hp@axis.com>
16888
16889         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
16890         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
16891         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
16892         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
16893         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
16894         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
16895         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
16896         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
16897         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
16898         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
16899         * c-common.c: ...from here.
16900
16901 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16902
16903         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
16904
16905 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16906
16907         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
16908
16909 2009-05-19  Ben Elliston  <bje@au.ibm.com>
16910
16911         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
16912         assignments with memcpy calls.
16913         (add_fdes): Likewise.
16914         (binary_search_unencoded_fdes): Likewise.
16915         (linear_search_fdes): Eliminate type puns.
16916
16917 2009-05-19  Richard Guenther  <rguenther@suse.de>
16918
16919         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
16920         not falsely claim to have propagated into all uses.
16921
16922 2009-05-19  Ben Elliston  <bje@au.ibm.com>
16923
16924         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
16925         version to v3.0.
16926
16927 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
16928
16929         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
16930         * config/sh/sh.c (sh_legitimate_address_p): Make static.
16931         (TARGET_LEGITIMATE_ADDRESS_P): New.
16932         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16933         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
16934
16935 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
16936
16937         PR debug/40109
16938         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
16939         child of the containing namespace's DIE.
16940
16941 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
16942
16943         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
16944         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
16945         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
16946         extend patterns.
16947
16948 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
16949
16950         PR target/39942
16951         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
16952         gen_align with gen_pad.
16953         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
16954         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
16955
16956         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
16957         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
16958
16959         * config/i386/i386.md (align): Renamed to ...
16960         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
16961         ASM_OUTPUT_MAX_SKIP_PAD.
16962
16963 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
16964
16965         * config.gcc: Fix variable syntax.
16966
16967         PR target/39531
16968         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
16969         before calling exact_log2.
16970         (output_iorsi3): Likewise.
16971         (output_xorsi3): Likewise.
16972
16973 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
16974
16975         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
16976         for the none zero constant operand except for EQ and NE
16977         comprisons even when the first operand is R0.
16978
16979 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
16980
16981         * config/s390/2064.md: Remove trailing whitespaces.
16982         * config/s390/2084.md: Likewise.
16983         * config/s390/constraints.md: Likewise.
16984         * config/s390/fixdfdi.h: Likewise.
16985         * config/s390/libgcc-glibc.ver: Likewise.
16986         * config/s390/s390-modes.def: Likewise.
16987         * config/s390/s390-protos.h: Likewise.
16988         * config/s390/s390.c: Likewise.
16989         * config/s390/s390.h: Likewise.
16990         * config/s390/s390.md: Likewise.
16991         * config/s390/tpf-unwind.h: Likewise.
16992
16993 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
16994
16995         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
16996
16997 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
16998
16999         M68K TLS support.
17000         * configure.ac (m68k-*-*): Check if binutils support TLS.
17001         * configure: Regenerate.
17002         * config/m68k/predicates.md (symbolic_operand): Extend comment.
17003         * config/m68k/constraints.md (Cu): New constraint.
17004         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
17005         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
17006         (movsi): Handle TLS symbols.
17007         (addsi3_5200): Handle XTLS symbols, indent.
17008         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
17009         (m68k_tls_reference_p): Declare.
17010         (m68k_legitimize_address): Declare.
17011         (m68k_unwrap_symbol): Declare.
17012         * config/m68k/m68k.opt (mxtls): New option.
17013         * config/m68k/m68k.c (ggc.h): Include.
17014         (m68k_output_dwarf_dtprel): Implement hook.
17015         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
17016         (m68k_expand_prologue): Load GOT pointer when function needs it.
17017         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
17018         (m68k_legitimate_constant_address_p): Same.
17019         (m68k_decompose_address): Handle TLS references.
17020         (m68k_get_gp): New static function.
17021         (enum m68k_reloc): New contants.
17022         (TLS_RELOC_P): New macro.
17023         (m68k_wrap_symbol): New static function.
17024         (m68k_unwrap_symbol): New function.
17025         (m68k_final_prescan_insn_1): New static function.
17026         (m68k_final_prescan_insn): New function.
17027         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
17028         functions.
17029         (legitimize_pic_address): Handle TLS references..
17030         (m68k_tls_get_addr, m68k_get_tls_get_addr)
17031         (m68k_libcall_value_in_a0_p)
17032         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
17033         (m68k_call_m68k_read_tp): Helper variables and functions for ...
17034         (m68k_legitimize_tls_address): Handle TLS references.
17035         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
17036         New functions.
17037         (m68k_legitimize_address): Handle TLS symbols.
17038         (m68k_get_reloc_decoration): New static function.
17039         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
17040         UNSPEC_RELOC32.
17041         (m68k_output_dwarf_dtprel): Implement hook.
17042         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
17043         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
17044         m68k_call_* routines.
17045         (sched_attr_op_type): Handle TLS symbols.
17046         (gt-m68k.h): Include.
17047         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
17048         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
17049
17050 2009-05-18  Martin Jambor  <mjambor@suse.cz>
17051
17052         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
17053         (visit_store_addr_for_mod_analysis): New function.
17054         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
17055         (determine_cst_member_ptr): Use gimple_assign_single_p.
17056         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
17057         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
17058         operands.  Don't check number of operands of a NOP_EXPR.
17059
17060 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
17061
17062         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
17063
17064 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
17065
17066         PR c/40172
17067         * c-common.c (warn_logical_operator): Don't warn if one of
17068         expression isn't always true or false.
17069
17070 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
17071
17072         * config/i386/biarch32.h: New file.
17073         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
17074
17075 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
17076
17077         * config/mips/mips.md (*zero_extend<mode>_trunchi,
17078         *zero_extend<mode>_truncqi): Merge these into ...
17079         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
17080         Name the pattern following this as *zero_extendhi_truncqi.
17081
17082 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
17083
17084         PR middle-end/39301
17085         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
17086         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
17087         (output_info): Make field HOST_WIDEST_INT.
17088         (print_statistics): Use HOST_WIDEST_INT_PRINT.
17089         (dump_bitmat_statistics): Same.
17090
17091 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
17092
17093         * config.gcc (use_gcc_stdint):  Set to wrap.
17094         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
17095         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
17096         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
17097         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
17098         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
17099         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
17100         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
17101         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
17102
17103 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
17104
17105         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
17106         tune_64.
17107         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
17108         Move definitions earlier.
17109         (OPT_ARCH64, OPT_ARCH32): Define.
17110         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
17111         and tune_64.
17112
17113 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
17114
17115         PR target/40153
17116         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
17117         implies.
17118
17119 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
17120
17121         * arm.md (movdi2): Copy non-reg values to DImode registers.
17122
17123 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
17124
17125         PR target/39942
17126         * final.c (label_to_max_skip): New function.
17127         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
17128         CODE_LABEL_NUMBER <= max_labelno.
17129         * output.h (label_to_max_skip): New prototype.
17130         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
17131         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
17132         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
17133         Handle CODE_LABELs with >= 16 byte alignment or with
17134         max_skip == (1 << align) - 1.
17135         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
17136         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
17137
17138         PR target/39942
17139         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
17140         .p2align 3 if MAX_SKIP is smaller than 7.
17141         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
17142
17143 2009-05-15  Ian Lance Taylor  <iant@google.com>
17144
17145         * alias.c (struct alias_set_entry_d): Rename from struct
17146         alias_set_entry.  Change all uses.
17147         * except.c (struct call_site_record_d): Rename from struct
17148         call_site_record.  Change all uses.
17149         * except.h (struct eh_region_d): Rename from struct eh_region.
17150         Change all uses.
17151         * gcse.c (struct hash_table_d): Rename from struct hash_table.
17152         Change all uses.
17153         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
17154         ivtype_map_elt.  Change all uses.
17155         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
17156         Change all uses.
17157         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
17158         * graphite.h (struct name_tree_d): Rename from struct name_tree.
17159         Change all uses.
17160         (struct sese_d): Rename from struct sese.  Change all uses.
17161         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
17162         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
17163         * optabs.h (struct optab_d): Rename from struct optab.  Change all
17164         uses.
17165         (struct convert_optab_d): Rename from struct convert_optab.
17166         Change all uses.
17167         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
17168         ipa_opt_pass.  Change all uses.
17169         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
17170         all uses.
17171
17172         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
17173         defined as a typedef.
17174         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
17175         defined as a tag.
17176
17177 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
17178
17179         PR 16302
17180         * fold-const.c (make_range,build_range_check,merge_ranges): Move
17181         declaration to...
17182         (merge_ranges): Returns bool.
17183         * tree.h (make_range): .. to here.
17184         (build_range_check): Likewise.
17185         (merge_ranges): Likewise. Renamed from merge_ranges.
17186         * c-typeck.c (parser_build_binary_op): Update calls to
17187         warn_logical_operator.
17188         * c-common.c (warn_logical_operator): Add new warning.
17189         * c-common.h (warn_logical_operator): Update declaration.
17190
17191 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
17192
17193         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
17194
17195 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17196
17197         * doc/install.texi: Document MPC requirements, flags etc.
17198
17199         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
17200         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
17201         Evaluate constant arguments.
17202         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
17203         (fold_builtin_1): Likewise, also evaluate constant arguments.
17204         Remove superfluous break.
17205         (do_mpc_ckconv): New.
17206         * real.h: Include mpc.h.
17207         * toplev.c (print_version): Output MPC version info if available.
17208
17209 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
17210
17211         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
17212
17213 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
17214
17215         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
17216         only once.
17217
17218 2009-05-15  Jan Hubicka  <jh@suse.cz>
17219
17220         * doc/invoke.texi (max-early-inliner-iterations): New flag.
17221         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
17222         (try_inline): Fix return value.
17223         (cgraph_decide_inlining_incrementally): Honor new value.
17224         (cgraph_early_inlining): Handle indirect inlining.
17225         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
17226
17227 2009-05-15  Jan Hubicka  <jh@suse.cz>
17228
17229         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
17230         * cgraphunit.c (cgraph_finalize_function): Set it.
17231         (cgraph_expand_function): Use it.
17232
17233 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
17234
17235         * real.c (encode_ieee_half): Define.
17236         (decode_ieee_half): Define.
17237         (ieee_half_format): Define.
17238         (arm_half_format): Define.
17239         * real.h (ieee_half_format): Declare.
17240         (arm_half_format): Declare.
17241
17242 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
17243
17244         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
17245         swapped, and reversed optabs exist before trying to use them.
17246
17247 2009-05-15  Paul Brook  <paul@codesourcery.com>
17248             Sandra Loosemore  <sandra@codesourcery.com>
17249
17250         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
17251         loads.  Allow PRE_DEC.
17252         (output_move_neon): Handle PRE_DEC.
17253         (arm_print_operand): Add 'A' for neon structure loads.
17254         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
17255         * config/arm/neon.md (neon_mov): Update comment.
17256         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
17257         calls.
17258         (Um): New constraint.
17259
17260 2009-05-15  Jan Hubicka  <jh@suse.cz>
17261
17262         Revert the following patch until testsuite fallout is fixed:
17263         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
17264         * cgraph.h (struct inline_summary): New filed self_wize,
17265         size_inlining_benefit, self_time and time_inlining_benefit.
17266         (struct cgraph_global_info): Replace insns by time ans size fields.
17267         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
17268         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
17269         (ipcp_update_callgraph): Do not touch function bodies.
17270         * ipa-inline.c: Include except.h
17271         (MAX_TIME): New constant.
17272         (overall_insns): Remove
17273         (overall_size, max_benefit): New static variables.
17274         (cgraph_estimate_time_after_inlining): New function.
17275         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
17276         (cgraph_clone_inlined_nodes): Update size.
17277         (cgraph_mark_inline_edge): Update size.
17278         (cgraph_estimate_growth): Use size info.
17279         (cgraph_check_inline_limits): Check size.
17280         (cgraph_default_inline_p): Likewise.
17281         (cgraph_edge_badness): Compute badness based on benefit and size cost.
17282         (cgraph_decide_recursive_inlining): Check size.
17283         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
17284         and times.
17285         (cgraph_decide_inlining): Likewise.
17286         (cgraph_decide_inlining_incrementally): Likewise; honor
17287         PARAM_EARLY_INLINING_INSNS.
17288         (likely_eliminated_by_inlining_p): New predicate.
17289         (estimate_function_body_sizes): New function.
17290         (compute_inline_parameters): Use it.
17291         * except.c (must_not_throw_labels): New function.
17292         * except.h (must_not_throw_labels): Declare.
17293         * tree-inline.c (init_inline_once): Kill inlining_weigths
17294         * tree-ssa-structalias.c: Avoid uninitialized warning.
17295         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
17296         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
17297         (PARAM_INLINE_CALL_COST): Remove.
17298         (PARAM_EARLY_INLINING_INSNS): New.
17299
17300 2009-05-15  Richard Guenther  <rguenther@suse.de>
17301
17302         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
17303         not TODO_update_ssa.
17304
17305 2009-05-15  Richard Guenther  <rguenther@suse.de>
17306
17307         PR tree-optimization/39999
17308         * gimple.h (gimple_expr_type): Use the expression type looking
17309         through useless conversions.
17310         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
17311         (vn_nary_op_insert_stmt): Likewise.
17312         (simplify_binary_expression): Likewise.
17313
17314 2009-05-15  Richard Guenther  <rguenther@suse.de>
17315
17316         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
17317         New options, enabled by default.
17318         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
17319         Document.
17320         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
17321         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
17322         * tree-ssa-structalias.c (gate_tree_pta): New function.
17323         (pass_build_alias): Use it.
17324
17325 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
17326
17327         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
17328         recurse on an invariant address if a conversion from a pointer
17329         type to a wider integer type is involved.
17330
17331 2009-05-15  Jan Hubicka  <jh@suse.cz>
17332
17333         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
17334         * cgraph.h (struct inline_summary): New filed self_wize,
17335         size_inlining_benefit, self_time and time_inlining_benefit.
17336         (struct cgraph_global_info): Replace insns by time ans size fields.
17337         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
17338         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
17339         (ipcp_update_callgraph): Do not touch function bodies.
17340         * ipa-inline.c: Include except.h
17341         (MAX_TIME): New constant.
17342         (overall_insns): Remove
17343         (overall_size, max_benefit): New static variables.
17344         (cgraph_estimate_time_after_inlining): New function.
17345         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
17346         (cgraph_clone_inlined_nodes): Update size.
17347         (cgraph_mark_inline_edge): Update size.
17348         (cgraph_estimate_growth): Use size info.
17349         (cgraph_check_inline_limits): Check size.
17350         (cgraph_default_inline_p): Likewise.
17351         (cgraph_edge_badness): Compute badness based on benefit and size cost.
17352         (cgraph_decide_recursive_inlining): Check size.
17353         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
17354         and times.
17355         (cgraph_decide_inlining): Likewise.
17356         (cgraph_decide_inlining_incrementally): Likewise; honor
17357         PARAM_EARLY_INLINING_INSNS.
17358         (likely_eliminated_by_inlining_p): New predicate.
17359         (estimate_function_body_sizes): New function.
17360         (compute_inline_parameters): Use it.
17361         * except.c (must_not_throw_labels): New function.
17362         * except.h (must_not_throw_labels): Declare.
17363         * tree-inline.c (init_inline_once): Kill inlining_weigths
17364         * tree-ssa-structalias.c: Avoid uninitialized warning.
17365         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
17366         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
17367         (PARAM_INLINE_CALL_COST): Remove.
17368         (PARAM_EARLY_INLINING_INSNS): New.
17369         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
17370         (inline-call-cost): Remove.
17371         (early-inlining-insns): New.
17372
17373 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
17374
17375         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
17376         for bounds.
17377         (print_int_cst_bounds_in_octal_p): Likewise.
17378         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
17379         with subtypes.
17380         * dwarf2out.c (base_type_die): Likewise.
17381         (is_subrange_type): Delete.
17382         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
17383         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
17384         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
17385         if the destination type is boolean.
17386         (build_range_check): Do not special-case subtypes.
17387         (fold_sign_changed_comparison): Likewise.
17388         (fold_unary): Likewise.
17389         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
17390         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
17391         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
17392         * tree.c (subrange_type_for_debug_p): New predicate based on the
17393         former is_subrange_type.
17394         * tree.h (subrange_type_for_debug_p): Declare.
17395         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
17396         (convert_affine_scev): Remove call to above function.
17397         (chrec_convert_aggressive): Likewise.
17398         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
17399         false for conversions involving subtypes.
17400         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
17401         (vrp_val_min): Likewise.
17402         (needs_overflow_infinity): Likewise.
17403         (extract_range_from_unary_expr): Likewise.
17404
17405 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
17406
17407         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
17408         * config/frv/frv.c: Likewise.
17409         * config/s390/s390.c: Likewise.
17410         * config/sparc/sparc.h: Likewise.
17411         * config/i386/i386.h: Likewise.
17412         * config/i386/i386.c: Likewise.
17413         * config/crx/crx.c: Likewise.
17414         * config/m68hc11/m68hc11.h: Likewise.
17415         * config/iq2000/iq2000.c: Likewise.
17416         * config/mn10300/mn10300.h: Likewise.
17417         * config/mn10300/mn10300.c: Likewise.
17418         * config/m68k/m68k.c: Likewise.
17419         * config/rs6000/rs6000.c: Likewise.
17420         * config/rs6000/xcoff.h: Likewise.
17421         * config/rs6000/linux64.h: Likewise.
17422         * config/rs6000/sysv4.h: Likewise.
17423         * config/score/score3.c: Likewise.
17424         * config/score/score7.c: Likewise.
17425         * config/score/score.c: Likewise.
17426         * config/arm/arm.md: Likewise.
17427         * config/mips/mips.c: Likewise.
17428         * config/mips/mips.md: Likewise.
17429         * config/bfin/bfin.h: Likewise.
17430         * config/pa/pa.c: Likewise.
17431         * config/pa/constraints.md: Likewise.
17432
17433         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
17434         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
17435         * config/pdp11/pdp11.h: Use memory_address_p instead.
17436
17437 2009-05-14  Ian Lance Taylor  <iant@google.com>
17438
17439         * passes.c (finish_optimization_passes): Change i to int.
17440         * plugin.c (plugins_active_p): Change event to int.
17441         (dump_active_plugins): Likewise.
17442         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
17443         Add cast.
17444         * tree.c (tree_range_check_failed): Change c to unsigned int.
17445         (omp_clause_range_check_failed): Likewise.
17446         (build_common_builtin_nodes): Change mode to int.  Add cast.
17447         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
17448         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
17449
17450         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
17451         ++ or -- with a variable of enum type.
17452
17453 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
17454
17455         PR driver/40144
17456         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
17457
17458 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
17459
17460         * store-motion.c: Do not include params.h
17461         * Makefile.in: Fix dependencies for various files.
17462
17463 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
17464
17465         * auto-inc-dec.c: Fix pass description, remove apparent
17466         accidental duplication.
17467
17468 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
17469
17470         PR middle-end/40147
17471         * ipa-utils.h (memory_identifier_string): Moved to ...
17472         * tree.h (memory_identifier_string): Here.  Add GTY(()).
17473
17474 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
17475
17476         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
17477         in the former documentation of...
17478         (GO_IF_LEGITIMATE_ADDRESS): ... this.
17479         * ira-conflicts.c (get_dup_num): Use address_operand.
17480         * targhooks.c (default_legitimate_address_p): New.
17481         * targhooks.h (default_legitimate_address_p): New.
17482         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
17483         Call hook.
17484         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
17485         * target.h (struct target): Add legitimate_address_p.
17486         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
17487         (TARGET_INITIALIZER): Include it.
17488
17489         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17490         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
17491         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
17492         (TARGET_LEGITIMATE_ADDRESS_P): New.
17493
17494         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17495         (REG_OK_STRICT_P): Delete.
17496         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
17497         (frv_legitimate_address_p_1): ... this.
17498         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
17499         (frv_legitimate_address_p_1): ... the renamed old
17500         frv_legitimate_address_p.
17501         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
17502         (TARGET_LEGITIMATE_ADDRESS_P): New.
17503
17504         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17505         * config/s390/s390-protos.h (legitimate_address_p): Remove.
17506         * config/s390/s390.c (legitimate_address_p): Rename to...
17507         (s390_legitimate_address_p): ... this, make static.
17508         (legitimize_address): Adjust call.
17509         (TARGET_LEGITIMATE_ADDRESS_P): New.
17510         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
17511
17512         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17513         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
17514         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
17515         (TARGET_LEGITIMATE_ADDRESS_P): New.
17516
17517         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17518         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
17519         * config/spu/spu.c (spu_legitimate_address): Rename to...
17520         (spu_legitimate_address_p): ... this, make static.
17521         (TARGET_LEGITIMATE_ADDRESS_P): New.
17522
17523         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17524         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
17525         * config/sparc/sparc.c (legitimate_address_p): Rename to...
17526         (sparc_legitimate_address_p): ... this, make static and return bool.
17527         (legitimize_address): Adjust call.
17528         (TARGET_LEGITIMATE_ADDRESS_P): New.
17529
17530         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17531         * config/i386/i386-protos.h (legitimate_address_p): Remove.
17532         * config/i386/i386.c (legitimate_address_p): Rename to...
17533         (ix86_legitimate_address_p): ... this, make static.
17534         (constant_address_p): Move after it, adjust call.
17535         (TARGET_LEGITIMATE_ADDRESS_P): New.
17536
17537         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17538         * config/avr/avr-protos.h (legitimate_address_p): Remove.
17539         * config/avr/avr.c (legitimate_address_p): Rename to...
17540         (avr_legitimate_address_p): ... this, make static.
17541         (legitimize_address): Adjust call.
17542         (TARGET_LEGITIMATE_ADDRESS_P): New.
17543
17544         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17545         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
17546         * config/crx/crx.c (crx_legitimate_address_p): Make static.
17547         (TARGET_LEGITIMATE_ADDRESS_P): New.
17548
17549         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17550         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
17551         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
17552         (TARGET_LEGITIMATE_ADDRESS_P): New.
17553
17554         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17555         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
17556         Remove.
17557         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
17558         Make static.
17559         (TARGET_LEGITIMATE_ADDRESS_P): New.
17560
17561         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17562         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
17563         Remove.
17564         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
17565         Rename to...
17566         (m68hc11_legitimate_address_p): ... this, make static.
17567         (go_if_legitimate_address_internal): Rename to...
17568         (m68hc11_legitimate_address_p_1): ... this.
17569         (legitimize_address): Adjust call.
17570         (TARGET_LEGITIMATE_ADDRESS_P): New.
17571
17572         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17573         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
17574         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
17575         (TARGET_LEGITIMATE_ADDRESS_P): New.
17576
17577         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17578         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
17579         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
17580         (mn10300_legitimate_address_p): ... this, make static.
17581         (TARGET_LEGITIMATE_ADDRESS_P): New.
17582
17583         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17584         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
17585         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
17586         (TARGET_LEGITIMATE_ADDRESS_P): New.
17587
17588         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17589         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
17590         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
17591         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17592         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
17593         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
17594         (rs6000_legitimate_address_p): ... this, make static.
17595         (TARGET_LEGITIMATE_ADDRESS_P): New.
17596         (REG_MODE_OK_FOR_BASE_P): Delete.
17597         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
17598
17599         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17600         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
17601         Delete.
17602         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
17603         static, adjust types.
17604         (TARGET_LEGITIMATE_ADDRESS_P): New.
17605
17606         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17607         * config/score/score.c (score_address_p): Rename to...
17608         (score_legitimate_address_p): ... this.
17609         (TARGET_LEGITIMATE_ADDRESS_P): New.
17610         * config/score/score3.c (score3_address_p): Rename to...
17611         (score3_legitimate_address_p): ... this.
17612         * config/score/score7.c (score7_address_p): Rename to...
17613         (score7_legitimate_address_p): ... this.
17614
17615         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
17616         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
17617         GO_IF_LEGITIMATE_ADDRESS): Delete.
17618         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
17619         thumb2_legitimate_address_p): Delete.
17620         (arm_legitimate_address_p): Rename to...
17621         (arm_legitimate_address_outer_p): ... this.
17622         * config/arm/constraints.md ("Uq"): Adjust call.
17623         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
17624         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
17625         to...
17626         (arm_legitimate_address_outer_p): ... this.
17627         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
17628         static.
17629         (TARGET_LEGITIMATE_ADDRESS_P): New.
17630
17631         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17632         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
17633         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
17634         (TARGET_LEGITIMATE_ADDRESS_P): New.
17635
17636         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17637         * config/vax/vax-protos.h (legitimate_address_p): Remove.
17638         * config/vax/vax.c (legitimate_address_p): Rename to...
17639         (vax_legitimate_address_p): ... this, make static.
17640         (TARGET_LEGITIMATE_ADDRESS_P): New.
17641
17642         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17643         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
17644         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
17645         (TARGET_LEGITIMATE_ADDRESS_P): New.
17646
17647         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17648         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
17649         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
17650         (mmix_legitimate_address_p): ... this, make static.
17651         (TARGET_LEGITIMATE_ADDRESS_P): New.
17652
17653         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17654         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
17655         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
17656         (TARGET_LEGITIMATE_ADDRESS_P): New.
17657
17658 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
17659
17660         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
17661         of MODE_COMPLEX_INT.
17662
17663 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
17664
17665         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
17666         LCT_NORMAL in function call.
17667         * mips-tdump.c (print_file_desc): Add cast to enum type.
17668         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
17669         (mark_stabs): Add casts to enum types.
17670         (parse_stabs_common): Add casts to enum types.
17671
17672 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
17673
17674         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
17675         Check for invalid values of LETTER.
17676
17677 2009-05-13  Taras Glek  <tglek@mozilla.com>
17678
17679         * attribs.c (register_attribute): moved out attribute registration
17680         into register_attribute.
17681         * doc/plugins.texi: Documented register_attribute and
17682         PLUGIN_ATTRIBUTES.
17683         * gcc-plugin.h: Added forward decl for register_attribute.
17684         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
17685         * plugin.c (register_callback, invoke_plugin_callbacks): Added
17686         PLUGIN_ATTRIBUTES boilerplate.
17687
17688 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
17689
17690         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
17691         values even in sentinel and empty entries.
17692         (ms_printf_flag_specs):  Likewise.
17693         (ms_scanf_flag_specs):  Likewise.
17694         (ms_strftime_flag_specs):  Likewise.
17695         (ms_print_char_table):  Likewise.
17696         (ms_scan_char_table):  Likewise.
17697         (ms_time_char_table):  Likewise.
17698
17699 2009-05-13  Doug Kwan  <dougkwan@google.com>
17700
17701         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
17702
17703 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
17704
17705         * config/mips/mips.md (store): Add attributes for QI and HI.
17706         Update comment.
17707         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
17708         (truncdi<mode>2): ... this new pattern.
17709
17710 2009-05-13  Brad Hards  <bradh@kde.org>
17711
17712         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
17713
17714 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
17715             Ben Elliston <bje@au.ibm.com>
17716
17717         PR middle-end/40035
17718         * dse.c (check_mem_read_rtx): Guard against width == -1.
17719
17720 2009-05-13  Michael Matz  <matz@suse.de>
17721
17722         PR middle-end/39976
17723         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
17724         (trivially_conflicts_p): New function.
17725         (insert_backedge_copies): Use it.
17726
17727 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
17728
17729         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
17730         (handle_stdc_pragma): Use new enum constant names.
17731         (handle_pragma_float_const_decimal64): Ditto.
17732
17733 2009-05-13  Ian Lance Taylor  <iant@google.com>
17734
17735         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
17736         tree.def.
17737
17738 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
17739
17740         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
17741         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
17742         multilibs.
17743         * config/m68k/m68k.h (FL_UCLINUX): Define.
17744
17745 2009-05-13  Jan Hubicka  <jh@suse.cz>
17746
17747         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
17748
17749 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
17750
17751         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
17752         unless -fschedule-insns is specified.
17753
17754 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
17755
17756         PR target/39561
17757         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
17758         TARGET_EXPAND_CBRANCHDI4.
17759         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
17760         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
17761         (cmpeqdi): Fix comment.
17762
17763 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
17764
17765         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
17766         (sh_legitimate_address_p): Likewise.
17767         * config/sh/sh.c (sh_legitimate_index_p): New.
17768         (sh_legitimate_address_p): Likewise.
17769         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
17770         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
17771         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
17772         (MAYBE_BASE_REGISTER_RTX_P): New macro.
17773         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
17774         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
17775         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
17776         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
17777         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
17778
17779 2009-05-12  Jan Hubicka  <jh@suse.cz>
17780
17781         * tree-inline.c (estimate_operator_cost): Add operands;
17782         when division happens by constant, it is cheap.
17783         (estimate_num_insns): Loads and stores are not having cost of 0;
17784         EH magic stuff is cheap; when computing runtime cost of switch,
17785         use log2 base of amount of its cases; builtin_expect has cost of 0;
17786         compute cost for moving return value of call.
17787         (init_inline_once): Initialize time_based flags.
17788         * tree-inline.h (eni_weights_d): Add time_based flag.
17789
17790 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
17791
17792         * df-core.c: Update head documentation.
17793
17794 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
17795
17796         PR bootstrap/40118
17797         * rs6000.c (rs6000_generate_compare): Use op1b instead of
17798         shadowing exisiting variable op1.
17799
17800 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
17801
17802         PR target/37179
17803         * config/i386/driver-i386.c (processor_signatures): New enum.
17804         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
17805         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
17806         processor signature to detect geode processor.
17807
17808 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
17809
17810         Revert:
17811
17812         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
17813
17814         * optabs.c (prepare_cmp_insn): Temporarily disable test that
17815         causes spurious differences between trunk and cond-optab branch.
17816
17817 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
17818
17819         * dojump.c (compare_from_rtx): Delete.
17820         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
17821         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
17822         if the comparison does not satisfy the predicate; test predicates for
17823         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
17824         further if one existing pattern fails.
17825         * expr.h (compare_from_rtx): Delete.
17826         (prepare_operand): Declare it.
17827         * optabs.c: Change "lib call" to "libcall" throughout.
17828         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
17829         HAVE_conditional_trap, emit_cmp_insn): Delete.
17830         (can_compare_p): Delete cmp_optab case.
17831         (prepare_float_lib_cmp): Return an rtx and a machine mode.
17832         Accept other parameters by value.
17833         (prepare_operand): Make non-static.
17834         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
17835         other parameters by value.  Try to widen operands here based on
17836         an optab_methods argument and looking at cbranch_optab.
17837         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
17838         loop.  Use cbranch_optab directly.
17839         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
17840         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
17841         assertion.
17842         (emit_conditional_move, emit_conditional_add): Inline what's needed
17843         of compare_from_rtx, using new prepare_cmp_insn for the rest.
17844         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
17845         with COMPARE.  Move cmov_optab and cstore_optab above
17846         with cbranch_optab, move cmp_optab down with ucmp_optab,
17847         remove tst_otpab.  Do not initialize trap_rtx.
17848         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
17849         for trap code.  Do not check HAVE_conditional_trap.  Use
17850         prepare_cmp_insn.  Accept no predicate for operand 3.
17851         * optabs.h (OTI_cmp): Mark as used only for libcalls.
17852         (OTI_ctrap, ctrap_optab): New.
17853         (tst_optab): Delete.
17854         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
17855         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
17856         with lookup of ctrap_optab.
17857         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
17858         Delete.
17859         (ctrap_optab): New.
17860
17861         * combine.c (combine_simplify_rtx, simplify_set): Do not
17862         special case comparing against zero for cc0 machines.
17863         * simplify-rtx.c (simplify_binary_operation_1): Never remove
17864         COMPARE on cc0 machines.
17865         (simplify_relational_operation): Return a new expression when
17866         a COMPARE could be removed.
17867         * final.c (final_scan_insn): Compare cc_status values
17868         against LHS of a (compare FOO (const_int 0)) cc0 source.
17869         Also check if cc_status.value is the full compare.
17870
17871         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
17872         (cstoreMM4): Document.
17873         (conditional_trap): Document ctrapMM4 instead.
17874         (sync_compare_and_swapMM): Refer to cbranchcc4.
17875         (Dependent Patterns): Eliminate obsolete information referring to
17876         the old jump optimization phase.
17877         (Canonicalization): Include cbranchcc4 case, omit canonicalization
17878         of compares with 0 on cc0 machines.
17879         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
17880         avoiding references to cc0.  Remove text about storing operands
17881         in cmpMM.
17882         * doc/tm.texi (Condition Codes): Include blurb on different
17883         condition code representations, separate into subsections for
17884         CC0, MODE_CC and conditional execution.
17885
17886         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
17887         alpha_emit_setcc): Accept operands and a machine mode.
17888         * config/alpha/alpha.c (alpha_emit_conditional_branch):
17889         Get code/op0/op1 from operands, use machine mode argument
17890         instead of alpha_compare.fp_p.  Emit the branch here.
17891         (alpha_emit_setcc): Likewise, and return boolean.
17892         (alpha_emit_conditional_move): Likewise.  Assert that
17893         cmp_op_mode == cmp_mode, and simplify accordingly.
17894         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
17895         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
17896         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
17897         Delete.
17898         (stack probe test): Use cbranchdi4.
17899         * config/alpha/predicates.md (alpha_cbranch_operator): New.
17900
17901         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
17902         * config/arc/arc.h (movsicc, movsfcc): Use it.
17903         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
17904         (cbranchsi4, cstoresi4): New.
17905         (cmpsi, bCC and sCC expanders): Remove.
17906
17907         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
17908         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
17909         * config/arm/predicates.md (arm_comparison_operator): Only include
17910         floating-point operators if there is a hardware floating-point unit.
17911         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
17912         deferring to cbranch_cc and cstore_cc respectively.
17913         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
17914         cbranch_cc, cstore_cc): New.
17915         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
17916         arm_compare_op1.
17917         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
17918
17919         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
17920         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
17921         as an argument.
17922         (adjust_insn_length): Adjust calls.
17923         (avr_reorg): Handle (compare (foo) (const_int 0)).
17924         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
17925         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
17926         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
17927         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
17928         (bCC): Remove.
17929         (cbranchqi4, cbranchhi4, cbranchsi4): New.
17930         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
17931
17932         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
17933         (cbranchsi4, cstorebi4, cstoresi4): New.
17934         (movbisi): This insn is duplicate, split it to zero_extend.
17935         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
17936         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
17937         (bfin_optimize_loop): Use cbranch expander.
17938         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
17939         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
17940         (bfin_bimode_comparison_operator): ... this.
17941         (bfin_direct_comparison_operator): New.
17942
17943         * config/cris/cris.c (cris_normal_notice_update_cc): Look
17944         inside (compare FOO (const_int 0)).
17945         (cris_rtx_costs): Handle ZERO_EXTRACT.
17946         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
17947         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
17948         (*tstdi_v32): Delete.
17949         (*cmpdi_non_v32): Add M alternative for operand 1.
17950         (cmpsi, cmp<mode>): Make private.
17951         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
17952         with COMPARE.
17953         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
17954
17955         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
17956         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
17957         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
17958         (cc_reg_operand): New.
17959         (any_cond): Delete.
17960         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
17961         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
17962         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
17963         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
17964         crx_expand_scond): Delete.
17965
17966         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
17967         (cbranchsi4): New.
17968         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
17969         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
17970
17971         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
17972         cstoresi4, cstoresf4, cstoredf4): New.
17973         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
17974         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
17975         Receive the entire operands array.
17976         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
17977         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
17978         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
17979         Get test/op0/op1 from the operands array.
17980         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
17981
17982         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
17983         (h8300_expand_store): New.
17984         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
17985         (const_int 0)).
17986         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
17987         (h8300_expand_store): New.
17988         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
17989         or do not try to produce (set (cc0) REG).
17990         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
17991         change a compare into a move to a scratch register.  Disable some
17992         peepholes when comparing with zero.
17993         (tstsi, tsthi, tstsi, cmpqi): Make private.
17994         (cmphi): Delete.
17995         (bCC, sCC): Delete.
17996         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
17997         cstoresi4): New.
17998
17999         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
18000         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
18001         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
18002         (ix86_emit_i387_log1p): Use cbranchxf2.
18003         (ix86_expand_setcc): Return void.
18004         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
18005         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
18006         cmp<MODEF>, cmpcc): Remove.
18007         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
18008         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
18009         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
18010         (sCC and bCC expanders): Remove.
18011         (stack_protect_test): Use cbranchcc4.
18012
18013         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
18014         Delete.
18015         (ia64_expand_compare): Accept three rtx by reference and return void.
18016         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
18017         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
18018         from *expr.  Update *expr with the BImode comparison to do.
18019         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
18020         cmptf, bCC, sCC, conditional_trap): Delete.
18021         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
18022         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
18023         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
18024         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
18025         * config/ia64/predicates.md (ia64_cbranch_operator): New.
18026
18027         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
18028         type of last argument.
18029         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
18030         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
18031         use machine mode argument instead of branch_type.  Remove dead
18032         code for floating-point comparisons.
18033         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
18034         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
18035         Remove.
18036         (cbranchsi4, cstoresi4): New.
18037         * config/iq2000/predicates.md (reg_or_const_operand): New.
18038
18039         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
18040         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
18041         (b<code>_op): Rewrite to...
18042         (bcc_op): ... this, using match_operator.
18043         (s<code>_op): Rewrite to...
18044         (scc_op): ... this, using match_operator.
18045         (s<code>_24_op): Rewrite to...
18046         (scc_op_24): ... this, using match_operator.
18047         (s<code>_<mode>): Rewrite to...
18048         (cstore<mode>4): ... this, using match_operator.
18049         (s<code>_<mode>_24): Rewrite to...
18050         (cstore<mode>4_24): ... this, using match_operator.
18051         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
18052         m32c_unpend_compare, m32c_expand_scc): Delete.
18053         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
18054         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
18055         (m32c_expand_movcc): Change NE to EQ if necessary.
18056         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
18057
18058         * config/m32r/m32r-protos.h (gen_cond_store): New.
18059         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
18060         (gen_cond_store): New, from sCC patterns.
18061         (m32r_expand_block_move): Use cbranchsi4.
18062         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
18063         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
18064         (cbranchsi4, cstoresi4): New.
18065
18066         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
18067         Delete.
18068         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
18069         (m68hc11_notice_update_cc): Look into a compare with 0.
18070         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
18071         Delete.
18072         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
18073         cmphi, cmpqi, bCC): Delete.
18074         (cbranchsi4, cbranchhi4, cbranchqi4): New.
18075         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
18076         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
18077         sets with COMPARE.
18078
18079         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
18080         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
18081         * config/m68k/constraints.md (H): New.
18082         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
18083         the define_insn below.
18084         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
18085         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
18086         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
18087         patterns): Wrap RHS with COMPARE.
18088         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
18089         (*cmpdi_internal): Name this pattern.
18090         (cmpdi): Change to define_insn.
18091         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
18092         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
18093         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
18094         predicate.
18095         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
18096         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
18097         (conditional_trap): Change to...
18098         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
18099         (*conditional_trap): Use the ordered_comparison_operator and
18100         const1_operand predicates.
18101         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
18102         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
18103         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
18104         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
18105
18106         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
18107         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
18108         (mcore_gen_compare): New.
18109         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
18110         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
18111         (mcore_gen_compare): ... this.
18112         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
18113         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
18114         (stack probe pattern): Use cbranchsi4.
18115
18116         * config/mips/predicates.md (mips_cstore_operator): New.
18117         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
18118         * config/mips/mips.md (any_cond): Delete.
18119         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
18120         always succeed.
18121         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
18122         fixuns_truncsfdi2): Use cbranch patterns.
18123         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
18124         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
18125         Adjust call to mips_expand_conditional_branch.
18126         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
18127         cstore<GPR:mode>4.
18128         * config/mips/mips-protos.h (mips_expand_conditional_branch,
18129         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
18130         * config/mips/mips.c (cmp_operands): Delete.
18131         (mips_emit_compare): Get comparison operands from *op0/*op1.
18132         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
18133         that it succeeds.  Use op0/op1 instead of cmp_operands.
18134         (mips_expand_conditional_branch, mips_expand_conditional_move,
18135         mips_expand_conditional_trap): Likewise.
18136         (mips_block_move_loop): Use cbranch patterns.
18137         * config/mips/mips.h (cmp_operands): Delete.
18138
18139         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
18140         (mmix_gen_compare_reg): Just return a register in the right CC mode.
18141         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
18142         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
18143         (*cmpcc_folded): Rename to...
18144         (*cmpdi_folded): this.
18145         (*cmpcc): Rename to...
18146         (*cmps): ... this.
18147         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
18148         (bCC): Remove.
18149         (cbranchdi4): New.
18150         (cbranchdf4): New.  Handle invalid comparisons here.
18151         * config/mmix/predicates.md (float_comparison_operator): New.
18152
18153         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
18154         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
18155         * config/mn10300/mn10300.md (tst): Delete.
18156         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
18157         Name these patterns and wrap RHS in a compare.
18158         (*cmpsi): Make this pattern private.  Include tst.
18159         (*cmpsf): Make this pattern private.
18160         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
18161         (compare with zero peepholes): Likewise.
18162         (bCC): Remove.
18163         (cbranchsi4, cbranchsf4): New.
18164         (casesi): Use cbranchsi4.
18165
18166         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
18167         hppa_branch_type): Delete.
18168         (return_addr_rtx): Use cbranchsi4.
18169         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
18170         Emit CCFPmode comparison here.
18171         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
18172         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
18173         hppa_branch_type): Delete.
18174         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
18175         (movsicc, movdicc): Remove references to hppa_compare_op0,
18176         hppa_compare_op1 and compare_from_rtx.
18177         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
18178         (casesi): Use cbranchsi4.
18179
18180         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
18181         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
18182         * config/pdp11/pdp11.md (register_or_const0_operand): New.
18183         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
18184         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
18185         (bCC): Delete.
18186         (cbranchdf4, cbranchhi4, cbranchqi4): New.
18187         (*branch, *branch_inverted): New.
18188
18189         * config/picochip/picochip.md (cbranchhi4): Use
18190         ordered_comparison_operator.
18191         (cmphi, bCC): Remove.
18192
18193         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
18194         (trap_comparison_operator): Delete.
18195         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
18196         rs6000_emit_cbranch): Accept mode and operands.
18197         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
18198         rs6000_compare_fp_p): Delete.
18199         (rs6000_generate_compare): Accept mode and comparison.  Extract code
18200         and op0/op1 from there.  Replace references to rs6000_compare_op0
18201         and rs6000_compare_op1.
18202         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
18203         extract result from passed operands.
18204         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
18205         extract loc from passed operands.
18206         (rs6000_emit_cmove): Likewise.
18207         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
18208         rs6000_compare_fp_p): Delete.
18209         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
18210         (cbranch<GPR>4, cbranch<FP>4): New.
18211         (cstore<mode>4): New.  Consolidate here all choices about when to use
18212         portable or specialized sCC sequences.
18213         (stack_protect_test): Use cbranchsi4.
18214         (conditional_trap): Replace with ctrap<GPR>4.
18215         (conditional trap insn): Replace trap_comparison_operator with
18216         ordered_comparison_operator.
18217
18218         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
18219         (s390_emit_prologue): Use ctrap.
18220         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
18221         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
18222         New predicates replacing...
18223         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
18224         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
18225         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
18226         (add<mode>cc): Do not use s390_compare_op0/op1.
18227         (s<code>): Change to...
18228         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
18229         (seq): Change to...
18230         (cstorecc4): ... this.  Handle EQ or NE equally.
18231         (*sne): Un-privatize for use in cstorecc4.
18232         (b<code>): Change to...
18233         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
18234         (conditional_trap): Replace with...
18235         (ctrap<GPR>4, ctrap<FP>4): ... these.
18236         (stack_protect): Use cbranchcc4.
18237
18238         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
18239         * config/score/score-protos.h (score_gen_cmp): Delete.
18240         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
18241         (score_block_move-loop): Use cbranchsi4.
18242         * config/score/score.md (cbranchsi4): New.
18243         (cmpsi, bCC): Delete.
18244         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
18245         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
18246         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
18247         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
18248         * config/score/score3.h (score3_gen_cmp): Delete.
18249         * config/score/score7.h (score7_gen_cmp): Delete.
18250
18251         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
18252         (sh_emit_scc_to_t): ... this.  Return void.
18253         (from_compare): Rename to...
18254         (sh_emit_compare_and_branch): ... this.
18255         (sh_emit_compare_and_set): New.
18256         (sh_expand_t_scc): Accept operands.
18257         * config/sh/predicates.md (sh_float_comparison_operator): New.
18258         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
18259         (prepare_scc_operands): Rename to...
18260         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
18261         arguments.
18262         (sh_emit_cheap_store_flag): New.
18263         (sh_emit_set_t_insn): New.
18264         (from_compare): Rename to...
18265         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
18266         handling of TARGET_SH2E floating point to avoid recursive call.
18267         Generate branch here.
18268         (sh_emit_compare_and_set): New.
18269         (sh_expand_t_scc): Get op0/op1 from arguments.
18270         (sh_emit_cheap_store_flag): New.
18271         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
18272         cases.
18273         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
18274         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
18275         (movsicc, movdicc): Do nothing when it recreated operands from
18276         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
18277         prepare_scc_operands (now sh_emit_scc_to_t).
18278         (udivdi3): Use cstoresi4.
18279         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
18280         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
18281         (cbranchint4_media, cbranchfp4_media): New.
18282         (casesi): Use cbranchdi4.
18283         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
18284         Delete.
18285         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
18286         (movnegt): Remove second operand.
18287         (cbranchsf4, cbranchdf4): New.
18288         (stack_protect): Use cbranchdi4/cbranchsi4.
18289
18290         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
18291         (gen_compare_reg): Accept comparison, extract part of it to...
18292         (gen_compare_reg_1): ... this.
18293         (gen_compare_operator): Delete.
18294         (gen_v9_scc): Accept separate destination, comparison code and arms.
18295         Do not use sparc_compare_op0/sparc_compare_op1.
18296         (emit_scc_insn, emit_conditional_branch_insn): New.
18297         (emit_v9_brxx): Make static.  Remove useless assertion.
18298         (sparc_emit_float_lib_cmp): Return RTL instead of calling
18299         emit_cmp_insn.
18300         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
18301         * config/sparc/sparc-protos.h (gen_compare_reg,
18302         sparc_emit_float_lib_cmp): Adjust prototype.
18303         (emit_scc_insn, emit_conditional_branch_insn): New.
18304         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
18305         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
18306         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
18307         iterators to the top.
18308         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
18309         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
18310         snedi_special_trunc): Delete.
18311         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
18312         and snedi_special_trunc.
18313         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
18314         cbranchdi4, cbranch<F:mode>4): New.
18315         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
18316         here.  Use gen_compare_reg instead of gen_compare_operator.
18317         (conditional_trap): Replace with...
18318         (ctrapsi4, ctrapdi4): ... this.
18319         (stack_protect_test): Use cbranchcc4.
18320
18321         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
18322         argument to rtx.
18323         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
18324         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
18325         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
18326         from operands[0] or operands[3] depending on is_set.
18327         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
18328         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
18329         cmpdf, bCC), sCC: Remove.
18330         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
18331         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
18332         cstoredf4): New.
18333         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
18334         spu_emit_branch_or_set.
18335
18336         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
18337         Add two arguments.
18338         * config/stormy16/stormy16.h (xstormy16_compare_op0,
18339         xstormy16_compare_op1): Delete.
18340         * config/stormy16/stormy16.c (xstormy16_compare_op0,
18341         xstormy16_compare_op1): Delete.
18342         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
18343         Adjust calls.
18344         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
18345         (cmphi, cmpsi, bCC): Remove.
18346
18347         * config/v850/v850.md (tstsi, cmpsi): Fold into...
18348         (*cmpsi): ... this one.
18349         (cbranchsi4, cstoresi4): New.
18350         (bCC expanders): Delete.
18351         (sCC insns): Fold into...
18352         (*setcc): ... this one.
18353         (casesi): Do not use gen_cmpsi and gen_bgtu.
18354         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
18355         (movsicc): Simplify.
18356         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
18357
18358         * config/vax/vax-protos.h (cond_name): New.
18359         (vax_output_conditional_branch): Remove.
18360         * config/vax/vax.c (cond_name): New.
18361         (vax_output_conditional_branch): Remove.
18362         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
18363         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
18364         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
18365         (bit<VAXint>): Wrap source with (compare).
18366         (b<code> and following unnamed pattern): Rename to *branch and
18367         *branch_reversed.  Change macroization to match_operator.
18368         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
18369
18370         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
18371         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
18372         Change last argument to machine_mode.
18373         (xtensa_expand_scc): Add machine_mode argument.
18374         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
18375         (gen_conditional_move, xtensa_expand_conditional_branch,
18376         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
18377         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
18378         Adjust operand numbers.
18379         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
18380         Delete.
18381         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
18382         (cmpsi, cmpsf, b<code>, s<code>): Delete.
18383         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
18384
18385 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
18386
18387         * optabs.c (prepare_cmp_insn): Temporarily disable test that
18388         causes spurious differences between trunk and cond-optab branch.
18389
18390 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
18391
18392         PR target/37137
18393         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
18394
18395 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
18396
18397         * tree.c (iterative_hash_pointer): Delete.
18398         (iterative_hash_expr): Short-circuit handling of NULL pointer.
18399         Hash UIDs and versions of SSA names.  Don't special-case built-in
18400         function declarations.
18401
18402 2009-05-11  Ian Lance Taylor  <iant@google.com>
18403
18404         PR bootstrap/40103
18405         * graphite.c: Force -Wc++-compat to only be a warning before
18406         #including "cloog/cloog.h".
18407
18408 2009-05-11  Martin Jambor  <mjambor@suse.cz>
18409
18410         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
18411
18412 2009-05-11  Jan Hubicka  <jh@suse.cz>
18413
18414         * tree-ssa-loop-ivcanon.c: Include target.h
18415         (struct loop_size): new structure.
18416         (constant_after_peeling): New predicate.
18417         (tree_estimate_loop_size): New function.
18418         (estimated_unrolled_size): Rewrite for new estimates.
18419         (try_unroll_loop_completely): Use new estimates.
18420         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
18421
18422 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18423
18424         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
18425         libcpp interface change.
18426         (spu_macro_to_expand): Likewise.
18427
18428 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
18429
18430         PR tree-optimization/40026
18431         * gimplify.c (gimplify_init_constructor): Change initial conditional
18432         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
18433         optimize_compound_literals_in_ctor.
18434
18435 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
18436
18437         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
18438         New devices.
18439         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
18440
18441 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
18442
18443         * tree-vect-data-refs.c (vect_analyze_group_access): Use
18444         HOST_WIDE_INT for gap.
18445
18446 2009-05-11  Ira Rosen  <irar@il.ibm.com>
18447
18448         PR tree-optimization/40074
18449         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
18450         account in group size and step comparison.
18451
18452 2009-05-11  Richard Guenther  <rguenther@suse.de>
18453
18454         * passes.c (init_optimization_passes): Strip now incorrect comment.
18455         (execute_function_todo): Do not set PROP_alias.
18456         * tree-pass.h (PROP_alias): Remove.
18457         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
18458         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
18459         * tree-nrv.c (pass_return_slot): Likewise.
18460         * tree-object-size.c (pass_object_sizes): Likewise.
18461         * tree-ssa-dom.c (pass_dominator): Likewise.
18462         (pass_phi_only_cprop): Likewise.
18463         * tree-ssa-dse.c (pass_dse): Likewise.
18464         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
18465         (pass_cselim): Likewise.
18466         * tree-ssa-pre.c (pass_pre): Likewise.
18467         (pass_fre): Likewise.
18468         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
18469         * tree-ssa-sink.c (pass_sink_code): Likewise.
18470         * tree-stdarg.c (pass_stdarg): Likewise.
18471         * tree-tailcall.c (pass_tail_calls): Likewise.
18472         * tree-vrp.c (pass_vrp): Likewise.
18473
18474 2009-05-10  Ian Lance Taylor  <iant@google.com>
18475
18476         * basic-block.h (enum profile_status): Break out of struct
18477         control_flow_graph.
18478         * cgraph.h (struct inline_summary): Break out of struct
18479         cgraph_local_info.
18480         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
18481         of struct cgraph_order_sort.
18482         * combine.c (enum undo_kind): New enum, broken out of struct undo.
18483         * cse.c (struct branch_path): Break out of struct
18484         cse_basic_block_data.
18485         * except.h (enum eh_region_type): Break out of struct eh_region.
18486         * gcc.c (enum add_del): Break out of struct modify_target.
18487         * genrecog.c (enum decision_type): Break out of struct decision_test.
18488         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
18489         ggc_pch_data.
18490         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
18491         * regmove.c (enum match_use): New enum, broken out of struct match.
18492         * sched-int.h (enum post_call_group): New enum, broken out of
18493         struct deps.
18494         (struct deps_reg): Break out of struct deps.
18495         * target.h (struct asm_int_op): Break out of struct gcc_target.
18496         * tree-eh.c (struct goto_queue_node): Break out of struct
18497         leh_tf_state.
18498         * tree-inline.h (enum copy_body_cge_which): Break out of
18499         copy_body_data.
18500         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
18501
18502         * c-decl.c (in_struct, struct_types): New static variables.
18503         (pushtag): Add loc parameter.  Change all callers.
18504         (lookup_tag): Add ploc parameter.  Change all callers.
18505         (check_compound_literal_type): New function.
18506         (parser_xref_tag): Add loc parameter.  Change all callers.  If
18507         -Wc++-compat, warn about struct/union/enum types defined within a
18508         struct or union.
18509         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
18510         and loc parameters.  Change all callers.  Change error calls to
18511         error_at, using loc.  For a redefinition, if the location of the
18512         original definition is known, report it.  Set in_struct and
18513         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
18514         (finish_struct): Add new parameters enclosing_in_struct and
18515         enclosing_struct_types.  Change all callers.  Set
18516         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
18517         in the struct.  If in a struct, add this struct to struct_types.
18518         (start_enum): Add loc parameter.  Change all callers.  Use
18519         error_at for errors, using loc.  For a redefinition, if the
18520         location of the original definition is known, report it.  If in a
18521         struct, add this enum type to struct_types.  If -Wc++-compat warn
18522         if in sizeof, typeof, or alignof.
18523         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
18524         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
18525         (c_parser_enum_specifier): Get enum location for start_enum.
18526         (c_parser_struct_or_union_specifier): Get struct location for
18527         start_struct.  Save in_struct and struct_types status between
18528         start_struct and finish_struct.
18529         (c_parser_cast_expression): Get location of cast.
18530         (c_parser_alignof_expression): Get location of type.
18531         (c_parser_postfix_expression): Likewise.
18532         (c_parser_postfix_expression_after_paren_type): Add type_loc
18533         parameter.  Change all callers.  Call check_compound_literal_type.
18534         Use type_loc for error about variable size type.
18535         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
18536         of an enum constant from an enum type defined in a struct or union.
18537         (c_cast_expr): Add loc parameter.  Change all callers.  If
18538         -Wc++-compat, warn about defining a type in a cast.
18539         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
18540         (start_enum, start_struct, finish_struct): Update declarations.
18541         (parser_xref_tag, c_cast_expr): Update declarations.
18542         (check_compound_literal_type): Declare.
18543
18544 2009-05-11  Ben Elliston  <bje@au.ibm.com>
18545
18546         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
18547         for recent libcpp interface change.
18548         (rs6000_macro_to_expand): Likewise.
18549
18550 2009-05-10  Michael Matz  <matz@suse.de>
18551
18552         PR target/40031
18553         * config/arm/arm.c (require_pic_register): Emit on entry edge,
18554         not at entry of function.
18555
18556 2009-05-10  Richard Guenther  <rguenther@suse.de>
18557
18558         PR tree-optimization/40081
18559         Revert
18560         * tree-sra.c (instantiate_element): Instantiate scalar replacements
18561         using the main variant of the element type.  Do not fiddle with
18562         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
18563
18564         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
18565         structs with volatile fields.
18566
18567 2009-05-10  Jan Hubicka  <jh@suse.cz>
18568
18569         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
18570         (estimate_move_cost): Assert that it does not get called for
18571         VOID_TYPE_P.
18572         (estimate_num_insns): Skip VOID types in argument handling.
18573         (optimize_inline_calls): Delete unreachable blocks and verify that
18574         callgraph is valid.
18575
18576 2009-05-10  Jan Hubicka  <jh@suse.cz>
18577
18578         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
18579         * cgraph.c (cgraph_mark_address_taken_node): New function.
18580         (dump_cgraph_node): Dump new flag.
18581         * cgraph.h (struct cgraph_node): Add address_taken.
18582         (cgraph_mark_address_taken_node): New function.
18583         * ipa.c (cgraph_postorder): Prioritize functions with address taken
18584         since new direct calls can be born.
18585
18586 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
18587
18588         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
18589         tok->val.node.node.
18590
18591 2009-05-10  Jan Hubicka  <jh@suse.cz>
18592
18593         PR middle-end/40084
18594         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
18595         argument; rewrite.
18596         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
18597         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
18598         * tree-inline.c (copy_bb): Set frequency correctly.
18599         (fold_marked_statements): Update call to
18600         cgraph_update_edges_for_call_stmt.
18601
18602 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
18603
18604         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
18605         identifiers in diagnostics.
18606         * config/arm/arm.c (arm_handle_fndecl_attribute,
18607         arm_handle_isr_attribute): Likewise.
18608         * config/avr/avr.c (avr_handle_progmem_attribute,
18609         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
18610         * config/bfin/bfin.c (handle_int_attribute,
18611         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
18612         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
18613         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
18614         Likewise.
18615         * config/darwin.c (darwin_handle_kext_attribute,
18616         darwin_handle_weak_import_attribute): Likewise.
18617         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
18618         h8300_handle_eightbit_data_attribute,
18619         h8300_handle_tiny_data_attribute): Likewise.
18620         * config/i386/i386.c (ix86_handle_cconv_attribute,
18621         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
18622         * config/i386/winnt.c (ix86_handle_shared_attribute,
18623         ix86_handle_selectany_attribute): Likewise.
18624         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
18625         * config/m32c/m32c.c (function_vector_handler): Likewise.
18626         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
18627         m68hc11_handle_fntype_attribute): Likewise.
18628         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
18629         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
18630         * config/mips/mips.c (mips_insert_attributes,
18631         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
18632         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
18633         rs6000_handle_struct_attribute): Likewise.
18634         * config/sh/sh.c (sh_insert_attributes,
18635         sh_handle_resbank_handler_attribute,
18636         sh_handle_interrupt_handler_attribute,
18637         sh2a_handle_function_vector_handler_attribute,
18638         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
18639         Likewise.
18640         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
18641         * config/spu/spu.c (spu_handle_fndecl_attribute,
18642         spu_handle_vector_attribute): Likewise.
18643         * config/stormy16/stormy16.c
18644         (xstormy16_handle_interrupt_attribute): Likewise.
18645         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
18646         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
18647
18648 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
18649
18650         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
18651         (pp_translate_identifiers): New.
18652         (pp_identifier): Only conditionally translate identifier to locale
18653         character set.
18654         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
18655         (pp_base_tree_identifier): Only conditionally translate identifier
18656         to locale character set.
18657         * c-pretty-print.c (M_): Define.
18658         (pp_c_type_specifier, pp_c_primary_expression): Mark English
18659         fragments for conditional translation with M_.
18660         * tree-pretty-print.c (maybe_init_pretty_print): Disable
18661         identifier translation.
18662
18663 2009-05-10  Richard Guenther  <rguenther@suse.de>
18664
18665         PR tree-optimization/40081
18666         * tree-sra.c (instantiate_element): Instantiate scalar replacements
18667         using the main variant of the element type.  Do not fiddle with
18668         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
18669
18670 2009-05-09  Jan Hubicka  <jh@suse.cz>
18671
18672         PR middle-end/40080
18673         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
18674         indirect calls; verify cgraph afterwards.
18675
18676 2009-05-09  Jan Hubicka  <jh@suse.cz>
18677
18678         PR bootstrap/40082
18679         * ipa.c (update_inlined_to_pointer): New function.
18680         (cgraph_remove_unreachable_nodes): Use it.
18681
18682 2009-05-09  Jan Hubicka  <jh@suse.cz>
18683
18684         * tree-eh.c (struct leh_state): Remove prev_try.
18685         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
18686         not track prev_try.
18687         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
18688         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
18689         remove_eh_handler_and_replace, foreach_reachable_handler,
18690         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
18691         * except.h (struct eh_region): Remove eh_region_u_cleanup.
18692         (gen_eh_region_cleanup): Update prototype.
18693
18694 2009-05-09  Jan Hubicka  <jh@suse.cz>
18695
18696         PR middle-end/40043
18697         * except.c (copy_eh_region): Always set prev_try.
18698         (redirect_eh_edge_to_label): Find outer try.
18699         (foreach_reachable_handler): When looking for prev try
18700         handle case where previous try is not going to be taken.
18701
18702 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
18703
18704         PR tree-optimization/40049
18705         * tree-vect-stmts.c (vectorizable_operation): If the machine has
18706         only vector/vector shifts, convert the type of the constant to the
18707         appropriate type to avoid building incorrect trees, which
18708         eventually have problems with garbage collection.
18709
18710 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
18711
18712         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
18713         -1 for complex floating-point types if honoring signed zeros.
18714
18715 2009-05-08  Jan Hubicka  <jh@suse.cz>
18716
18717         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
18718         argument; handle correctly when profile is absent.
18719         (build_cgraph_edges): Update.
18720         (rebuild_cgraph_edges): Update.
18721         * cgraph.c: Do not include varray.h.
18722         (cgraph_set_call_stmt_including_clones): New function.
18723         (cgraph_create_edge_including_clones): Likewise
18724         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
18725         (cgraph_update_edges_for_call_stmt): Handle clones.
18726         (cgraph_remove_node): Handle clone tree.
18727         (cgraph_remove_node_and_inline_clones): New function.
18728         (dump_cgraph_node): Dump clone tree.
18729         (cgraph_clone_node): Handle clone tree.
18730         (clone_function_name): Bring here from tree-inline.c.
18731         (cgraph_create_virtual_clone): New function.
18732         * cgraph.h (ipa_replace_map): Move here from ipa.h.
18733         (cgraph_clone_info): New function.
18734         (strut cgraph_node): Add clone_info and new clone tree pointers.
18735         (cgraph_remove_node_and_inline_clones,
18736         cgraph_set_call_stmt_including_clones,
18737         cgraph_create_edge_including_clones,
18738         cgraph_create_virtual_clone): Declare.
18739         (cgraph_function_versioning): Use VEC argument.
18740         (compute_call_stmt_bb_frequency): Update prototype.
18741         (cgraph_materialize_all_clones): New function.
18742         * ipa-cp.c (ipcp_update_cloned_node): Remove.
18743         (ipcp_create_replace_map): Update to VECtors.
18744         (ipcp_update_callgraph): Use virtual clones.
18745         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
18746         (ipcp_update_profiling): Do not update local profiling.
18747         (ipcp_insert_stage): Use VECtors and virtual clones.
18748         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
18749         (clone_of_p): New function.
18750         (cgraph_preserve_function_body_p): Use clone tree.
18751         (cgraph_optimize): Materialize clones.
18752         (cgraph_function_versioning): Update for VECtors.
18753         (save_inline_function_body): Use clone tree.
18754         (cgraph_materialize_clone): New function.
18755         (cgraph_materialize_all_clones): Likewise.
18756         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
18757         * ipa.c: Include gimple.h.
18758         (cgraph_remove_unreachable_nodes): Use clone tree.
18759         * ipa-prop.c (ipa_note_param_call): Update call to
18760         compute_call_stmt_bb_frequencycall.
18761         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
18762         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
18763         (copy_bb): Handle updating of clone tree; add new edge when new call
18764         appears.
18765         (expand_call_inline): Be strict about every call having edge.
18766         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
18767         (delete_unreachable_blocks_update_callgraph): New function.
18768         (tree_function_versioning): Use VECtors; always remove unreachable
18769         blocks and fold conditionals.
18770         * tree-inline.h: Do not include varray.h.
18771         (tree_function_versioning): Remove.
18772         * Makefile.in (GTFILES): Remove tree-inline.c
18773         * passes.c (do_per_function): Do only functions having body.
18774         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
18775         tree.
18776
18777 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
18778             Andrew Morrow  <acm@google.com>
18779
18780         PR c/36892
18781         * c-common.c (c_common_attribute_table): Permit deprecated
18782         attribute to take an optional argument.
18783         (handle_deprecated_attribute): If the optional argument to
18784         __attribute__((deprecated)) is not a string ignore the attribute
18785         and emit a warning.
18786
18787         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
18788         * c-typeck.c (build_component_ref): Likewise.
18789         (build_external_ref): Likewise.
18790
18791         * toplev.c (warn_deprecated_use): Add an attribute argument.
18792         Emit the message associated with __attribute__((deprecated)).
18793
18794         * toplev.h (warn_deprecated_use): Updated.
18795
18796         * doc/extend.texi: Document new optional parameter to
18797         __attribute__((deprecated))
18798
18799 2009-05-08  Michael Eager <eager@eagercon.com>
18800
18801         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
18802         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
18803
18804 2009-05-08  Richard Guenther  <rguenther@suse.de>
18805
18806         PR tree-optimization/40062
18807         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
18808         Avoid exponential behavior.
18809
18810 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
18811
18812         PR rtl-optimization/33928
18813         PR 26854
18814         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
18815         process_uses, build_single_def_use_links): New.
18816         (update_df): Update use_def_ref.
18817         (forward_propagate_into): Use get_def_for_use instead of use-def
18818         chains.
18819         (fwprop_init): Call build_single_def_use_links and let it initialize
18820         dataflow.
18821         (fwprop_done): Free use_def_ref.
18822         (fwprop_addr): Eliminate duplicate call to df_set_flags.
18823         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
18824         df_rd_simulate_one_insn): New.
18825         (df_rd_bb_local_compute_process_def): Update head comment.
18826         (df_chain_create_bb): Use the new RD simulation functions.
18827         * df.h (df_rd_simulate_artificial_defs_at_top,
18828         df_rd_simulate_one_insn): New.
18829         * opts.c (decode_options): Enable fwprop at -O1.
18830         * doc/invoke.texi (-fforward-propagate): Document this.
18831
18832 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
18833
18834         PR c/24581
18835         * c-typeck.c (build_binary_op): Handle arithmetic between one real
18836         and one complex operand specially.
18837         * tree-complex.c (some_nonzerop): Do not identify a real value as
18838         zero if flag_signed_zeros.
18839
18840 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
18841
18842         PR rtl-optimization/33928
18843         * loop-invariant.c (record_use): Fix && vs. || mishap.
18844
18845 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
18846
18847         PR rtl-optimization/33928
18848         * loop-invariant.c (struct use): Add addr_use_p.
18849         (struct def): Add n_addr_uses.
18850         (struct invariant): Add cheap_address.
18851         (create_new_invariant): Set cheap_address.
18852         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
18853         (record_uses): Pass df_ref to record_use.
18854         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
18855         used only as such.
18856
18857 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
18858
18859         * config/sh/sh.c: Do not include c-pragma.h.
18860
18861 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18862
18863         * config/spu/spu.c: Remove include of c-common.h.
18864
18865 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
18866
18867         PR c/39037
18868         * c-common.h (mark_valid_location_for_stdc_pragma,
18869         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
18870         clear_float_const_decimal64, float_const_decimal64_p): New.
18871         * c.opt (Wunsuffixed-float-constants): New.
18872         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
18873         unsuffixed float constant, handle new warning.
18874         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
18875         * c-decl.c (c_scope): New flag float_const_decimal64.
18876         (set_float_const_decimal64, clear_float_const_decimal64,
18877         float_const_decimal64_p): New.
18878         (push_scope): Set new flag.
18879         * c-parser.c (c_parser_translation_unit): Mark when it's valid
18880         to use STDC pragmas.
18881         (c_parser_external_declaration): Ditto.
18882         (c_parser_compound_statement_nostart): Ditto.
18883         * c-pragma.c (valid_location_for_stdc_pragma,
18884         mark_valid_location_for_stdc_pragma,
18885         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
18886         handle_pragma_float_const_decimal64): New.
18887         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
18888         * cp/semantics.c (valid_location_for_stdc_pragma_p,
18889         set_float_const_decimal64, clear_float_const_decimal64,
18890         float_const_decimal64_p): New dummy functions.
18891         * doc/extend.texi (Decimal Float): Remove statement that the
18892         pragma, and suffix for double constants, are not supported.
18893         * doc/invoke.texi (Warning Options): List new option.
18894         (-Wunsuffixed-float-constants): New.
18895
18896 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
18897
18898         * config/i386/i386.c: Do not include c-common.h.
18899
18900 2009-05-07  Mark Heffernan  <meheff@google.com>
18901
18902         * doc/invoke.texi (Debugging Options): Document change of debugging
18903         dump location.
18904         * opts.c (decode_options): Make dump_base_name relative to
18905         aux_base_name directory.
18906
18907 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
18908
18909         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
18910         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
18911
18912 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
18913
18914         * Makefile.in (install-plugin): Simplify a bit.
18915
18916 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
18917
18918         * Makefile.in (OBJS-common): Add regcprop.o.
18919         (regcprop.o): New.
18920         * timevar.def (TV_CPROP_REGISTERS): New.
18921         * regrename.c (regrename_optimize): Return 0.
18922         (rest_of_handle_regrename): Delete.
18923         (pass_rename_registers): Point to regrename_optimize.
18924         (struct value_data_entry, struct value_data,
18925         kill_value_one_regno, kill_value_regno, kill_value,
18926         set_value_regno, init_value_data, kill_clobbered_value,
18927         kill_set_value, kill_autoinc_value, copy_value,
18928         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
18929         replace_oldest_value_reg, replace_oldest_value_addr,
18930         replace_oldest_value_mem, copyprop_hardreg_forward_1,
18931         debug_value_data, validate_value_data): Move...
18932         * regcprop.c: ... here.
18933         (rest_of_handle_cprop): Delete.
18934         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
18935
18936 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
18937
18938         PR middle-end/40057
18939         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
18940         GEN_INT for 1 << bitnum.
18941         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
18942         build_int_cst_type.
18943
18944 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
18945
18946         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
18947         Remove wrong description of "nand" operation.
18948
18949 2009-05-06  Richard Guenther  <rguenther@suse.de>
18950             Adam Nemet  <anemet@caviumnetworks.com>
18951
18952         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
18953         comment.  Add that if LHS is not a gimple register, then RHS1 has
18954         to be a single object (GIMPLE_SINGLE_RHS).
18955
18956 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
18957
18958         * expr.c (get_def_for_expr): Move it up in the file.
18959         (store_field): When expanding a bit-field store, look at the
18960         defining gimple stmt for the masking conversion.
18961
18962 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
18963
18964         PR middle-end/39986
18965         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
18966         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
18967         32-bit memcpy into long.
18968
18969 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
18970
18971         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
18972         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
18973         new_reg_loc_descr.
18974         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
18975         instead of appending DW_OP_deref*.
18976
18977 2009-05-06  Michael Matz  <matz@suse.de>
18978
18979         PR middle-end/40021
18980         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
18981         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
18982
18983 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
18984
18985         * Makefile.in (install-plugin): Fix srcdir handling.
18986
18987 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
18988
18989         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
18990         when processing for not_regs_needed bitmap.
18991         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
18992         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
18993         handling it for rhs.
18994
18995 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
18996
18997         * config/i386/i386.md (unnamed inc/dec peephole): Use
18998         optimize_insn_for_size_p instead of optimize_size.
18999         * config/i386/predicates.md (incdec_operand): Likewise.
19000         (aligned_operand): Likewise.
19001         * config/i386/sse.md (divv8sf3): Likewise.
19002         (sqrtv8sf2): Likewise.
19003
19004 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
19005
19006         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
19007
19008         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
19009
19010 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
19011
19012         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
19013         ssemodesuffixf2c with avxmodesuffixf2c.
19014
19015 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
19016
19017         PR c/40032
19018         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
19019
19020 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
19021
19022         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
19023         (struct tree_base): Adjust spacing for 8 bit boundaries.
19024         (struct tree_decl_common): Add decl_by_reference_flag bit.
19025         (DECL_BY_REFERENCE): Adjust.
19026         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
19027         print DECL_BY_REFERENCE bit.
19028         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
19029         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
19030         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
19031         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
19032         unconditionally.
19033
19034         PR middle-end/39666
19035         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
19036         range of the type, but default label is missing, add it with one
19037         of the existing labels instead of adding a new label for it.
19038
19039 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
19040
19041         * dwarf.h: Remove.
19042
19043 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
19044
19045         * Makefile.in (enable_plugin, plugin_includedir): New.
19046         (install): Depend on install-plugin.
19047         (PLUGIN_HEADERS): New.
19048         (install-plugin): New.
19049         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
19050
19051 2009-05-05  Richard Guenther  <rguenther@suse.de>
19052
19053         PR tree-optimization/40022
19054         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
19055         the only vuse.
19056         (phivn_valid_p): Fix tuplification error, simplify.
19057         (phiprop_insert_phi): Add dumps.
19058         (propagate_with_phi): Simplify.
19059
19060 2009-05-05  Richard Guenther  <rguenther@suse.de>
19061
19062         PR middle-end/40023
19063         * builtins.c (gimplify_va_arg_expr): Properly build the address.
19064
19065 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
19066
19067         * tree.h (strip_float_extensions): Remove duplicate declaration.
19068         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
19069         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
19070         block_ultimate_origin): Rearrange the declarations line to match the
19071         comment that indicates the .c file which the functions are defined.
19072         (dwarf2out_*, set_decl_rtl): Add comment.
19073         (get_base_address): Adjust comment.
19074         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
19075         declarations line and add comment.
19076         (is_builtin_name): Add blank after function name, for clarity.
19077
19078 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
19079
19080         * attribs.c (decl_attributes): Use %qE for identifiers in
19081         diagnostics.
19082         * cgraphunit.c (verify_cgraph_node): Translate function names to
19083         locale character set in diagnostics.
19084         * coverage.c (get_coverage_counts): Use %qE for identifiers in
19085         diagnostics.
19086         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
19087         Document that functions are named in UTF-8.
19088         * expr.c (expand_expr_real_1): Translate function names to locale
19089         character set in diagnostics.
19090         * gimplify.c (omp_notice_variable, omp_is_private,
19091         gimplify_scan_omp_clauses): Use %qE for identifiers in
19092         diagnostics.
19093         * langhooks.c (lhd_print_error_function): Translate function names
19094         to locale character set.
19095         * langhooks.h (decl_printable_name): Document that return value is
19096         in internal character set.
19097         * stmt.c: Include pretty-print.h
19098         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
19099         diagnostics.
19100         (resolve_operand_name_1): Translate named operand name to locale
19101         character set.
19102         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
19103         diagnostics.
19104         * toplev.c (announce_function): Translate function names to locale
19105         character set.
19106         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
19107         (default_tree_printer): Use pp_identifier or translate identifiers
19108         to locale character set.  Mark "<anonymous>" for translation.
19109         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
19110         for identifiers in diagnostics.
19111         * tree.c (handle_dll_attribute): Use %qE for identifiers in
19112         diagnostics.
19113         * varasm.c (output_constructor): Use %qE for identifiers in
19114         diagnostics.
19115
19116 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
19117
19118         * configure.ac: use ` ` instead of $()
19119         * configure: Regenerate.
19120
19121 2009-05-05  Ben Elliston  <bje@au.ibm.com>
19122
19123         * config/pa/linux-atomic.c: Eliminate conditional include of
19124         errno.h on non-LP64 systems to simplify build requirements.
19125
19126 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
19127
19128         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
19129         diagnostics.
19130         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
19131         and pass value to identifier_to_locale.
19132         (warn_variable_length_array): Make name a tree.
19133         (grokdeclarator): Separate diagnostic texts for named and unnamed
19134         declarators.  Use %qE for named declarators.
19135         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
19136         diagnostics.
19137         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
19138         identifiers in diagnostics.
19139         * c-typeck.c (push_member_name, start_init): Pass identifiers to
19140         identifier_to_locale.  Mark "anonymous" strings for translation.
19141
19142 2009-05-04  Michael Eager <eager@eagercon.com>
19143
19144         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
19145         address for DImode/DFmode only if double-precision FP regs.
19146
19147 2009-05-04  Michael Eager <eager@eagercon.com>
19148
19149         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
19150         TARGET_SINGLE_FLOAT check.
19151
19152 2009-05-04  Michael Eager <eager@eagercon.com>
19153
19154         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
19155
19156 2009-05-04  Michael Eager <eager@eagercon.com>
19157
19158         * gcc/config.gcc (powerpc-xilinx-eabi*): Add tm t-xilinx
19159         * config/rs6000/t-xilinx: New
19160
19161 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
19162
19163         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
19164         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
19165         * gcc/explow.c (memory_address): Use target hook.
19166         * gcc/targhooks.c (default_legitimize_address): New.
19167         * gcc/targhooks.h (default_legitimize_address): New.
19168         * gcc/target.h (legitimize_address): New.
19169         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
19170         (TARGET_INITIALIZER): Include it.
19171         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
19172
19173         * config/bfin/bfin-protos.h (legitimize_address): Remove.
19174         * config/bfin/bfin.c (legitimize_address): Remove.
19175         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
19176         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
19177         Remove.
19178         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
19179         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
19180
19181         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
19182         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
19183         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
19184         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
19185         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
19186         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
19187         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
19188         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
19189         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
19190         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
19191         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
19192         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
19193         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
19194         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
19195         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
19196         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
19197         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
19198         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
19199         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
19200         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
19201         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
19202         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
19203         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
19204
19205         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
19206         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
19207         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
19208         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
19209         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
19210         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
19211         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
19212         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
19213         (thumb_legitimize_address): Delete.
19214         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
19215         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
19216         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
19217         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
19218         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
19219         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
19220         Delete.
19221         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
19222         Delete.
19223
19224         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
19225         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
19226         * config/m32r/m32r.c (m32r_legitimize_address): New.
19227         * config/m68k/m68k.c (m68k_legitimize_address): New.
19228         * config/score/score.c (score_legitimize_address): Standardize.
19229         * config/score/score3.c (score3_legitimize_address): Standardize.
19230         * config/score/score3.h (score3_legitimize_address): Adjust.
19231         * config/score/score7.c (score7_legitimize_address): Standardize.
19232         * config/score/score7.h (score7_legitimize_address): Adjust.
19233         * config/sh/sh.c (sh_legitimize_address): New.
19234         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
19235
19236         * gcc/config/s390/s390.c (legitimize_address): Rename to...
19237         (s390_legitimize_address): ... this.
19238         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
19239         (sparc_legitimize_address): ... this.
19240         * gcc/config/i386/i386.c (legitimize_address): Rename to...
19241         (ix86_legitimize_address): ... this.
19242         * gcc/config/avr/avr.c (legitimize_address): Rename to...
19243         (avr_legitimize_address): ... this.
19244         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
19245         (mn10300_legitimize_address): ... this.
19246         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
19247         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
19248         (alpha_expand_mov): Adjust call.
19249
19250         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
19251         * config/spu/spu.c (spu_legitimize_address): Likewise.
19252         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
19253         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
19254
19255 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
19256
19257         * intl.c (locale_encoding, locale_utf8): New.
19258         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
19259         * intl.h (locale_encoding, locale_utf8): Declare.
19260         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
19261         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
19262         New.
19263         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
19264         argument.
19265         (pp_tree_identifier): Define to call pp_base_tree_identifier.
19266         (pp_base_tree_identifier): Declare as function.
19267         (identifier_to_locale): Declare.
19268         * Makefile.in (pretty-print.o): Update dependencies.
19269         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
19270
19271 2009-05-04  Richard Guenther  <rguenther@suse.de>
19272
19273         PR middle-end/40015
19274         * builtins.c (fold_builtin_memory_op): Do not decay to element
19275         type if the size matches the whole array.
19276
19277 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
19278
19279         * expmed.c (synth_mult): When trying out a shift, pass the result
19280         of a signed shift.
19281
19282 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
19283
19284         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
19285         (shiftsub1_cost): New.
19286         (init_expmed): Compute shiftsub1_cost.
19287         (synth_mult): Optimize multiplications by constants of the form
19288         -(2^^m-1) for some constant positive integer m.
19289
19290 2009-05-03  Richard Guenther  <rguenther@suse.de>
19291
19292         PR c/39983
19293         * c-typeck.c (array_to_pointer_conversion): Do not built
19294         ADDR_EXPRs of arrays of pointer-to-element type.
19295         * c-gimplify.c (c_gimplify_expr): Revert change fixing
19296         up wrong ADDR_EXPRs after-the-fact.
19297         * c-common.c (strict_aliasing_warning): Strip pointer
19298         conversions for obtaining the original type.
19299         * builtins.c (fold_builtin_memset): Handle array types.
19300         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
19301         and array types
19302
19303 2009-05-03  Richard Guenther  <rguenther@suse.de>
19304
19305         PR middle-end/23329
19306         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
19307         Do not lose casts from array types with unknown extent to array
19308         types with known extent.
19309         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
19310         alias set compatibility.
19311
19312 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19313
19314         * flags.h (extra_warnings): Delete.
19315         * toplev.c (process_options): Handle Wuninitialized here.
19316         * opts.c (extra_warnings): Delete.
19317         (set_Wextra): Delete.
19318         (common_handle_option): -Wextra can be handled automatically.
19319         * c-opts.c (c_common_handle_option): Delete obsolete code.
19320         (c_common_post_options): Simplify comment.
19321         * common.opt (W): Add Var.
19322         (Wextra): Add Var.
19323         (Wuninitialized): Initialize to -1.
19324
19325 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
19326             Richard Guenther  <rguenther@suse.de>
19327
19328         * expr.c (get_def_for_expr): New function.
19329         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
19330         SSA rather than trees.
19331         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
19332         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
19333
19334 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
19335
19336         * c-common.c (reswords): Add _Imaginary.
19337         * c-common.c (enum rid): Add RID_IMAGINARY.
19338
19339 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
19340
19341         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
19342         Patch by Richard Guenther.
19343
19344 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
19345
19346         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
19347         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
19348         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
19349         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
19350         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
19351         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
19352         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
19353         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
19354         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
19355         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
19356         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
19357         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
19358         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
19359         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
19360         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
19361         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
19362         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
19363         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
19364
19365 2009-05-02  Richard Guenther  <rguenther@suse.de>
19366
19367         PR tree-optimization/39940
19368         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
19369         doing so.
19370
19371 2009-05-02  Richard Guenther  <rguenther@suse.de>
19372
19373         PR middle-end/40001
19374         * tree-ssa.c (execute_update_addresses_taken): Properly check
19375         if we can mark a variable DECL_GIMPLE_REG_P.
19376         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
19377         back to the end of the function.
19378         (is_gimple_reg_type): Remove complex type special casing.
19379         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
19380         if not optimizing.
19381
19382 2009-05-02  Ben Elliston  <bje@au.ibm.com>
19383
19384         * doc/collect2.texi (Collect2): Document search path behaviour
19385         when configured with --with-ld.
19386
19387 2009-05-02  Jan Hubicka  <jh@suse.cz>
19388
19389         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
19390         parameter; update callers.
19391         (coalesce_cost_edge): EH edges are costier because they needs
19392         splitting even if not critical and even more costier when there are
19393         multiple EH predecestors.
19394
19395 2009-05-02  Jan Hubicka  <jh@suse.cz>
19396
19397         * except.c (remove_eh_handler_and_replace): Handle updating after
19398         removing TRY blocks.
19399
19400 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
19401
19402         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
19403
19404 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
19405
19406         * varasm.c: Do not include c-pragma.h.
19407         * attribs.c: Do not incude c-common.h.
19408
19409 2009-05-01  Michael Matz  <matz@suse.de>
19410
19411         * calls.c (initialize_argument_information): Handle SSA names like
19412         decls with a non MEM_P DECL_RTL.
19413
19414 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
19415
19416         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
19417         * ipa-utils.c: Likewise.
19418         * ipa-type-escape.c: Likewise.
19419         * cgraphunit.c Do not include c-common.h.
19420         * ipa-pure-const.c: Likewise.
19421         * tree-if-conv.c: Likewise.
19422         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
19423         * ipa-struct-reorg.c: Likewise.
19424         * tree-nomudflap.c: Likewise.
19425         * tree-ssa-structalias.c: Likewise.
19426
19427 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
19428
19429         * store-motion.c: Many cleanups to make this pass a first-class
19430         citizen instead of an appendix to gcse load motion.  Add TODO list
19431         to make this pass faster/cleaner/better.
19432
19433         (struct ls_expr): Post gcse.c-split cleanups.
19434         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
19435         "stores" field to "avail_stores".
19436         (pre_ldst_mems): Rename to store_motion_mems.
19437         (pre_ldst_table): Rename to store_motion_mems_table.
19438         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
19439         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
19440         (ldst_entry): Rename to st_expr_entry, update users.
19441         (free_ldst_entry): Rename to free_st_expr_entry, update users.
19442         (free_ldst_mems): Rename to free_store_motion_mems, update users.
19443         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
19444         update caller.
19445         (first_ls_expr): Rename to first_st_expr, update users.
19446         (next_ls_expr): Rename to next_st_expr, update users.
19447         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
19448         fields properly for store motion instead of names inherited from load
19449         motion in gcse.c.
19450         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
19451         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
19452         are done with it.
19453
19454         (ae_kill): Rename to st_kill, update users.
19455         (ae_gen): Rename to st_avloc, update users.
19456         (transp): Rename to st_transp, update users.
19457         (pre_insert_map): Rename to st_insert_map, update users.
19458         (pre_delete_map): Rename to st_delete_map, update users.
19459         (insert_store, build_store_vectors, free_store_memory,
19460         one_store_motion_pass): Update for abovementioned changes.
19461
19462         (gcse_subst_count, gcse_create_count): Remove.
19463         (one_store_motion_pass): New statistics counters "n_stores_deleted"
19464         and "n_stores_created", local variables.
19465
19466         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
19467         use for_each_rtx.
19468
19469         (regvec, compute_store_table_current_insn): Remove.
19470         (reg_set_info, reg_clear_last_set): Remove.
19471         (compute_store_table): Use DF caches instead of local dataflow
19472         solvers.
19473
19474 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
19475
19476         * c-objc-common.c (c_tree_printer): Print identifiers with
19477         pp_identifier, not pp_string.  Mark "({anonymous})" for
19478         translation.
19479         * c-pretty-print.c (pp_c_ws_string): New.
19480         (pp_c_cv_qualifier, pp_c_type_specifier,
19481         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
19482         pp_c_storage_class_specifier, pp_c_function_specifier,
19483         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
19484         pp_c_primary_expression, pp_c_postfix_expression,
19485         pp_c_unary_expression, pp_c_shift_expression,
19486         pp_c_relational_expression, pp_c_equality_expression,
19487         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
19488         use pp_string and pp_c_ws_string in place of pp_identifier and
19489         pp_c_identifier for non-identifiers.  Mark English strings for
19490         translation.
19491         * c-pretty-print.h (pp_c_ws_string): Declare.
19492
19493 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
19494             Roland McGrath <roland@redhat.com>
19495
19496         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
19497         (ENABLE_LD_BUILDID): New configuration option.
19498         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
19499         (LINK_BUILDID_SPEC): New macro.
19500         (init_spec): If defined, prepend it between LINK_EH_SPEC and
19501         link_spec.
19502         * doc/install.texi: Document --enable-linker-build-id option.
19503         * configure: Rebuild.
19504         * config.in: Rebuild.
19505
19506 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
19507
19508         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
19509         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
19510         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
19511         MIPS_GP_SAVE_AREA_SIZE.
19512         * config/mips/mips.c (struct mips_frame_info): Update comment
19513         before arg_pointer_offset and hard_frame_pointer_offset.
19514         (mips_compute_frame_info): Update diagram before function: to
19515         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
19516         indicate the position of frame_pointer_rtx with -fstack-protector and
19517         to show args_size.  Don't allocate cprestore area for leaf functions
19518         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
19519         cprestore_size.
19520         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
19521
19522 2009-04-30  Michael Matz  <matz@suse.de>
19523
19524         PR tree-optimization/39955
19525         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
19526
19527 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
19528
19529         * ira.c (setup_cover_and_important_classes):  Use safe macro
19530         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
19531         directly.
19532         * genpreds.c (write_tm_preds_h):  Output suitable definition of
19533         REG_CLASS_FOR_CONSTRAINT.
19534
19535 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
19536
19537         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
19538         instead of an int.
19539         * bitmap.c (bitmap_descriptor): Likewise.
19540         * ggc-common.c (loc_descriptor): Likewise.
19541         * varray.c (varray_descriptor): Likewise.
19542         * vec.c (vec_descriptor): Likewise.
19543
19544 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
19545
19546         * Makefile.in (dce.o): Add $(EXCEPT_H).
19547         * dce.c: Include except.h and delete redundant vector definitions.
19548         (deletable_insn_p): Return false for non-call insns that can throw
19549         if DF is running.
19550
19551 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
19552
19553         * gcse.c (ae_gen): Remove.
19554         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
19555         and make non-static function to make it available in store-motion.c.
19556         Update call sites with search-and-replace.
19557         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
19558         extract_mentioned_regs, extract_mentioned_regs_helper,
19559         find_moveable_store, compute_store_table, load_kills_store, find_loads,
19560         store_killed_in_insn, store_killed_after, store_killed_before,
19561         build_store_vectors, insert_insn_start_basic_block, insert-store,
19562         remove_reachable_equiv_notes, replace_store_insn, delete_store,
19563         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
19564         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
19565         * store-motion.c: ...new file.  Also copy data structures from gcse.c
19566         and clean up to remove parts not used by store motion.
19567         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
19568         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
19569
19570 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19571
19572         PR target/38571
19573         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
19574         when optimizing for size.
19575
19576 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
19577
19578         * gcse.c (gcse_constant_p): Fix typo in last change.
19579
19580 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
19581
19582         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
19583
19584 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
19585
19586         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
19587
19588 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
19589
19590         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
19591         CONST_HIGH_PART result.
19592
19593 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
19594
19595         * config/avr/avr.c (initial_elimination_offset): Rename to
19596         avr_initial_elimination_offset.
19597         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
19598         change return type to bool.
19599         (avr_can_eliminate): New function.
19600         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
19601         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
19602         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
19603         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
19604         avr_initial_elimination_offset.
19605         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
19606         (avr_initial_elimination_offset): Define.
19607
19608 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
19609             Steven Bosscher  <steven@gcc.gnu.org>
19610
19611         PR rtl-optimization/39938
19612         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
19613         * cfgrtl.c: Include insn-attr.h.
19614         (rest_of_pass_free_cfg): New function.
19615         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
19616         * resource.c (init_resource_info): Remove call to df_analyze.
19617
19618 2009-04-29  Richard Guenther  <rguenther@suse.de>
19619
19620         PR target/39943
19621         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
19622         allow conversion to signed integers.
19623
19624 2009-04-29  Richard Guenther  <rguenther@suse.de>
19625
19626         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
19627         shifts of floating point vectors if the shift amount is
19628         a constant multiple of the element size.
19629
19630 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
19631             Michael Matz  <matz@suse.de>
19632
19633         PR middle-end/39927
19634         PR bootstrap/39929
19635         * tree-outof-ssa.c (emit_partition_copy): New function.
19636         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
19637         insert_part_to_rtx_on_edge): Perform the partition base var
19638         copy using emit_partition_copy.
19639         (insert_value_copy_on_edge): Convert constants to the right mode.
19640         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
19641         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
19642
19643 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
19644
19645         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
19646         scan backwards to try to find a constant to initialize it.
19647
19648         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
19649         insn before the loop_end instruction, don't look past labels.
19650
19651 2009-04-29  Richard Guenther  <rguenther@suse.de>
19652
19653         PR middle-end/39937
19654         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
19655         loose type conversions.
19656         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
19657         stmts only if there are no uses of its definition.
19658
19659 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
19660
19661         * config/bfin/bfin.h (splitting_loops): Declare.
19662         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
19663         Reorder bit definitions to be ascending.
19664         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
19665         * config/bfin/bfin.c (splitting_loops): New variable.
19666         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
19667         (struct loop_info): Remove members INIT and LOOP_INIT.
19668         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
19669         the LSETUP sequence.  Allow LC to be loaded from any register, but
19670         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
19671         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
19672         set to 1.
19673         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
19674         of reload_completed.
19675
19676         From Jie Zhang:
19677         * config/bfin/bfin.md (movsi_insn): Refine constraints.
19678
19679 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
19680
19681         * Makefile.in (PLUGIN_VERSION_H): New.
19682         (OBJS-common): Remove plugin-version.o.
19683         (plugin.o): Depend on (PLUGIN_VERSION_H).
19684         (plugin-version.o): Remove.
19685         * configure: Regenerate
19686         * configure.ac: Create plugin-version.h.
19687         * gcc-plugin.h (plugin_gcc_version): Remove.
19688         (plugin_default_version_check): Change signature.
19689         * plugin-version.c: Remove.
19690         * plugin.c: Include plugin-version.h.
19691         (str_plugin_gcc_version_name): Remove.
19692         (try_init_one_plugin): Pass gcc version to plugin_init.
19693         (plugin_default_version_check): Both gcc and plugin versions are now
19694         arguments.
19695
19696 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
19697
19698         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
19699         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
19700         Remove special case testing for last insn of inner loops. Don't fail
19701         if the loop ends with a jump, emit an extra nop instead.
19702
19703         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
19704         DREGS rather than comparing directly.  Remove code that tries to
19705         account for latencies.
19706
19707 2009-04-29  Richard Guenther  <rguenther@suse.de>
19708
19709         PR tree-optimization/39941
19710         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
19711         eliminating an indirect call.
19712
19713 2009-04-29  Richard Guenther  <rguenther@suse.de>
19714
19715         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
19716         parameter.  Allow invariants as base if !require_lvalue.
19717         (verify_gimple_assign_single): Adjust.
19718
19719 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
19720
19721         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
19722         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
19723         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
19724         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
19725         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
19726         a VEC_SELECT.
19727         * config/bfin/bfin.c (bfin_expand_builtin,
19728         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
19729
19730 2009-04-28  Richard Guenther  <rguenther@suse.de>
19731
19732         * tree-vect-loop.c (get_initial_def_for_induction): Use
19733         correct types for pointer increment.
19734
19735 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19736
19737         * toplev.c (print_version): Update GMP version string calculation.
19738
19739 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
19740
19741         PR rtl-optimization/39938
19742         * resource.c (init_resource_info): Add call to df_analyze.
19743
19744 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
19745
19746         * config/alpha/alpha.md (usegp): Cast the result of
19747         alpha_find_lo_sum_using_gp to enum attr_usegp.
19748         * config/alpha/alpha.c (override_options): Remove end-of-structure
19749         marker element from cpu_table.  Use array size of cpu_table to handle
19750         -mcpu and -mtune options.
19751         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
19752
19753 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
19754
19755         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
19756         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
19757         tune_32 and tune_64.
19758         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
19759         support on PowerPC.
19760         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
19761         * config/rs6000/option-defaults.h: ... here.  New file.
19762         (OPT_64, OPT_32): Define.
19763         (MASK_64BIT): Define to 0 if not already defined.
19764         (OPT_ARCH64, OPT_ARCH32): Define.
19765         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
19766         and tune_64.
19767
19768 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19769
19770         * config/arm/arm.c (arm_override_options): Emit error on using
19771         fpa with AAPCS.
19772
19773 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
19774
19775         PR rtl-optimization/39914
19776         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
19777         registers for allocnos created from user-defined variables only
19778         when not optimizing.
19779
19780 2009-04-28  Richard Guenther  <rguenther@suse.de>
19781
19782         PR middle-end/39937
19783         * fold-const.c (fold_binary): Use distribute_real_division only
19784         on float types.
19785
19786 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
19787
19788         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
19789         add hpux-stdint.h to tm_file.
19790         (hppa[12]*-*-hpux11*): Ditto.
19791         (ia64*-*-hpux*): Ditto.
19792         * config/hpux-stdint.h: New.
19793         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
19794         __STDC_EXT__ for all compiles.
19795         * config/pa/pa-hpux.h: Ditto.
19796         * config/pa/pa-hpux10.h: Ditto.
19797         * config/pa/pa-hpux11.h: Ditto.
19798
19799 2009-04-28  Catherine Moore  <clm@codesourcery.com>
19800
19801         * debug.h (set_name): Add comment.
19802
19803 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
19804
19805         PR target/39929
19806         * config/darwin.c (machopic_gen_offset): Check
19807         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
19808         * config/arm/arm.c (require_pic_register): Likewise.
19809
19810 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
19811
19812         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
19813         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
19814         m32c_promote_prototypes): Delete.
19815
19816 2009-04-28  Michael Matz  <matz@suse.de>
19817
19818         PR middle-end/39922
19819         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
19820         constants.
19821
19822 2009-04-28  Richard Guenther  <rguenther@suse.de>
19823
19824         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
19825
19826 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19827
19828         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
19829         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
19830         * config/arm/arm-tune.md: Regenerate.
19831
19832 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
19833
19834         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
19835         block if there are complex incoming edges.
19836         (sel_merge_blocks): Remove useless assert.
19837         (sel_redirect_edge_and_branch): Check that edge was redirected.
19838         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
19839         (sel_find_rgns): Delete declaration.
19840         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
19841         the region when it is not a preheader.
19842
19843 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
19844
19845         PR c/39323
19846         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
19847
19848 2009-04-28  Richard Guenther  <rguenther@suse.de>
19849
19850         * tree.h (SSA_NAME_VALUE): Remove.
19851         (struct tree_ssa_name): Remove value_handle member.
19852         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
19853         array for jump threading.
19854         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
19855         SSA_NAME_VALUEs.
19856         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
19857         * tree-flow.h (threadedge_initialize_values): Declare.
19858         (threadedge_finalize_values): Likewise.
19859         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
19860         (SSA_NAME_VALUE): Define.
19861         (threadedge_initialize_values): New function.
19862         (threadedge_finalize_values): Likewise.
19863         * tree-ssa-dom.c (ssa_name_values): New global variable.
19864         (SSA_NAME_VALUE): Define.
19865         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
19866
19867 2009-04-28  Ira Rosen  <irar@il.ibm.com>
19868
19869         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
19870         Use REPORT_VECTORIZED_LOCATIONS instead
19871         REPORT_VECTORIZED_LOOPS.
19872         * tree-vectorizer.c (vect_verbosity_level): Make static.
19873         (vect_loop_location): Rename to vect_location.
19874         (vect_set_verbosity_level): Update comment.
19875         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
19876         and vect_location.
19877         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
19878         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
19879         instead REPORT_UNVECTORIZED_LOOPS.
19880         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
19881         and vect_loop_def to vect_external_def and vect_internal_def.
19882         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
19883         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
19884         REPORT_UNVECTORIZED_LOCATIONS.
19885         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
19886         and vect_used_in_loop and to vect_unused_in_scope and
19887         vect_used_in_scope.
19888         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
19889         (vect_verbosity_level): Remove declaration.
19890         (vect_analyze_operations): Likewise.
19891         (vect_analyze_stmt): Declare.
19892         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
19893         REPORT_UNVECTORIZED_LOCATIONS.
19894         (vect_get_loop_niters): Fix indentation.
19895         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
19896         (vect_analyze_loop_operations): New function.
19897         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
19898         vect_analyze_operations.
19899         (vect_is_simple_reduction): Use new names.
19900         (vectorizable_live_operation, vect_transform_loop): Likewise.
19901         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
19902         to specify whether the data references can be a part of interleaving
19903         chain.
19904         (vect_analyze_data_ref_dependence): Use new names.
19905         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
19906         (vect_create_addr_base_for_vector_ref): Remove redundant code.
19907         * tree-vect-patterns.c (widened_name_p): Use new names.
19908         (vect_recog_dot_prod_pattern): Likewise.
19909         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
19910         (process_use, vect_mark_stmts_to_be_vectorized,
19911         vect_model_simple_cost, vect_model_store_cost,
19912         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
19913         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
19914         vectorizable_operation, vectorizable_type_demotion,
19915         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
19916         vectorizable_condition): Likewise.
19917         (vect_analyze_operations): Split into vect_analyze_loop_operations
19918         and ...
19919         (vect_analyze_stmt): ... new function.
19920         (new_stmt_vec_info): Use new names.
19921         (vect_is_simple_use): Use new names and fix comment.
19922         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
19923         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
19924
19925 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
19926
19927         PR target/39911
19928         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
19929         and integer modes for x87 operands.  Do not ICE for unsupported size,
19930         generate error instead.  Generate error for unsupported operand types.
19931         ['z']: Do not handle HImode memory operands specially.  Warning
19932         for floating-point operands.  Fallthru to 'Z' for unsupported operand
19933         types.  Do not ICE for unsupported size, generate error instead.
19934         (output_387_binary_op): Use %Z to output operands.
19935         (output_fp_compare): Ditto.
19936         (output_387_reg_move): Ditto.
19937
19938 2009-04-28  Ben Elliston  <bje@au.ibm.com>
19939
19940         PR c++/35652
19941         Revert:
19942
19943         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19944
19945         * builtins.c (c_strlen): Do not warn here.
19946         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
19947         * c-common.c (pointer_int_sum): Take an explicit location.
19948         Warn about offsets out of bounds.
19949         * c-common.h (pointer_int_sum): Adjust declaration.
19950
19951 2009-04-27  Ian Lance Taylor  <iant@google.com>
19952
19953         * collect2.c (is_ctor_dtor): Change type of ret field in struct
19954         names to symkind.
19955         * dce.c (run_fast_df_dce): Change type of old_flags to int.
19956         * df-core.c (df_set_flags): Change return type to int.  Change
19957         type of old_flags to int.
19958         (df_clear_flags): Likewise.
19959         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
19960         (df_get_conditional_uses): Likewise.
19961         * df.h (df_set_flags, df_clear_flags): Update declarations.
19962         * dwarf2out.c (struct indirect_string_node): Change type of form
19963         field to enum dwarf_form.
19964         (AT_string_form): Change return type to enum dwarf_form.
19965         * fixed-value.c (fixed_compare): Add cast to enum type.
19966         * fwprop.c (update_df): Change 0 to VOIDmode.
19967         * gensupport.c: Change 0 to UNKNOWN.
19968         * gimple.h (gimple_cond_code): Add cast to enum type.
19969         * haifa-sched.c (reemit_notes): Add cast to enum type.
19970         * hooks.c (hook_int_void_no_regs): Remove function.
19971         * hooks.h (hook_int_void_no_regs): Remove declaration.
19972         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
19973         * predict.c (combine_predictions_for_insn): Add casts to enum type.
19974         * real.c (real_arithmetic): Add cast to enum type.
19975         (real_compare): Likewise.
19976         * target.h (struct gcc_target): Change return type of
19977         branch_target_register_class to enum reg_class.
19978         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
19979         default_branch_target_register_class.
19980         * targhooks.c (default_branch_target_register_class): New function.
19981         * targhooks.h (default_branch_target_register_class): Declare.
19982         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
19983         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
19984         cast to int.
19985         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
19986         ERROR_MARK.
19987         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
19988         vect_uninitialized_def.  Change 0 to ERROR_MARK.
19989         * tree-vect-stmts.c (supportable_widening_operation): Don't
19990         initialize icode1 and icode2.
19991         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
19992         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
19993         and to STD_C89.
19994         (cmn_err_flag_specs): Change 0 to STD_C89.
19995         (cmn_err_char_table): Likewise.
19996         * config/arm/arm.c (get_arm_condition_code): Change type of code
19997         to enum arm_cond_code.
19998         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
19999         (IWMMXT_BUILTIN2): Likewise.
20000         (neon_builtin_type_bits): Don't define typedef.
20001         (neon_builtin_datum): Change type of bits field to int.
20002         (arm_expand_neon_args): Add cast to enum type.
20003         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
20004         TLS_MODEL_NONE.
20005         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
20006         casts to enum type.
20007         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
20008         MIPS_FP_COND_f.
20009         * config/mips/mips.md (jal_macro): Return enum constant.
20010         (single_insn): Likewise.
20011         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
20012         CODE_FOR_nothing.
20013         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
20014         casts to enum type.
20015         * config/s390/s390.c (s390_tune_flags): Change type to int.
20016         (s390_arch_flags): Likewise.
20017         (s390_handle_arch_option): Change flags field of struct pta to int.
20018         * config/s390/s390.h (s390_tune_flags): Update declaration.
20019         (s390_arch_flags): Likewise.
20020         * config/sh/sh.c (prepare_move_operands): Compare
20021         tls_symbolic_operand result with enum constant.
20022         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
20023         (sh_expand_prologue): Add cast to enum type.
20024         (sh_expand_epilogue): Likewise.
20025         (tls_symbolic_operand): Change return type to enum tls_model.
20026         (fpscr_set_from_mem): Add cast to enum type.
20027         (legitimize_pic_address): Compare tls_symbolic_operand result with
20028         enum constant.
20029         (sh_target_reg_class): Change return type to enum reg_class.
20030         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
20031         PROCESSOR_xxx.
20032         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
20033         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
20034         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
20035         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
20036         (delayed_branch, tls_call_delay): Likewise.
20037         (eligible_for_sibcall_delay): Likewise.
20038         (eligible_for_return_delay): Likewise.
20039         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
20040         (spu_expand_builtin_1): Likewise.
20041
20042         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
20043         for all types of conversions.
20044         (output_init_element): Issue -Wc++-compat warning if needed when
20045         initializing a bitfield with enum type.
20046         * c-parser.c (c_parser_expression): Set original_type to
20047         original_type of right hand operand of comma operator.
20048
20049 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20050
20051         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
20052         grammar nits.
20053         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
20054         * doc/cpp.texi (Standard Predefined Macros)
20055         (Implementation-defined behavior): Likewise.
20056         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
20057         * doc/gimple.texi (GIMPLE Exception Handling)
20058         (@code{GIMPLE_ASSIGN}): Likewise.
20059         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
20060         * doc/invoke.texi (Warning Options, Optimize Options)
20061         (AVR Options, Darwin Options): Likewise.
20062         (Optimize Options): Reformulate -fwhole-program description.
20063         * doc/loop.texi (Lambda): Likewise.
20064         * doc/md.texi (Output Template, Define Constraints)
20065         (Standard Names, Insn Splitting): Likewise.
20066         * doc/options.texi (Option properties): Likewise.
20067         * doc/passes.texi (Tree-SSA passes): Likewise.
20068         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
20069         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
20070         (File Names and DBX): Likewise.
20071         * doc/trouble.texi (Incompatibilities): Likewise.
20072
20073 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
20074
20075         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
20076         instruction is correct.
20077
20078 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
20079
20080         Allow non-constant arguments to conversion intrinsics.
20081         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
20082         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
20083         * spu.c (print_operand): Handle 'v' and 'w'.
20084         (exp2_immediate_p, spu_gen_exp2): Define.
20085         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
20086         spu_convtf_1): Update parameter descriptions.
20087         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
20088         * constraints.md ('v', 'w'): New.
20089         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
20090         Remove.
20091         (i2f, I2F): New define_mode_attr.
20092         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
20093         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
20094         fixuns_truncv4sfv4si2):  Update to use mode attribute.
20095         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
20096         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
20097         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
20098         patterns for combine.
20099
20100 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
20101
20102         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
20103         (cprop, hoist, pre, store_motion): New debug counters.
20104         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
20105         is not an RTL pass anymore.
20106         (pass_profiling): Remove extern decl for pass removed in 2005.
20107         (pass_gcse, pass_jump_bypass): Remove.
20108         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
20109         to 0 for clean state.
20110         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
20111         * cse.c (gate_handle_cse_after_global_opts,
20112         rest_of_handle_cse_after_global_opts): New functions.
20113         (pass_cse_after_global_opts): New pass, does local CSE.
20114         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
20115         (TV_CPROP): New timevar.
20116         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
20117         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
20118         (gcse_main, recompute_all_luids): Remove.
20119         (compute_hash_table_work): Call max_reg_num instead of reading
20120         max_gcse_regno.
20121         (cprop_jump): Don't set run_jump_opt_after_gcse.
20122         (constprop_register): Always allow to alter jumps.
20123         (cprop_insn): Likewise.
20124         (do_local_cprop): Likewise.
20125         (local_cprop_pass): Likewise.  Return non-zero if something changed.
20126         (cprop): Remove function, fold interesting bits into one_cprop_pass.
20127         (find_implicit_sets): Add note about missed optimization opportunity.
20128         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
20129         pass_rtl_cprop execute function.
20130         Don't bother tracking the pass number, each pass gets its own dumpfile
20131         now anyway.
20132         Always allow to alter jumpsand bypass jumps.
20133         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
20134         will just find no suitable set.
20135         (pre_edge_insert): Fix dumping, this function is for PRE only.
20136         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
20137         pass_rtl_pre execute function.
20138         (hoist_code): Return non-zero if something changed.  Keep track of
20139         substitutions and insertions for statistics gathering similar to PRE.
20140         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
20141         called from the pass_rtl_hoist execute function.  Show pass statistics.
20142         (compute_store_table): Use max_reg_num directly instead of using the
20143         formerly global max_gcse_regno.
20144         (build_store_vectors): Likewise.
20145         (replace_store_insn): Fix dumping.
20146         (store_motion): Rename to ...
20147         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
20148         pass, called from the pass_rtl_store_motion execute function.  Keep
20149         track of substitutions and insertions for statistics gathering similar
20150         to PRE.
20151         (bypass_jumps): Remove, fold interesting bits into ...
20152         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
20153         from the pass_rtl_cprop execute function.
20154         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
20155         pass_jump_bypass): Remove.
20156         (gate_handle_gcse, rest_of_handle_gcse): Remove.
20157         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
20158         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
20159         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
20160         (gate_rtl_store_motion, execute_rtl_store_motion,
20161         pass_rtl_store_motion): New.
20162         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
20163         make it clear that -fcse-skip-blocks is a no-op for backward compat.
20164         * passes.c (init_optimization_passes): Remove pass_gcse and
20165         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
20166         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
20167         instead of pass_jump_bypass.
20168
20169 2009-04-27  Richard Guenther  <rguenther@suse.de>
20170
20171         PR middle-end/39928
20172         * gimplify.c (gimplify_expr): If we are required to create
20173         a temporary make sure it ends up as register.
20174
20175 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
20176
20177         PR target/39903
20178         * config/i386/i386.c (construct_container): Don't call
20179         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
20180         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
20181
20182 2009-04-27  Michael Matz  <matz@suse.de>
20183
20184         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
20185         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
20186         * tree-ssa-live.h (find_replaceable_exprs): Return a bitmap.
20187         (dump_replaceable_exprs): Take a bitmap.
20188         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
20189         array.
20190         (expand_gimple_basic_block): Likewise.
20191         * tree-ssa-ter.c (struct temp_expr_table_d): Make
20192         replaceable_expressions member a bitmap.
20193         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
20194         (mark_replaceable): Likewise.
20195         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
20196         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
20197
20198 2009-04-27  Richard Guenther  <rguenther@suse.de>
20199
20200         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
20201         (verify_stmts): Dispatch to gimple/type verification code.
20202         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
20203         issue with call argument types.
20204
20205 2009-04-27  Michael Matz  <matz@suse.de>
20206
20207         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
20208         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
20209         to above.
20210
20211 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
20212             Eric Botcazou  <ebotcazou@adacore.com>
20213
20214         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
20215         a label's basic block.
20216         (mark_target_live_regs): Tidy and rework obsolete comments.
20217         Change back DF problem to LIVE.  If a label starts a basic block,
20218         assume that all registers that used to be live then still are.
20219         (init_resource_info): If a label starts a basic block, set its
20220         BLOCK_FOR_INSN accordingly.
20221         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
20222
20223 2009-04-27  Richard Guenther  <rguenther@suse.de>
20224
20225         * tree-flow-inline.h (function_ann): Remove.
20226         (get_function_ann): Likewise.
20227         * tree-dfa.c (create_function_ann): Remove.
20228         * tree-flow.h (struct static_var_ann_d): Remove.
20229         (struct function_ann_d): Likewise.
20230         (union tree_ann_d): Remove fdecl member.
20231         (function_ann_t): Remove.
20232         (function_ann, get_function_ann, create_function_ann): Remove
20233         declarations.
20234
20235 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
20236
20237         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
20238
20239 2009-04-27  Jan Hubicka  <jh@suse.cz>
20240
20241         * ipa-pure-const.c (struct funct_state_d): New fields
20242         state_previously_known, looping_previously_known; remove
20243         state_set_in_source.
20244         (analyze_function): Use new fields.
20245         (propagate): Avoid assumption that state_set_in_source imply
20246         nonlooping.
20247
20248         * tree-ssa-loop-niter.c (finite_loop_p): New function.
20249         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
20250         * cfgloop.h (finite_loop_p): Declare.
20251
20252 2009-04-26  Michael Matz  <matz@suse.de>
20253
20254         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
20255
20256 2009-04-26  Michael Matz  <matz@suse.de>
20257
20258         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
20259         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
20260         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
20261         pass_mark_used_blocks): Remove.
20262         * tree-optimize.c (pass_free_datastructures,
20263         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
20264         * passes.c (init_optimization_passes): Don't call
20265         pass_mark_used_blocks, remove dead code.
20266
20267 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
20268
20269         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
20270         * tree-ssa-live.h (register_ssa_partition): Likewise.
20271
20272 2009-04-26  Michael Matz  <matz@suse.de>
20273
20274         Expand from SSA.
20275         * builtins.c (fold_builtin_next_arg): Handle SSA names.
20276         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
20277         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
20278         SSA names.
20279         (compare_pairs): Swap cost comparison.
20280         (coalesce_ssa_name): Don't use change_partition_var.
20281         * tree-nrv.c (struct nrv_data): Add modified member.
20282         (finalize_nrv_r): Set it.
20283         (tree_nrv): Use it to update statements.
20284         (pass_nrv): Require PROP_ssa.
20285         * tree-mudflap.c (mf_decl_cache_locals,
20286         mf_build_check_statement_for): Use make_rename_temp.
20287         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
20288         * alias.c (find_base_decl): Handle SSA names.
20289         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
20290         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
20291         * rtl.h (set_reg_attrs_for_parm): Declare.
20292         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
20293         to "optimized", remove unused locals at finish.
20294         (execute_free_datastructures): Make global, call
20295         delete_tree_cfg_annotations.
20296         (execute_free_cfg_annotations): Don't call
20297         delete_tree_cfg_annotations.
20298
20299         * ssaexpand.h: New file.
20300         * expr.c (toplevel): Include ssaexpand.h.
20301         (expand_assignment): Handle SSA names the same as register variables.
20302         (expand_expr_real_1): Expand SSA names.
20303         * cfgexpand.c (toplevel): Include ssaexpand.h.
20304         (SA): New global variable.
20305         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
20306         (SSAVAR): New macro.
20307         (set_rtl): New helper function.
20308         (add_stack_var): Deal with SSA names, use set_rtl.
20309         (expand_one_stack_var_at): Likewise.
20310         (expand_one_stack_var): Deal with SSA names.
20311         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
20312         before unique numbers.
20313         (expand_stack_vars): Use set_rtl.
20314         (expand_one_var): Accept SSA names, add asserts for them, feed them
20315         to above subroutines.
20316         (expand_used_vars): Expand all partitions (without default defs),
20317         then only the local decls (ignoring those expanded already).
20318         (expand_gimple_cond): Remove edges when jumpif() expands an
20319         unconditional jump.
20320         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
20321         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
20322         SSA name.
20323         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
20324         members of SA; deal with PARM_DECL partitions here; expand
20325         all PHI nodes, free tree datastructures and SA.  Commit instructions
20326         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
20327         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
20328         info and statements at start, collect garbage at finish.
20329         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
20330         (VAR_ANN_PARTITION) Remove.
20331         (change_partition_var): Don't declare.
20332         (partition_to_var): Always return SSA names.
20333         (var_to_partition): Only accept SSA names.
20334         (register_ssa_partition): Only check argument.
20335         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
20336         member.
20337         (delete_var_map): Don't free it.
20338         (var_union): Only accept SSA names, simplify.
20339         (partition_view_init): Mark only useful SSA names as used.
20340         (partition_view_fini): Only deal with SSA names.
20341         (change_partition_var): Remove.
20342         (dump_var_map): Use ssa_name instead of partition_to_var member.
20343         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
20344         basic blocks.
20345         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
20346         (struct _elim_graph): New member const_dests; nodes member vector of
20347         ints.
20348         (set_location_for_edge): New static helper.
20349         (create_temp): Remove.
20350         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
20351         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
20352         (new_elim_graph): Allocate const_dests member.
20353         (clean_elim_graph): Truncate const_dests member.
20354         (delete_elim_graph): Free const_dests member.
20355         (elim_graph_size): Adapt to new type of nodes member.
20356         (elim_graph_add_node): Likewise.
20357         (eliminate_name): Likewise.
20358         (eliminate_build): Don't take basic block argument, deal only with
20359         partition numbers, not variables.
20360         (get_temp_reg): New static helper.
20361         (elim_create): Use it, deal with RTL temporaries instead of trees.
20362         (eliminate_phi): Adjust all calls to new signature.
20363         (assign_vars, replace_use_variable, replace_def_variable): Remove.
20364         (rewrite_trees): Only do checking.
20365         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
20366         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
20367         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
20368         contains_tree_r, MAX_STMTS_IN_LATCH,
20369         process_single_block_loop_latch, analyze_edges_for_bb,
20370         perform_edge_inserts): Remove.
20371         (expand_phi_nodes): New global function.
20372         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
20373         functions, initialize new parameter, remember partitions having a
20374         default def.
20375         (finish_out_of_ssa): New global function.
20376         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
20377         don't reset in_ssa_p here, don't disable TER when mudflap.
20378         (pass_del_ssa): Remove.
20379         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
20380         partition members.
20381         (execute_free_datastructures): Declare.
20382         * Makefile.in (SSAEXPAND_H): New variable.
20383         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
20384         * basic-block.h (commit_one_edge_insertion): Declare.
20385         * passes.c (init_optimization_passes): Move pass_nrv and
20386         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
20387         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
20388         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
20389         (redirect_branch_edge): Deal with super block when expanding, split
20390         out jump patching itself into ...
20391         (patch_jump_insn): ... here, new static helper.
20392
20393 2009-04-26  Michael Matz  <matz@suse.de>
20394
20395         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
20396         beyond num_ssa_names.
20397         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
20398         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
20399
20400 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
20401
20402         PR inline-asm/39543
20403         * fwprop.c (forward_propagate_asm): New function.
20404         (forward_propagate_and_simplify): Propagate also into __asm, if it
20405         doesn't increase the number of referenced registers.
20406
20407         PR c/39889
20408         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
20409
20410 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
20411
20412         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
20413         note_nonlocal_vla_type for nonlocal VLAs.
20414         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
20415         contains_remapped_vars, remap_vla_decls): New functions.
20416         (convert_nonlocal_reference_stmt): If not optimizing, call
20417         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
20418         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
20419         if it wasn't found in var_map.
20420         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
20421         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
20422         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
20423         declare_vars.
20424         * gimplify.c (nonlocal_vlas): New variable.
20425         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
20426         referenced VLAs.
20427         (gimplify_body): Create and destroy nonlocal_vlas.
20428
20429         * dwarf2out.c (loc_descr_plus_const): New function.
20430         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
20431         mem_loc_descriptor, loc_descriptor_from_tree_1,
20432         descr_info_loc, gen_variable_die): Use it.
20433
20434         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
20435         !TREE_STATIC VAR_DECLs.
20436         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
20437         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
20438         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
20439         DECL_BY_REFERENCE is valid.
20440         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
20441         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
20442         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
20443         Copy DECL_BY_REFERENCE.
20444         (struct nesting_copy_body_data): New type.
20445         (nesting_copy_decl): New function.
20446         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
20447         if they have variable length.
20448
20449 2009-04-26  Michael Matz  <matz@suse.de>
20450
20451         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
20452         mark new temporaries for renaming.
20453
20454 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
20455
20456         PR c/39581
20457         * c-decl.c (global_bindings_p): Return negative value.
20458         (c_variable_size): New.  Based on variable_size from
20459         stor-layout.c.
20460         (grokdeclarator): Call c_variable_size not variable_size.
20461
20462 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
20463
20464         * config/i386/i386.c (print_operand) ['z']: Fix typo.
20465
20466 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
20467
20468         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
20469         Redefine it to just use mingw/include.
20470         (ASM_SPEC): Rules for -m32 and -m64.
20471         (LINK_SPEC): Use Likewise.
20472         (SPEC_32): New define.
20473         (SPEC_64): Likewise.
20474         (SUB_LINK_SPEC): Likewise.
20475         (MULTILIB_DEFAULTS): New define.
20476         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
20477         Add multilib options.
20478         (MULTILIB_DIRNAMES): Likewise.
20479         (MULTILIB_OSDIRNAMES): Likewise.
20480         (LIBGCC): Likewise.
20481         (INSTALL_LIBGCC): Likewise.
20482
20483 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
20484
20485         PR c/39556
20486         * c-tree.h (enum c_inline_static_type): New.
20487         (record_inline_static): Declare.
20488         * c-decl.c (struct c_inline_static, c_inline_statics,
20489         record_inline_static, check_inline_statics): New.
20490         (pop_file_scope): Call check_inline_statics.
20491         (start_decl): Call record_inline_static instead of pedwarning
20492         directly for static in inline function.
20493         * c-typeck.c (build_external_ref): Call record_inline_static
20494         instead of pedwarning directly for static referenced in inline
20495         function.
20496
20497 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
20498
20499         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
20500         not new but only being rescanned.
20501         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
20502         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
20503         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
20504         record_set_info, compute_set, grealloc): Remove.
20505         (recompute_all_luids): New function.
20506         (gcse_main): Don't compute sets, and don't do related memory
20507         allocations/free-ing.  If something changed before the end of the
20508         pass, update LUIDs using recompute_all_luids.
20509         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
20510         (free_gcse_mem): Don't free it either.
20511         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
20512         Use the df insn LUIDs.
20513         (load_killed_in_block): Likewise.
20514         (compute_hash_table_work): Don't compute reg_set_in_block.
20515         (compute_transp): Use DF_REG_DEF_CHAINs.
20516         (local_cprop_pass): Don't use compute_sets and related functions.
20517         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
20518         Use get_max_uid() instead of max_cuid.
20519         (insert_insn_end_basic_block, pre_insert_copy_insn,
20520         update_ld_motion_stores): Don't try to
20521         keep reg_set tables up to date.
20522         (pre_insert_copies): Use df insn LUIDs.
20523         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
20524         (reg_set_info): Don't use extra bitmap argument.
20525         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
20526         information to compute regs_set_in_block.
20527         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
20528         (bypass_jumps): Don't use compute_sets and friends.
20529
20530 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20531
20532         PR testsuite/39710
20533         * opts.c (undocumented_msg): Do not leave blank even with
20534         ENABLE_CHECKING.
20535
20536 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
20537
20538         * c-decl.c (build_enumerator): Allow values folding to integer
20539         constants but not integer constant expressions with a pedwarn if
20540         pedantic.
20541
20542 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
20543
20544         PR c/39582
20545         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
20546         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
20547         type is an integer constant.
20548
20549 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
20550
20551         PR target/39897
20552         * config/i386/i386.c (print_operand) ['z']: Revert handling of
20553         HImode operands.
20554
20555 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
20556
20557         PR c/39564
20558         * c-decl.c (grokdeclarator): Diagnose declarations of functions
20559         with variably modified return type and no storage class
20560         specifiers, except for the case of nested functions.  Distinguish
20561         extern declarations of functions with variably modified return
20562         types from those of objects with variably modified types.
20563
20564 2009-04-25  Jan Hubicka  <jh@suse.cz>
20565
20566         * tree.c (list_equal_p): New function.
20567         * tree.h (list_equal_p): Declare.
20568         * coretypes.h (edge_def, edge, const_edge, basic_block_def
20569         basic_block_def, basic_block, const_basic_block): New.
20570         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
20571         (redirect_eh_edge): New function.
20572         (make_eh_edge_update_phi): EH edges are not abnormal.
20573         * except.c: Include tree-flow.h.
20574         (list_match): New function.
20575         (eh_region_replaceable_by_p): New function.
20576         (replace_region): New function.
20577         (hash_type_list): New function.
20578         (hash_eh_region): New function.
20579         (eh_regions_equal_p): New function.
20580         (merge_peers): New function.
20581         (remove_unreachable_regions): Verify EH tree when checking;
20582         merge peers.
20583         (copy_eh_region_1): New function.
20584         (copy_eh_region): New function.
20585         (push_reachable_handler): New function.
20586         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
20587         regions without label but with live RESX.
20588         * except.h (redirect_eh_edge_to_label): New.
20589         * tree-flow.h (redirect_eh_edge): New.
20590         * coretypes.h (edge_def, edge, const_edge, basic_block_def
20591         basic_block_def, basic_block, const_basic_block): Remove.
20592         * Makefile.in (except.o): Add dependency on tree-flow.h
20593         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
20594         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
20595         Remove.
20596
20597 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
20598
20599         PR bootstrap/39645
20600         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
20601         on the destination of memcpy.
20602
20603 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
20604
20605         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
20606         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
20607         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
20608
20609 2009-04-25  Jan Hubicka  <jh@suse.cz>
20610
20611         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
20612         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
20613         to be reached by different label than left.
20614         (update_eh_edges): Update comment; remove edge_to_remove if possible
20615         and return true if suceeded.
20616         (cleanup_empty_eh): Accept sharing map; handle shared regions.
20617         (cleanup_eh): Compute sharing map.
20618         * except.c (remove_eh_handler_and_replace): Add argument if we should
20619         update regions.
20620         (remove_unreachable_regions): Update for label sharing.
20621         (label_to_region_map): Likewise.
20622         (get_next_region_sharing_label): New function.
20623         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
20624         prev_try pointers.
20625         (remove_eh_handler): Update.
20626         (remove_eh_region_and_replace_by_outer_of): New function.
20627         * except.h (struct eh_region): Add next_region_sharing_label.
20628         (remove_eh_region_and_replace_by_outer_of,
20629         get_next_region_sharing_label): Declare.
20630         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
20631
20632 2009-04-25  Jan Hubicka  <jh@suse.cz>
20633
20634         * tree-cfg.c (split_critical_edges): Split also edges where we can't
20635         insert code even if they are not critical.
20636
20637 2009-04-25  Jan Hubicka  <jh@suse.cz>
20638
20639         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
20640         (gimple_can_remove_branch_p): EH edges won't remove branch by
20641         redirection.
20642         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
20643         updating of non-abnormal EH edges.
20644         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
20645         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
20646         (split_critical_edges): Split also edges where emitting code on them
20647         will lead to splitting later.
20648
20649 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
20650             H.J. Lu  <hongjiu.lu@intel.com>
20651
20652         PR target/39590
20653         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
20654         the configured assembler supports fildq and fistpq mnemonics.
20655         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
20656         * configure: Regenerated.
20657         * config.in: Ditto.
20658
20659         * config/i386/i386.c (print_operand): Handle 'Z'.
20660         ['z']: Remove handling of special fild/fist suffixes.
20661         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
20662         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
20663         suffix of fild insn.
20664         (*floatsi<mode>2_vector_mixed): Ditto.
20665         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
20666         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
20667         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
20668         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
20669         * config/i386/gas.h (GAS_MNEMONICS): Remove.
20670
20671 2009-04-25  Ben Elliston  <bje@au.ibm.com>
20672
20673         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
20674         the source of a set operation.
20675
20676 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
20677
20678         * target.h (struct gcc_target): Add case_values_threshold field.
20679         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
20680         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
20681         * targhooks.c (default_case_values_threshold): New function.
20682         * targhooks.h (default_case_values_threshold): Declare function.
20683         * stmt.c (expand_case): Use case_values_threshold target hook.
20684         * expr.h (case_values_threshold): Remove declartation.
20685         * expr.c (case_values_threshold): Remove function.
20686         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
20687
20688         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
20689         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
20690         (avr_case_values_threshold): Declare as static.
20691         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
20692
20693         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
20694         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
20695         (mn10300_case_values_threshold): New function.
20696
20697 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
20698
20699         * ira.c (setup_cover_and_important_classes): Add enum cast.
20700
20701 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
20702
20703         * genpreds.c (write_enum_constraint_num): Output definition of
20704         CONSTRAINT_NUM_DEFINED_P macro.
20705         * ira.c (setup_cover_and_important_classes): Use
20706         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
20707
20708 2009-04-24  DJ Delorie  <dj@redhat.com>
20709
20710         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
20711         __SH2A_SINGLE_ONLY__ also.
20712
20713 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
20714
20715         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
20716         (movdf_internal): Ditto.
20717         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
20718         SFmode and DFmode constants.
20719         (ia64_print_operand): Add 'G' format for printing
20720         floating point constants.
20721
20722 2009-04-24  Richard Guenther  <rguenther@suse.de>
20723
20724         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
20725         from unsigned additions.
20726
20727 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
20728
20729         * c-typeck.c (set_init_index): Allow array designators that are
20730         not integer constant expressions with a pedwarn if pedantic.
20731
20732 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
20733
20734         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
20735         zero if no overlap in nonzero bits between the operands.
20736
20737 2009-04-24  Ian Lance Taylor  <iant@google.com>
20738
20739         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
20740         (record_dead_and_set_regs): Likewise.
20741         * df.h (struct df_mw_hardreg): Change flags field to int.
20742         (struct df_base_ref): Likewise.
20743         (struct df): Change changeable_flags field to int.
20744         * df-scan.c (df_defs_record): Change clobber_flags to int.
20745         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
20746         constants rather than #define macros.
20747         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
20748         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
20749         (enum dwarf_calling_convention): Likewise.
20750         (enum dwarf_line_number_x_ops): Likewise.
20751         (enum dwarf_call_frame_info): Likewise.
20752         (enum dwarf_source_language): Likewise.
20753         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
20754         (add_calling_convention_attribute): Likewise.
20755         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
20756         (combine_comparisons): Change compcode to int.  Add cast to enum type.
20757         * genrecog.c (maybe_both_true_2): Change c to int.
20758         (write_switch): Likewise.  Add cast to enum type.
20759         * gimplify.c (gimplify_omp_for): Handle return values from
20760         gimplify_expr using MIN rather than bitwise or.
20761         (gimplify_expr): Add cast to enum type.
20762         * ipa-prop.c (update_jump_functions_after_inlining): Change
20763         IPA_BOTTOM to IPA_JF_UNKNOWN.
20764         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
20765         Add casts to enum type.
20766         (setup_cover_and_important_classes): Change cl to int.  Add casts
20767         to enum type.
20768         (setup_class_translate): Change cl and mode to int.
20769         (ira_init_once): Change mode to int.
20770         (free_register_move_costs): Likewise.
20771         (setup_prohibited_mode_move_regs): Add casts to enum type.
20772         * langhooks.c (add_builtin_function_common): Rework assertion that
20773         value fits bitfield.
20774         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
20775         * omega.c (omega_do_elimination): Avoid math on enum types.
20776         * optabs.c (expand_vec_shift_expr): Remove casts to int.
20777         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
20778         int local to handle integral_argment value.
20779         * regmove.c (try_auto_increment): Change PUT_MODE to
20780         PUT_REG_NOTE_KIND.
20781         * reload.c (push_secondary_reload): Add casts to enum type.
20782         (secondary_reload_class, find_valid_class): Likewise.
20783         * reload1.c (emit_input_reload_insns): Likewise.
20784         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
20785         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
20786         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
20787         constant.
20788         * tree.c (build_common_builtin_nodes): Add casts to enum type.
20789         * tree-complex.c (complex_lattice_t): Typedef to int rather than
20790         enum type.
20791         (expand_complex_libcall): Add casts to enum type.
20792         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
20793         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
20794         with ERROR_MARK, not NUM_TREE_CODES.
20795         (vect_create_epilog_for_reduction): Likewise.
20796         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
20797         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
20798         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
20799         enum machine_mode.
20800         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
20801         vect_unused_in_loop.  Change 0 to loop_vect.
20802         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
20803         * var-tracking.c (get_init_value): Change return type to enum
20804         var_init_status.
20805         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
20806         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
20807         arm_fp_model.
20808         (arm_override_options): Add casts to enum type.
20809         (arm_emit_tls_decoration): Likewise.
20810         * config/i386/i386.c (ix86_function_specific_restore): Add casts
20811         to enum type.
20812         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
20813         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
20814         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
20815         enum type.
20816         * config/s390/s390.c (code_for_builtin_64): Change to array of
20817         enum insn_code.
20818         (code_for_builtin_31): Likewise.
20819         (s390_expand_builtin): Change code_for_builtin to enum insn_code
20820         const *.
20821         * config/sparc/sparc.c (sparc_override_options): Change value
20822         field in struct code_model to enum cmodel.  In initializer change
20823         0 to NULL and add cast to enum type.
20824
20825         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
20826         Change all callers.  Issue a -Wc++-compat warning using
20827         lhs_origtype if necessary.
20828         (convert_for_assignment): Issue -Wc++-compat warnings about
20829         invalid conversions to enum type on assignment.
20830         * c-common.h (build_modify_expr): Update declaration.
20831
20832 2009-04-24  Nick Clifton  <nickc@redhat.com>
20833
20834         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
20835         (function_arg_advance): Likewise.
20836         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
20837         5th alternative.
20838
20839 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
20840
20841         * config/s390/constraints.md ('I', 'J'): Fix condition.
20842
20843 2009-04-24  Diego Novillo  <dnovillo@google.com>
20844
20845         * gengtype-parse.c (parse_error): Add newline after message.
20846
20847 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
20848
20849         * config/i386/sse.md (avxmodesuffixs): Removed.
20850         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
20851         (*avx_pinsr<ssevecsize>): This.
20852
20853 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
20854
20855         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
20856         follow chains of regs with a single definition, and allow expressions
20857         that are function_invariant_p.
20858         (simple_rhs_p): Allow expressions that are function_invariant_p.
20859
20860 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
20861
20862         PR middle-end/39867
20863         * fold-const.c (fold_cond_expr_with_comparison): When folding
20864         > and >= to MAX, make sure the MAX uses the same type as the
20865         comparison's operands.
20866
20867 2009-04-24  Nick Clifton  <nickc@redhat.com>
20868
20869         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
20870         addressing for DImode accesses.
20871         (frv_print_operand_address): Handle PLUS case.
20872         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
20873
20874 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
20875
20876         PR rtl-optimization/39794
20877         * alias.c (canon_true_dependence): Add x_addr argument.
20878         * rtl.h (canon_true_dependence): Adjust prototype.
20879         * cse.c (check_dependence): Adjust canon_true_dependence callers.
20880         * cselib.c (cselib_invalidate_mem): Likewise.
20881         * gcse.c (compute_transp): Likewise.
20882         * dse.c (scan_reads_nospill): Likewise.
20883         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
20884         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
20885         canon_base_addr of the group, plus optional offset.
20886         (struct group_info): Rename canon_base_mem to
20887         canon_base_addr.
20888         (get_group_info): Set canon_base_addr to canon_rtx of base, not
20889         canon_rtx of base_mem.
20890
20891 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
20892
20893         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
20894         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
20895
20896 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
20897
20898         * config/spu/spu-builtins.h: Delete file.
20899
20900         * config/spu/spu.h (enum spu_builtin_type): Move here from
20901         spu-builtins.h.
20902         (struct spu_builtin_description): Likewise.  Add GTY marker.
20903         Do not use enum spu_function_code or enum insn_code.
20904         (spu_builtins): Add extern declaration.
20905
20906         * config/spu/spu.c: Do not include "spu-builtins.h".
20907         (enum spu_function_code, enum spu_builtin_type_index,
20908         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
20909         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
20910         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
20911         unsigned_V2DI_type_node): Move here from spu-builtins.h.
20912         (spu_builtin_types): Make static.  Add GTY marker.
20913         (spu_builtins): Add extern declaration with GTY marker.
20914         Include "gt-spu.h".
20915
20916         * config/spu/spu-c.c: Do not include "spu-builtins.h".
20917         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
20918         Check programmatically whether all parameters are scalar.
20919
20920         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
20921
20922 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
20923
20924         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
20925         assignment from the constructor either if the target is volatile.
20926
20927 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
20928
20929         * config/arm/arm.md (insv): Do not share operands[0].
20930
20931 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
20932
20933         * config/vxlib-tls.c (active_tls_threads): Delete.
20934         (delete_hook_installed): New.
20935         (tls_delete_hook): Don't delete the delete hook.
20936         (tls_destructor): Delete it here.
20937         (__gthread_set_specific): Adjust installing the delete hook.
20938         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
20939         __gthread_leave_tsd_dtor_context.
20940
20941 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
20942
20943         * c-format.c (gcc_tdiag_char_table): Add support for %E.
20944
20945 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
20946
20947         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
20948         enum type.
20949         (alpha_rtx_costs): Ditto.
20950         (emit_unlikely_jump): Use add_reg_note.
20951         (emit_frame_store_1): Ditto.
20952         (alpha_expand_prologue): Ditto.
20953         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
20954         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
20955
20956 2009-04-23  Nick Clifton  <nickc@redhat.com>
20957
20958         * config/v850/v850.md (epilogue): Remove suppressed code.
20959         (return): Rename to return_simple and remove test of frame size.
20960         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
20961         to gen_return_simple.
20962
20963 2009-04-22  Jing Yu  <jingyu@google.com>
20964
20965         PR testsuite/39781
20966         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
20967
20968 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20969
20970         PR C/31499
20971         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
20972         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
20973         value is a VECTOR_CST, the element type is the element type of the
20974         vector.
20975
20976 2009-04-22  DJ Delorie  <dj@redhat.com>
20977
20978         * config/m32c/m32c.h: Update GTY annotations to new syntax.
20979
20980 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
20981
20982         * alias.c (find_base_term): Move around LO_SUM case, so that
20983         CONST falls through into PLUS/MINUS handling.
20984
20985         PR c/39855
20986         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
20987         into 0, use omit_one_operand.
20988
20989 2009-04-23  Ben Elliston  <bje@au.ibm.com>
20990
20991         * config/rs6000/linux-unwind.h (get_regs): Remove type
20992         puns. Change the type of `pc' to an array of unsigned ints and
20993         update all users.  Constify frame24.
20994
20995 2009-04-22  DJ Delorie  <dj@redhat.com>
20996
20997         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
20998         declarations before code.
20999         (current_function_special_page_vector): Likewise.
21000         (m32c_expand_insv): Silence a warning.
21001
21002 2009-04-21  Taras Glek  <tglek@mozilla.com>
21003
21004         * alias.c: Update GTY annotations to new syntax.
21005         * basic-block.h: Likewise.
21006         * bitmap.h: Likewise.
21007         * c-common.h: Likewise.
21008         * c-decl.c: Likewise.
21009         * c-parser.c: Likewise.
21010         * c-pragma.c: Likewise.
21011         * c-tree.h: Likewise.
21012         * cfgloop.h: Likewise.
21013         * cgraph.h: Likewise.
21014         * config/alpha/alpha.c: Likewise.
21015         * config/arm/arm.h: Likewise.
21016         * config/avr/avr.h: Likewise.
21017         * config/bfin/bfin.c: Likewise.
21018         * config/cris/cris.c: Likewise.
21019         * config/darwin.c: Likewise.
21020         * config/frv/frv.c: Likewise.
21021         * config/i386/i386.c: Likewise.
21022         * config/i386/i386.h: Likewise.
21023         * config/i386/winnt.c: Likewise.
21024         * config/ia64/ia64.h: Likewise.
21025         * config/iq2000/iq2000.c: Likewise.
21026         * config/mips/mips.c: Likewise.
21027         * config/mmix/mmix.h: Likewise.
21028         * config/pa/pa.c: Likewise.
21029         * config/pa/pa.h: Likewise.
21030         * config/rs6000/rs6000.c: Likewise.
21031         * config/s390/s390.c: Likewise.
21032         * config/sparc/sparc.c: Likewise.
21033         * config/xtensa/xtensa.c: Likewise.
21034         * cselib.h: Likewise.
21035         * dbxout.c: Likewise.
21036         * dwarf2out.c: Likewise.
21037         * except.c: Likewise.
21038         * except.h: Likewise.
21039         * fixed-value.h: Likewise.
21040         * function.c: Likewise.
21041         * function.h: Likewise.
21042         * gimple.h: Likewise.
21043         * integrate.c: Likewise.
21044         * optabs.c: Likewise.
21045         * output.h: Likewise.
21046         * real.h: Likewise.
21047         * rtl.h: Likewise.
21048         * stringpool.c: Likewise.
21049         * tree-data-ref.c: Likewise.
21050         * tree-flow.h: Likewise.
21051         * tree-scalar-evolution.c: Likewise.
21052         * tree-ssa-address.c: Likewise.
21053         * tree-ssa-alias.h: Likewise.
21054         * tree-ssa-operands.h: Likewise.
21055         * tree.c: Likewise.
21056         * tree.h: Likewise.
21057         * varasm.c: Likewise.
21058         * varray.h: Likewise.
21059         * vec.h: Likewise.
21060         * coretypes.h: Do not define GTY macro if it is already defined.
21061         * doc/gty.texi: Update GTY documentation to new syntax.
21062         * gengtype-lex.l: Enforce attribute-like syntax for GTY
21063         annotations on structs.
21064         * gengtype-parse.c: Likewise.
21065
21066 2009-04-22  Mark Heffernan  <meheff@google.com>
21067
21068         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
21069
21070 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
21071
21072         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
21073         where appropriate.
21074
21075 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
21076
21077         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
21078         the same as a PLUS without a shift.  Increase the cost of a
21079         CONST_INT in MULT.
21080
21081 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21082
21083         * Makefile.in: Update dependencies.
21084         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
21085         * errors.h: Remove bogus comment about compatibility.
21086         (warning): Update declaration.
21087         * genautomata.c: Update all calls to warning.
21088         * gimple.c: Do not include errors.h. Include toplev.h.
21089         * tree-ssa-structalias.c: Do not include errors.h.
21090         * omega.c: Likewise.
21091         * tree-ssa-reassoc.c: Likewise.
21092         * config/spu/spu-c.c: Likewise.
21093         * config/spu/t-spu-elf: Update dependencies.
21094
21095 2009-04-22  Richard Guenther  <rguenther@suse.de>
21096
21097         PR tree-optimization/39824
21098         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
21099         make sure the types are compatible.
21100
21101 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21102
21103         PR c++/14875
21104         * c-common.c (c_parse_error): Take a token_flags parameter.
21105         Use token_type for the token type instead.
21106         Pass token_flags to cpp_type2name.
21107         * c-common.h (c_parse_error): Update declaration.
21108         * c-parser.c (c_parser_error): Pass 0 as token flags.
21109
21110 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
21111
21112         PR rtl-optimization/39580
21113         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
21114
21115 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
21116
21117         * function.c (expand_function_end): Do not emit a jump to the "naked"
21118         return label for fall-through returns.
21119         * except.c (sjlj_emit_function_exit): Always place the call to the
21120         unregister function at the location installed by expand_function_end.
21121
21122 2009-04-22  Richard Guenther  <rguenther@suse.de>
21123
21124         PR tree-optimization/39845
21125         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
21126         (gen_inbound_check): Likewise.
21127
21128 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
21129
21130         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
21131         padding for PPC.
21132         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
21133         * config/vxlib.c (__gthread_once): Add race guard for PPC.
21134
21135 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
21136
21137         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
21138         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
21139         shift counts to avoid out-of-bounds array accesses.
21140
21141 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
21142
21143         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
21144         (Pmode): Move above.
21145
21146 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
21147
21148         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
21149         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
21150         GET_CODE macro.  Use IN_RANGE macro where appropriate.
21151         * config/alpha/alpha.h: Ditto.
21152         * config/alpha/alpha.md: Ditto.
21153         * config/alpha/constraints.md: Ditto.
21154         * config/alpha/predicates.md: Ditto.
21155
21156 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
21157
21158         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
21159         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21160         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21161         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21162         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21163         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21164         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21165         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21166         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21167         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21168         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21169         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21170         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21171         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21172         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21173         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21174         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21175         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21176         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21177         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21178         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21179         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21180         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21181         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21182         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21183         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21184         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21185
21186 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
21187
21188         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
21189         references from comments.
21190         * cfgbuild.c (count_basic_blocks): Delete.
21191         (find_basic_blocks_1): Delete.
21192         (find_basic_blocks): Delete.
21193         * except.c (finish_eh_generation): Make static.  Move comment from
21194         except.h here.  Remove find_basic_blocks references from comments.
21195         * except.h (finish_eh_generation): Delete.
21196         * basic-block.h (find_basic_blocks): Delete.
21197         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
21198
21199 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
21200
21201         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
21202         (sdbout_parms):  Likewise.
21203
21204 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
21205
21206         * config/sh/sh.c (prepare_cbranch_operands): Use
21207         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
21208         (expand_cbranchdi4): Likewise.
21209         (from_compare): Add cast to enum type.
21210         (expand_cbranchsi4): Use add_reg_note.
21211         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
21212         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
21213         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
21214         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
21215         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
21216         instead of CODE_FOR_nothing.
21217         (cbranchdi4): Likewise.  Fix the order of arguments for
21218         gen_rtx_fmt_ee.
21219         (push_fpscr): Use add_reg_note.
21220         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
21221         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
21222
21223 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
21224
21225         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
21226         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
21227         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
21228         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
21229         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
21230         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
21231         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
21232         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
21233         config/alpha/x-vms, config/arc/t-arc,
21234         config/arm/README-interworking, config/arm/arm-c.c,
21235         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
21236         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
21237         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
21238         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
21239         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
21240         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
21241         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
21242         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
21243         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
21244         config/cris/t-elfmulti, config/crx/t-crx,
21245         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
21246         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
21247         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
21248         config/h8300/t-h8300, config/i386/athlon.md,
21249         config/i386/darwin-libgcc.10.4.ver,
21250         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
21251         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
21252         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
21253         config/i386/t-linux64, config/i386/t-nwld,
21254         config/i386/t-rtems-i386, config/i386/t-sol2-10,
21255         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
21256         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
21257         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
21258         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
21259         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
21260         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
21261         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
21262         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
21263         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
21264         config/m68k/t-uclinux, config/mcore/t-mcore,
21265         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
21266         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
21267         config/mips/crtn.asm, config/mips/irix-crti.asm,
21268         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
21269         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
21270         config/mips/mips-fixed.md, config/mips/sb1.md,
21271         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
21272         config/mips/t-iris6, config/mips/t-isa3264,
21273         config/mips/t-libgcc-mips16, config/mips/t-linux64,
21274         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
21275         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
21276         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
21277         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
21278         config/mn10300/t-linux, config/mn10300/t-mn10300,
21279         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
21280         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
21281         config/picochip/libgccExtras/clzsi2.asm,
21282         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
21283         config/rs6000/darwin-libgcc.10.4.ver,
21284         config/rs6000/darwin-libgcc.10.5.ver,
21285         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
21286         config/rs6000/t-aix43, config/rs6000/t-aix52,
21287         config/rs6000/t-darwin, config/rs6000/t-fprules,
21288         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
21289         config/rs6000/t-lynx, config/rs6000/t-netbsd,
21290         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
21291         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
21292         config/rs6000/t-rtems, config/rs6000/t-spe,
21293         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
21294         config/score/t-score-elf, config/sh/divcost-analysis,
21295         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
21296         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
21297         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
21298         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
21299         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
21300         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
21301         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
21302         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
21303         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
21304         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
21305         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
21306         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
21307         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
21308         limitx.h, version.c, xcoff.h: Add copyright and license notices.
21309         * config/h8300/genmova.sh: Include copyright and license notices
21310         in generated output.
21311         * config/h8300/mova.md: Regenerate.
21312         * doc/install.texi2html: Include word "Copyright" in copyright
21313         notice and use name "Free Software Foundation, Inc.".
21314         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
21315         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
21316         ChangeLog-2007, ChangeLog-2008: Correct dates.
21317
21318 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
21319
21320         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
21321         NE_EXPR operations as well.
21322         * c-parser.c (c_parser_condition): Do not set location information on
21323         the condition.
21324         (c_parser_conditional_expression): Likewise.
21325         (c_parser_binary_expression): Set location information on operators.
21326         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
21327         TRUTH_NOT_EXPR has been folded.
21328         * fold-const.c (fold_truth_not_expr): Copy location information from
21329         the incoming expression to the outgoing one.
21330         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
21331         recursive calls on the LHS of the operator but pass that of the
21332         operator to recursive calls on the RHS of the operator.  Set it
21333         on the COND_EXPR.
21334         (shortcut_cond_expr): Set the locus of the operator on the second
21335         COND_EXPR and that of the expression on the first in degenerate cases.
21336         Pass the locus of the expression to calls to shortcut_cond_r.
21337         Set the locus of the 'then' block on the associated jump, if any.
21338         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
21339         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
21340         expression to call to gimplify_boolean_expr.
21341
21342 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
21343
21344         * config.gcc: Add additional configuration for
21345         i686-w64-mingw* and x86_64-w64-mingw* triplet.
21346         * config/i386/mingw-w64.h: New mingw-w64 specific header.
21347         (CPP_SPEC): Redefine for allowing -municode option.
21348         (STARTFILE_SPEC): Likewise.
21349         * config/i386/t-mingw-w64: New.
21350         * config/i386/mingw-w64.opt: New.
21351         (municode): Add new target option.
21352         * doc/invoke.texi (municode): Add documentation for new option.
21353
21354 2009-04-21  Ian Lance Taylor  <iant@google.com>
21355
21356         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
21357         Correct test for number of arguments.
21358         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
21359
21360 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
21361
21362         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
21363         argument of emit_library_call.
21364
21365 2009-04-21  Richard Guenther  <rguenther@suse.de>
21366
21367         PR middle-end/39829
21368         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
21369         inside VIEW_CONVERT_EXPRs.
21370
21371 2009-04-21  Martin Jambor  <mjambor@suse.cz>
21372
21373         * tree-switch-conversion.c (build_constructors): Split a long line.
21374         (constructor_contains_same_values_p): New function.
21375         (build_one_array): Create assigns of constants if possible, do not
21376         call mark_sym_for_renaming, call update_stmt.
21377         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
21378         make_rename_temp.  Do not call mark_symbols_for_renaming, call
21379         update_stmt.
21380         (gen_def_assigns): Do not call mark_symbols_for_renaming or
21381         find_new_referenced_vars, call update_stmt.
21382         (gen_inbound_check): Use create_tmp_var and create ssa names manually
21383         instead of calling make_rename_temp.  Do not call
21384         find_new_referenced_vars or mark_symbols_for_renaming, call
21385         update_stmt.
21386
21387 2009-04-21  Richard Guenther  <rguenther@suse.de>
21388
21389         PR tree-optimization/39827
21390         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
21391         (tree_ssa_phiprop): Pass the correct array size.
21392
21393 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
21394
21395         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
21396
21397 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21398
21399         PR 16202
21400         * c-typeck.c (lvalue_p): Move declaration ...
21401         * c-common.h (lvalue_p): ... to here.
21402         * c-common.c (candidate_equal_p): New.
21403         (add_tlist): Use it.
21404         (merge_tlist): Use it.
21405         (warn_for_collisions_1): Likewise.
21406         (warning_candidate_p): Accept more candidates.
21407         (verify_tree): A warning candidate can be an expression. Use
21408         candidate_equal_p.
21409
21410 2009-04-21  Ben Elliston  <bje@au.ibm.com>
21411
21412         PR target/5267
21413         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
21414         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
21415         options.  Remove -mcall-solaris documentation.
21416
21417 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21418
21419         PR c++/13358
21420         * doc/invoke.texi (-Wlong-long): Update description.
21421         * c-lex (interpret_integer): Only warn if there was no previous
21422         overflow and -Wlong-long is enabled.
21423         * c-decl.c (declspecs_add_type): Drop redundant flags.
21424         * c.opt (Wlong-long): Init to -1.
21425         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
21426         and front-end warn_long_long. Wlong-long only depends on other
21427         flags if it is uninitialized.
21428         * c-parser.c (disable_extension_diagnostics): warn_long_long is
21429         the same for CPP and FE.
21430         (restore_extension_diagnostics): Likewise.
21431
21432 2009-04-20  Ian Lance Taylor  <iant@google.com>
21433
21434         Fix enum conversions which are invalid in C++:
21435         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
21436         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
21437         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
21438         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
21439         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
21440         (dbxout_parms): Likewise.
21441         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
21442         (df_clear_flags): Likewise.
21443         * df-problems.c (df_rd_bb_local_compute_process_def): Change
21444         top_flag parameter to int.
21445         (df_chain_create_bb_process_use): Likewise.
21446         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
21447         Remove cast.
21448         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
21449         (df_ref_create_structure, df_def_record_1): Likewise.
21450         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
21451         (df_notes_rescan): Change 0 to VOIDmode in function call.
21452         (df_get_call_refs, df_insn_refs_collect): Likewise.
21453         (df_bb_regs_collect): Likewise.
21454         (df_entry_block_defs_collect): Likewise.
21455         (df_exit_block_uses_collect): Likewise.
21456         * df.h: Update declarations.
21457         * double-int.c (double_int_divmod): Add cast to enum type.
21458         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
21459         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
21460         (based_loc_descr): Likewise.
21461         (loc_descriptor_from_tree_1): Change first_op and second_op to
21462         enum dwarf_location_atom.  Add cast to enum type.
21463         * expmed.c (init_expmed): Change 0 to SET in function call.
21464         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
21465         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
21466         (do_store_flag): Likewise.
21467         * fixed-value.h (struct fixed_value): Change mode to enum
21468         machine_mode.
21469         * function.c (assign_parms): Change 0 to VOIDmode in function call.
21470         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
21471         function call.
21472         (insert_insn_decl, insert_decl, insert_state): Likewise.
21473         (automata_list_finish): Likewise.
21474         * genrecog.c (process_define_predicate): Add cast to enum type.
21475         * gensupport.c (init_predicate_table): Add cast to enum type.
21476         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
21477         function call.
21478         (gimple_build_call_1, gimple_build_label): Likewise.
21479         (gimple_build_goto, gimple_build_asm_1): Likewise.
21480         (gimple_build_switch_1, gimple_build_cdt): Likewise.
21481         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
21482         (enum fallback): Rename from enum fallback_t.
21483         (fallback_t): Typedef as int.
21484         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
21485         GSI_SAME_STMT in function call.
21486         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
21487         enum type.
21488         (setup_reg_class_relations): Likewise.
21489         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
21490         (setup_prohibited_class_mode_regs): Add cast to enum type.
21491         (setup_prohibited_mode_move_regs): Likewise.
21492         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
21493         (record_address_regs): Change i to enum reg_class.
21494         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
21495         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
21496         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
21497         (GET_MODE_2XWIDER_MODE): Likewise.
21498         (GET_CLASS_NARROWEST_MODE): Likewise.
21499         * omp-low.c (expand_omp_for): Add cast to enum type.
21500         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
21501         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
21502         * postreload.c (reload_cse_simplify_operands): Change rclass local
21503         to enum reg_class.
21504         * predict.c (combine_predictions_for_insn): Change best_predictor
21505         and predictor to enum br_predictor.
21506         (combine_predictions_for_bb): Likewise.
21507         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
21508         use SET_PREDICT_EXPR_OUTCOME.
21509         * real.c (real_arithmetic): Change icode to code in function call.
21510         * reginfo.c (init_move_cost): Add casts to enum type.
21511         (init_reg_sets_1, init_fake_stack_mems): Likewise.
21512         * regmove.c (regclass_compatible_p): Change class0 and class1 to
21513         enum reg_class.
21514         * reload.c (find_valid_class): Add casts to enum type.
21515         (push_reload): Change 0 to NO_REGS in function call.
21516         (find_reloads): Change this_alternative to array of enum
21517         reg_class.  Remove some now-unnecessary casts.
21518         (make_memloc): Change 0 to VOIDmode in function call.
21519         * reload1.c (reload): Change 0 to VOIDmode in function call.
21520         (eliminate_regs_1, elimination_effects): Likewise.
21521         (eliminate_regs_in_insn): Likewise.
21522         (emit_input_reload_insns): Add cast to enum type.
21523         (delete_output_reload): Change 0 to VOIDmode in function call.
21524         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
21525         to enum type in function call.
21526         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
21527         (SET_PREDICT_EXPR_OUTCOME): Define.
21528         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
21529         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
21530         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
21531         (dump_function): Likewise.
21532         * tree-dump.h: Update declarations.
21533         * tree-pass.h: Update declarations.
21534         * varasm.c (assemble_integer): Change mclass to enum mode_class.
21535         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
21536         enum type.
21537         (arm_rtx_costs_1): Correct parenthesization.
21538         (arm_rtx_costs): Add casts to enum type.
21539         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
21540         (vfp_emit_fstmd): Use add_rg_note.
21541         (emit_multi_reg_push, emit_sfm): Likewise.
21542         (thumb_set_frame_pointer): Likewise.
21543         (arm_expand_prologue): Likewise.
21544         (arm_regno_class): Change return type to enum reg_class.
21545         (thumb1_expand_prologue): Use add_reg_note.
21546         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
21547         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
21548         in function call.
21549         * config/arm/gentune.sh: Add cast to enum type.
21550         * config/arm/arm-tune.md: Rebuild.
21551         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
21552         (ix86_split_fp_branch, predict_jump): Likewise.
21553         (ix86_expand_multi_arg_builtin): Change sub_code from enum
21554         insn_code to enum rtx_code.
21555         (ix86_builtin_vectorized_function): Add cast to enum type.
21556         * config/i386/i386.md (truncdfsf2): Change slot to enum
21557         ix86_stack_slot.
21558         (truncxf<mode>2, isinf<mode>2): Likewise.
21559         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
21560         enum type.
21561         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
21562         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
21563         (insert_bundle_state): Change 1 to INSERT in function call.
21564         (ia64_add_bundle_selector_before): Likewise.
21565         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
21566         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
21567         (restore_stack_nonlocal): Likewise.
21568         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
21569         function call.
21570         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
21571         function call.
21572         (mips_rtx_costs): Likewise.
21573         (mips_override_options): Add casts to enum type.
21574         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
21575         in function call.
21576         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
21577         (store_reg, set_reg_plus_d): Likewise.
21578         (hppa_expand_prologue, hppa_profile_hook): Likewise.
21579         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
21580         cast to enum type.
21581         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
21582         function call.
21583         (emit_unlikely_jump): Use add_reg_note.
21584         (rs6000_emit_allocate_stack): Likewise.
21585         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
21586         (output_toc): Change 1 to INSERT in function call.
21587         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
21588         (rs6000_initialize_trampoline): Likewise.
21589         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
21590         function call.
21591         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
21592         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
21593         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
21594         (save_gprs): Use add_reg_note.
21595         (s390_emit_prologue): Likewise.
21596         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
21597         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
21598         (sparc_fold_builtin): Add cast to enum type.
21599         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
21600         enum insn_code.
21601         (spu_expand_prologue): Use add_reg_note.
21602         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
21603
21604 2009-04-20  Ian Lance Taylor  <iant@google.com>
21605
21606         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
21607         (c_parser_postfix_expression_after_primary): Get VEC for list of
21608         arguments.  Get original types of arguments.  Call
21609         build_function_call_vec.
21610         (cached_expr_list_1, cached_expr_list_2): New static variables.
21611         (c_parser_expr_list): Change return type to VEC *.  Add
21612         p_orig_types parameter.  Change all callers.
21613         (c_parser_release_expr): New static function.
21614         (c_parser_vec_to_tree_list): New static function.
21615         * c-typeck.c (build_function_call): Rewrite to build a VEC and
21616         call build_function_call_vec.
21617         (build_function_call_vec): New function, based on old
21618         build_function_call.
21619         (convert_arguments): Remove nargs and argarray parameters.  Change
21620         values to a VEC.  Add origtypes parameter.
21621         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
21622         (convert_for_assignment): Add origtype parameter.  Change all
21623         callers.  If warn_cxx_compat, check for conversion to an enum
21624         type when calling a function.
21625         (store_init_value): Add origtype parameter.  Change all callers.
21626         (digest_init): Likewise.
21627         (struct init_node): Add origtype field.
21628         (add_pending_init): Add origtype parameter.  Change all callers.
21629         (output_init_element): Likewise.
21630         (output_pending_init_elements): Pass origtype from init_node to
21631         output_init_element.
21632         (process_init_element): Pass origtype from c_expr to
21633         output_init_element.
21634         (c_finish_return): Add origtype parameter.  Change all callers.
21635         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
21636         caller.
21637         (sync_resolve_params): Likewise.
21638         (sync_resolve_return): Change params to first_param.  Change caller.
21639         (resolve_overloaded_builtins): Change params to VEC *.  Change
21640         callers.  Save first parameter around call to build_function_call_vec.
21641         * c-decl.c (finish_decl): Add origtype parameter.  Change all
21642         callers.  Call build_function_call_vec rather than
21643         build_function_call for cleanup.
21644         * c-tree.h: Update declarations.
21645         * c-common.h: Update declarations.
21646         * stub-objc.c (objc_rewrite_function_call): Change parameter from
21647         params to first_param.
21648         * target.h (struct gcc_target): Change resolve_overloaded_builtin
21649         params parameter from tree to void *.
21650         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
21651         Change arglist parameter to have type void *, and to be a pointer
21652         to a VEC.
21653         * config/rs6000/rs6000-protos.h
21654         (altivec_resolve_overloaded_builtin): Update declaration.
21655         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
21656         fnargs parameter to have type void *, and to be a pointer to a
21657         VEC.  Call build_function_call_vec instead of
21658         build_function_call.
21659         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
21660
21661 2009-04-20  Joey Ye  <joey.ye@intel.com>
21662             Xuepeng Guo  <xuepeng.guo@intel.com>
21663             H.J. Lu  <hongjiu.lu@intel.com>
21664
21665         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
21666
21667         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
21668         (IX86_LEA_PRIORITY): Likewise.
21669         (distance_non_agu_define): New function.
21670         (distance_agu_use): Likewise.
21671         (ix86_lea_for_add_ok): Likewise.
21672         (ix86_dep_by_shift_count): Likewise.
21673
21674         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
21675         should split for LEA.
21676
21677         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
21678         function.
21679         (ix86_dep_by_shift_count): Likewise.
21680
21681 2009-04-20  Richard Guenther  <rguenther@suse.de>
21682
21683         * expr.c (handled_component_p): Move ...
21684         * tree.h (handled_component_p): ... here.
21685         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
21686         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
21687         and REALPART_EXPR to be in one group.
21688
21689 2009-04-20  Richard Guenther  <rguenther@suse.de>
21690
21691         * basic-block.h (get_all_dominated_blocks): Declare.
21692         * dominance.c (get_all_dominated_blocks): New function.
21693         * tree-cfg.c (get_all_dominated_blocks): Remove.
21694         (remove_edge_and_dominated_blocks): Adjust.
21695         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
21696         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
21697         instead of recursing.
21698
21699 2009-04-20  Doug Kwan  <dougkwan@google.com>
21700
21701         * cgraph.h (cgraph_node_ptr): New type for vector functions.
21702         (struct cgraph_node_set_def): New type.
21703         (cgraph_node_set) New type. Also declare vector functions.
21704         (struct cgraph_node_set_element_def): New type.
21705         (cgraph_node_set_element): Ditto.
21706         (cgraph_node_set_iterator): New iterator type.
21707         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
21708         cgraph_node_set_remove, dump_cgraph_node_set,
21709         debug_cgraph_node_set): New prototypes.
21710         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
21711         cgraph_node_set_size): New inlines.
21712         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
21713         including cgraph.h.
21714         (struct ipa_opt_pass): Add struct cgraph_node_set_def
21715         argument to function 'write_summary'.
21716         * ipa.c: Include ggc.h.
21717         (hash_cgraph_node_set_element,
21718         eq_cgraph_node_set_element, cgraph_node_set_new,
21719         cgraph_node_set_add, cgraph_node_set_remove,
21720         cgraph_node_set_find, dump_cgraph_node_set,
21721         debug_cgraph_node_set): New functions.
21722         * Makefile.in (ipa.o): Add dependency on GGC_H.
21723
21724 2009-04-20  Ira Rosen  <irar@il.ibm.com>
21725
21726         PR tree-optimization/39675
21727         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
21728         check of the return code of vect_schedule_slp. Check that
21729         stmt_vec_info still exists for the statement, before checking its
21730         vectorization type.
21731
21732 2009-04-20  Michael Matz  <matz@suse.de>
21733
21734         * Makefile.in (generated_files): Take out $(simple_generated_c).
21735
21736 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
21737
21738         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
21739         (UINTPTR_TYPE):  Likewise.
21740
21741 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
21742
21743         PR c/37481
21744         * c-typeck.c (digest_init): Check for initializing an array with a
21745         string literal.
21746
21747 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
21748
21749         PR c/19771
21750         * c-semantics.c (pop_stmt_list): Propagate
21751         STATEMENT_LIST_HAS_LABEL to parent statement list.
21752
21753 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
21754
21755         * config/mips/mips.h (mips_tune_attr): New macro.
21756         * config/mips/mips.md (cpu): Use it.
21757
21758 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
21759
21760         PR c/38243
21761         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
21762         declaring a tag.
21763
21764 2009-04-19  Diego Novillo  <dnovillo@google.com>
21765
21766         * toplev.c (compile_file): Move call to coverage_finish ...
21767         * cgraphunit.c (ipa_passes): ... here.
21768         Call cgraph_process_new_functions.
21769         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
21770         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
21771
21772 2009-04-19  Jan Hubicka  <jh@suse.cz>
21773
21774         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
21775         cfun.
21776         (dump_cgraph_node): Dump can throw external flag.
21777         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
21778
21779 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21780
21781         PR c/32061
21782         PR c++/36954
21783         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
21784         * common.opt (Wlogical-op): Move from here...
21785         * c.opt (Wlogical-op): ... to here.
21786         * c-typeck.c (parser_build_binary_op): Update call to
21787         warn_logical_operator.
21788         * c-opts.c (c_common_post_options): Enable warn_logical_op with
21789         extra_warnings.
21790         * c-common.c (warn_logical_op): Update.
21791         * c-common.h (warn_logical_op): Update declaration.
21792
21793 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
21794
21795         * tree.c (protected_set_expr_location): Fix formatting.
21796
21797 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
21798
21799         PR c/27676
21800         * c-typeck.c (readonly_warning): new.
21801         (build_unary_op, build_modify_expr): Use readonly_warning for
21802         storing into something readonly but not const-qualified.
21803
21804 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
21805
21806         PR c/22367
21807         * c-typeck.c (build_unary_op): Check for taking address of
21808         expression of type void.
21809
21810 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
21811
21812         PR c/35210
21813         * c-typeck.c (build_function_call): Check for calling a function
21814         with qualified void return types.  Call require_complete_type when
21815         generating a trap.
21816
21817 2009-04-18  Jan Hubicka  <jh@suse.cz>
21818
21819         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
21820         Set nothrow flag.
21821         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
21822         can_throw_external flag.
21823         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
21824         * ipa-pure-const.c (ignore_edge): New function.
21825         (propagate): Compute order for NOTHROW computation; set NOTHROWs
21826         only over can_throw_external edges.
21827         (local_pure_const): Add nothrow flag.
21828         * ipa-utils.c (searchc): Add ignore_edge callback.
21829         (ipa_utils_reduced_inorder): Add ignore_edge callback.
21830         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
21831         (set_nothrow_function_flags): Update cgraph.
21832         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
21833
21834 2009-04-18  Richard Guenther  <rguenther@suse.de>
21835
21836         PR middle-end/39804
21837         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
21838         (fold_stmt): ... this and ...
21839         (fold_stmt_inplace): ... this.
21840         (fold_stmt_1): Fold references in calls and asms.
21841         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
21842
21843 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
21844
21845         * tree-vrp.c (ssa_name_nonzero_p): Remove.
21846         * tree.h: Remove the prototype for ssa_name_nonzero_p.
21847
21848 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
21849
21850         * tree.c (function_args_count): Remove.
21851         * tree.h: Remove the prototype for function_args_count.
21852
21853 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
21854
21855         * tree-iterator.c (expr_only): Remove.
21856         * tree.h: Remove the prototype for expr_only.
21857
21858 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
21859
21860         * reginfo.c (cannot_change_mode_set_regs): Remove.
21861         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
21862
21863 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
21864
21865         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
21866         whether operands 0 and 1 overlaps.
21867
21868 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21869
21870         PR middle-end/36902
21871         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
21872         pointer. Use warning_at instead of warning.
21873         (search_for_addr_array): Likewise.
21874         (check_array_bounds): Likewise.
21875         (check_all_array_refs): Check that the incoming edge is not in the
21876         list of edges to be removed.
21877         (check_all_array_refs): Avoid the temporal pointer.
21878         (vrp_visit_cond_stmt): Fix typo.
21879         (simplify_switch_using_ranges): Handle the case where the switch
21880         index is an integer constant.
21881
21882 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
21883
21884         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
21885
21886 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
21887
21888         * doc/extend.texi, doc/invoke.texi: Fix typos.
21889
21890 2009-04-17  Cary Coutant  <ccoutant@google.com>
21891
21892         * tree-flow-inline.h (get_lineno): Fix inverted test.
21893
21894 2009-04-17  Diego Novillo  <dnovillo@google.com>
21895
21896         * tree-ssa-pre.c (create_expression_by_pieces): Remove
21897         assertion for AVAIL_OUT.
21898
21899 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
21900
21901         PR target/38627
21902         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
21903         * config/sh/linux-atomic.asm: Likewise.
21904
21905 2009-04-17  Diego Novillo  <dnovillo@google.com>
21906
21907         * except.c (debug_eh_tree): New.
21908         (struct eh_region, struct eh_status): Move ...
21909         * except.h: ... here.
21910         (add_type_for_runtime): Declare extern.
21911         (lookup_type_for_runtime): Likewise.
21912         (debug_eh_tree): Declare.
21913         * Makefile.in (GTFILES): List except.h before except.c
21914
21915 2009-04-17  Diego Novillo  <dnovillo@google.com>
21916
21917         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
21918         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
21919         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
21920         (find_vars_r): ... here.
21921         * tree-flow.h (find_referenced_vars_in): Declare.
21922         * tree-ssa-pre.c (create_expression_by_pieces): Assert
21923         that AVAIL_OUT exists for BLOCK.
21924         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
21925         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
21926         (tree-parloops.o): Likewise.
21927
21928 2009-04-17  Simon Baldwin  <simonb@google.com>
21929
21930         * toplev.c (default_tree_printer): Add handling for %E format.
21931
21932 2009-04-17  Diego Novillo  <dnovillo@google.com>
21933
21934         * tree-pretty-print.c (dump_generic_node): Add break after
21935         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
21936         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
21937         FUNCTION_TYPE together.  Call print_struct_decl when printing
21938         structures and TDF_SLIM is not given.
21939         (print_struct_decl): Fix logic for detecting recursion.
21940
21941 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
21942
21943         PR 31567
21944         * gcc.c (create_at_file): New.
21945         (compile_input_file_p): New.
21946         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
21947         * main.c (main): Update call to toplev_main.
21948         * toplev.c (toplev_main): Change signature. Call expandargv.
21949         * toplev.h (toplev_main): Change signature.
21950
21951 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
21952
21953         * dwarf2out.c (field_byte_offset): Use the type size as the field size
21954         if the latter is not constant.
21955
21956 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
21957
21958         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
21959
21960 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
21961
21962         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
21963         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
21964
21965 2009-04-17  Richard Guenther  <rguenther@suse.de>
21966
21967         * tree-ssa-structalias.c (get_constraint_for_component_ref):
21968         Handle component references view-converting an invariant address.
21969
21970 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
21971
21972         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
21973         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
21974         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
21975         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
21976         Use @deftypevr rather than @deftypevar.
21977
21978 2009-04-17  Richard Guenther  <rguenther@suse.de>
21979
21980         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
21981         (get_prop_source_stmt): Likewise.
21982         (can_propagate_from): Likewise.
21983
21984 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
21985
21986         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
21987         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
21988         (--with-multilib-list): Add default value.
21989         * configure: Regenerate.
21990         * Makefile.in (TM_ENDIAN_CONFIG): Define.
21991         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
21992         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
21993         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
21994         Don't add default cpu to multilib list unnecessarily, but do enable
21995         the relevant compiler option..
21996         Add support for --with-multilib-list=<blank> and
21997         --with-multilib-list=!<somelib> to supress unwanted multilibs.
21998         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
21999         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
22000         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
22001         TM_MULTILIB_CONFIG.
22002         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
22003         (MULTILIB_OSDIRNAMES): New variable.
22004         * config/sh/t-1e: Delete file.
22005         * config/sh/t-mlib-sh1: Delete file.
22006         * config/sh/t-mlib-sh2: Delete file.
22007         * config/sh/t-mlib-sh2a: Delete file.
22008         * config/sh/t-mlib-sh2a-nofpu: Delete file.
22009         * config/sh/t-mlib-sh2a-single: Delete file.
22010         * config/sh/t-mlib-sh2a-single-only: Delete file.
22011         * config/sh/t-mlib-sh2e: Delete file.
22012         * config/sh/t-mlib-sh3e: Delete file.
22013         * config/sh/t-mlib-sh4: Delete file.
22014         * config/sh/t-mlib-sh4-nofpu: Delete file.
22015         * config/sh/t-mlib-sh4-single: Delete file.
22016         * config/sh/t-mlib-sh4-single-only: Delete file.
22017         * config/sh/t-mlib-sh4a: Delete file.
22018         * config/sh/t-mlib-sh4a-nofpu: Delete file.
22019         * config/sh/t-mlib-sh4a-single: Delete file.
22020         * config/sh/t-mlib-sh4a-single-only: Delete file.
22021         * config/sh/t-mlib-sh4al: Delete file.
22022         * config/sh/t-mlib-sh5-32media: Delete file.
22023         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
22024         * config/sh/t-mlib-sh5-64media: Delete file.
22025         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
22026         * config/sh/t-mlib-sh5-compact: Delete file.
22027         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
22028         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
22029         * doc/install.texi (Options specification): Add
22030         --with-multilib-list and --with-endian.
22031
22032 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
22033
22034         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
22035         REVISION_c.
22036         (OBJS-common): Add plugin-version.o.
22037         (plugin-version.o): New.
22038         * gcc-plugin.h (plugin_gcc_version): New.
22039         (plugin_default_version_check): New.
22040         (plugin_init_func, plugin_init): Add version argument.
22041         * plugin-version.c: New.
22042         * plugin.c (str_plugin_gcc_version_name): New.
22043         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
22044         pass it to the init function.
22045         (plugin_default_version_check): New.
22046
22047 2009-04-17  Richard Guenther  <rguenther@suse.de>
22048
22049         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
22050         for decl-vs-decl disambiguation.
22051
22052 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
22053
22054         * config/s390/s390.h (s390_tune_attr): New macro definition.
22055         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
22056
22057 2009-04-17  Richard Guenther  <rguenther@suse.de>
22058
22059         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
22060         (fold_stmt_r): Likewise.
22061         (maybe_fold_reference): New function.
22062         (fold_gimple_assign): Handle cases fold_stmt_r did.
22063         (fold_stmt): Do not use fold_stmt_r.
22064         (fold_stmt_inplace): Likewise.
22065
22066 2009-04-17  Richard Guenther  <rguenther@suse.de>
22067
22068         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
22069         (record_equivalences_from_stmt): Remove useless checks and
22070         simplifications.
22071         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
22072         the type is already suitable.
22073
22074 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
22075
22076         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
22077
22078 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
22079
22080         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
22081         (CMPtype): Define as __gcc_CMPtype.
22082
22083 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
22084
22085         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
22086         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
22087
22088 2009-04-17  Richard Guenther  <rguenther@suse.de>
22089
22090         PR tree-optimization/39746
22091         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
22092         special-casing for builtins and static variable use/def.
22093         (call_may_clobber_ref_p_1): Likewise.
22094
22095 2009-04-16  Ian Lance Taylor  <iant@google.com>
22096
22097         * df.h: Include "timevar.h".
22098         (struct df_problem): Change tv_id field to timevar_id_t.
22099         * tree-pass.h: Include "timevar.h".
22100         (struct opt_pass): Change tv_id field to timevar_id_t.
22101         * timevar.h (timevar_id_t): Define TV_NONE.
22102         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
22103         TV_NONE rather than tv_id != 0.
22104         (execute_one_pass): Likewise.
22105         * Makefile.in (DF_H): Add $(TIMEVAR_H).
22106         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
22107         dependencies to $(TREE_PASS_H).
22108         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
22109         to TV_NONE.
22110         (pass_branch_target_load_optimize2): Likewise.
22111         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
22112         (pass_outof_cfg_layout_mode): Likewise.
22113         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
22114         (pass_rebuild_cgraph_edges): Likewise.
22115         (pass_remove_cgraph_callee_edges): Likewise.
22116         * df-core.c (pass_df_initialize_opt): Likewise.
22117         (pass_df_initialize_no_opt): Likewise.
22118         (pass_df_finish): Likewise.
22119         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
22120         * except.c (pass_set_nothrow_function_flags): Likewise.
22121         (pass_convert_to_eh_region_ranges): Likewise.
22122         * final.c (pass_compute_alignments): Likewise.
22123         * function.c (pass_instantiate_virtual_regs): Likewise.
22124         (pass_init_function): Likewise.
22125         (pass_leaf_regs): Likewise.
22126         (pass_match_asm_constraints): Likewise.
22127         * gimple-low.c (pass_lower_cf): Likewise.
22128         (pass_mark_used_blocks): Likewise.
22129         * init-regs.c (pass_initialize_regs): Likewise.
22130         * integrate.c (pass_initial_value_sets): Likewise.
22131         * ira.c (pass_ira): Likewise.
22132         * jump.c (pass_cleanup_barriers): Likewise.
22133         * omp-low.c (pass_expand_omp): Likewise.
22134         (pass_lower_omp): Likewise.
22135         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
22136         * recog.c (pass_split_all_insns): Likewise.
22137         (pass_split_after_reload): Likewise.
22138         (pass_split_before_regstack): Likewise.
22139         (pass_split_before_sched2): Likewise.
22140         (pass_split_for_shorten_branches): Likewise.
22141         * reginfo.c (pass_reginfo_init): Likewise.
22142         (pass_subregs_of_mode_init): Likewise.
22143         (pass_subregs_of_mode_finish): Likewise.
22144         * passes.c (pass_postreload): Likewise.
22145         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
22146         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
22147         (pass_warn_function_return): Likewise.
22148         (pass_warn_function_noreturn): Likewise.
22149         * tree-complex.c (pass_lower_complex): Likewise.
22150         (pass_lower_complex_O0): Likewise.
22151         * tree-if-conv.c (pass_if_conversion): Likewise.
22152         * tree-into-ssa.c (pass_build_ssa): Likewise.
22153         * tree-mudflap.c (pass_mudflap_1): Likewise.
22154         (pass_mudflap_2): Likewise.
22155         * tree-nomudflap.c (pass_mudflap_1): Likewise.
22156         (pass_mudflap_2): Likewise.
22157         * tree-nrv.c (pass_return_slot): Likewise.
22158         * tree-object-size.c (pass_object_sizes): Likewise.
22159         * tree-optimize.c (pass_all_optimizations): Likewise.
22160         (pass_early_local_passes): Likewise.
22161         (pass_all_early_optimizations): Likewise.
22162         (pass_cleanup_cfg): Likewise.
22163         (pass_cleanup_cfg_post_optimizing): Likewise.
22164         (pass_free_datastructures): Likewise.
22165         (pass_free_cfg_annotations): Likewise.
22166         (pass_fixup_cfg): Likewise.
22167         (pass_init_datastructures): Likewise.
22168         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
22169         (pass_late_warn_uninitialized): Likewise.
22170         (pass_update_address_taken): Likewise.
22171         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
22172         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
22173         (pass_cse_sincos): Likewise.
22174         (pass_convert_to_rsqrt): Likewise.
22175         * tree-ssa-structalias.c (pass_build_alias): Likewise.
22176         * tree-stdarg.c (pass_stdarg): Likewise.
22177         * tree-tailcall.c (pass_tail_recursion): Likewise.
22178         (pass_tail_calls): Likewise.
22179         * tree-vect-generic.c (pass_lower_vector): Likewise.
22180         (pass_lower_vector_ssa): Likewise.
22181         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
22182
22183 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
22184
22185         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
22186         XLR entry.
22187         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
22188         Handle -march=xlr.
22189         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
22190         logical and signext.
22191
22192 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
22193
22194         PR target/39767
22195         * config/sh/predicates.md (arith_operand): Check if the operand
22196         of TRUNCATE is a REG.
22197
22198 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22199
22200         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
22201         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
22202
22203 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22204
22205         * tree-iterator.c (tsi_split_statement_list_after,
22206         tsi_split_statement_list_before): Remove.
22207         * tree-iterator.h: Remove the prototypes for
22208         tsi_split_statement_list_after and tsi_split_statement_list_before.
22209
22210 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22211
22212         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
22213         * tree-ssa-propagate.h: Remove the prototype for
22214         stmt_makes_single_load.
22215
22216 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22217
22218         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
22219         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
22220
22221 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22222
22223         * tree-iterator.c (EXPR_LAST_BODY): Remove.
22224
22225 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22226
22227         * except.c (eh_region_outer_p): Remove.
22228         * except.h: Remove the prototype for eh_region_outer_p.
22229
22230 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
22231
22232         * function.c (current_function_assembler_name): Remove.
22233         * function.h: Remove the prototype for
22234         current_function_assembler_name.
22235
22236 2009-04-16  Ian Lance Taylor  <iant@google.com>
22237
22238         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
22239         (add_reg_note): Call alloc_reg_note.
22240         * rtl.h (alloc_reg_note): Declare.
22241         * combine.c (try_combine): Use alloc_reg_note.
22242         (recog_for_combine, move_deaths): Likewise.
22243         (distribute_notes): Use alloc_reg_note and add_reg_note.
22244         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
22245         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
22246         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
22247
22248 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
22249
22250         PR rtl-optimization/39762
22251         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
22252         ira_may_move_out_cost): Add comments about way of their usage.
22253         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
22254
22255         * ira-conflicts.c (process_regs_for_copy): Use function
22256         ira_get_register_move_cost instead of global
22257         ira_register_move_cost.
22258
22259         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
22260         color_pass, move_spill_restore, update_curr_costs): Ditto.
22261
22262         * ira-lives.c (process_single_reg_class_operands): Ditto.
22263
22264         * ira-emit.c (emit_move_list): Ditto.
22265
22266         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
22267         (record_reg_classes): Ditto.  Use functions
22268         ira_get_register_move_cost and ira_get_may_move_cost instead of
22269         global vars ira_register_move_cost, ira_may_move_out_cost and
22270         ira_may_move_in_cost.
22271         (record_address_regs): Don't call ira_init_register_move_cost.
22272         Use function ira_get_may_move_cost instead of global
22273         ira_may_move_in_cost.
22274         (process_bb_node_for_hard_reg_moves): Use function
22275         ira_get_register_move_cost instead of global ira_register_move_cost.
22276         (ira_costs): Don't call ira_init_register_move_cost.
22277
22278 2009-04-16  Richard Guenther  <rguenther@suse.de>
22279
22280         * tree-cfg.c (verify_gimple_assign_binary):
22281         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
22282         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
22283         (create_general_new_stmt): Note that this function is broken.
22284
22285 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
22286
22287         * common.opt (fhelp): Add Var(help_flag).
22288         * gcc-plugin.h (plugin_info): Add help.
22289         * plugin.c (plugin_name_args): Add help.
22290         (register_plugin_info): Set plugin->help.
22291         (print_help_one_plugin): New.
22292         (print_plugins_help): New.
22293         * plugin.h (print_plugins_help): New.
22294         * toplev.c (toplev_main): Call print_plugins_help if needed.
22295
22296 2009-04-16  Richard Guenther  <rguenther@suse.de>
22297
22298         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
22299         (gimple_ior_addresses_taken_1): New function.
22300         (gimple_ior_addresses_taken): Likewise.
22301         * gimple.h (struct gimple_statement_with_ops_base): Remove
22302         addresses_taken member.
22303         (gimple_ior_addresses_taken): Declare.
22304         (gimple_addresses_taken, gimple_addresses_taken_ptr,
22305         gimple_set_addresses_taken): Remove.
22306         * ipa-reference.c (mark_address): New function.
22307         (scan_stmt_for_static_refs): Use it for marking addresses taken.
22308         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
22309         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
22310         (gimple_add_to_addresses_taken): Remove.
22311         (get_tmr_operands): Call mark_address_taken.
22312         (get_asm_expr_operands): Likewise.
22313         (get_expr_operands): Likewise.
22314         (build_ssa_operands): Do not clear the addresses_taken bitmap.
22315         (free_stmt_operands): Do not free it.
22316         * tree-ssa.c (delete_tree_ssa): Likewise.
22317         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
22318
22319 2009-04-16  Richard Guenther  <rguenther@suse.de>
22320
22321         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
22322         (walk_stmt_load_store_ops): Likewise.
22323         * gimple.c (get_base_loadstore): New function.
22324         (walk_stmt_load_store_addr_ops): Likewise.
22325         (walk_stmt_load_store_ops): Likewise.
22326         * ipa-pure-const.c (check_op): Simplify.
22327         (check_load, check_store): New functions.
22328         (check_stmt): Use walk_stmt_load_store_ops.
22329         * ipa-reference.c (mark_load): Adjust signature.
22330         (mark_store): Likewise.
22331         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
22332
22333 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
22334
22335         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
22336         (plugin_info): New.
22337         * opts.c (common_handle_option): Don't call print_version.
22338         * plugin.c (plugin_name_args): Add version.
22339         (register_plugin_info): New.
22340         (register_callback): Handle PLUGIN_INFO.
22341         (try_init_one_plugin): New.
22342         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
22343         if failed to init.
22344         (finalize_one_plugin): New.
22345         (finalize_plugins): New.
22346         (print_one_plugin): New.
22347         (print_plugins_versions): New.
22348         * plugin.h (print_plugins_versions): New.
22349         (finalize_plugins): New.
22350         * toplev.c (compile_file): Don't call initialize_plugins.
22351         (print_version): Call print_plugins_versions.
22352         (toplev_main): Call initialize_plugins. Print version if needed.
22353         Call finalize_plugins.
22354
22355 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
22356
22357         * common.opt (fversion): New.
22358         * gcc.c (print_version): New.
22359         (process_command): Don't print the version. Just set print_version.
22360         (main): Print version. Call subprocesses if print_version and
22361         verbose_flag are set.
22362         * opts.c (common_handle_option): Handle OPT_fversion.
22363
22364 2009-04-16  Richard Guenther  <rguenther@suse.de>
22365             Ira Rosen  <irar@il.ibm.com>
22366
22367         PR tree-optimization/39698
22368         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
22369         type of the reduction variable.  Only generate the def if
22370         it is needed.
22371
22372         * omp-low.c (expand_omp_for_generic): When converting to a pointer
22373         make sure to first convert to an integer of the same precision.
22374         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
22375         the type of the evolution correctly in computing the new
22376         induction variable base.
22377
22378 2009-04-16  Richard Guenther  <rguenther@suse.de>
22379
22380         PR middle-end/39625
22381         * tree-cfg.c (make_blocks): Split statements with to-be
22382         abnormal SSA names on the lhs.
22383
22384 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
22385
22386         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
22387         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
22388         * c-typeck.c (really_start_incremental_init): Likewise.
22389         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
22390         (TARGET_INITIALIZER): Remove it.
22391         * target.h (struct target): Remove vector_opaque_p.
22392         * tree.c (build_opaque_vector_type): New.
22393         * tree.h (TYPE_VECTOR_OPAQUE): New.
22394         (build_opaque_vector_type): Declare.
22395         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
22396         * config/rs6000/rs6000.c (build_opaque_vector_type,
22397         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
22398         (rs6000_init_builtins): Use build_opaque_vector_type for
22399         opaque_V4SI_type_node.
22400
22401 2009-04-15  Catherine Moore  <clm@codesourcery.com>
22402
22403         * debug.h (set_name):  Declare.
22404         * dwarf2out.c (dwarf2out_set_name): Declare.
22405         (dwarf2_debug_hooks): Add set_name.
22406         (find_AT_string): New.
22407         (add_AT_string): Call find_AT_string.
22408         (dwarf2out_set_name): New.
22409         * cp/decl.c (grokdeclarator): Call set_name.
22410         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
22411         * debug.c (do_nothing_debug_hooks):  Likewise.
22412         * dbxout.c (dbx_debug_hooks): Likewise.
22413         * sdbout.c (sdb_debug_hooks): Likewise.
22414
22415 2009-04-15  Michael Eager  <eager@eagercon.com>
22416
22417         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
22418         reg for single-precision FPU.
22419         * config/rs6000/rs6000.md (movsi_internal1): Only for
22420         !TARGET_SINGLE_FPU.
22421         (movsi_internal1_single): New. Add pattern to move SI values to/from
22422         single-precision FP regs.
22423
22424 2009-04-15  Richard Guenther  <rguenther@suse.de>
22425
22426         * omp-low.c (lower_rec_input_clauses): Build correct address
22427         expressions.
22428         (expand_omp_for_generic): Fix multiplication type.
22429         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
22430         (generate_memset_zero): Fix types.
22431         * tree-profile.c (prepare_instrumented_value): Correctly
22432         widen a pointer.
22433
22434 2009-04-15  Ian Lance Taylor  <iant@google.com>
22435
22436         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
22437         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
22438         for -Wall and for -Wc++-compat.
22439         (c_common_post_options): For C++, set warn_enum_compare if not
22440         already set.
22441         * c-tree.h (struct c_expr): Add field original_type.
22442         (build_external_ref): Update declaration.
22443         * c-parser.c (c_parser_braced_init): Set original_type.
22444         (c_parser_initelt): Likewise.
22445         (c_parser_expr_no_commas): Likewise.
22446         (c_parser_conditional_expression): Likewise.
22447         (c_parser_cast_expression): Likewise.
22448         (c_parser_unary_expression): Likewise.  Pull setting of
22449         original_code to top of function.
22450         (c_parser_sizeof_expression): Set original_type.
22451         (c_parser_alignof_expression): Likewise.
22452         (c_parser_postfix_expression): Likewise.  Pull setting of
22453         original_code to top of function.
22454         (c_parser_postfix_expression_after_paren_type): Set original_type.
22455         (c_parser_postfix_expression_after_primary): Likewise.
22456         (c_parser_expression): Likewise.
22457         * c-typeck.c (build_external_ref): Add type parameter.  Change all
22458         callers.
22459         (c_expr_sizeof_expr): Set original_type field.
22460         (parser_build_unary_op): Likewise.
22461         (parser_build_binary_op): Likewise.  Optionally warn about
22462         comparisons of enums of different types.
22463         (digest_init): Set original_type field.
22464         (really_start_incremental_init): Likewise.
22465         (push_init_level, pop_init_level): Likewise.
22466         * doc/invoke.texi (Warning Options): -Wenum-compare now
22467         supported in C.
22468
22469 2009-04-15  Richard Guenther  <rguenther@suse.de>
22470
22471         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
22472         out a necessary conversion.
22473         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
22474         names we didn't value number.
22475         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
22476
22477 2009-04-15  Richard Guenther  <rguenther@suse.de>
22478
22479         PR tree-optimization/39764
22480         * tree-ssa-ccp.c (get_value): Canonicalize value with
22481         canonicalize_float_value.
22482
22483 2009-04-15  Jan Hubicka  <jh@suse.cz>
22484
22485         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
22486         Wrong version of patch.
22487
22488 2009-04-15  Jan Hubicka  <jh@suse.cz>
22489
22490         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
22491
22492 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
22493
22494         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
22495         our distinct integral and vector types.
22496
22497 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
22498
22499         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
22500         * init.c (build_vtbl_address): Remove call to assemble_external.
22501
22502 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
22503
22504         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
22505         output for other floating point modes.
22506
22507 2009-04-14  Diego Novillo  <dnovillo@google.com>
22508
22509         * diagnostic.c (diagnostic_report_diagnostic): Do not
22510         warn about loaded plugins for DK_ERROR and DK_WARNING.
22511         * c-decl.c (declspecs_add_type): Move call to
22512         invoke_plugin_callbacks ...
22513         * c-parser.c (c_parser_declspecs): ... here.
22514         * plugin.c (dump_active_plugins): Tidy output.
22515
22516 2009-04-14  Diego Novillo  <dnovillo@google.com>
22517             Le-Chun Wu  <lcwu@google.com>
22518
22519         * configure.ac: Add --enable-plugin support.
22520         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
22521         * Makefile.in (PLUGIN_H): Define.
22522         Export ENABLE_PLUGIN and GMPINC to site.exp.
22523         Add PLUGINLIBS to link command.
22524         Add/modify dependencies for plugin.o and files including plugin.h.
22525         (plugin.o): New.
22526         * config.in: Regenerate.
22527
22528         * opts.c (common_handle_option): Handle OPT_fplugin_ and
22529         OPT_fplugin_arg_.
22530
22531 2009-04-14  Le-Chun Wu  <lcwu@google.com>
22532
22533         * tree-pass.h (register_one_dump_file): Add a prototype for
22534         register_one_dump_file.
22535         * toplev.c (compile_file): Call initialize_plugins.
22536         (do_compile): Call invoke_plugin_callbacks.
22537         (toplev_main): Call invoke_plugin_callbacks.
22538         * common.opt: Add -fplugin= and -fplugin-arg-.
22539         * gcc-plugin.h: New public header file for plugins to include.
22540         * plugin.c: New source file.
22541         * plugin.h: New internal header file.
22542         * passes.c (register_one_dump_file): Make it external.
22543
22544         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
22545
22546 2009-04-14  Diego Novillo  <dnovillo@google.com>
22547
22548         * doc/plugins.texi: New.
22549         * doc/gccint.texi: Add reference to Plugins chapter.
22550         * doc/invoke.texi: Document -fplugin and -fplugin-arg
22551         * diagnostic.c (diagnostic_report_diagnostic): Warn about
22552         loaded plugins, if any.
22553         * timevar.def (TV_PLUGIN_INIT): Define.
22554         (TV_PLUGIN_RUN): Define.
22555         * plugin.c: Include timevar.h
22556         (plugins_active_p): New.
22557         (dump_active_plugins): New.
22558         (debug_active_plugins): New.
22559
22560 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
22561
22562         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
22563         library paths.
22564         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
22565
22566 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
22567
22568         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
22569         the same as a minus without a shift.
22570
22571 2009-04-14  Nick Clifton  <nickc@redhat.com>
22572
22573         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
22574         comparisons with small integers will always produce a short
22575         branch.
22576
22577 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
22578
22579         Merge:
22580         2008-12-19  Diego Novillo  <dnovillo@google.com>
22581
22582         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
22583
22584 2009-04-14  Richard Guenther  <rguenther@suse.de>
22585
22586         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
22587         verification.
22588         (verify_gimple_assign_binary): Likewise.  Handle shifts and
22589         rotates correctly.
22590         (verify_gimple_phi): Print the mismatched argument position.
22591         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
22592         Fix types.
22593         (vect_update_init_of_dr): Likewise.
22594         * matrix-reorg.c (transform_access_sites): Do what the
22595         comment suggests.
22596         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
22597
22598 2009-04-13  Michael Eager  <eager@eagercon.com>
22599
22600         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
22601         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
22602         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
22603         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
22604         remove duplicate config
22605
22606 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
22607
22608         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
22609         file_name:line_number type locator of the call site.
22610
22611 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
22612
22613         * genautomata.c: Put blank after comma.
22614         (automaton_decls): New.
22615         (struct unit_usage): Add comments to member next.
22616         (store_alt_unit_usage): Keep the list ordered.
22617         (unit_present_on_list_p, equal_alternatives_p): New.
22618         (check_regexp_units_distribution): Check units distribution
22619         correctness correctly.
22620         (main): Don't write automata if error is found.  Return correct
22621         exit code.
22622
22623         * config/m68k/cf.md (cfv4_ds): Remove.
22624         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
22625         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
22626
22627         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
22628         power4-load-ext, power4-store, power4-store-update,
22629         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
22630         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
22631         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
22632         power4-sqrt, power4-isync): Modify reservation to make correct
22633         unit distribution to automata.
22634
22635         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
22636         power5-store-update, power5-two, power5-three, power5-lmul,
22637         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
22638
22639 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
22640
22641         * except.c (pass_set_nothrow_function_flags): Set name and add
22642         TODO_dump_func.
22643         (set_nothrow_function_flags): Mention in the dump file when
22644         changing a function to nothrow.
22645
22646 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
22647
22648         PR/39066
22649         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
22650         instead of unsigned long.
22651
22652 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22653
22654         * config/arm/arm.c (return_used_this_function): Remove.
22655         (arm_output_function_prologue): Remove use of
22656         return_used_this_function.
22657         (output_return_instruction): Replace use of
22658         return_used_this_function
22659         by cfun->machine->return_used_this_function.
22660         (arm_output_epilogue): Likewise.
22661         (arm_output_function_epilogue): Likewise.
22662         (thumb_unexpanded_epilogue): Likewise.
22663         * config/arm/arm.h (struct machine_function):
22664         New member return_used_this_function.
22665
22666 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
22667
22668         * doc/install.texi: Correct description of default directory for
22669         --with-gxx-include-dir.
22670
22671 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
22672
22673         * fold-const.c (build_range_check): Properly deal with enumeral and
22674         boolean base types.
22675
22676 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
22677
22678         * doc/invoke.texi (max_gcse_passes): Remove documentation.
22679         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
22680         * params.h (MAX_GCSE_PASSES): Remove.
22681         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
22682         in sequence.  Remove ability to run multiple passes.
22683         (bypass_jumps): Report run as third CPROP pass.
22684
22685 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
22686
22687         PR middle-end/39651
22688         * except.c (can_throw_external): Look at each insn in a SEQUENCE
22689         when deciding whether the whole SEQUENCE can throw.
22690
22691 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
22692
22693         PR target/39740
22694         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
22695         offseted label references.
22696
22697 2009-04-11  Jan Hubicka  <jh@suse.cz>
22698
22699         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
22700
22701 2009-04-11  Richard Guenther  <rguenther@suse.de>
22702
22703         PR middle-end/39732
22704         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
22705         return variables as TREE_ADDRESSABLE.
22706
22707 2009-04-11  Richard Guenther  <rguenther@suse.de>
22708
22709         PR tree-optimization/39713
22710         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
22711         reference trees have SSA_NAME operands.
22712
22713 2009-04-11  Richard Guenther  <rguenther@suse.de>
22714
22715         PR c/39712
22716         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
22717         address expressions.
22718
22719 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
22720
22721         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
22722         match changes in Cygwin 1.7
22723         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
22724         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
22725
22726 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
22727
22728         PR tree-optimization/39701
22729         * doc/invoke.texi (Optimization Options): Document change in
22730         meaning and initialization of -fdelete-null-pointer-checks.
22731
22732 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
22733
22734         PR middle-end/39701
22735         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
22736
22737         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
22738         here.
22739
22740         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
22741
22742 2009-04-10  Chao-ying Fu  <fu@mips.com>
22743
22744         * doc/tm.texi (Instruction Output): Document
22745         TARGET_ASM_FINAL_POSTSCAN_INSN.
22746         * target.h (final_postscan_insn): New field in asm_out.
22747         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
22748         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
22749         * final.c (final_scan_insn): Call
22750         targetm.asm_out.final_postscan_insn after outputting
22751         an asm macro and a normal instruction.
22752
22753         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
22754         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
22755         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
22756         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
22757         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
22758
22759 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
22760
22761         PR middle-end/39701
22762         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
22763         variables as non-NULL even with -fdelete-null-pointer-checks.
22764
22765 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
22766
22767         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
22768
22769 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
22770
22771         PR target/39678
22772         * config/i386/i386.c (classify_argument): Handle SCmode with
22773         (bit_offset % 64) != 0.
22774
22775 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
22776
22777         * doc/invoke.texi (Optimize Options): Add cross-reference to
22778         -Q --help=optimizers examples.
22779
22780 2009-04-10  Ben Elliston  <bje@au.ibm.com>
22781
22782         PR target/36800
22783         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
22784         regalign for the reg == fpr and TDmode case.
22785
22786 2009-04-09  David Ayers  <ayers@fsfe.org>
22787
22788         PR objc/29200
22789         * objc/objc-act.c (warn_with_method): Remove helper function.
22790         (check_duplicates): Call warning and inform directly.
22791         (really_start_method): Likewise.
22792
22793 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
22794
22795         * expmed.c (expand_divmod): Always use a comparison for a division
22796         by a large unsigned integer.
22797
22798         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
22799         for things others than variables or functions as nonzero.
22800
22801 2009-04-09  Nick Clifton  <nickc@redhat.com>
22802
22803         * unwind-compat.c: Change copyright header to refer to version
22804         3 of the GNU General Public License with version 3.1 of the
22805         GCC Runtime Library Exception and to point readers at the
22806         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
22807         * config/alpha/crtfastmath.c: Likewise.
22808         * config/alpha/linux-unwind.h: Likewise.
22809         * config/alpha/qrnnd.asm: Likewise.
22810         * config/alpha/vms-crt0-64.c: Likewise.
22811         * config/alpha/vms-crt0.c: Likewise.
22812         * config/alpha/vms-dwarf2.asm: Likewise.
22813         * config/alpha/vms-dwarf2eh.asm: Likewise.
22814         * config/alpha/vms-psxcrt0-64.c: Likewise.
22815         * config/alpha/vms-psxcrt0.c: Likewise.
22816         * config/alpha/vms_tramp.asm: Likewise.
22817         * config/arc/initfini.c: Likewise.
22818         * config/arc/lib1funcs.asm: Likewise.
22819         * config/arm/bpabi-v6m.S: Likewise.
22820         * config/arm/bpabi.S: Likewise.
22821         * config/arm/bpabi.c: Likewise.
22822         * config/arm/crti.asm: Likewise.
22823         * config/arm/crtn.asm: Likewise.
22824         * config/arm/ieee754-df.S: Likewise.
22825         * config/arm/ieee754-sf.S: Likewise.
22826         * config/arm/lib1funcs.asm: Likewise.
22827         * config/arm/libunwind.S: Likewise.
22828         * config/arm/linux-atomic.c: Likewise.
22829         * config/arm/mmintrin.h: Likewise.
22830         * config/arm/pr-support.c: Likewise.
22831         * config/arm/unaligned-funcs.c: Likewise.
22832         * config/arm/unwind-arm.c: Likewise.
22833         * config/arm/unwind-arm.h: Likewise.
22834         * config/avr/libgcc.S: Likewise.
22835         * config/bfin/crti.s: Likewise.
22836         * config/bfin/crtlibid.s: Likewise.
22837         * config/bfin/crtn.s: Likewise.
22838         * config/bfin/lib1funcs.asm: Likewise.
22839         * config/bfin/linux-unwind.h: Likewise.
22840         * config/cris/arit.c: Likewise.
22841         * config/cris/cris_abi_symbol.c: Likewise.
22842         * config/darwin-64.c: Likewise.
22843         * config/darwin-crt2.c: Likewise.
22844         * config/darwin-crt3.c: Likewise.
22845         * config/darwin.h: Likewise.
22846         * config/dbxelf.h: Likewise.
22847         * config/dfp-bit.c: Likewise.
22848         * config/dfp-bit.h: Likewise.
22849         * config/elfos.h: Likewise.
22850         * config/fixed-bit.c: Likewise.
22851         * config/fixed-bit.h: Likewise.
22852         * config/fp-bit.c: Likewise.
22853         * config/fp-bit.h: Likewise.
22854         * config/fr30/crti.asm: Likewise.
22855         * config/fr30/crtn.asm: Likewise.
22856         * config/fr30/lib1funcs.asm: Likewise.
22857         * config/freebsd-spec.h: Likewise.
22858         * config/frv/cmovd.c: Likewise.
22859         * config/frv/cmovh.c: Likewise.
22860         * config/frv/cmovw.c: Likewise.
22861         * config/frv/frvbegin.c: Likewise.
22862         * config/frv/frvend.c: Likewise.
22863         * config/frv/lib1funcs.asm: Likewise.
22864         * config/glibc-stdint.h: Likewise.
22865         * config/h8300/clzhi2.c: Likewise.
22866         * config/h8300/crti.asm: Likewise.
22867         * config/h8300/crtn.asm: Likewise.
22868         * config/h8300/ctzhi2.c: Likewise.
22869         * config/h8300/fixunssfsi.c: Likewise.
22870         * config/h8300/lib1funcs.asm: Likewise.
22871         * config/h8300/parityhi2.c: Likewise.
22872         * config/h8300/popcounthi2.c: Likewise.
22873         * config/i386/ammintrin.h: Likewise.
22874         * config/i386/att.h: Likewise.
22875         * config/i386/avxintrin.h: Likewise.
22876         * config/i386/biarch64.h: Likewise.
22877         * config/i386/bmmintrin.h: Likewise.
22878         * config/i386/cpuid.h: Likewise.
22879         * config/i386/cross-stdarg.h: Likewise.
22880         * config/i386/crtfastmath.c: Likewise.
22881         * config/i386/crtprec.c: Likewise.
22882         * config/i386/cygming-crtbegin.c: Likewise.
22883         * config/i386/cygming-crtend.c: Likewise.
22884         * config/i386/cygwin.asm: Likewise.
22885         * config/i386/emmintrin.h: Likewise.
22886         * config/i386/gmm_malloc.h: Likewise.
22887         * config/i386/gthr-win32.c: Likewise.
22888         * config/i386/i386.h: Likewise.
22889         * config/i386/immintrin.h: Likewise.
22890         * config/i386/linux-unwind.h: Likewise.
22891         * config/i386/linux64.h: Likewise.
22892         * config/i386/mm3dnow.h: Likewise.
22893         * config/i386/mmintrin-common.h: Likewise.
22894         * config/i386/mmintrin.h: Likewise.
22895         * config/i386/nmmintrin.h: Likewise.
22896         * config/i386/pmm_malloc.h: Likewise.
22897         * config/i386/pmmintrin.h: Likewise.
22898         * config/i386/smmintrin.h: Likewise.
22899         * config/i386/sol2-c1.asm: Likewise.
22900         * config/i386/sol2-ci.asm: Likewise.
22901         * config/i386/sol2-cn.asm: Likewise.
22902         * config/i386/sol2-gc1.asm: Likewise.
22903         * config/i386/tmmintrin.h: Likewise.
22904         * config/i386/unix.h: Likewise.
22905         * config/i386/w32-unwind.h: Likewise.
22906         * config/i386/wmmintrin.h: Likewise.
22907         * config/i386/x86-64.h: Likewise.
22908         * config/i386/x86intrin.h: Likewise.
22909         * config/i386/xmmintrin.h: Likewise.
22910         * config/ia64/crtbegin.asm: Likewise.
22911         * config/ia64/crtend.asm: Likewise.
22912         * config/ia64/crtfastmath.c: Likewise.
22913         * config/ia64/crti.asm: Likewise.
22914         * config/ia64/crtn.asm: Likewise.
22915         * config/ia64/fde-glibc.c: Likewise.
22916         * config/ia64/lib1funcs.asm: Likewise.
22917         * config/ia64/linux-unwind.h: Likewise.
22918         * config/ia64/quadlib.c: Likewise.
22919         * config/ia64/unwind-ia64.c: Likewise.
22920         * config/linux.h: Likewise.
22921         * config/m32c/m32c-lib1.S: Likewise.
22922         * config/m32c/m32c-lib2-trapv.c: Likewise.
22923         * config/m32c/m32c-lib2.c: Likewise.
22924         * config/m32r/initfini.c: Likewise.
22925         * config/m68hc11/larith.asm: Likewise.
22926         * config/m68hc11/m68hc11-crt0.S: Likewise.
22927         * config/m68k/cf.md: Likewise.
22928         * config/m68k/crti.s: Likewise.
22929         * config/m68k/crtn.s: Likewise.
22930         * config/m68k/lb1sf68.asm: Likewise.
22931         * config/m68k/linux-unwind.h: Likewise.
22932         * config/mcore/crti.asm: Likewise.
22933         * config/mcore/crtn.asm: Likewise.
22934         * config/mcore/lib1.asm: Likewise.
22935         * config/mips/linux-unwind.h: Likewise.
22936         * config/mips/loongson.h: Likewise.
22937         * config/mips/mips16.S: Likewise.
22938         * config/mmix/crti.asm: Likewise.
22939         * config/mmix/crtn.asm: Likewise.
22940         * config/pa/fptr.c: Likewise.
22941         * config/pa/hpux-unwind.h: Likewise.
22942         * config/pa/lib2funcs.asm: Likewise.
22943         * config/pa/linux-atomic.c: Likewise.
22944         * config/pa/linux-unwind.h: Likewise.
22945         * config/pa/milli64.S: Likewise.
22946         * config/pa/quadlib.c: Likewise.
22947         * config/pa/stublib.c: Likewise.
22948         * config/picochip/libgccExtras/adddi3.asm: Likewise.
22949         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
22950         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
22951         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
22952         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
22953         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
22954         * config/picochip/libgccExtras/divmod15.asm: Likewise.
22955         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
22956         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
22957         * config/picochip/libgccExtras/longjmp.asm: Likewise.
22958         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
22959         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
22960         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
22961         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
22962         * config/picochip/libgccExtras/setjmp.asm: Likewise.
22963         * config/picochip/libgccExtras/subdi3.asm: Likewise.
22964         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
22965         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
22966         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
22967         * config/rs6000/750cl.h: Likewise.
22968         * config/rs6000/altivec.h: Likewise.
22969         * config/rs6000/biarch64.h: Likewise.
22970         * config/rs6000/crtresfpr.asm: Likewise.
22971         * config/rs6000/crtresgpr.asm: Likewise.
22972         * config/rs6000/crtresxfpr.asm: Likewise.
22973         * config/rs6000/crtresxgpr.asm: Likewise.
22974         * config/rs6000/crtsavfpr.asm: Likewise.
22975         * config/rs6000/crtsavgpr.asm: Likewise.
22976         * config/rs6000/darwin-asm.h: Likewise.
22977         * config/rs6000/darwin-fallback.c: Likewise.
22978         * config/rs6000/darwin-fpsave.asm: Likewise.
22979         * config/rs6000/darwin-ldouble.c: Likewise.
22980         * config/rs6000/darwin-tramp.asm: Likewise.
22981         * config/rs6000/darwin-unwind.h: Likewise.
22982         * config/rs6000/darwin-vecsave.asm: Likewise.
22983         * config/rs6000/darwin-world.asm: Likewise.
22984         * config/rs6000/e500crtres32gpr.asm: Likewise.
22985         * config/rs6000/e500crtres64gpr.asm: Likewise.
22986         * config/rs6000/e500crtres64gprctr.asm: Likewise.
22987         * config/rs6000/e500crtrest32gpr.asm: Likewise.
22988         * config/rs6000/e500crtrest64gpr.asm: Likewise.
22989         * config/rs6000/e500crtresx32gpr.asm: Likewise.
22990         * config/rs6000/e500crtresx64gpr.asm: Likewise.
22991         * config/rs6000/e500crtsav32gpr.asm: Likewise.
22992         * config/rs6000/e500crtsav64gpr.asm: Likewise.
22993         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
22994         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
22995         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
22996         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
22997         * config/rs6000/eabi-ci.asm: Likewise.
22998         * config/rs6000/eabi-cn.asm: Likewise.
22999         * config/rs6000/eabi.asm: Likewise.
23000         * config/rs6000/linux-unwind.h: Likewise.
23001         * config/rs6000/linux64.h: Likewise.
23002         * config/rs6000/paired.h: Likewise.
23003         * config/rs6000/paired.md: Likewise.
23004         * config/rs6000/ppc64-fp.c: Likewise.
23005         * config/rs6000/ppu_intrinsics.h: Likewise.
23006         * config/rs6000/rs6000.h: Likewise.
23007         * config/rs6000/si2vmx.h: Likewise.
23008         * config/rs6000/sol-ci.asm: Likewise.
23009         * config/rs6000/sol-cn.asm: Likewise.
23010         * config/rs6000/spe.h: Likewise.
23011         * config/rs6000/spu2vmx.h: Likewise.
23012         * config/rs6000/sysv4.h: Likewise.
23013         * config/rs6000/tramp.asm: Likewise.
23014         * config/rs6000/vec_types.h: Likewise.
23015         * config/s390/linux-unwind.h: Likewise.
23016         * config/s390/tpf-unwind.h: Likewise.
23017         * config/score/crti.asm: Likewise.
23018         * config/score/crtn.asm: Likewise.
23019         * config/sh/crt1.asm: Likewise.
23020         * config/sh/crti.asm: Likewise.
23021         * config/sh/crtn.asm: Likewise.
23022         * config/sh/divtab-sh4-300.c: Likewise.
23023         * config/sh/divtab-sh4.c: Likewise.
23024         * config/sh/divtab.c: Likewise.
23025         * config/sh/lib1funcs-4-300.asm: Likewise.
23026         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
23027         * config/sh/lib1funcs.asm: Likewise.
23028         * config/sh/lib1funcs.h: Likewise.
23029         * config/sh/linux-atomic.asm: Likewise.
23030         * config/sh/linux-unwind.h: Likewise.
23031         * config/sh/shmedia.h: Likewise.
23032         * config/sh/sshmedia.h: Likewise.
23033         * config/sh/ushmedia.h: Likewise.
23034         * config/sparc/crtfastmath.c: Likewise.
23035         * config/sparc/linux-unwind.h: Likewise.
23036         * config/sparc/sol2-c1.asm: Likewise.
23037         * config/sparc/sol2-ci.asm: Likewise.
23038         * config/sparc/sol2-cn.asm: Likewise.
23039         * config/spu/divmodti4.c: Likewise.
23040         * config/spu/divv2df3.c: Likewise.
23041         * config/spu/float_disf.c: Likewise.
23042         * config/spu/float_unsdidf.c: Likewise.
23043         * config/spu/float_unsdisf.c: Likewise.
23044         * config/spu/float_unssidf.c: Likewise.
23045         * config/spu/mfc_multi_tag_release.c: Likewise.
23046         * config/spu/mfc_multi_tag_reserve.c: Likewise.
23047         * config/spu/mfc_tag_release.c: Likewise.
23048         * config/spu/mfc_tag_reserve.c: Likewise.
23049         * config/spu/mfc_tag_table.c: Likewise.
23050         * config/spu/multi3.c: Likewise.
23051         * config/spu/spu_internals.h: Likewise.
23052         * config/spu/spu_intrinsics.h: Likewise.
23053         * config/spu/spu_mfcio.h: Likewise.
23054         * config/spu/vec_types.h: Likewise.
23055         * config/spu/vmx2spu.h: Likewise.
23056         * config/stormy16/stormy16-lib2.c: Likewise.
23057         * config/svr4.h: Likewise.
23058         * config/sync.c: Likewise.
23059         * config/v850/lib1funcs.asm: Likewise.
23060         * config/vxlib-tls.c: Likewise.
23061         * config/vxlib.c: Likewise.
23062         * config/vxworks-dummy.h: Likewise.
23063         * config/xtensa/crti.asm: Likewise.
23064         * config/xtensa/crtn.asm: Likewise.
23065         * config/xtensa/ieee754-df.S: Likewise.
23066         * config/xtensa/ieee754-sf.S: Likewise.
23067         * config/xtensa/lib1funcs.asm: Likewise.
23068         * config/xtensa/lib2funcs.S: Likewise.
23069         * config/xtensa/linux-unwind.h: Likewise.
23070         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
23071         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
23072         * coretypes.h: Likewise.
23073         * crtstuff.c: Likewise.
23074         * defaults.h: Likewise.
23075         * dwarf2.h: Likewise.
23076         * emutls.c: Likewise.
23077         * gbl-ctors.h: Likewise.
23078         * gcov-io.h: Likewise.
23079         * ginclude/float.h: Likewise.
23080         * ginclude/iso646.h: Likewise.
23081         * ginclude/stdarg.h: Likewise.
23082         * ginclude/stdbool.h: Likewise.
23083         * ginclude/stddef.h: Likewise.
23084         * ginclude/stdfix.h: Likewise.
23085         * ginclude/stdint-gcc.h: Likewise.
23086         * ginclude/tgmath.h: Likewise.
23087         * gthr-aix.h: Likewise.
23088         * gthr-dce.h: Likewise.
23089         * gthr-gnat.c: Likewise.
23090         * gthr-gnat.h: Likewise.
23091         * gthr-lynx.h: Likewise.
23092         * gthr-mipssde.h: Likewise.
23093         * gthr-nks.h: Likewise.
23094         * gthr-posix.c: Likewise.
23095         * gthr-posix.h: Likewise.
23096         * gthr-posix95.h: Likewise.
23097         * gthr-rtems.h: Likewise.
23098         * gthr-single.h: Likewise.
23099         * gthr-solaris.h: Likewise.
23100         * gthr-tpf.h: Likewise.
23101         * gthr-vxworks.h: Likewise.
23102         * gthr-win32.h: Likewise.
23103         * gthr.h: Likewise.
23104         * libgcc2.c: Likewise.
23105         * libgcc2.h: Likewise.
23106         * libgcov.c: Likewise.
23107         * tsystem.h: Likewise.
23108         * typeclass.h: Likewise.
23109         * unwind-c.c: Likewise.
23110         * unwind-compat.h: Likewise.
23111         * unwind-dw2-fde-compat.c: Likewise.
23112         * unwind-dw2-fde-darwin.c: Likewise.
23113         * unwind-dw2-fde-glibc.c: Likewise.
23114         * unwind-dw2-fde.c: Likewise.
23115         * unwind-dw2-fde.h: Likewise.
23116         * unwind-dw2.c: Likewise.
23117         * unwind-dw2.h: Likewise.
23118         * unwind-generic.h: Likewise.
23119         * unwind-pe.h: Likewise.
23120         * unwind-sjlj.c: Likewise.
23121         * unwind.inc: Likewise.
23122         * config/arm/neon-gen.ml: Change generated copyright header to
23123         refer to version 3 of the GNU General Public License with
23124         version 3.1 of the GCC Runtime Library Exception and to point
23125         readers at the COPYING3 and COPYING3.RUNTIME files and the
23126         FSF's license web page.
23127         * config/arm/arm_neon.h: Regenerate.
23128
23129 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
23130
23131         * config/cris/cris.md: Change copyright header to refer to version
23132         3 of the GNU General Public License.
23133         * doc/install.texi2html: Change copyright header to refer to version
23134         3 of the GNU General Public License and to point readers at the
23135         COPYING3 file and the FSF's license web page.
23136         * config/vax/linux.h: Likewise.
23137
23138 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
23139
23140         * config/i386/i386.md (cmpcc): New.
23141         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
23142         (sync_compare_and_swap_cc*): Delete.
23143
23144         * config/s390/s390.c (s390_compare_emitted): Remove.
23145         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
23146         s390_compare_emitted used to be handled.  Assert that modes match.
23147         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
23148         refer to sync_compare_and_swap_ccsi.
23149         * config/s390/s390.h (s390_compare_emitted): Remove.
23150         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
23151         instead of s390_compare_emitted.
23152         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
23153         instead of s390_compare_emitted.
23154         * config/s390/s390.md (cmpcc): New.
23155         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
23156         CC_REGNUM, do not pretend it's set.
23157         (sync_compare_and_swap_cc*): Delete.
23158         * config/s390/predicates.md (cc_reg_operand): New.
23159
23160         * expr.c (sync_compare_and_swap_cc): Delete.
23161         * optabs.h (sync_compare_and_swap_cc): Delete.
23162         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
23163         is being used with can_compare_p.
23164         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
23165         (find_cc_set): New.
23166         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
23167         look for a MODE_CC set instead.  Use emit_store_flag.
23168         (expand_compare_and_swap_loop): Likewise, with some additional
23169         complication to avoid a force_reg when useless.  Use
23170         emit_cmp_and_jump_insns.
23171         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
23172         * doc/md.texi (sync_compare_and_swap_cc): Merge with
23173         sync_compare_and_swap documentation.
23174
23175 2009-04-09  Jan Hubicka  <jh@suse.cz>
23176
23177         * except.c (find_prev_try): Break out from ....
23178         (duplicate_eh_regions): ... here; properly update prev_try pointers
23179         when duplication part of tree.
23180         (dump_eh_tree): Improve dumping.
23181         (verify_eh_region): New.
23182         (verify_eh_tree): Use it.
23183
23184 2009-04-06  Richard Guenther  <rguenther@suse.de>
23185
23186         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
23187         &ARRAY addresses by adjusting their types and prepending
23188         a conversion.
23189         * tree-cfg.c (verify_gimple_assign_single): Verify that
23190         addresses are correct.
23191
23192 2009-04-09  Richard Guenther  <rguenther@suse.de>
23193
23194         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
23195         indices into an array reference if possible.
23196         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
23197         Fold POINTER_PLUS_EXPR statements with invariant address.
23198
23199 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
23200
23201         PR target/39634
23202         * config.gcc (powerpc64-*-linux*): Always build biarch.
23203
23204 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
23205
23206         PR c/39613
23207         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
23208         it and pedwarn if this results in an INTEGER_CST.
23209
23210 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23211
23212         * doc/install.texi: Update minimum GMP version.  Remove obsolete
23213         text in MPFR section.
23214
23215 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
23216
23217         * dwarf2out.c (class_scope_p): New static inline.
23218         (class_or_namespace_scope_p): Use it.
23219         (gen_variable_die): Use DW_TAG_member tag for static data member
23220         declarations instead of DW_TAG_variable.
23221
23222         PR middle-end/39573
23223         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
23224         variables.
23225
23226 2009-04-08  Richard Guenther  <rguenther@suse.de>
23227
23228         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
23229         valueize random data.
23230
23231 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
23232
23233         * config.gcc (aix tm_file):  Add aix-stdint.h.
23234         (aix tm clause use_gcc_stdint):  Set to wrap.
23235         * config/rs6000/aix-stdint.h:  New file.
23236
23237 2009-04-08  Richard Guenther  <rguenther@suse.de>
23238
23239         PR middle-end/36291
23240         * tree-dfa.c (add_referenced_var): Do not recurse into
23241         global initializers.
23242         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
23243         exposed variables.
23244         (fold_const_aggregate_ref): Likewise.
23245
23246 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
23247
23248         * recog.c (ordered_comparison_operator): New.
23249         * gensupport.c (std_preds): Add it.
23250         * doc/md.texi (Machine-Independent Predicates): Document it.
23251
23252 2009-04-08  Jan Hubicka  <jh@suse.cz>
23253
23254         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
23255         * function.h (rtl_eh): Remove exception_handler_label_map.
23256         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
23257         remove_exception_handler_label, for_each_eh_label_1): Remove.
23258         (rtl_remove_unreachable_regions): Remove.
23259         (convert_from_eh_region_ranges): Do not remove unreachable regions.
23260         (find_exception_handler_labels): Don't build the hashtable.
23261         (maybe_remove_eh_handler): Remove.
23262         (for_each_eh_label): Rewrite to walk the tree.
23263         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
23264         * except.h (maybe_remove_eh_handler): Remove.
23265         * passes.c (init_optimization_passes): Schedule second EH cleanup
23266         before out-of-ssa.
23267         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
23268         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
23269
23270 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
23271
23272         * genoutput.c (validate_optab_operands): New.
23273         (gen_insn, gen_expand): Call it.
23274
23275         * genflags.c (gen_insn): Detect misused iterators.
23276         (main): Pass line_no to gen_insn, exit with status 1 on error.
23277
23278         * genextract.c (line_no): Make global.
23279         (VEC_safe_set_locstr): Change assertion to error message.
23280         (main): Exit with status 1 on error.
23281
23282 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
23283
23284         PR c/39614
23285         PR c/39673
23286         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
23287         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
23288         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
23289         * c-convert.c (convert): Do not call fold on results of conversion
23290         functions when the result is a C_MAYBE_CONST_EXPR.
23291         * c-parser.c (c_parser_postfix_expression): Do not fold condition
23292         of __builtin_choose_expr.
23293         * c-typeck.c (remove_c_maybe_const_expr): New.
23294         (build_unary_op, build_conditional_expr, build_compound_expr,
23295         build_binary_op, c_objc_common_truthvalue_conversion): Call
23296         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
23297         integer operands.
23298
23299 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
23300
23301         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
23302         CODE to produce a new one. Add a prototype to use fold_convert_const
23303
23304 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
23305
23306         PR bootstrap/39660
23307         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
23308         mix declarations and code.
23309
23310 2009-04-08  Ben Elliston  <bje@au.ibm.com>
23311
23312         * gcc.c: Replace `CC' with `GCC' throughout.
23313
23314 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
23315
23316         * doc/invoke.texi: Document Atom support.
23317
23318 2009-04-07  Jason Merrill  <jason@redhat.com>
23319
23320         PR c++/25185
23321         * c-common.h, c-common.c: Add flag_pretty_templates.
23322         * c-opts.c (c_common_handle_option): Set it.
23323         * c.opt: Add -fno-pretty-templates.
23324         * doc/invoke.texi (C++ Dialect Options): Likewise.
23325
23326 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
23327
23328         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
23329         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
23330         (ia64_expand_builtin): Likewise.
23331
23332 2009-04-07  Martin Jambor  <mjambor@suse.cz>
23333
23334         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
23335         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
23336         ADDR_EXPRS are include too.
23337
23338 2009-04-07  Richard Guenther  <rguenther@suse.de>
23339
23340         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
23341         decls are only used if passes as parameters or if they are
23342         local statics and the call is not to a builtin.
23343         (call_may_clobber_ref_p_1): Likewise.
23344
23345 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
23346
23347         * expr.c (do_store_flag): Remove last argument.  Simplify code
23348         to avoid duplication of tests already done by can_compare_p.
23349         (expand_expr_real_1): Adjust caller.
23350
23351 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
23352
23353         * optabs.c (can_compare_p): Test the predicate of a
23354         cbranch and cstore pattern.
23355
23356 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
23357
23358         * expr.c (convert_move): Use emit_store_flag instead of
23359         "emulating" it.
23360
23361 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
23362
23363         * config/i386/i386.c (ix86_compare_emitted): Remove.
23364         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
23365         ix86_compare_op0 like ix86_compare_emitted used to be handled.
23366         * config/i386/i386.h (ix86_compare_emitted): Remove.
23367         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
23368         instead of ix86_compare_emitted.
23369         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
23370
23371 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
23372
23373         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
23374         Add t-sysroot-suffix to tmake_file.
23375         * config/print-sysroot-suffix.sh: New file.
23376         * config/t-sysroot-suffix: New file.
23377
23378 2009-04-07  Ben Elliston  <bje@au.ibm.com>
23379
23380         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
23381         as the latter produces a warning when the target does not support
23382         infinity.
23383
23384 2009-04-07  Ben Elliston  <bje@au.ibm.com>
23385
23386         * dfp.c: Replace type punning assignments with memcpy throughout.
23387         * Makefile.in (dfp.o-warn): Remove.
23388
23389 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
23390
23391         PR target/39634
23392         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
23393         Include soft-fp/t-softfp after rs6000/t-linux64.
23394
23395 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
23396
23397         * stor-layout.c (set_sizetype): Use the full precision of their
23398         machine mode for bitsize types.
23399
23400 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
23401
23402         * config/i386/i386.md: Revert 2 accidental checkins.
23403
23404 2009-04-06  Joey Ye  <joey.ye@intel.com>
23405             Xuepeng Guo  <xuepeng.guo@intel.com>
23406             H.J. Lu  <hongjiu.lu@intel.com>
23407
23408         Atom pipeline model, tuning and insn selection.
23409         * config.gcc (atom): Add atom config options and target.
23410
23411         * config/i386/atom.md: New.
23412
23413         * config/i386/i386.c (atom_cost): New cost.
23414         (m_ATOM): New macro flag.
23415         (initial_ix86_tune_features): Set m_ATOM.
23416         (x86_accumulate_outgoing_args): Likewise.
23417         (x86_arch_always_fancy_math_387): Likewise.
23418         (processor_target): Add Atom cost.
23419         (cpu_names): Add Atom cpu name.
23420         (override_options): Set Atom ISA.
23421         (ix86_issue_rate): New case PROCESSOR_ATOM.
23422         (ix86_adjust_cost): Likewise.
23423
23424         * config/i386/i386.h (TARGET_ATOM): New target macro.
23425         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
23426         (TARGET_OPT_AGU): New target option.
23427         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
23428         (processor_type): Add PROCESSOR_ATOM.
23429
23430         * config/i386/i386.md (cpu): Add new value "atom".
23431         (use_carry, movu): New attr.
23432         (atom.md): Include atom.md.
23433         (adddi3_carry_rex64): Set attr "use_carry".
23434         (addqi3_carry): Likewise.
23435         (addhi3_carry): Likewise.
23436         (addsi3_carry): Likewise.
23437         (*addsi3_carry_zext): Likewise.
23438         (subdi3_carry_rex64): Likewise.
23439         (subqi3_carry): Likewise.
23440         (subhi3_carry): Likewise.
23441         (subsi3_carry): Likewise.
23442         (x86_movdicc_0_m1_rex64): Likewise.
23443         (*x86_movdicc_0_m1_se): Likewise.
23444         (x86_movsicc_0_m1): Likewise.
23445         (*x86_movsicc_0_m1_se): Likewise.
23446         (*adddi_1_rex64): Emit add insn as much as possible.
23447         (*addsi_1): Likewise.
23448         (return_internal): Set atom_unit.
23449         (return_internal_long): Likewise.
23450         (return_pop_internal): Likewise.
23451         (*rcpsf2_sse): Set atom_sse_attr attr.
23452         (*qrt<mode>2_sse): Likewise.
23453         (*prefetch_sse): Likewise.
23454
23455         * config/i386/i386-c.c (ix86_target_macros_internal): New case
23456         PROCESSOR_ATOM.
23457         (ix86_target_macros_internal): Likewise.
23458
23459         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
23460         (*prefetch_sse_rex): Likewise.
23461         (sse_rcpv4sf2): Likewise.
23462         (sse_vmrcpv4sf2): Likewise.
23463         (sse_sqrtv4sf2): Likewise.
23464         (<sse>_vmsqrt<mode>2): Likewise.
23465         (sse_ldmxcsr): Likewise.
23466         (sse_stmxcsr): Likewise.
23467         (*sse_sfence): Likewise.
23468         (sse2_clflush): Likewise.
23469         (*sse2_mfence): Likewise.
23470         (*sse2_lfence): Likewise.
23471         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
23472         (<sse>_movup<ssemodesuffixf2c>): Likewise.
23473         (avx_movdqu<avxmodesuffix>): Likewise.
23474         (avx_lddqu<avxmodesuffix>): Likewise.
23475         (sse2_movntv2di): Change attr "type" to "ssemov".
23476         (sse2_movntsi): Likewise.
23477         (rsqrtv8sf2): Change attr "type" to "sseadd".
23478         (sse3_addsubv2df3): Set attr "atom_unit".
23479         (sse3_h<plusminus_insn>v4sf3): Likewise.
23480         (*sse2_pmaddwd): Likewise.
23481         (*vec_extractv2di_1_rex64): Likewise.
23482         (*vec_extractv2di_1_avx): Likewise.
23483         (sse2_psadbw): Likewise.
23484         (ssse3_phaddwv8hi3): Likewise.
23485         (ssse3_phaddwv4hi3): Likewise.
23486         (ssse3_phadddv4si3): Likewise.
23487         (ssse3_phadddv2si3): Likewise.
23488         (ssse3_phaddswv8hi3): Likewise.
23489         (ssse3_phaddswv4hi3): Likewise.
23490         (ssse3_phsubwv8hi3): Likewise.
23491         (ssse3_phsubwv4hi3): Likewise.
23492         (ssse3_phsubdv4si3): Likewise.
23493         (ssse3_phsubdv2si3): Likewise.
23494         (ssse3_phsubswv8hi3): Likewise.
23495         (ssse3_phsubswv4hi3): Likewise.
23496         (ssse3_pmaddubsw128): Likewise.
23497         (sse3_pmaddubsw: Likewise.
23498         (ssse3_palignrti): Likewise.
23499         (ssse3_palignrdi): Likewise.
23500
23501 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
23502
23503         * doc/install.texi (Specific): Fix two cross-references to MinGW.
23504
23505 2009-04-06  Richard Guenther  <rguenther@suse.de>
23506
23507         PR tree-optimization/28868
23508         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
23509         of which PHI results we inserted.
23510         (insert_into_preds_of_block): Record inserted PHIs.
23511         (eliminate): Eliminate redundant PHI nodes.
23512         (init_pre): Init inserted_phi_names.
23513
23514 2009-04-06  Richard Guenther  <rguenther@suse.de>
23515
23516         PR tree-optimization/39643
23517         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
23518         IMAGPART_EXPRs of complex constants.
23519         (execute_fold_all_builtins): If we folded a call queue
23520         TODO_update_address_taken.
23521
23522 2009-04-06  Jan Hubicka  <jh@suse.cz>
23523
23524         PR middle-end/39659
23525         * except.c (remove_unreachable_regions): Propagate may_contain_throw
23526         flag.
23527
23528 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
23529
23530         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
23531         delay slot.
23532         (ic_invalidate_array): Likewise.
23533
23534 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
23535
23536         * calls.c (emit_library_call_value_1): Fix a problem with parameter
23537         alignment for library calls.
23538
23539 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
23540
23541         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
23542         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
23543         * config/i386/mingw-stdint.h:  New file.
23544
23545 2009-04-05  Richard Guenther  <rguenther@suse.de>
23546
23547         PR tree-optimization/39648
23548         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
23549         our &A vs. &A[0] IL deficiencies.
23550
23551 2009-04-04  Jan Hubicka  <jh@suse.cz>
23552
23553         * except.c (sjlj_find_directly_reachable_regions): Be ready for
23554         removed toplevel regions.
23555         (sjlj_mark_call_sites): Likewise.
23556
23557 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
23558
23559         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
23560         (cygwin tm clause use_gcc_stdint):  Set to wrap.
23561         * config/i386/cygwin-stdint.h:  New file.
23562
23563 2009-04-04  Richard Guenther  <rguenther@suse.de>
23564
23565         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
23566         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
23567         single-argument PHIs if we are in loop-closed SSA form.
23568         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
23569         for the pre-condition.
23570         (slpeel_tree_peel_loop_to_edge): Likewise.
23571         (vect_build_loop_niters): Take an optional sequence to append stmts.
23572         (vect_generate_tmps_on_preheader): Likewise.
23573         (vect_do_peeling_for_loop_bound): Take extra guards for the
23574         pre-condition.
23575         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
23576         the cost model check.
23577         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
23578         guards if we are going to peel.  Do not apply versioning in that case.
23579         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
23580         (vect_do_peeling_for_loop_bound): Likewise.
23581         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
23582         loop bound only record extra pre-conditions, do not apply loop
23583         versioning.
23584
23585 2009-04-04  Richard Guenther  <rguenther@suse.de>
23586
23587         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
23588         renaming code.
23589
23590 2009-04-04  Jan Hubicka  <jh@suse.cz>
23591
23592         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
23593         last_basic_block for size of bb->index indexed array.
23594         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
23595         compute_out, link_btr_uses, build_btr_def_use_webs,
23596         build_btr_def_use_webs, migrate_btr_defs): Likewise.
23597
23598 2009-04-04  Jan Hubicka  <jh@suse.cz>
23599
23600         * except.c (remove_eh_handler_and_replace): Break out from ...
23601         (remove_eh_handler): ... here.
23602         (bring_to_root): New function.
23603         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
23604         handled ones, bring others to root of tree.
23605
23606 2009-04-04  Jan Hubicka  <jh@suse.cz>
23607
23608         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
23609         (all_phis_safe_to_merge): New function.
23610         (update_info): New structure.
23611         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
23612         (cleanup_empty_eh): Update SSA if possible.
23613
23614 2009-04-04  Richard Guenther  <rguenther@suse.de>
23615
23616         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
23617         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
23618         (append_vuse): Likewise.
23619
23620 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
23621
23622         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
23623         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
23624         instead of REG_UNSAVED for DW_CFA_undefined.
23625         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
23626         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
23627         outermost frame.
23628
23629 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
23630
23631         PR target/39501
23632         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
23633
23634 2009-04-04  Richard Guenther  <rguenther@suse.de>
23635
23636         PR tree-optimization/8781
23637         PR tree-optimization/37892
23638         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
23639         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
23640         (valueize_refs): Call it for *& valueizations.
23641         (shared_reference_ops_from_ref): Rename to ...
23642         (valueize_shared_reference_ops_from_ref): ... this and valueize.
23643         (shared_reference_ops_from_call): Rename to ...
23644         (valueize_shared_reference_ops_from_call): ... this and valueize.
23645         (vn_reference_lookup): Update.
23646         (visit_reference_op_call): Likewise.
23647         * tree-ssa-pre.c (phi_translate_1): Fold *&.
23648         (eliminate): Value-replace the call address in call statements.
23649
23650 2009-04-04  Richard Guenther  <rguenther@suse.de>
23651
23652         PR tree-optimization/39636
23653         * tree-ssa-forwprop.c
23654         (forward_propagate_addr_into_variable_array_index): Check for
23655         GIMPLE_ASSIGN before accessing the rhs code.
23656
23657 2009-04-03  Jason Merrill  <jason@redhat.com>
23658
23659         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
23660
23661 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
23662
23663         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
23664         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
23665         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
23666         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
23667         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
23668         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
23669         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
23670         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
23671         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
23672         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
23673         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
23674         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
23675         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
23676         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
23677         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
23678         Use fr_reg_or_fp01_operand instead of fr_register_operand
23679
23680         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
23681         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
23682         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
23683
23684 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
23685
23686         PR rtl-optimization/39607
23687         PR rtl-optimization/39631
23688
23689         Revert:
23690
23691         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
23692         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
23693         instead of DF_LR_OUT.
23694         * ira-lives.c (process_bb_node_lives): Ditto.
23695         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
23696         instead of DF_LR_{OUT,IN}.
23697         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
23698         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
23699
23700 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
23701
23702         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
23703         (execute_lower_omp): Always run but take the short way out if -fopenmp
23704         is not given.
23705         (gate_lower_omp): Remove, forcing the pass manager to always run the
23706         pass and always set PROP_gimple_lomp.
23707         (pass_lower_omp): Remove gate function.
23708         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
23709         PROP_trees.  Instead, require it.
23710         * ipa-cp.c (pass_ipa_cp): Likewise.
23711         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
23712         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
23713         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
23714         and PROP_gimple_leh.
23715
23716 2009-04-03  Richard Guenther  <rguenther@suse.de>
23717
23718         PR middle-end/13146
23719         PR tree-optimization/23940
23720         PR tree-optimization/33237
23721         PR middle-end/33974
23722         PR middle-end/34093
23723         PR tree-optimization/36201
23724         PR tree-optimization/36230
23725         PR tree-optimization/38049
23726         PR tree-optimization/38207
23727         PR tree-optimization/38230
23728         PR tree-optimization/38301
23729         PR tree-optimization/38585
23730         PR middle-end/38895
23731         PR tree-optimization/38985
23732         PR tree-optimization/39299
23733         * tree-ssa-structalias.h: Remove.
23734         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
23735         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
23736         (struct vuse_element_d): Remove.
23737         (struct vuse_vec_d): Likewise.
23738         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
23739         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
23740         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
23741         VUSE_ELEMENT_VAR): Likewise.
23742         (struct voptype_d): Likewise.
23743         (NUM_VOP_FREE_BUCKETS): Likewise.
23744         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
23745         (struct stmt_operands_d): Remove.
23746         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
23747         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
23748         VDEF_NUM, VDEF_VECT): Likewise.
23749         (copy_virtual_operands): Remove.
23750         (operand_build_cmp): Likewise.
23751         (create_ssa_artificial_load_stmt): Likewise.
23752         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
23753         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
23754         vuse_index and mayuse_index members.  Pack and move done and iter_type
23755         members to the front.
23756         (SSA_OP_VMAYUSE): Remove.
23757         (SSA_OP_VIRTUAL_USES): Adjust.
23758         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
23759         (unlink_stmt_vdef): Declare.
23760         (add_to_addressable_set): Remove.
23761         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
23762         (vrp_visit_stmt): Likewise.
23763         * doc/tree-ssa.texi (Alias analysis): Update.
23764         * doc/invoke.texi (max-aliased-vops): Remove docs.
23765         (avg-aliased-vops): Likewise.
23766         * tree-into-ssa.c (syms_to_rename): Remove.
23767         (need_to_update_vops_p): Likewise.
23768         (need_to_initialize_update_ssa_p): Rename to ...
23769         (update_ssa_initialized_fn): ... this.  Track function we are
23770         initialized for.
23771         (symbol_marked_for_renaming): Simplify.
23772         (add_new_name_mapping): Do not set need_to_update_vops_p.
23773         (dump_currdefs): Use SYMS_TO_RENAME.
23774         (rewrite_update_stmt): Always walk all uses/defs.
23775         (dump_update_ssa): Adjust.
23776         (init_update_ssa): Take function argument.  Track what we are
23777         initialized for.
23778         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
23779         (create_new_def_for): Initialize for cfun, assert we are initialized
23780         for cfun.
23781         (mark_sym_for_renaming): Simplify.
23782         (mark_set_for_renaming): Do not initialize update-ssa.
23783         (need_ssa_update_p): Simplify.  Take function argument.
23784         (name_mappings_registered_p): Assert we ask for the correct function.
23785         (name_registered_for_update_p): Likewise.
23786         (ssa_names_to_replace): Likewise.
23787         (release_ssa_name_after_update_ssa): Likewise.
23788         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
23789         (dump_decl_set): Do not print a newline.
23790         (debug_decl_set): Do it here.
23791         (dump_update_ssa): And here.
23792         * tree-ssa-loop-im.c (move_computations): Adjust.
23793         (movement_possibility): Likewise.
23794         (determine_max_movement): Likewise.
23795         (gather_mem_refs_stmt): Likewise.
23796         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
23797         or NAME_MEMORY_TAG.
23798         * tree-complex.c (update_all_vops): Remove.
23799         (expand_complex_move): Adjust.
23800         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
23801         Simplify test for memory referencing statement.  Exclude
23802         non-invariant ADDR_EXPRs.
23803         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
23804         * tree-loop-distribution.c (generate_memset_zero): Adjust.
23805         (rdg_flag_uses): Likewise.
23806         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
23807         related code.
23808         (tree_optimize_tail_calls_1): Also split the
23809         edge from the entry block if we have degenerate PHI nodes in
23810         the first basic block.
23811         * tree.c (init_ttree): Remove memory-tag related code.
23812         (tree_code_size): Likewise.
23813         (tree_node_structure): Likewise.
23814         (build7_stat): Re-write to be build6_stat.
23815         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
23816         (SSA_VAR_P): Adjust.
23817         (struct tree_memory_tag): Remove.
23818         (struct tree_memory_partition_tag): Likewise.
23819         (union tree_node): Adjust.
23820         (build7): Re-write to be build6.
23821         * tree-pass.h (pass_reset_cc_flags): Remove.
23822         (TODO_update_address_taken): New flag.
23823         (pass_simple_dse): Remove.
23824         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
23825         * params.h (MAX_ALIASED_VOPS): Remove.
23826         (AVG_ALIASED_VOPS): Likewise.
23827         * omp-low.c (expand_omp_taskreg): Update SSA form.
23828         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
23829         aliases the lhs in a copy stmt.
23830         * tree-ssa-dse.c (struct address_walk_data): Remove.
23831         (memory_ssa_name_same): Likewise.
23832         (memory_address_same): Likewise.
23833         (get_kill_of_stmt_lhs): Likewise.
23834         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
23835         unused stores.  Look through PHI nodes into post-dominated regions.
23836         (dse_optimize_stmt): Simplify.  Properly remove stores.
23837         (tree_ssa_dse): Compute dominators.
23838         (execute_simple_dse): Remove.
23839         (pass_simple_dse): Likewise.
23840         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
23841         gimple_loaded_syms and gimple_stored_syms computation.
23842         * toplev.c (dump_memory_report): Dump alias and pta stats.
23843         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
23844         (vn_reference_eq): Likewise.
23845         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
23846         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
23847         valueize_vuses): Remove.
23848         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
23849         (get_def_ref_stmt_vuse): ... this.
23850         (vn_reference_lookup_2): New function.
23851         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
23852         walking equivalent vuses.  Simplify.
23853         (vn_reference_lookup): Likewise.
23854         (vn_reference_insert): Likewise.
23855         (vn_reference_insert_pieces): Likewise.
23856         (visit_reference_op_call): Simplify.
23857         (visit_reference_op_load): Likewise.
23858         (visit_reference_op_store): Likewise.
23859         (init_scc_vn): Remove shared_lookup_vuses initialization.
23860         (free_scc_vn): Remove shared_lookup_vuses freeing.
23861         (sort_vuses, sort_vuses_heap): Remove.
23862         (get_ref_from_reference_ops): Export.
23863         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
23864         vector with single vuse pointer.
23865         (vn_reference_lookup_pieces, vn_reference_lookup,
23866         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
23867         (shared_vuses_from_stmt): Remove.
23868         (get_ref_from_reference_ops): Declare.
23869         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
23870         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
23871         memory-tag related code.
23872         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
23873         (likely_value): Add comment, skip static-chain of call statements.
23874         (surely_varying_stmt_p): Adjust.
23875         (gimplify_and_update_call_from_tree): Likewise.
23876         (execute_fold_all_builtins): Do not rebuild alias info.
23877         (gimplify_and_update_call_from_tree): Properly update VOPs.
23878         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
23879         (copy_ref_info): Remove memory-tag related code.
23880         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
23881         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
23882         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
23883         computation.
23884         * tree-ssa-dom.c (gimple_p): Remove typedef.
23885         (eliminate_redundant_computations): Adjust.
23886         (record_equivalences_from_stmt): Likewise.
23887         (avail_expr_hash): Likewise.
23888         (avail_expr_eq): Likewise.
23889         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
23890         (stmt_makes_single_load): Likewise.
23891         (stmt_makes_single_store): Likewise.
23892         * tree-ssa-alias.c: Rewrite completely.
23893         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
23894         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
23895         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
23896         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
23897         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
23898         Remove public functions.
23899         (pass_reset_cc_flags): Remove.
23900         (pass_build_alias): Move ...
23901         * tree-ssa-structalias.c (pass_build_alias): ... here.
23902         * tree-ssa-alias.c (may_be_aliased): Move ...
23903         * tree-flow-inline.h (may_be_aliased): ... here.
23904         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
23905         count_uses_and_derefs): Move ...
23906         * gimple.c: ... here.
23907         * gimple.h (count_uses_and_derefs): Declare.
23908         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
23909         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
23910         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
23911         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
23912         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
23913         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
23914         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
23915         New functions.
23916         * tree-dfa.c (refs_may_alias_p): Move ...
23917         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
23918         * tree-ssa-alias.h: New file.
23919         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
23920         (statement_sink_location): Likewise.
23921         * opts.c (decode_options): Do not adjust max-aliased-vops or
23922         avg-aliased-vops values.
23923         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
23924         (TV_CALL_CLOBBER): Likewise.
23925         (TV_FLOW_SENSITIVE): Likewise.
23926         (TV_FLOW_INSENSITIVE): Likewise.
23927         (TV_MEMORY_PARTITIONING): Likewise.
23928         (TV_ALIAS_STMT_WALK): New timevar.
23929         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
23930         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
23931         (get_address_description): Remove memory-tag related code.
23932         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
23933         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
23934         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
23935         and immediate uses in statements.  Document.
23936         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
23937         (dump_symbols): Remove.
23938         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
23939         * alias.c (get_deref_alias_set): New function split out from ...
23940         (get_alias_set): ... here.
23941         * alias.h (get_deref_alias_set): Declare.
23942         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
23943         type parameter.  Remove restrict pointer handling.  Create a
23944         ref-all pointer in case type-based alias sets do not conflict.
23945         (vect_analyze_data_refs): Remove SMT related code.
23946         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
23947         (vectorizable_load): Likewise.
23948         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
23949         (DR_SYMBOL_TAG, DR_VOPS): Remove.
23950         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
23951         Ignore vops and SMTs.
23952         (dr_analyze_alias): Likewise..
23953         (free_data_ref): Likewise.
23954         (create_data_ref): Likewise.
23955         (analyze_all_data_dependences): Likewise.
23956         (get_references_in_stmt): Adjust.
23957         * tree-flow-inline.h (gimple_aliases_computed_p,
23958         gimple_addressable_vars, gimple_call_clobbered_vars,
23959         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
23960         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
23961         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
23962         gimple_mem_ref_stats): Remove.
23963         (gimple_vop): New function.
23964         (op_iter_next_use): Remove vuses and mayuses cases.
23965         (op_iter_next_def): Remove vdefs case.
23966         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
23967         (clear_and_done_ssa_iter): Do not set removed fields.
23968         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
23969         Assert we are not iterating over vuses or vdefs if not also
23970         iterating over uses or defs.
23971         (op_iter_init_use): Likewise.
23972         (op_iter_init_def): Likewise.
23973         (op_iter_next_vdef): Remove.
23974         (op_iter_next_mustdef): Likewise.
23975         (op_iter_init_vdef): Likewise.
23976         (compare_ssa_operands_equal): Likewise.
23977         (link_use_stmts_after): Handle vuse operand.
23978         (is_call_used): Use is_call_clobbered.
23979         (is_call_clobbered): Global variables are always call clobbered,
23980         query the call-clobbers bitmap.
23981         (mark_call_clobbered): Ignore global variables.
23982         (clear_call_clobbered): Likewise.
23983         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
23984         virtual operands sanity check.
23985         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
23986         Remove.
23987         (TARGET_MEM_REF): Remove TMR_TAG operand.
23988         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
23989         Remove call-clobber related code.
23990         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
23991         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
23992         partitions or escape reason.
23993         (get_single_def_stmt, get_single_def_stmt_from_phi,
23994         get_single_def_stmt_with_phi): Remove.
23995         (dump_referenced_vars): Tidy.
23996         (get_ref_base_and_extent): Allow bare decls.
23997         (collect_dfa_stats): Adjust.
23998         * graphite.c (rename_variables_in_stmt): Adjust.
23999         (graphite_copy_stmts_from_block): Likewise.
24000         (translate_clast): Likewise.
24001         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
24002         (EXPR_DIES): New.
24003         (translate_vuse_through_block): Use the oracle.
24004         (phi_translate_1): Adjust.
24005         (value_dies_in_block_x): Use the oracle.  Cache the outcome
24006         in EXPR_DIES.
24007         (valid_in_sets): Check if the VUSE for
24008         a REFERENCE is available.
24009         (eliminate): Do not remove stmts during elimination,
24010         instead queue and remove them afterwards.
24011         (do_pre): Do not rebuild alias info.
24012         (pass_pre): Run TODO_rebuild_alias before PRE.
24013         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
24014         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
24015         (mark_all_v_defs_stmt): Remove.
24016         (mark_all_v_defs_seq): Adjust.
24017         (sra_replace): Likewise.
24018         (scalarize_use): Likewise.
24019         (scalarize_copy): Likewise.
24020         (scalarize_init): Likewise.
24021         (scalarize_ldst): Likewise.
24022         (todoflags): Remove.
24023         (tree_sra): Do not rebuild alias info.
24024         (tree_sra_early): Adjust.
24025         (pass_sra): Run TODO_update_address_taken before SRA.
24026         * tree-predcom.c (set_alias_info): Remove.
24027         (prepare_initializers_chain): Do not call it.
24028         (mark_virtual_ops_for_renaming): Adjust.
24029         (mark_virtual_ops_for_renaming_list): Remove.
24030         (initialize_root_vars): Adjust.
24031         (initialize_root_vars_lm): Likewise.
24032         (prepare_initializers_chain): Likewise.
24033         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
24034         (may_propagate_copy_into_stmt): Likewise.
24035         (merge_alias_info): Do nothing for now.
24036         (propagate_tree_value_into_stmt): Adjust.
24037         (stmt_may_generate_copy): Likewise.
24038         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
24039         not mark symbols for renaming.
24040         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
24041         with the same statement, make sure to update the new pointed-to one.
24042         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
24043         call statements, do not mark symbols for renaming.
24044         (mark_operand_necessary): Dump something.
24045         (ref_may_be_aliased): New function.
24046         (mark_aliased_reaching_defs_necessary_1): New helper function.
24047         (mark_aliased_reaching_defs_necessary): Likewise.
24048         (mark_all_reaching_defs_necessary_1): Likewise.
24049         (mark_all_reaching_defs_necessary): Likewise.
24050         (propagate_necessity): Do not process virtual PHIs.  For
24051         non-aliased loads mark all reaching definitions as necessary.
24052         For aliased loads and stores mark the immediate dominating
24053         aliased clobbers as necessary.
24054         (visited): New global static.
24055         (perform_tree_ssa_dce): Free visited bitmap after propagating
24056         necessity.
24057         (remove_dead_phis): Perform simple dead virtual PHI removal.
24058         (remove_dead_stmt): Properly unlink virtual operands when
24059         removing stores.
24060         (eliminate_unnecessary_stmts): Schedule PHI removal after
24061         stmt removal.
24062         * tree-ssa-ter.c (is_replaceable_p): Adjust.
24063         (process_replaceable): Likewise.
24064         (find_replaceable_in_bb): Likewise.
24065         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
24066         based on the single gimple vop.
24067         (verify_flow_insensitive_alias_info): Remove.
24068         (verify_flow_sensitive_alias_info): Likewise.
24069         (verify_call_clobbering): Likewise.
24070         (verify_memory_partitions): Likewise.
24071         (verify_alias_info): Likewise.
24072         (verify_ssa): Adjust..
24073         (execute_update_addresses_taken): Export.  Update SSA
24074         manually.  Optimize only when optimizing.  Use a local bitmap.
24075         (pass_update_address_taken): Remove TODO_update_ssa, add
24076         TODO_dump_func.
24077         (pass_update_address_taken): Just use TODO_update_address_taken.
24078         (init_tree_ssa): Do not initialize addressable_vars.
24079         (verify_ssa): Verify new VUSE / VDEF properties.
24080         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
24081         Do not call verify_alias_info.
24082         (delete_tree_ssa): Clear the VUSE, VDEF operands.
24083         Do not free the loaded and stored syms bitmaps.  Reset the escaped
24084         and callused solutions.  Do not free addressable_vars.
24085         Remove memory-tag related code.
24086         (warn_uninitialized_var): Aliases are always available.
24087         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
24088         * lambda-code.c (can_put_in_inner_loop): Adjust.
24089         (can_put_after_inner_loop): Likewise.
24090         (perfect_nestify): Likewise.
24091         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
24092         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
24093         (vectorizable_conversion): Do not mark symbols for renaming.
24094         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
24095         (expand_call_inline): Unlink the calls virtual operands before
24096         replacing it.
24097         (tree_function_versioning): Do not call update_ssa if we are not
24098         updating clones.  Simplify.
24099         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
24100         (propagate_with_phi): Likewise..
24101         * tree-outof-ssa.c (create_temp): Remove memory tag and call
24102         clobber code.  Assert we are not aliased or global.
24103         * tree-flow.h: Include tree-ssa-alias.h
24104         (enum escape_type): Remove.
24105         (struct mem_sym_stats_d): Likewise.
24106         (struct mem_ref_stats_d): Likewise.
24107         (struct gimple_df): Add vop member.  Remove global_var,
24108         call_clobbered_vars, call_used_vars, addressable_vars,
24109         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
24110         escaped and callused members.
24111         (struct ptr_info_def): Remove all members, add points-to solution
24112         member pt.
24113         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
24114         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
24115         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
24116         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
24117         (tree-ssa-alias.o): Likewise.
24118         (toplev.o): Add tree-ssa-alias.h
24119         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
24120         * gimple.c (gimple_set_bb): Fix off-by-one error.
24121         (is_gimple_reg): Do not handle memory tags.
24122         (gimple_copy): Also copy virtual operands.
24123         Delay updating the statement.  Do not reset loaded and stored syms.
24124         (gimple_set_stored_syms): Remove.
24125         (gimple_set_loaded_syms): Likewise.
24126         (gimple_call_copy_skip_args): Copy the virtual operands
24127         and mark the new statement modified.
24128         * tree-ssa-structalias.c (may_alias_p): Remove.
24129         (set_uids_in_ptset): Take the alias set to prune with as
24130         parameter.  Fold in the alias test of may_alias_p.
24131         (compute_points_to_sets): Compute whether a ptr is dereferenced
24132         in a local sbitmap.
24133         (process_constraint): Deal with &ANYTHING on the lhs, reject all
24134         other ADDRESSOF constraints on the lhs.
24135         (get_constraint_for_component_ref): Assert that we don't get
24136         ADDRESSOF constraints from the base of the reference.
24137         Properly generate UNKNOWN_OFFSET for DEREF if needed.
24138         (struct variable_info): Remove collapsed_to member.
24139         (get_varinfo_fc): Remove.
24140         (new_var_info): Do not set collapsed_to.
24141         (dump_constraint): Do not follow cycles.
24142         (dump_constraint_graph): Likewise.
24143         (build_pred_graph): Likewise.
24144         (build_succ_graph): Likewise.
24145         (rewrite_constraints): Likewise.
24146         (do_simple_structure_copy): Remove.
24147         (do_rhs_deref_structure_copy): Remove.
24148         (do_lhs_deref_structure_copy): Remove.
24149         (collapse_rest_of_var): Remove.
24150         (do_structure_copy): Re-implement.
24151         (pta_stats): New global variable.
24152         (dump_pta_stats): New function.
24153         (struct constraint_expr): Make offset signed.
24154         (UNKNOWN_OFFSET): Define special value.
24155         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
24156         (solution_set_expand): New helper function split out from ...
24157         (do_sd_constraint): ... here.
24158         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
24159         (do_ds_constraint): Likewise.
24160         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
24161         and CALLUSED = *CALLUSED.
24162         (set_union_with_increment): Make inc argument signed.
24163         (type_safe): Remove.
24164         (get_constraint_for_ptr_offset): Handle unknown and negative
24165         constant offsets.
24166         (first_vi_for_offset): Handle offsets before start.  Bail
24167         out early for offsets beyond the variable extent.
24168         (first_or_preceding_vi_for_offset): New function.
24169         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
24170         Together with ESCAPED = *ESCAPED this properly computes reachability.
24171         (find_what_var_points_to): New function.
24172         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
24173         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
24174         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
24175         pt_solutions_intersect): New functions.
24176         (compute_call_used_vars): Remove.
24177         (compute_may_aliases): New main entry into PTA computation.
24178         * gimple.h (gimple_p): New typedef.
24179         (struct gimple_statement_base): Remove references_memory_p.
24180         (struct gimple_statement_with_memory_ops_base): Remove
24181         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
24182         members.
24183         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
24184         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
24185         gimple_set_references_memory): Remove.
24186         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
24187         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
24188         New functions.
24189         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
24190         (verify_expr): Allow RESULT_DECL.
24191         (gimple_duplicate_bb): Do not copy virtual operands.
24192         (gimple_duplicate_sese_region): Adjust.
24193         (gimple_duplicate_sese_tail): Likewise.
24194         (mark_virtual_ops_in_region): Remove.
24195         (move_sese_region_to_fn): Do not call it.
24196         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
24197         and pass_simple_dse.
24198         (execute_function_todo): Handle TODO_update_address_taken,
24199         call execute_update_addresses_taken for TODO_rebuild_alias.
24200         (execute_todo): Adjust.
24201         (execute_one_pass): Init dump files early.
24202         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
24203         call-clobbered.
24204         (create_general_new_stmt): Clear vops.
24205         * tree-ssa-reassoc.c (get_rank): Adjust.
24206         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
24207         symbols for renaming.
24208         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
24209         (PARAM_AVG_ALIASED_VOPS): Likewise.
24210         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
24211         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
24212         * tree-ssa-operands.c: Simplify for new virtual operand representation.
24213         (operand_build_cmp, copy_virtual_operands,
24214         create_ssa_artificial_load_stmt, add_to_addressable_set,
24215         gimple_add_to_addresses_taken): Remove public functions.
24216         (unlink_stmt_vdef): New function.
24217
24218 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
24219
24220         * config.gcc (powerpc-*-linux*): Merge variants.
24221
24222 2009-04-02  Chao-ying Fu  <fu@mips.com>
24223             James Grosbach  <james.grosbach@microchip.com>
24224
24225         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
24226         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
24227         cop0_sp_offset.
24228         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
24229         keep_interrupts_masked_p, use_debug_exception_return_p.
24230         (mips_attribute_table): Add interrupt, use_shadow_register_set,
24231         keep_interrupts_masked, use_debug_exception_return.
24232         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
24233         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
24234         New functions.
24235         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
24236         (mips_print_operand): Process COP0 registers to print $0 .. $31
24237         correctly for GAS to process.
24238         (mips_interrupt_extra_call_saved_reg_p): New function.
24239         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
24240         extra registers.
24241         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
24242         (mips_compute_frame_info): Add supports for interrupt context that
24243         includes doubleword accumulators and COP0 registers.
24244         (mips_for_each_saved_acc): New function.
24245         (mips_for_each_saved_gpr_and_fpr): Change the function name from
24246         mips_for_each_saved_reg.
24247         (mips_save_reg): Save accumulators.
24248         (mips_kernel_reg_p): A new for_each_rtx callback.
24249         (mips_expand_prologue): Support interrupt handlers.
24250         (mips_restore_reg): Restore accumulators.
24251         (mips_expand_epilogue): Support interrupt handlers.
24252         (mips_can_use_return_insn): Return false for interrupt handlers.
24253         (mips_epilogue_uses): New function.
24254         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
24255         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
24256         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
24257         cop0_move): New instructions.
24258         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
24259         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
24260         defines.
24261         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
24262         New defines.
24263         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
24264         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
24265         interrupt handlers, we use K0 as the temporary register.
24266         (EPILOGUE_USES): Change to a function call.
24267         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
24268         handlers, we use K0 as the temporary register.
24269
24270         * doc/extend.texi (Function Attributes): Document interrupt,
24271         use_shadow_register_set, keep_interrupts_masked,
24272         use_debug_exception_return for MIPS attributes.
24273
24274 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
24275
24276         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
24277         Remove a number of t-files from tmake_file.
24278         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
24279         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
24280         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
24281         target_prototype, not TARGET_PROTOTYPE.
24282         (LINK_OS_GNU_SPEC): Define.
24283         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
24284         and darwin-ldoubdle.c.
24285
24286 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
24287
24288         PR driver/39293
24289         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
24290         (cpp_options): Ditto.
24291         (default_compilers): Ditto.
24292         (display_help): Ditto.
24293         (process_command): Ditto.
24294         (do_spec_1): Ditto.
24295         (set_input): Use lbasename instead of duplicate code.
24296         (save_temps_prefix): New static for -save-temps=obj.
24297         (save_temps_length): Ditto.
24298
24299         * doc/invoke.texi (-save-temps=obj): Document new variant to
24300         -save-temps switch.
24301
24302 2009-04-02  Jeff Law  <law@redhat.com>
24303
24304         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
24305         variable.
24306
24307 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
24308
24309         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
24310         * configure: Regenerated.
24311
24312 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
24313
24314         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
24315         share the argument list.
24316
24317 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
24318
24319         Merge
24320
24321         2009-02-12  Diego Novillo  <dnovillo@google.com>
24322
24323         * varpool.c (debug_varpool): New.
24324         * cgraph.h (debug_varpool): Declare.
24325
24326 2009-04-02  Jan Hubicka  <jh@suse.cz>
24327
24328         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
24329         pass.
24330
24331 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
24332
24333         * config/i386/i386.c (ix86_abi): Move initialization to ...
24334         (override_options): Here.
24335
24336 2009-04-02  Christian Bruel  <christian.bruel@st.com>
24337
24338         * config/sh/sh.c (sh_dwarf_register_span): New function.
24339         (TARGET_DWARF_REGISTER_SPAN): Define.
24340         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
24341
24342 2009-04-02  Ira Rosen  <irar@il.ibm.com>
24343
24344         PR tree-optimization/39595
24345         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
24346         interleaved loads group is not  greater than the SLP group size.
24347
24348 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
24349
24350         * builtins.c (is_builtin_name): New.
24351         (called_as_built_in): Use is_builtin_name.
24352         * tree.h (is_builtin_name): New.
24353         * varasm.c (incorporeal_function_p): Use is_builtin_name
24354
24355 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
24356
24357         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
24358
24359 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
24360
24361         PR c++/26693
24362         * c-decl.c (clone_underlying_type): Move this ...
24363         * c-common.c (set_underlying_type): ... here.
24364         Also, make sure the function properly sets TYPE_STUB_DECL() on
24365         the newly created typedef variant type.
24366         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
24367         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
24368         points.
24369
24370 2009-04-02  Richard Guenther  <rguenther@suse.de>
24371
24372         PR tree-optimization/37221
24373         * tree-flow.h (degenerate_phi_result): Declare.
24374         * tree-ssa-dom.c (degenerate_phi_result): Export.
24375         * tree-scalar-evolution.c (analyze_initial_condition): If
24376         the initial condition is defined by a degenerate PHI node
24377         use the degenerate value.
24378
24379 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
24380
24381         PR rtl-optimization/39588
24382         * combine.c (merge_outer_ops): Do not set the constant when this
24383         is not necessary.
24384         (simplify_shift_const_1): Do not modify it either in this case.
24385
24386 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
24387
24388         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
24389         tuning is deprecated if -mtune value is set to an Itanium1 variant.
24390
24391 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
24392
24393         PR c/29027
24394         * c-lex.c (interpret_float): Default (no suffix) is double.
24395
24396 2009-04-1  Xinliang David Li  <davidxl@google.com>
24397
24398         * config/i386/i386.c (legitimate_constant_p): Recognize
24399         all one vector constant.
24400
24401 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24402
24403         * config/vax/vax.c: Add #includes to silence warnings.
24404         Change #include order to silence two warnings.
24405
24406 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24407
24408         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
24409         (ASM_SPEC): Pass -k to the assembler for PIC code.
24410
24411 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24412
24413         * config.gcc: Add vax-*-linux* to the switch.
24414         * config/vax/linux.h: New file. (TARGET_VERSION,
24415         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
24416
24417 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24418
24419         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
24420         Use predicate macros instead of GET_CODE() == foo.
24421         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
24422         ashlsi3, rotrsi3, <unnamed>): Likewise.
24423
24424 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24425
24426         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
24427         jbbccihi, jbbccisi): Remova trailing whitespace.
24428         * config/vax/constraints.md: Likewise.
24429         * config/vax/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
24430         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
24431         * config/vax/predicates.md: Likewise.
24432         * config/vax/vax.c (print_operand_address, vax_output_int_move,
24433         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
24434         * config/vax/vax.h: Likewise.
24435         * config/vax/vax.md (nonlocal_goto): Likewise.
24436
24437 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24438
24439         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
24440         (indirectable_address_p, adjacent_operands_p): Add spaces around
24441         braces.
24442         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
24443
24444 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24445
24446         * config/vax/vax.c (legitimate_constant_address_p,
24447         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
24448         index_term_p, reg_plus_index_p, legitimate_address_p,
24449         vax_mode_dependent_address_p): Update comments to match functions
24450         modified by the recent int->bool conversion.
24451
24452 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24453
24454         * config/vax/builtins.md: Update copyright message.
24455         * config/vax/constraints.md: Likewise.
24456         * config/vax/netbsd-elf.h: Likewise.
24457         * config/vax/predicates.md: Likewise.
24458         * config/vax/vax-protos.h: Likewise.
24459         * config/vax/vax.c: Likewise.
24460         * config/vax/vax.h: Likewise.
24461         * config/vax/vax.md: Likewise.
24462         * config/vax/vax.opt: Likewise.
24463
24464 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
24465
24466         * config/vax/builtins.md (ffssi2, ffssi2_internal,
24467         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
24468         * config/vax/constraints.md (B, R): Likewise.
24469         * config/vax/predicates.md (external_memory_operand,
24470         nonimmediate_addsub_di_operand): Likewise.
24471         * config/vax/vax.c (vax_output_int_add): Likewise.
24472         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
24473         untyped_call): Likewise.
24474
24475 2009-04-01  Matt Thomas  <matt@3am-software.com>
24476
24477         * config/vax/predicates.md: New file.
24478         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
24479         external_const_operand, nonsymbolic_operand, external_memory_operand,
24480         indirect_memory_operand, indexed_memory_operand,
24481         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
24482         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
24483         predicate.
24484         * config/vax/constraints.md: New file.
24485         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
24486         New constraint.
24487         * config/vax/builtins.md: New file.
24488         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
24489         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
24490         jbbccisi): Define.
24491         * config/vax/vax.opt (mqmath): Add option.
24492         * config/vax/vax.md (isfx): Extend with DI.
24493         (VAXintQH, VAXintQHSD): Define.
24494         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
24495         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
24496         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
24497         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
24498         (movdi): Update constraints and use vax_output_int_move().
24499         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
24500         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
24501         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
24502         nonlocal_goto): New.
24503         (mov<mode>): Extend accepted operand types.
24504         (subdi3_old): Rename from subdi3, change update constraints and use
24505         a new implementation.
24506         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
24507         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
24508         MOVE_RATIO, CLEAR_RATIO): Define.
24509         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
24510         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
24511         (PRINT_OPERAND): Redefine using a function instead of inlined code.
24512         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
24513         (split_quadword_operands): Make static and really allow variable
24514         splitting.
24515         (print_operand_address): Update for PIC generation.
24516         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
24517         indexable_address_p, fixup_mathdi_operand,
24518         vax_expand_addsub_di_operands, adjacent_operands_p): New.
24519         (vax_float_literal, legitimate_constant_p,
24520         indirectable_constant_address_p, index_term_p,
24521         reg_plus_index_p): Return bool instead of int.
24522         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
24523         where needed.
24524         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
24525         generation.
24526         (vax_output_conditional_branch): Indent.
24527         (legitimate_constant_address_p, indirectable_constant_address_p,
24528         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
24529         vax_mode_dependent_address_p): Return bool instead of int, update for
24530         PIC generation.
24531         * config/vax/vax-protos.h (legitimate_constant_address_p,
24532         legitimate_constant_p, legitimate_address_p,
24533         vax_mode_dependent_address_p): Change declaration to bool.
24534         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
24535         vax_expand_addsub_di_operands, vax_output_int_subtract,
24536         vax_output_movmemsi): Declare.
24537         (split_quadword_operands, vax_float_literal): Delete declaration.
24538         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
24539         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
24540         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
24541         ASM_OUTPUT_DWARF_PCREL): Define.
24542         (ASM_SPEC): Change definition to allow PIC generation.
24543
24544 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
24545
24546         * doc/sourcebuild.texi: Update front-end requirements.
24547
24548 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
24549
24550         PR target/39226
24551         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
24552         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
24553         (booldi3_internal3): Use boolean_or_operator instead of
24554         boolean_operator.
24555
24556 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
24557
24558         PR c/39605
24559         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
24560         declarator whose size is not an integer constant expression but
24561         folds to an integer constant, then treat it as a constant
24562         subsequently.
24563
24564 2009-04-01  Richard Guenther  <rguenther@suse.de>
24565
24566         * fold-const.c (fold_plusminus_mult_expr): Do not fold
24567         i * 4 + 2 to (i * 2 + 1) * 2.
24568
24569 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
24570
24571         PR c/37772
24572         * c-parser.c (c_parser_asm_statement): Skip until close paren and
24573         return if c_parser_asm_string_literal returned NULL.
24574
24575 2009-04-01  Nick Clifton  <nickc@redhat.com>
24576
24577         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
24578         already defined.
24579         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
24580         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
24581         other typedefs to avoid conflicts with libgcc2.c.  Define labels
24582         to gain 16-bit bit-manipulation functions from libgcc2.c and then
24583         include it.
24584         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
24585         to gain 16-bit trapping arithmetic functions from libgcc2.c and
24586         then include it.
24587
24588 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
24589
24590         * varasm.c (default_function_rodata_section): Declare DOT as
24591         const char*.
24592
24593 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
24594             Andrey Galkin  <agalkin@hypercom.com>
24595
24596         PR/39492
24597         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
24598         Make object_name unique for each process.
24599
24600 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
24601
24602         PR other/39591
24603         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
24604         addressable variables in the parallel that could go out of scope while
24605         running queued tasks.
24606
24607 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
24608
24609         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
24610         (CASE_VALUES_THRESHOLD): Redefine.
24611         * config/avr/avr.c (avr_override_options): Remove initialization of
24612         avr_case_values_threshold variable.
24613         (avr_case_values_threshold): Remove variable. Add new function.
24614         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
24615         * config/avr/avr.opt (mno-tablejump): Remove option.
24616         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
24617
24618 2009-04-01  DJ Delorie  <dj@redhat.com>
24619
24620         * varasm.c (default_function_rodata_section): Don't assume
24621         anything about where the first '.' in the section name is.
24622
24623 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
24624
24625         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
24626         rs6000_emit_stack_tie.
24627
24628 2009-03-31  Ian Lance Taylor  <iant@google.com>
24629
24630         * tree-eh.c (tree_remove_unreachable_handlers): Compare
24631         gimple_code with GIMPLE_RESX, not RESX.
24632
24633 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
24634
24635         * c-common.c (c_get_ident): New.
24636         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
24637
24638 2009-04-01  Ben Elliston  <bje@au.ibm.com>
24639
24640         * config/rs6000/sysv4.opt (msdata): Improve option description.
24641
24642 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
24643
24644         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
24645         (divdf3_internal_lat): Remove.
24646         (divxf3_internal_lat): Remove.
24647         (divxf3_internal_thr): Remove.
24648         (divxf): Use divxf3_internal.
24649         * config/ia64/div.md (divsf3_internal_lat): New.
24650         (divdf3_internal_lat): New.
24651         (divxf3_internal): New.
24652
24653 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
24654
24655         PR c/448
24656         * Makefile.in (USE_GCC_STDINT): Define.
24657         (stmp-int-hdrs): Install stdint.h if applicable.
24658         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
24659         if known.
24660         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
24661         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
24662         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
24663         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
24664         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
24665         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
24666         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
24667         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
24668         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
24669         (c_common_nodes_and_builtins): Initialize
24670         underlying_wchar_type_node.  Do not initialize
24671         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
24672         nodes for new types.
24673         (c_stddef_cpp_builtins): Define macros for new types.
24674         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
24675         Remove.
24676         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
24677         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
24678         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
24679         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
24680         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
24681         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
24682         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
24683         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
24684         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
24685         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
24686         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
24687         int16_type_node, int32_type_node, int64_type_node,
24688         uint8_type_node, uint16_type_node, c_uint32_type_node,
24689         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
24690         int_least32_type_node, int_least64_type_node,
24691         uint_least8_type_node, uint_least16_type_node,
24692         uint_least32_type_node, uint_least64_type_node,
24693         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
24694         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
24695         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
24696         uintptr_type_node): Define.
24697         * c-cppbuiltin.c (builtin_define_constants,
24698         builtin_define_type_minmax): New.
24699         (builtin_define_stdint_macros): Define more macros.
24700         (c_cpp_builtins): Define more limit macros.
24701         (type_suffix): New.
24702         (builtin_define_type_max): Define in terms of
24703         builtin_define_type_minmax.  Remove is_long parameter.  All
24704         callers changed.
24705         * config.gcc (use_gcc_stdint): Define.
24706         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
24707         Add newlib-stdint.h for generic targets.
24708         * config/glibc-stdint.h, config/newlib-stdint.h,
24709         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
24710         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
24711         * config/score/score.h (UINTPTR_TYPE): Define.
24712         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
24713         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
24714         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
24715         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
24716         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
24717         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
24718         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
24719         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
24720         * config/spu/spu.h (STDINT_LONG32): Define.
24721         * configure.ac (use_gcc_stdint): Substitute.
24722         * configure: Regenerate.
24723         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
24724         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
24725         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
24726         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
24727         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
24728         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
24729         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
24730         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
24731         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
24732         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
24733         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
24734         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
24735         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
24736         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
24737         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
24738         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
24739         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
24740         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
24741         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
24742         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
24743         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
24744         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
24745         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
24746         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
24747         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
24748         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
24749         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
24750         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
24751         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
24752
24753 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
24754
24755         * loop-iv.c (suitable_set_for_replacement): Renamed from
24756         simplify_using_assignment; changed to return bool and to accept new
24757         args DEST and SRC.  Return true iff we find a source/destination pair
24758         that can be used to make a replacement, and fill SRC and DEST if so.
24759         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
24760         changed.
24761         (simplify_using_initial_values): Deal with altered regs here and track
24762         more precisely the effect they have on the validity of our expression.
24763
24764         * loop-iv.c (simplify_using_condition): A condition of the form
24765         (EQ REG CONST) can be used to simply make a substitution.
24766         (simplify_using_initial_values): Keep track of conditions we have seen
24767         and keep using them to simplify new expressions, while applying the
24768         same substitutions to them as to the expression.
24769
24770         * simplify-rtx.c (simplify_relational_operation_1): Simplify
24771         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
24772         GEU/LTU reversed.
24773
24774         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
24775         changed.  Use this when trying to improve the upper bound.
24776         Generate the comparison by using simplify_gen_relational.
24777
24778         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
24779
24780         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
24781         functions.
24782         (simplify_using_assignment, simplify_using_initial_values): Call
24783         replace_in_expr to make replacements.  Call replace_single_def_regs
24784         once on the initial version of the expression.
24785
24786 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24787
24788         PR target/27237
24789         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
24790
24791 2009-03-31  Richard Guenther  <rguenther@suse.de>
24792
24793         PR middle-end/31029
24794         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
24795         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
24796
24797 2009-03-31  Richard Guenther  <rguenther@suse.de>
24798
24799         * tree.h (div_if_zero_remainder): Declare.
24800         * fold-const.c (div_if_zero_remainder): Export.
24801         * tree-ssa-forwprop.c
24802         (forward_propagate_addr_into_variable_array_index): Handle
24803         constant array index addition outside of the variable index.
24804
24805 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
24806
24807         PR target/39592
24808         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
24809         define_splits, floatunssi<mode>2): Require x87 conversions from
24810         DImode to be permitted.
24811
24812 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
24813
24814         PR preprocessor/15638
24815         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
24816
24817 2009-03-31  Richard Guenther  <rguenther@suse.de>
24818
24819         PR middle-end/23401
24820         PR middle-end/27810
24821         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
24822         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
24823         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
24824         a separate statement.
24825         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
24826         (lookup_tmp_var): Likewise.
24827         (is_gimple_formal_tmp_or_call_rhs): Remove.
24828         (is_gimple_reg_or_call_rhs): Rename to ...
24829         (is_gimple_reg_rhs_or_call): ... this.
24830         (is_gimple_mem_or_call_rhs): Rename to ...
24831         (is_gimple_mem_rhs_or_call): ... this.
24832         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
24833         DECL_GIMPLE_REG_P only if is_formal is true.
24834         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
24835         for non-proper post-modify expression gimplification.
24836         (gimplify_self_mod_expr): For post-modify expressions gimplify
24837         the lvalue to a minimal lvalue.
24838         (rhs_predicate_for): Remove formal temp case.
24839         (gimplify_modify_expr_rhs): Likewise.
24840         (gimplify_addr_expr): Use is_gimple_reg.
24841         (gimplify_expr): Remove formal temp cases.
24842         (gimple_regimplify_operands): Likewise.
24843         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
24844         and FILTER_EXPR like constants.
24845         * gimple.c (walk_gimple_op): Fix val_only initialization, use
24846         is_gimple_reg.
24847         (is_gimple_formal_tmp_rhs): Remove.
24848         (is_gimple_reg_rhs): Remove special casing.
24849         (is_gimple_mem_rhs): Fix.
24850         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
24851         (is_gimple_formal_tmp_var): Remove.
24852         (is_gimple_formal_tmp_reg): Likewise.
24853         (is_gimple_min_lval): Allow invariant component ref parts.
24854         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
24855         is_gimple_formal_tmp_reg): Remove declarations.
24856         * tree-cfg.c (verify_expr): Verify that variables with address
24857         taken do not have DECL_GIMPLE_REG_P set.
24858         * tree-mudflap.c (mf_build_check_statement_for): Use
24859         force_gimple_operand instead of gimplify_expr.
24860
24861 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
24862
24863         * modulo-sched.c (sms_schedule_by_order): Pass the actual
24864         schedulable rows to compute_split_row.
24865
24866 2009-03-31  Ben Elliston  <bje@au.ibm.com>
24867
24868         PR target/31635
24869         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
24870         OPT_mvrsave.
24871
24872 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
24873
24874         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
24875         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
24876         * configure: Regenerate.
24877         * config.in: Regenerate.
24878         * config/rs6000/rs6000.opt (mtls-markers): Add.
24879         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
24880         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
24881         (tls_ld_aix, tls_ld_sysv): Likewise.
24882         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
24883         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
24884
24885 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
24886
24887         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
24888
24889 2009-03-30  Jan Hubicka  <jh@suse.cz>
24890
24891         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
24892         out of RESX.
24893         (tree_remove_unreachable_handlers): Cleanup EH predecestor
24894         detection and label handling.
24895
24896 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
24897
24898         * ira-int.h (ira_allocno): Rename left_conflicts_num to
24899         left_conflicts_size.
24900         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
24901         ALLOCNO_LEFT_CONFLICTS_SIZE.
24902
24903         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
24904         remove_allocno_from_bucket_and_push,
24905         allocno_spill_priority_compare, push_allocnos_to_stack,
24906         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
24907         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
24908         (setup_allocno_left_conflicts_num): Ditto.  Rename to
24909         setup_allocno_left_conflicts_size.
24910         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
24911         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
24912         setup_allocno_left_conflicts_size instead of
24913         setup_allocno_left_conflicts_num.
24914
24915         * ira-build.c (ira_create_allocno): Use
24916         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
24917         ALLOCNO_LEFT_CONFLICTS_NUM.
24918
24919 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
24920
24921         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
24922         instead of DF_LR_OUT.
24923
24924         * ira-lives.c (process_bb_node_lives): Ditto.
24925
24926         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
24927         instead of DF_LR_{OUT,IN}.
24928
24929         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
24930
24931         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
24932
24933 2009-03-30  Jan Hubicka  <jh@suse.cz>
24934
24935         * except.c (label_to_region_map): Fix thinko.
24936
24937 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
24938
24939         PR middle-end/38237
24940         * tree.h (tree_find_value): New declaration.
24941         * tree.c (tree_find_value): New function.
24942         * varasm.c (assemble_external): Avoid duplicate entries on lists.
24943
24944 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
24945
24946         PR debug/39563
24947         * c-decl.c (struct c_binding): Add locus field.
24948         (bind): Add locus argument, set locus field from it.
24949         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
24950         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
24951         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
24952         implicitly_declare, undeclared_variable, lookup_label,
24953         declare_label, c_make_fname_decl, c_builtin_function,
24954         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
24955         bind callers.
24956
24957 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
24958
24959         PR target/38781
24960         * config/i386/i386.c (classify_argument): Check total size of
24961         structure.
24962
24963 2009-03-30  Martin Jambor  <mjambor@suse.cz>
24964
24965         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
24966         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
24967         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
24968         respectively.
24969
24970         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
24971         seen_variable_array_ref while also traversing a union.
24972
24973         * tree-inline.c (optimize_inline_calls): Do not call
24974         cgraph_node_remove_callees.
24975         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
24976         (pass_remove_cgraph_callee_edges): New variable.
24977         * passes.c (init_optimization_passes): Add
24978         pass_remove_cgraph_callee_edges after early inlining and before all
24979         late intraprocedural passes.
24980
24981         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
24982
24983 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
24984
24985         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
24986         Fix typos in names.
24987
24988 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
24989
24990         * combine.c (simplify_comparison): Use have_insn_for.
24991         * dojump.c (do_jump): Likewise.
24992
24993 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
24994
24995         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
24996         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
24997         sparc_compare_op0 like sparc_compare_emitted used to be handled.
24998         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
24999         instead of sparc_compare_emitted.
25000         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
25001         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
25002         instead of sparc_compare_emitted.
25003
25004 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
25005
25006         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
25007         enter/exit cfglayout mode.
25008         (pass_partition_block): Require it.
25009         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
25010         (combine_instructions): Track basic blocks instead of labels.
25011         (update_cfg_for_uncondjump): New.
25012         (try_combine): Use it.  Update jumps after rescanning.
25013         (pass_combine): Require PROP_cfglayout.
25014         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
25015
25016 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
25017
25018         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
25019         Provide/destroy PROP_cfglayout respectively.
25020         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
25021         * tree-pass.h (PROP_cfglayout): New.
25022
25023 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
25024
25025         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
25026         fold_convert_const_fixed_from_fixed,
25027         fold_convert_const_fixed_from_int,
25028         fold_convert_const_fixed_from_real, fold_negate_const): Do not
25029         set TREE_CONSTANT_OVERFLOW.
25030         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
25031         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
25032
25033 2009-03-30  Ira Rosen  <irar@il.ibm.com>
25034
25035         * tree-vect-loop-manip.c: New file.
25036         * tree-vectorizer.c: Update documentation and included files.
25037         (vect_loop_location): Make extern.
25038         (rename_use_op): Move to tree-vect-loop-manip.c
25039         (rename_variables_in_bb, rename_variables_in_loop,
25040         slpeel_update_phis_for_duplicate_loop,
25041         slpeel_update_phi_nodes_for_guard1,
25042         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
25043         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
25044         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
25045         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
25046         find_loop_location): Likewise.
25047         (new_stmt_vec_info): Move to tree-vect-stmts.c.
25048         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
25049         get_vectype_for_scalar_type, vect_is_simple_use,
25050         supportable_widening_operation, supportable_narrowing_operation):
25051         Likewise.
25052         (bb_in_loop_p): Move to tree-vect-loop.c.
25053         (new_loop_vec_info, destroy_loop_vec_info,
25054         reduction_code_for_scalar_code, report_vect_op,
25055         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
25056         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
25057         (vect_supportable_dr_alignment): Likewise.
25058         * tree-vectorizer.h (tree-data-ref.h): Include.
25059         (vect_loop_location): Declare.
25060         Reorganize function declarations according to the new file structure.
25061         * tree-vect-loop.c: New file.
25062         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
25063         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
25064         * tree-vect-data-refs.c: New file.
25065         * tree-vect-patterns.c (timevar.h): Don't include.
25066         * tree-vect-stmts.c: New file.
25067         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
25068         tree-vect-slp.c, tree-vect-loop.c.
25069         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
25070         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
25071         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
25072         (tree-vect-analyze.o): Remove.
25073         (tree-vect-transform.o): Likewise.
25074         (tree-vect-data-refs.o): Add rule.
25075         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
25076         tree-vect-slp.o): Likewise.
25077         (tree-vect-patterns.o): Remove redundant dependencies.
25078         (tree-vectorizer.o): Likewise.
25079         * tree-vect-slp.c: New file.
25080
25081 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25082
25083         * optc-gen.awk: Warn if an option flag has multiple different
25084         help strings.
25085
25086 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
25087
25088         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
25089         -floop-block): Document dependences on PPL, CLooG and Graphite.
25090
25091 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
25092
25093         PR rtl-optimization/323
25094         * c-common.c (c_fully_fold, convert_and_check,
25095         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
25096         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
25097         * c-common.def (EXCESS_PRECISION_EXPR): New.
25098         * c-cppbuiltin.c (builtin_define_float_constants): Define
25099         constants with enough digits for long double.
25100         * c-lex.c (interpret_float): Interpret constant with excess
25101         precision where appropriate.
25102         * c-opts.c (c_common_post_options): Set
25103         flag_excess_precision_cmdline.  Give an error for
25104         -fexcess-precision=standard for C++ for processors where the
25105         option is significant.
25106         * c-parser.c (c_parser_conditional_expression): Handle excess
25107         precision in condition.
25108         * c-typeck.c (convert_arguments): Handle arguments with excess
25109         precision.
25110         (build_unary_op): Move excess precision outside operation.
25111         (build_conditional_expr): Likewise.
25112         (build_compound_expr): Likewise.
25113         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
25114         (build_modify_expr): Handle excess precision in RHS.
25115         (convert_for_assignment): Handle excess precision in converted
25116         value.
25117         (digest_init, output_init_element, process_init_element): Handle
25118         excess precision in initializer.
25119         (c_finish_return): Handle excess precision in return value.
25120         (build_binary_op): Handle excess precision in operands and add
25121         excess precision as needed for operation.
25122         * common.opt (-fexcess-precision=): New option.
25123         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
25124         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
25125         For standard excess precision, output explicit conversion to and
25126         truncation from XFmode.
25127         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
25128         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
25129         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
25130         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
25131         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
25132         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
25133         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
25134         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
25135         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
25136         define_splits, sqrt<mode>2): Disable where appropriate for
25137         standard excess precision.
25138         * convert.c (convert_to_real): Do not shorten arithmetic to type
25139         for which excess precision would be used.
25140         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
25141         * doc/invoke.texi (-fexcess-precision=): Document option.
25142         (-mfpmath=): Correct index entry.
25143         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
25144         flag_excess_precision): New.
25145         * langhooks.c (lhd_post_options): Set
25146         flag_excess_precision_cmdline.
25147         * opts.c (common_handle_option): Handle -fexcess-precision=.
25148         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
25149         init_excess_precision): New.
25150         (lang_dependent_init_target): Call init_excess_precision.
25151         * tree.c (excess_precision_type): New.
25152         * tree.h (excess_precision_type): Declare.
25153
25154 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
25155
25156         PR c/35235
25157         * c-typeck.c (build_component_ref): Do not copy qualifiers from
25158         non-lvalue to component.
25159
25160 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
25161
25162         PR preprocessor/34695
25163         * Makefile.in (c-opts.o): Depend on c-tree.h.
25164         * c-common.c: Move down include of diagnostic.h.
25165         (done_lexing, c_cpp_error): New.
25166         * c-common.h (done_lexing): Declare.
25167         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
25168         (parse_in).
25169         * c-opts.c: Include c-tree.h.
25170         (c_common_init_options): Set preprocessor error callback.
25171         (c_common_handle_option): Do not set preprocessor
25172         inhibit_warnings, warnings_are_errors, warn_system_headers,
25173         pedantic_errors or inhibit_warnings flags.
25174         (c_common_post_options): Do not check cpp_errors (parse_in).
25175         (c_common_finish): Do not output dependencies if there were
25176         errors.  Do not check return value of cpp_finish.
25177         * c-ppoutput.c (pp_file_change): Set input_location.
25178         * c-tree.h (c_cpp_error): Declare.
25179         * diagnostic.c (diagnostic_set_info_translated): Also initialize
25180         override_column.
25181         (diagnostic_build_prefix): Check override_column.
25182         * diagnostic.h (diagnostic_info): Add override_column field.
25183         (diagnostic_override_column): Define.
25184
25185 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
25186
25187         * c-common.c (c_expand_expr, c_staticp): Remove.
25188         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
25189         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
25190         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
25191         * c-gimplify.c (gimplify_compound_literal_expr,
25192         optimize_compound_literals_in_ctor): Remove.
25193         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
25194         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
25195         * c-semantics.c (emit_local_var): Remove.
25196
25197         * langhooks-def.h (lhd_expand_expr): Remove.
25198         * langhooks.c (lhd_expand_expr): Remove.
25199         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
25200
25201         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
25202         handling from c-semantics.c; don't call into langhook.
25203         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
25204         * gimplify.c (gimplify_compound_literal_expr,
25205         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
25206         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
25207         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
25208         as was done in c-gimplify.c.
25209         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
25210         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
25211         Move from c-common.h.
25212         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
25213
25214         * tree.c (staticp): Do not call langhook.
25215         * langhooks.c (lhd_staticp): Delete.
25216         * langhooks-def.h (lhd_staticp): Delete prototype.
25217         (LANG_HOOKS_STATICP): Delete.
25218         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
25219
25220         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
25221         instead of DECL_STMTs.
25222
25223 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
25224
25225         PR c/456
25226         PR c/5675
25227         PR c/19976
25228         PR c/29116
25229         PR c/31871
25230         PR c/35198
25231         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
25232         void_type_node.
25233         (fold_call_expr): Return a NOP_EXPR from folding rather than the
25234         contained expression.
25235         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
25236         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
25237         conditional expressions for C.
25238         (decl_constant_value_for_optimization): Move from
25239         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
25240         whether optimizing and that the expression is a VAR_DECL not of
25241         array type instead of doing such checks in the caller.  Do not
25242         check pedantic.  Call gcc_unreachable for C++.
25243         * c-common.def (C_MAYBE_CONST_EXPR): New.
25244         * c-common.h (c_fully_fold, c_save_expr,
25245         decl_constant_value_for_optimization): New prototypes.
25246         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
25247         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
25248         EXPR_INT_CONST_OPERANDS): Define.
25249         * c-convert.c (convert): Strip nops from expression.
25250         * c-decl.c (groktypename): Take extra parameters expr and
25251         expr_const_operands.  Update call to grokdeclarator.
25252         (start_decl): Update call to grokdeclarator.  Add statement for
25253         expressions used in type of decl.
25254         (grokparm): Update call to grokdeclarator.
25255         (push_parm_decl): Update call to grokdeclarator.
25256         (build_compound_literal): Add parameter non_const and build a
25257         C_MAYBE_COSNT_EXPR if applicable.
25258         (grokdeclarator): Take extra parameters expr and
25259         expr_const_operands.  Track expressions used in declaration
25260         specifiers and declarators.  Fold array sizes and track whether
25261         they are constant expressions and whether they are integer
25262         constant expressions.
25263         (parser_xref_tag): Set expr and expr_const_operands fields in
25264         return value.
25265         (grokfield): Update call to grokdeclarator.
25266         (start_function): Update call to grokdeclarator.
25267         (build_null_declspecs): Set expr and expr_const_operands fields in
25268         return value.
25269         (declspecs_add_type): Handle expressions in typeof specifiers.
25270         * c-parser.c (c_parser_declspecs): Set expr and
25271         expr_const_operands fields for declaration specifiers.
25272         (c_parser_enum_specifier): Likewise.
25273         (c_parser_struct_or_union_specifier): Likewise.
25274         (c_parser_typeof_specifier): Likewise.  Update call to
25275         groktypename.  Fold expression as needed.  Return expressions with
25276         type instead of adding statements.
25277         (c_parser_attributes): Update calls to c_parser_expr_list.
25278         (c_parser_statement_after_labels): Fold expression before passing
25279         to objc_build_throw_stmt.
25280         (c_parser_condition): Fold expression.
25281         (c_parser_asm_operands): Fold expression.
25282         (c_parser_conditional_expression): Use c_save_expr.  Update call
25283         to build_conditional_expr.
25284         (c_parser_alignof_expression): Update call to groktypename.
25285         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
25286         original_code.  Fold expression argument of va_arg.  Create
25287         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
25288         argument to va_arg.  Update calls to groktypename.  Fold array
25289         index for offsetof.  Verify that first argument to
25290         __builtin_choose_expr has integer type.
25291         (c_parser_postfix_expression_after_paren_type): Update calls to
25292         groktypename and build_compound_literal.  Handle expressions with
25293         side effects in type name.
25294         (c_parser_postfix_expression_after_primary): Update call to
25295         c_parser_expr_list.  Set original_code for calls to
25296         __builtin_constant_p.
25297         (c_parser_expr_list): Take extra parameter fold_p.  Fold
25298         expressions if requested.
25299         (c_parser_objc_type_name): Update call to groktypename.
25300         (c_parser_objc_synchronized_statement): Fold expression.
25301         (c_parser_objc_receiver): Fold expression.
25302         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
25303         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
25304         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
25305         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
25306         (struct c_typespec): Add elements expr and expr_const_operands.
25307         (struct c_declspecs): Add elements expr and expr_const_operands.
25308         (groktypename, build_conditional_expr, build_compound_literal):
25309         Update prototypes.
25310         (in_late_binary_op): Declare.
25311         * c-typeck.c (note_integer_operands): New function.
25312         (in_late_binary_op): New variable.
25313         (decl_constant_value_for_broken_optimization): Move to c-common.c
25314         and rename to decl_constant_value_for_optimization.
25315         (default_function_array_conversion): Do not strip nops.
25316         (default_conversion): Do not call
25317         decl_constant_value_for_broken_optimization.
25318         (build_array_ref): Do not fold result.
25319         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
25320         result when operand is a VLA.
25321         (c_expr_sizeof_type): Update call to groktypename.  Handle
25322         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
25323         result when operand names a VLA type.
25324         (build_function_call): Update call to build_compound_literal.
25325         Only fold result for calls to __builtin_* functions.  Strip
25326         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
25327         the function designator.
25328         (convert_arguments): Fold arguments.  Update call to
25329         convert_for_assignment.
25330         (build_unary_op): Handle increment and decrement of
25331         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
25332         decrement earlier.  Fold operand of increment and decrement.
25333         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
25334         built for integer operand.  Wrap returns that are INTEGER_CSTs
25335         without being integer constant expressions or that have integer
25336         constant operands without being INTEGER_CSTs.
25337         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
25338         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
25339         result is an integer constant expression or can be used in
25340         unevaluated parts of one and avoid folding and wrap as
25341         appropriate.  Fold operands before possibly doing -Wsign-compare
25342         warnings.
25343         (build_compound_expr): Wrap result for C99 if operands can be used
25344         in integer constant expressions.
25345         (build_c_cast): Update call to digest_init.  Do not ignore
25346         overflow from casting floating-point constants to integers.  Wrap
25347         results that could be confused with integer constant expressions,
25348         null pointer constants or floating-point constants.
25349         (c_cast_expr): Update call to groktypename.  Handle expressions
25350         included in type name.
25351         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
25352         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
25353         Update calls to convert_for_assignment.
25354         (convert_for_assignment): Take new parameter
25355         null_pointer_constant.  Do not strip nops or call
25356         decl_constant_value_for_broken_optimization.  Set
25357         in_late_binary_op for conversions to boolean.
25358         (store_init_value): Update call to digest_init.
25359         (digest_init): Take new parameter null_pointer_constant.  Do not
25360         call decl_constant_value_for_broken_optimization.  pedwarn for
25361         initializers not constant expressions.  Update calls to
25362         convert_for_assignment.
25363         (constructor_nonconst): New.
25364         (struct constructor_stack): Add nonconst element.
25365         (really_start_incremental_init, push_init_level, pop_init_level):
25366         Handle constructor_nonconst and nonconst element.
25367         (set_init_index): Call constant_expression_warning for array
25368         designators.
25369         (output_init_element): Fold value.  Set constructor_nonconst as
25370         applicable.  pedwarn for initializers not constant expressions.
25371         Update call to digest_init.  Call constant_expression_warning
25372         where constant initializers are required.
25373         (process_init_element): Use c_save_expr.
25374         (c_finish_goto_ptr): Fold expression.
25375         (c_finish_return): Fold return value.  Update call to
25376         convert_for_assignment.
25377         (c_start_case): Fold switch expression.
25378         (c_process_expr_stmt): Fold expression.
25379         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
25380         ensure statement expression is not evaluated in constant expression.
25381         (build_binary_op): Track whether results are integer constant
25382         expressions or may occur in such, disable folding and wrap results
25383         as applicable.  Fold operands for -Wsign-compare warnings unless
25384         in_late_binary_op.
25385         (c_objc_common_truthvalue_conversion): Handle results folded to
25386         integer constants that are not integer constant expressions.
25387         * doc/extend.texi: Document when typeof operands are evaluated,
25388         that condition of __builtin_choose_expr is an integer constant
25389         expression, and more about use of __builtin_constant_p in
25390         initializers.
25391
25392 2009-03-29  Richard Guenther  <rguenther@suse.de>
25393
25394         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
25395         propagate addresses of array references.
25396
25397 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
25398
25399         * regmove.c (perhaps_ends_bb_p): Remove.
25400         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
25401         from INSN and check that the main loop stays within that basic block.
25402         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
25403         (regmove_forward_pass): Split out from regmove_optimize.  Use
25404         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
25405         (regmove_backward_pass): Split out from regmove_optimize.  Use
25406         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
25407         (regmove_optimize): Simplify.
25408
25409 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
25410
25411         PR target/39545
25412         * config/i386/i386.c (classify_argument): Ignore flexible array
25413         member in struct and warn ABI change.
25414
25415 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
25416
25417         * config/i386/i386-protos.h (ix86_agi_dependent): New.
25418
25419         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
25420         (ix86_adjust_cost): Updated.
25421
25422 2009-03-29  Jan Hubicka  <jh@suse.cz>
25423
25424         PR middle-end/28850
25425         * tree-pass.h (pass_cleanup_eh): New function.
25426         (remove_unreachable_regions): Break code handling RTL
25427         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
25428         that can not be reached by runtime.
25429         (can_be_reached_by_runtime): New function.
25430         (label_to_region_map): New function.
25431         (num_eh_regions): New function.
25432         (rtl_remove_unreachable_regions): New function.
25433         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
25434         (remove_eh_region): New function.
25435         * except.h: Include sbitmap and vecprim.
25436         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
25437         num_eh_regions): Declare.
25438         * passes.c (init_optimization_passes): Schedule cleanup_eh.
25439         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
25440         * tree-eh.c (tree_remove_unreachable_handlers): New function.
25441         (tree_empty_eh_handler_p): New function.
25442         (cleanup_empty_eh): New function.
25443         (cleanup_eh): New function.
25444         (pass_cleanup_eh): New function.
25445
25446 2009-03-29  Jan Hubicka  <jh@suse.cz>
25447
25448         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
25449         for removed regions.
25450
25451 2009-03-29  Jan Hubicka  <jh@suse.cz>
25452
25453         * except.c (dump_eh_tree): Dump all datastructures.
25454
25455 2009-03-29  Jan Hubicka  <jh@suse.cz>
25456
25457         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
25458         (duplicate_eh_regions_1): Likewise.
25459         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
25460         vector; call EH verification.
25461         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
25462         Be ready for region being removed.
25463
25464 2009-03-29  Jan Hubicka  <jh@suse.cz>
25465
25466         * bitmap.c (bitmap_last_set_bit): New function.
25467         * bitmap.h (bitmap_last_set_bit): Declare.
25468
25469 2009-03-29  David Ayers  <ayers@fsfe.org>
25470
25471         PR objc/27377
25472         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
25473         by calling objc_compare_types and surpress warnings about
25474         incompatible C pointers that are compatible ObjC pointers.
25475
25476 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
25477
25478         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
25479         call initialize_inline_failed.
25480         (initialize_inline_failed): Move it from here ...
25481         * cgraph.c (initialize_inline_failed): ... to here.
25482         (cgraph_create_edge): Call initialize_inline_failed rather than
25483         setting inline_failed directly.
25484
25485 2009-03-29  Ben Elliston  <bje@au.ibm.com>
25486
25487         PR target/32542
25488         * sysv4.opt (msdata): Improve comment.
25489         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
25490         * sysv4.h (SVR4_ASM_SPEC): Likewise.
25491
25492 2009-03-29  Ben Elliston  <bje@au.ibm.com>
25493
25494         PR target/30451
25495         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
25496         load and store attributes.
25497
25498 2009-03-29  Ben Elliston  <bje@au.ibm.com>
25499
25500         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
25501         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
25502         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
25503         * doc/extend.texi (X86 Built-in Functions): Add index entries for
25504         __builtin_infq and __builtin_huge_valq.
25505
25506 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
25507
25508         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
25509         atmega8m1 devices.
25510         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
25511         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
25512
25513 2009-03-28  Xinliang David Li  <davidxl@google.com>
25514
25515         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
25516         (do_dbg_cnt): New function.
25517
25518 2009-03-28  Jan Hubicka  <jh@suse.cz>
25519
25520         Merge from pretty-ipa:
25521
25522         2009-03-27  Jan Hubicka  <jh@suse.cz>
25523
25524         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
25525         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
25526         * passes.c (function_called_by_processed_nodes_p): New.
25527         * ipa-pure-const.c (check_call): Fix handling of operands.
25528         (analyze_function): Dump debug output for skipped bodies.
25529         (local_pure_const): Use function_called_by_processed_nodes_p.
25530         * dwarf2out.c (reference_to_unused): Use output.
25531         * passes.c (do_per_function_toporder): Likewise.
25532
25533         2008-11-12  Jan Hubicka  <jh@suse.cz>
25534
25535         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
25536         * ipa-pure-const.c (funct_state_d): Add can throw field; make
25537         state_set_in_source enum
25538         (check_decl): Ignore memory tags; do not set fake looping flags;
25539         dump diagnostics.
25540         (check_operand, check_tree, check_rhs_var, check_lhs_var,
25541         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
25542         (check_call, analyze_function): Rewrite.
25543         (check_stmt): New.
25544         (add_new_function): Update call of analyze_function.
25545         (generate_summary): Add call of analyze_function.
25546         (propagate): Propagate can_throw; handle state_set_in_source correctly.
25547         (local_pure_const): New function.
25548         (pass_local_pure_const): New pass.
25549         * ipa-inline.c (inline_transform): Set after_inlining.
25550         * tree-eh.c (stmt_can_throw_external): New.
25551         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
25552         work with aliasing built.
25553         * tree-flow.h (stmt_can_throw_external): New.
25554         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
25555         and local pure/const pass in early and late optimization queue.
25556
25557 2009-03-28  Martin Jambor  <mjambor@suse.cz>
25558
25559         * fold-const.c (get_pointer_modulus_and_residue): New parameter
25560         allow_func_align.
25561         (fold_binary): Allow function decl aligment consideration is the
25562         second argument is integer constant one.
25563         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
25564         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
25565         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
25566
25567 2009-03-28  Jan Hubicka  <jh@suse.cz>
25568
25569         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
25570         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
25571         * function.h (rtl_data): Add nothrow flag.
25572         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
25573         set DECL_NOTHROW for AVAILABLE functions.
25574
25575 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
25576
25577         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
25578         following vector keyword has expansion starting with pixel or bool
25579         keyword, expand vector to __vector and pixel or bool to __pixel or
25580         __bool.
25581
25582         PR c++/39554
25583         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
25584         warn_if_disallowed_function_p): Removed.
25585         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
25586         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
25587         warning_if_disallowed_function_p.
25588         * flags.h (warn_if_disallowed_function_p,
25589         warn_disallowed_functions): Removed.
25590         * common.opt (Wdisallowed-function-list=): Removed.
25591         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
25592
25593 2009-03-28  Richard Guenther  <rguenther@suse.de>
25594
25595         PR tree-optimization/38723
25596         * tree-ssa-pre.c (compute_avail): Add all default definitions to
25597         the entry block.
25598
25599 2009-03-28  Jan Hubicka  <jh@suse.cz>
25600
25601         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
25602         test introduced by my previous patch.
25603
25604 2009-03-28  Richard Guenther  <rguenther@suse.de>
25605
25606         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
25607         the PHIs value undefined.
25608
25609 2009-03-28  Jan Hubicka  <jh@suse.cz>
25610
25611         * tree-pass.h (pass_fixup_cfg): New pass.
25612         * ipa-inline.c (inline_transform): Set
25613         always_inline_functions_inlined/after_inlining.
25614         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
25615         (pass_fixup_cfg): New pass.
25616         * passes.c (init_optimization_passes): Add fixup_cfg.
25617
25618 2009-03-28  Richard Guenther  <rguenther@suse.de>
25619
25620         PR tree-optimization/38458
25621         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
25622         argument use the arguments copy-of value.
25623
25624 2009-03-28  Richard Guenther  <rguenther@suse.de>
25625
25626         PR tree-optimization/38180
25627         * tree-ssa-ccp.c (get_default_value): Simplify.
25628         (likely_value): Likewise.
25629         (surely_varying_stmt_p): Properly handle VOP case.
25630         (ccp_initialize): Likewise.
25631         (ccp_fold): Handle propagating through *&.
25632         (fold_const_aggregate_ref): Also handle decls.
25633
25634 2009-03-28  Jan Hubicka  <jh@suse.cz>
25635
25636         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
25637         * cgraph.h (cgraph_node): Likewise.
25638         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
25639         (cgraph_reset_node): Use process flag.
25640         (cgraph_mark_functions_to_output): Likewise.
25641         (cgraph_expand_function): Likewise.
25642         (cgraph_expand_all_functions): Likewise.
25643         (cgraph_output_in_order): Likewise.
25644         * dwarf2out.c (reference_to_unused): Likewise.
25645         * passes.c do_per_function_toporder): Likewise.
25646
25647 2009-03-28  Jan Hubicka  <jh@suse.cz>
25648
25649         Bring from lto-branch:
25650
25651         2008-09-03  Doug Kwan  <dougkwan@google.com>
25652
25653         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
25654         enums instead of reason strings.
25655         * cgraph.c (cgraph_create_edge): Same.
25656         (cgraph_inline_failed_string): New function.
25657         * cgraph.h (cgraph_inline_failed_t): New enum type.
25658         (cgraph_inline_failed_string): New prototype.
25659         (struct cgraph_edge): Change type of INLINED_FAILED from constant
25660         char pointer to cgraph_inline_failed_t.
25661         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
25662         (cgraph_default_inline_p): Ditto.
25663         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
25664         to cgraph_inline_failed_t pointer.
25665         * cif-code.def: New file.
25666         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
25667         reason string.
25668         (cgraph_check_inline_limits): Change type of REASON to pointer to
25669         cgraph_inline_failed_t.  Replace reason strings with enums.
25670         (cgraph_default_inline_p): Ditto.
25671         (cgraph_recursive_inlining_p): Ditto.
25672         (update_caller_keys): Change type of FAILED_REASON to
25673         cgraph_inline_failed_t.
25674         (cgraph_set_inline_failed): Change type of REASON to pointer to
25675         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
25676         convert enums to strings for text output.
25677         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
25678         to be of type cgraph_inline_failed_t.  Replace reason strings with
25679         enums.  Call cgraph_inline_failed_string to covert enums
25680         to strings for text output.
25681         (cgraph_decide_inlining): Replace reason strings with enums.
25682         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
25683         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
25684         for text output.
25685         * tree-inline.c (expand_call_inline): Change type of REASON
25686         to cgraph_inline_failed_t.  Replace reason strings with enums.
25687         Call cgraph_inline_failed_string for text output.
25688         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
25689         (cgraph.o): Ditto.
25690
25691 2009-03-28  Jan Hubicka  <jh@suse.cz>
25692
25693         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
25694         cgraph_clone_node): Remove master clone handling.
25695         (cgraph_is_master_clone, cgraph_master_clone): Remove.
25696         * cgraph.h (master_clone): Remove.
25697         (cgraph_is_master_clone, cgraph_master_clone): Remove.
25698         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
25699         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
25700
25701 2009-03-28  Jan Hubicka  <jh@suse.cz>
25702
25703         * cgraph.c (cgraph_function_body_availability): Functions declared
25704         inline are always safe to assume that it is not going to be replaced.
25705
25706 2009-03-28  Richard Guenther  <rguenther@suse.de>
25707
25708         PR tree-optimization/38513
25709         * tree-ssa-pre.c (eliminate): Remove redundant stores.
25710         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
25711         EXC_PTR_EXPR and FILTER_EXPR.
25712         (get_ref_from_reference_ops): Likewise.
25713
25714 2009-03-28  Richard Guenther  <rguenther@suse.de>
25715
25716         PR tree-optimization/38968
25717         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
25718         Use FLOOR_MOD_EXPR to compute misalignment.
25719
25720 2009-03-28  Richard Guenther  <rguenther@suse.de>
25721
25722         PR tree-optimization/37795
25723         * tree.h (combine_comparisons): Declare.
25724         * fold-const.c (combine_comparisons): Export.
25725         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
25726         comparisons.
25727         (ifcombine_iforif): Use combine_comparisons.
25728
25729 2009-03-28  Jan Hubicka  <jh@suse.cz>
25730
25731         * tree-eh.c (inlinable_call_p): New function.
25732         (make_eh_edges): Use it.
25733         (verify_eh_edges): Use it.
25734         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
25735         * except.c (reachable_next_level): Add inlinable_function argument
25736         (sjlj_find_directly_reachable_regions): Update.
25737         (add_reachable_handler): Do not set saw_any_handlers.
25738         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
25739         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
25740         Add new inlinable call parameter.
25741         (can_throw_internal, can_throw_external): Update.
25742         * except.h (can_throw_internal_1, can_throw_external_1,
25743         foreach_reachable_handler): Update declaration.
25744
25745 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
25746
25747         * config/arm/t-arm-coff, config/h8300/coff.h,
25748         config/i386/i386-aout.h, config/i386/i386-coff.h,
25749         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
25750         config/pdp11/2bsd.h, config/rs6000/aix41.h,
25751         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
25752         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
25753         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
25754         sys-types.h: Remove.
25755         * Makefile.in: Remove protoize and fixproto support and references
25756         in comments.
25757         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
25758         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
25759         Remove.
25760         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
25761         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
25762         unprotoize$(exeext).
25763         (rest.encap): Don't depend on $(STMP_FIXPROTO)
25764         (.PHONY): Don't depend on proto.
25765         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
25766         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
25767         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
25768         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
25769         build/gen-protos.o, build/scan.o, xsys-protos.h,
25770         build/fix-header$(build_exeext), build/fix-header.o,
25771         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
25772         stmp-install-fixproto): Remove.
25773         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
25774         SYSCALLS.c or fixproto files.
25775         (install-common): Don't install protoize.
25776         (install-headers-tar, install-headers-cpio, install-headers-cp):
25777         Don't depend on $(STMP_FIXPROTO).
25778         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
25779         install fixproto files or write out fixproto settings.
25780         (uninstall): Don't uninstall protoize.
25781         * config.gcc (use_fixproto): Remove.
25782         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
25783         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
25784         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
25785         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
25786         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
25787         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
25788         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
25789         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
25790         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
25791         * config/t-vxworks (STMP_FIXPROTO): Remove.
25792         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
25793         STMP_FIXPROTO): Remove.
25794         * config.in, configure: Regenerate.
25795         * crtstuff.c (gid_t, uid_t): Don't undefine.
25796         * doc/install.texi: Change m68k-coff to m68k-elf in example.
25797         (arm-*-coff, arm-*-aout: Remove target entries.
25798         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
25799         Remove mention of AIX 4.1.
25800         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
25801         * doc/invoke.texi (Running Protoize): Remove.
25802         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
25803         (Protoize Caveats): Remove.
25804         * tsystem.h: Update comments on headers assumed to exist.
25805
25806 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
25807
25808         * genautomata.c: Add a new year to the copyright.  Add a new
25809         reference.
25810         (struct insn_reserv_decl): Add comments for member bypass_list.
25811         (find_bypass): Remove.
25812         (insert_bypass): New.
25813         (process_decls): Use insert_bypass.
25814         (output_internal_insn_latency_func): Output all bypasses with the
25815         same input insn in one switch case.
25816
25817         * rtl.def (define_bypass): Describe bypass choice.
25818         * doc/md.texi (define_bypass): Ditto.
25819
25820 2009-03-27  Richard Guenther  <rguenther@suse.de>
25821
25822         * gimplify.c (mark_addressable): Export.
25823         * tree-flow.h (mark_addressable): Declare.
25824         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
25825         * tree-ssa.c (verify_phi_args): Verify that address taken
25826         variables have TREE_ADDRESSABLE set.
25827
25828 2009-03-27  Richard Guenther  <rguenther@suse.de>
25829
25830         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
25831         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
25832         Do not mark decls TREE_ADDRESSABLE.
25833         (build_fold_addr_expr): Adjust.
25834         (fold_addr_expr): Remove.
25835         (fold_unary): Use build_fold_addr_expr.
25836         (fold_comparison): Likewise.
25837         (split_address_to_core_and_offset): Likewise.
25838         * coverage.c (tree_coverage_counter_addr): Mark the array decl
25839         TREE_ADDRESSABLE.
25840         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
25841         (gimplify_modify_expr_to_memcpy): Mark source and destination
25842         addressable.
25843         * omp-low.c (create_omp_child_function): Mark the object decl
25844         TREE_ADDRESSABLE.
25845         (lower_rec_input_clauses): Mark the var we take the address of
25846         TREE_ADDRESSABLE.
25847         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
25848
25849 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
25850
25851         PR middle-end/39315
25852         * cfgexpand.c (expand_one_stack_var_at): Change alignment
25853         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
25854
25855 2009-03-27  Richard Guenther  <rguenther@suse.de>
25856
25857         PR tree-optimization/39120
25858         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
25859         constraints.
25860         (handle_lhs_call): Process return constraints.  Add escape
25861         constraints if necessary.
25862         (handle_const_call): Fill out return constraints.  Make nested
25863         case more precise.  Avoid consttmp if possible.
25864         (handle_pure_call): Fill out return constraints.  Avoid
25865         callused if possible.
25866         (find_func_aliases): Simplify call handling.
25867
25868 2009-03-27  Richard Guenther  <rguenther@suse.de>
25869
25870         PR tree-optimization/39120
25871         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
25872         as a representative.
25873         (solve_graph): Do propagate CALLUSED.
25874         (handle_pure_call): Use a scalar constraint from CALLUSED for
25875         the return value.
25876         (find_what_p_points_to): CALLUSED shall not appear in poins-to
25877         solutions.
25878
25879 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
25880
25881         PR c/39323
25882         * c-common.c (handle_aligned_attribute): Properly check alignment
25883         overflow.  Use (1U << i) instead of (1 << i).
25884
25885         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
25886
25887         * expr.h (get_mem_align_offset): Updated.
25888
25889         * tree.h (tree_decl_common): Change align to "unsigned int" and
25890         move it before pointer_alias_set.
25891
25892 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
25893             Jakub Jelinek  <jakub@redhat.com>
25894
25895         PR target/38034
25896         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
25897         gr_register_operand with gr_reg_or_0_operand.
25898         (cmpxchg_rel_di): Likewise.
25899         (sync_lock_test_and_set<mode>): Likewise.
25900
25901 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
25902
25903         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
25904         (true_regnum): Likewise.
25905
25906         * rtlanal.c (subreg_info): Moved to ...
25907         * rtl.h (subreg_info): Here.  New.
25908         (subreg_get_info): New.
25909
25910         * rtlanal.c (subreg_get_info): Make it extern.
25911
25912 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
25913
25914         PR target/39472
25915         * config/i386/i386.c (ix86_abi): New.
25916         (override_options): Handle -mabi=.
25917         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
25918         (ix86_call_abi_override): Likewise.
25919         (init_cumulative_args): Likewise.
25920         (function_arg_advance): Likewise.
25921         (function_arg_64): Likewise.
25922         (function_arg): Likewise.
25923         (ix86_pass_by_reference): Likewise.
25924         (ix86_function_value_regno_p): Likewise.
25925         (ix86_build_builtin_va_list_abi): Likewise.
25926         (setup_incoming_varargs_64): Likewise.
25927         (is_va_list_char_pointer): Likewise.
25928         (ix86_init_machine_status): Likewise.
25929         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
25930         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
25931         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
25932         (ix86_function_abi): Make it static and return enum calling_abi.
25933         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
25934         with ix86_abi.
25935         (ix86_fn_abi_va_list): Updated.
25936
25937         * config/i386/i386.h (ix86_abi): New.
25938         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
25939         (CONDITIONAL_REGISTER_USAGE): Likewise.
25940         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
25941         (machine_function): Likewise.
25942
25943         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
25944         with ix86_abi.
25945         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
25946         (STACK_BOUNDARY): Likewise.
25947         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
25948
25949         * config/i386/i386.opt (mabi=): New.
25950
25951         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
25952         return enum calling_abi.
25953         (ix86_function_type_abi): Likewise.
25954         (ix86_function_abi): Removed.
25955
25956         * doc/invoke.texi: Document -mabi= option for x86.
25957
25958 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25959
25960         * builtins.c (real_dconstp): Delete.
25961         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
25962
25963 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
25964             Jakub Jelinek  <jakub@redhat.com>
25965
25966         PR debug/37959
25967         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
25968         (gen_subprogram_die): When a function is explicit, generate the
25969         DW_AT_explicit attribute.
25970         * langhooks.h (struct lang_hooks_for_decls): Add
25971         function_decl_explicit_p langhook.
25972         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
25973         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
25974
25975 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
25976
25977         * builtins.c (fold_builtin_memory_op): Optimize memmove
25978         into memcpy if we can prove source and destination don't overlap.
25979
25980         * tree-inline.c: Include gt-tree-inline.h.
25981         (clone_fn_id_num): New variable.
25982         (clone_function_name): New function.
25983         (tree_function_versioning): Use it.
25984         * Makefile.in (GTFILES): Add tree-inline.c.
25985
25986 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
25987
25988         * BASE-VER: Change to 4.5.0.
25989
25990 2009-03-27  Xinliang David Li  <davidxl@google.com>
25991
25992         PR tree-optimization/39557
25993         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
25994
25995 2009-03-27  Xinliang David Li  <davidxl@google.com>
25996
25997         PR tree-optimization/39548
25998         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
25999         candidate check.
26000
26001 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
26002
26003         * c-common.c (pointer_int_sum): Use %wd on return from
26004         tree_low_cst.
26005
26006 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
26007
26008         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
26009         on return from tree_low_cst.
26010
26011 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26012
26013         PR c++/36799
26014         * ginclude/stdarg.h (va_copy): Define also for
26015         __GXX_EXPERIMENTAL_CXX0X__.
26016
26017 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26018
26019         PR c++/35652
26020         * builtins.h (c_strlen): Do not warn here.
26021         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
26022         * c-common.c (pointer_int_sum): Take an explicit location.
26023         Warn about offsets out of bounds.
26024         * c-common.h (pointer_int_sum): Adjust declaration.
26025
26026 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26027
26028         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
26029         markup glitch.
26030
26031 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
26032
26033         PR c++/39554
26034         * opts.c (warn_if_disallowed_function_p): Don't assume
26035         get_callee_fndecl must return non-NULL.
26036
26037 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
26038
26039         PR rtl-optimization/39522
26040         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
26041         when reg_reloaded_valid is set.
26042
26043 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
26044
26045         * config/spu/divv2df3.c: New file.
26046         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
26047         (DPBIT_FUNCS): Filter out _div_df.
26048
26049 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
26050
26051         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
26052         a jump insn, count that jump in the distance to the loop start.
26053
26054 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
26055
26056         PR target/39523
26057         * config/sh/sh.c (calc_live_regs): Fix condition for global
26058         registers except PIC_OFFSET_TABLE_REGNUM.
26059
26060 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
26061
26062         PR/39518
26063         * doc/invoke.texi (-mconsole): New.
26064         (-mcygwin): New.
26065         (-mno-cygwin): New.
26066         (-mdll): New.
26067         (-mnop-fun-dllimport): New.
26068         (-mthread): New.
26069         (-mwin32): New.
26070         (-mwindows): New.
26071         (sub section "i386 and x86-64 Windows Options"): New.
26072
26073 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
26074
26075         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
26076         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
26077
26078 2009-03-25  Richard Guenther  <rguenther@suse.de>
26079
26080         PR middle-end/39497
26081         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
26082         of -Wno-error.
26083
26084 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
26085
26086         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
26087         neither of haifa/selective schedulers are working.
26088
26089 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26090
26091         * doc/invoke.texi (Debugging Options): Fix description of
26092         -fno-merge-debug-strings.
26093
26094 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
26095
26096         * config/cris/libgcc.ver: New version-script.
26097         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
26098
26099         * configure.ac <GAS features, nop mnemonic>: Add pattern
26100         crisv32-*-* for "nop".
26101         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
26102         * configure: Regenerate.
26103
26104 2009-03-24  Ira Rosen  <irar@il.ibm.com>
26105
26106         PR tree-optimization/39529
26107         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
26108         mark_sym_for_renaming for the tag copied to the new vector
26109         pointer.
26110
26111 2009-03-24  Arthur Loiret  <aloiret@debian.org>
26112
26113         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
26114         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
26115         EXTRA_SPEC_FUNCTIONS.
26116         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
26117         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
26118         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
26119         -march and -mtune options.
26120
26121 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
26122
26123         * config/m68k/t-rtems: Add m5329 multilib.
26124
26125 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
26126             Jakub Jelinek  <jakub@redhat.com>
26127
26128         PR debug/39524
26129         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
26130         nodes.
26131
26132 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
26133
26134         PR c/39495
26135         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
26136         instead of c_parser_expression_conv, if original_code isn't one of the
26137         4 allowed comparison codes, fail.
26138
26139 2009-03-23  Richard Guenther  <rguenther@suse.de>
26140
26141         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
26142         * tree.h (struct tree_type): Likewise.
26143         * reload.h (struct insn_chain): Likewise.
26144         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
26145         * function.h (struct function): Likewise.
26146         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
26147
26148 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
26149
26150         PR tree-optimization/39516
26151         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
26152
26153 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
26154
26155         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
26156         should be set true if BITS_PER_WORD of target is bigger than 32
26157
26158 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
26159
26160         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
26161         Translate -B-options to -rpath-link.  Correct existing
26162         rpath-link and conditionalize on !nostdlib.
26163
26164 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26165
26166         * doc/extend.texi (Function Attributes, Variable Attributes):
26167         Fix typos.
26168         * doc/invoke.texi (Debugging Options, Optimize Options)
26169         (i386 and x86-64 Options, MCore Options): Likewise.
26170
26171 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
26172
26173         PR debug/37890
26174         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
26175         it for block local namespace aliases.
26176         (gen_decl_die): Pass context_die to gen_namespace_die.
26177
26178 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
26179
26180         PR c/39495
26181         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
26182         minimum or maximum value.
26183
26184 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
26185
26186         * reginfo.c (globalize_reg): Recompute derived reg sets.
26187
26188 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
26189
26190         PR target/39063
26191         * libgcc2.c (mprotect): Do not use signed arguments for
26192         VirtualProtect, use DWORD arguments.  Also fix the 'may
26193         be used uninitialized' warning for the np variable.
26194
26195 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
26196
26197         PR target/39496
26198         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
26199         functions using regparm calling conventions when not optimizing.
26200         (ix86_function_sseregparm): Similarly for sseregparm calling
26201         conventions.
26202
26203 2009-03-19  Li Feng  <nemokingdom@gmail.com>
26204
26205         PR middle-end/39500
26206         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
26207         dependence if the first conflict is after niter iterations.
26208
26209 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
26210
26211         PR middle-end/38609
26212         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
26213         functions with dynamic stack-pointer adjustments.
26214
26215 2009-03-19  Ben Elliston  <bje@au.ibm.com>
26216
26217         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
26218         option; change to -msdata=data.
26219
26220 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26221
26222         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
26223         and -fopenmp.
26224
26225 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
26226
26227         PR target/35180
26228         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
26229
26230 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
26231
26232         * doc/invoke.texi (Code Gen Options): Expand discussion of
26233         -fno-common.
26234
26235 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
26236
26237         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
26238         * matrix-reorg.c (struct matrix_info): Likewise.
26239         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
26240         * rtl.h (struct mem_attrs): Likewise.
26241         * df.h (struct df): Likewise.
26242         * tree-data-ref.h (struct data_dependence_relation): Likewise.
26243         * ira-int.h (struct ira_allocno): Likewise.
26244         * df-scan.c (struct df_collection_rec): Likewise.
26245         * ira.c (struct equivalence): Likewise.
26246         * function.c (struct temp_slot): Likewise.
26247         * cfgloop.h (struct loop): Likewise.
26248
26249         PR debug/39485
26250         * function.c (use_register_for_decl): When not optimizing, disregard
26251         register keyword for variables with types containing methods.
26252
26253 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
26254
26255         PR middle-end/39447
26256         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
26257         (is_simple_operand): Call contains_component_ref_p before calling data
26258         reference analysis that would fail on COMPONENT_REFs.
26259
26260         * tree-vrp.c (search_for_addr_array): Fix formatting.
26261
26262 2009-03-18  Richard Guenther  <rguenther@suse.de>
26263
26264         * tree-vect-transform.c (vect_loop_versioning): Fold the
26265         generated comparisons.
26266         * tree-vectorizer.c (set_prologue_iterations): Likewise.
26267         (slpeel_tree_peel_loop_to_edge): Likewise.
26268
26269 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26270
26271         PR middle-end/37805
26272         * opts.c (print_specific_help): In addition to `undocumented',
26273         accept `separate' and `joined' flags if passed alone.  Describe
26274         output by the first matched one of those.
26275         (common_handle_option): Skip over empty strings.
26276         * gcc.c (display_help): Fix help string for `--help='.
26277         * doc/invoke.texi (Option Summary, Overall Options): With
26278         `--help=', classes and qualifiers can both be repeated, but
26279         only the latter can be negated.  One should not pass only
26280         negated qualifiers.  Fix markup and examples.
26281
26282         Revert
26283         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
26284         PR middle-end/37805
26285         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
26286         and -fhelp=separate.
26287
26288 2009-03-17  Jing Yu  <jingyu@google.com>
26289
26290         PR middle-end/39378
26291         * function.h (struct rtl_data): Move is_thunk from here...
26292         (struct function): ...to here.
26293         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
26294         * varasm.c (assemble_start_function): Change is_thunk from crtl to
26295         cfun.
26296         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
26297         cfun.
26298         (alpha_does_function_need_gp, alpha_start_function): Likewise.
26299         (alpha_output_function_end_prologue): Likewise.
26300         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
26301         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
26302         (rs6000_output_function_epilogue): Likewise.
26303         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
26304
26305 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
26306
26307         PR target/39482
26308         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
26309         from different units in a single alternative.
26310         (*truncdfsf_i387): Ditto.
26311         (*truncxfsf2_mixed): Ditto.
26312         (*truncxfdf2_mixed): Ditto.
26313
26314 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
26315
26316         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
26317         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
26318
26319         PR debug/39474
26320         * tree-ssa-live.c (remove_unused_locals): Don't remove local
26321         unused non-artificial variables when not optimizing.
26322
26323         PR debug/39471
26324         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
26325         DW_TAG_imported_module even if decl is IMPORTED_DECL with
26326         NAMESPACE_DECL in its DECL_INITIAL.
26327
26328         PR middle-end/39443
26329         * optabs.c (set_user_assembler_libfunc): New function.
26330         * expr.h (set_user_assembler_libfunc): New prototype.
26331         * c-common.c: Include libfuncs.h.
26332         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
26333         for memcmp, memset, memcpy, memmove and abort.
26334         * Makefile.in (c-common.o): Depend on libfuncs.h.
26335
26336         PR debug/39412
26337         * dwarf2out.c (gen_inlined_enumeration_type_die,
26338         gen_inlined_structure_type_die, gen_inlined_union_type_die,
26339         gen_tagged_type_instantiation_die): Removed.
26340         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
26341         do nothing.
26342
26343 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
26344
26345         PR testsuite/38526
26346         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
26347         its use.
26348         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
26349         (check-parallel-%): Ditto.
26350         (check-consistency): Ditto.
26351
26352 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
26353
26354         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
26355         local variable rhs by NULL_TREE.
26356
26357 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
26358
26359         PR target/39477
26360         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
26361
26362 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
26363
26364         PR target/39476
26365         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
26366
26367 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
26368
26369         PR target/39473
26370         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
26371         for ms->sysv ABI calls only in 64bit mode.
26372
26373         * config/i386/i386.md (untyped_call): Support 32bit.
26374
26375 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
26376
26377         * doc/extend.texi: Replace x86_65 with x86_64.
26378
26379 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
26380
26381         PR tree-optimization/39455
26382         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
26383         mismatches for POINTER_TYPE_P (type).
26384         (number_of_iterations_le): Likewise.
26385
26386 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
26387
26388         * config/picochip/picochip.c: Removed profiling support.
26389         * config/picochip/picochip.md: Removed profiling instruction.
26390         * config/picochip/picochip.h: Removed profiling builtin.
26391
26392 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
26393
26394         * doc/install.texi (--with-host-libstdcxx): Document.
26395
26396 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
26397
26398         PR target/34299
26399         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
26400         generate a warning if the function name does not begin with
26401         "__vector" and the function has either the 'signal' or 'interrupt'
26402         attribute, from here to ...
26403         (avr_declare_function_name): ...here. New function.
26404         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
26405         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
26406
26407 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
26408
26409         PR bootstrap/39454
26410         * cse.c (fold_rtx): Don't modify original const_arg1 when
26411         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
26412         separate variable instead.
26413         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
26414         from out of range shift counts.
26415         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
26416
26417 2009-03-13  Catherine Moore  <clm@codesourcery.com>
26418
26419         * config/i386/x-mingw32 (host-mingw32.o): Replace
26420         diagnostic.h with $(DIAGNOSTIC_H).
26421
26422 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
26423
26424         PR target/39431
26425         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
26426         predicate.
26427         * config/i386/sync.md (sync_compare_and_swap<mode>,
26428         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
26429         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
26430         into a register.
26431         (sync_double_compare_and_swapdi_pic,
26432         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
26433         cmpxchg8b_pic_memory_operand instead of just memory_operand.
26434
26435 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
26436
26437         PR target/39445
26438         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
26439
26440 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
26441
26442         PR target/39327
26443         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
26444         (avx_addsubv4df3): Likewise.
26445         (*avx_addsubv4sf3): Likewise.
26446         (sse3_addsubv4sf3): Likewise.
26447
26448 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
26449
26450         PR target/38824
26451         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
26452
26453 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
26454
26455         PR debug/39432
26456         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
26457         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
26458         registers for allocnos created from user-defined variables.
26459
26460 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
26461
26462         PR target/39181
26463         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
26464         of non-integer mode as well.
26465
26466 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
26467
26468         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
26469         for functions for which the parameter types are unknown.
26470
26471 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
26472
26473         PR target/39137
26474         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
26475         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
26476         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
26477         * config/i386/i386.c (ix86_local_alignment): For
26478         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
26479         long long variables on the stack to avoid dynamic realignment.
26480         Allow the first argument to be a decl rather than type.
26481         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
26482
26483 2009-03-11  Nick Clifton  <nickc@redhat.com>
26484
26485         PR target/5362
26486         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
26487         options.
26488         Add description to mno-lsim option.
26489         * config/mcore/mcore.h: Remove comment about deprecated m4align
26490         option.
26491         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
26492         * doc/invoke.texi: Add description of mno-lsim and
26493         mstack-increment options.
26494
26495         * config/fr30/fr30.opt: Document the -mno-lsim option.
26496         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
26497         and -mno-lsim options.
26498
26499 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
26500
26501         * fold-const.c (fold_comparison): Only call fold_inf_compare
26502         if the mode supports infinities.
26503
26504 2009-03-11  Jason Merrill  <jason@redhat.com>
26505
26506         PR debug/39086
26507         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
26508         end already did.  Notice GIMPLE_CALL modifications of the result.
26509         Don't copy debug information from an ignored decl or a decl from
26510         another function.
26511
26512 2009-03-10  Richard Guenther  <rguenther@suse.de>
26513             Nathan Froyd  <froydnj@codesourcery.com>
26514
26515         PR middle-end/37850
26516         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
26517         (__divMODE3): Likewise.
26518
26519 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
26520
26521         PR tree-optimization/39394
26522         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
26523         DECL_SIZE_UNIT of variable length FIELD_DECLs.
26524
26525 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
26526
26527         * recog.c (verfiy_changes): Disallow renaming of hard regs in
26528         inline asms for register asm ("") declarations.
26529
26530 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
26531
26532         * fold-const.c (fold_unary): Fix comment.
26533
26534 2009-03-07  Jan Hubicka  <jh@suse.cz>
26535
26536         PR target/39361
26537         * tree-inline.c (setup_one_parameter): Do replacement of const
26538         argument by constant in SSA form.
26539
26540 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
26541
26542         PR middle-end/38028
26543         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
26544         determine alignment passed to assign_stack_local.
26545         (assign_parms_unsplit_complex): Likewise.
26546         * except.c (sjlj_build_landing_pads): Likewise.
26547
26548 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
26549
26550         PR middle-end/39360
26551         * tree-flow.h (add_referenced_var): Return bool instead of void.
26552         * tree-dfa.c (add_referenced_var): Return result of
26553         referenced_var_check_and_insert call.
26554         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
26555         of referenced_var_check_and_insert.
26556
26557         PR debug/39372
26558         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
26559         (gen_variable_die): Emit DW_AT_location on abstract static variable's
26560         DIE, don't emit it if abstract origin already has it.
26561         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
26562         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
26563
26564 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
26565
26566         * genpreds.c (needs_variable): Fix parentheses at variable name
26567         detection.
26568         (write_tm_constrs_h): Indent generated code.
26569
26570 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
26571
26572         * doc/extend.texi (Function Attributes): Add documentation
26573         for isr attributes.
26574
26575 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
26576
26577         PR debug/39387
26578         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
26579         take locus from its DECL_SOURCE_LOCATION instead of input_location.
26580
26581 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
26582
26583         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
26584         the loop as bad.
26585
26586 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
26587
26588         PR debug/39379
26589         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
26590         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
26591
26592 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
26593
26594         * config/i386/i386.md (R8_REG, R9_REG): New constants.
26595         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
26596         constants instead of magic numbers.
26597         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
26598         (QI_REG_P): Ditto.
26599         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
26600         (x86_64_ms_abi_int_parameter_registers): Ditto.
26601         (x86_64_int_return_registers): Ditto.
26602         (ix86_maybe_switch_abi): Ditto.
26603         (ix86_expand_call): Ditto for clobbered_registers array.
26604         (ix86_hard_regno_mode_ok): Ditto.
26605         (x86_extended_QIreg_mentioned_p): Ditto.
26606
26607 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
26608
26609         PR tree-optimization/39349
26610         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
26611
26612         * combine.c (gen_lowpart_for_combine): Use omode when generating
26613         clobber.
26614
26615 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
26616
26617         PR rtl-optimization/39235
26618         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
26619
26620 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
26621
26622         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
26623
26624 2009-03-04  Richard Guenther  <rguenther@suse.de>
26625
26626         PR tree-optimization/39362
26627         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
26628         that occur in abnormal PHIs should be varying.
26629
26630 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
26631
26632         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
26633         Extend comments.
26634         (simple_iv):  Take loop as an argument instead of statement.
26635         * tree-scalar-evolution.h (simple_iv): Declaration changed.
26636         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
26637         to simple_iv.
26638         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
26639         Ditto.
26640         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
26641         * matrix-reorg.c (analyze_transpose): Ditto.
26642         * tree-data-ref.c (dr_analyze_innermost): Ditto.
26643         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
26644         * tree-predcom.c (ref_at_iteration): Ditto.
26645         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
26646
26647 2009-03-04  Richard Guenther  <rguenther@suse.de>
26648
26649         PR tree-optimization/39358
26650         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
26651         escaped_id and callused_id.
26652         (solve_graph): Likewise.
26653
26654 2009-03-04  Richard Guenther  <rguenther@suse.de>
26655
26656         PR tree-optimization/39339
26657         * tree-sra.c (try_instantiate_multiple_fields): Make it
26658         no longer ICE on the above.
26659
26660 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
26661
26662         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
26663         that fits within Pmode.
26664
26665 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
26666
26667         PR middle-end/10109
26668         * tm.texi (LIBCALL_VALUE): Update description.
26669
26670 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
26671
26672         PR middle-end/34443
26673         * doc/extend.texi (section): Update description.
26674
26675 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
26676
26677         PR middle-end/39345
26678         * tree-inline.c (remapped_type): New.
26679         (can_be_nonlocal): Call remapped_type instead of remap_type.
26680
26681 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
26682
26683         PR fortran/39354
26684         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
26685         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
26686
26687 2009-03-03  Richard Guenther  <rguenther@suse.de>
26688
26689         PR middle-end/39272
26690         * tree.c (tree_nonartificial_location): New function.
26691         * tree.h (tree_nonartificial_location): Declare.
26692         * builtins.c (expand_builtin_memory_chk): Provide location
26693         of the call location for artificial function pieces.
26694         (maybe_emit_chk_warning): Likewise.
26695         (maybe_emit_sprintf_chk_warning): Likewise.
26696         (maybe_emit_free_warning): Likewise.
26697         * expr.c (expand_expr_real_1): Likewise.
26698
26699 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
26700
26701         PR tree-optimization/39343
26702         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
26703         COMPONENT_REF t has ARRAY_TYPE.
26704
26705 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
26706
26707         PR middle-end/39335
26708         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
26709         when the type precision of the induction variable should be
26710         larger than the type precision of nit.
26711         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
26712         * graphite.c (graphite_loop_normal_form): Same.
26713         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
26714
26715 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
26716
26717         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
26718         (*call_1_rex64_ms_sysv): Use named constants instead of magic
26719         numbers to describe clobbered registers.
26720         (*call_value_0_rex64_ms_sysv): Ditto.
26721         * config/i386/mmx.md (mmx_emms): Ditto.
26722         (mmx_femms): Ditto.
26723
26724 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
26725
26726         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
26727         of ABI_64.
26728
26729 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
26730
26731         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
26732         (spu_section_type_flags): New function.
26733
26734 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
26735
26736         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
26737         reg_class_contents of FLOAT_REGS into a temporary.
26738
26739 2009-03-02  Richard Guenther  <rguenther@suse.de>
26740             Ira Rosen  <irar@il.ibm.com>
26741
26742         PR tree-optimization/39318
26743         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
26744         information to the vectorized statement.
26745
26746 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
26747
26748         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
26749         variable.  Use defined names instead of magic constants for REX SSE
26750         registers.
26751
26752 2009-03-01  Richard Guenther  <rguenther@suse.de>
26753
26754         PR tree-optimization/39331
26755         * omp-low.c (lower_send_shared_vars): Do not receive new
26756         values for the reference of DECL_BY_REFERENCE parms or results.
26757
26758 2009-03-01  Jan Hubicka  <jh@suse.cz>
26759
26760         PR debug/39267
26761         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
26762         BLOCK_NONLOCALIZED_VAR): New macros.
26763         (tree_block): Add nonlocalized_vars.
26764         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
26765         gen_decl_die): Add origin argument.  Allow generation of die with
26766         origin at hand only.
26767         (gen_member_die, gen_type_die_with_usage, force_decl_die,
26768         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
26769         of gen_*.
26770         (gen_block_die): Fix checking for unused blocks.
26771         (process_scope_var): Break out from .... ; work with origins only.
26772         (decls_for_scope) ... here; process nonlocalized list.
26773         (dwarf2out_ignore_block): Look for nonlocalized vars.
26774         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
26775         vars.
26776         (dump_scope_block): Dump them.
26777         * tree-inline.c (remap_decls): Handle nonlocalized vars.
26778         (remap_block): Likewise.
26779         (can_be_nonlocal): New predicate.
26780         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
26781
26782 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26783
26784         * configure: Regenerate.
26785
26786 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26787
26788         * optc-gen.awk: No need to duplicate option flags twice.
26789         Reuse help texts for duplicate options which do not have any.
26790
26791         * gcc.c (display_help): Document --version.
26792
26793         * gcc.c (main): If print_help_list and verbose_flag, ensure
26794         driver output comes before subprocess output.
26795
26796         * optc-gen.awk: Assign all remaining fields to help string,
26797         space-separated, for multi-line help in *.opt.
26798
26799         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
26800         -Wno-pedantic-ms-format is for MinGW targets only.
26801
26802         * doc/options.texi (Option file format): Fix bad indentation,
26803         restoring dropped sentence.
26804
26805 2009-02-28  Jan Hubicka  <jh@suse.cz>
26806
26807         * tree-inline.c (tree_function_versioning): Output debug info.
26808
26809 2009-02-28  Jan Hubicka  <jh@suse.cz>
26810
26811         PR debug/39267
26812         * tree-inline.c (setup_one_parameter): Do not copy propagate
26813         arguments when not optimizing.
26814
26815 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
26816
26817         PR target/39327
26818         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
26819         (avx_addsubv4df3): Likewise.
26820         (*avx_addsubv4sf3): Likewise.
26821         (sse3_addsubv4sf3): Likewise.
26822         (*avx_addsubv2df3): Likewise.
26823         (sse3_addsubv2df3): Likewise.
26824         (avx_unpckhps256): Correct item selectors.
26825         (avx_unpcklps256): Likewise.
26826         (avx_unpckhpd256): Likewise.
26827         (avx_unpcklpd256): Likewise.
26828
26829 2009-02-28  Jan Hubicka  <jh@suse.cz>
26830
26831         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
26832         static vars.
26833         (copy_arguments_for_versioning): If var is declared don't declare it.
26834         (tree_function_versioning): First setup substitutions and then copy
26835         args.
26836
26837 2009-02-27  Jan Hubicka  <jh@suse.cz>
26838
26839         PR debug/39267
26840         * cgraph.h (varpool_output_debug_info): Remove.
26841         * cgraphunit.c (varpool_output_debug_info): Remove.
26842         * dwarf2out.c (deferred_locations_struct): New struct
26843         (deferred_locations): New type.
26844         (deferred_locations_list): New static var.
26845         (deffer_location): New function.
26846         (gen_variable_die): Use it.
26847         (decls_for_scope): Output info on local static vars.
26848         (dwarf2out_finish): Process deferred locations.
26849         * varpool.c (varpool_output_debug_info): Remove.
26850
26851 2009-02-27  Jan Hubicka  <jh@suse.cz>
26852
26853         PR debug/39267
26854         * tree.h (TREE_PROTECTED): Fix comment.
26855         (BLOCK_HANDLER_BLOCK): Remove.
26856         (struct tree_block): Remove handler_block add body_block.
26857         (inlined_function_outer_scope_p): New.
26858         (is_body_block): Remove.
26859         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
26860         * dwarf2out.c (is_inlined_entry_point): Remove.
26861         (add_high_low_attributes): Use inlined_function_outer_scope_p.
26862         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
26863         code.
26864         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
26865         * gimplify.c (gimplify_expr): Gimplify body blocks.
26866         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
26867         block with multiple subblocks.
26868         (dump_scope_block): Prettier output; dump more flags and info.
26869         (dump_scope_blocks): New.
26870         (remove_unused_locals): Use dump_scope_blocks.
26871         * tree-flow.h (dump_scope_blocks): Declare.
26872         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
26873         * stmt.c (is_body_block): Remove.
26874         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
26875         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
26876
26877 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
26878
26879         PR middle-end/39308
26880         * graphite.c (graphite_loop_normal_form): Do not call
26881         number_of_iterations_exit from a gcc_assert.
26882
26883 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
26884
26885         * config/s390/s390.c (s390_swap_cmp): Look for conditional
26886         jumps if COND is NULL.
26887         (find_cond_jump): New function.
26888         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
26889         * config/s390/s390.md: Remove z10_cobra attribute value.
26890
26891 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
26892
26893         * config/alpha/alpha.h (alpha_expand_mov): Return false if
26894         force_const_mem returns NULL_RTX.
26895
26896 2009-02-26  Jan Hubicka  <jh@suse.cz>
26897
26898         PR debug/39267
26899         * cgraph.h (varpool_output_debug_info): Remove.
26900         * cgraphunit.c (varpool_output_debug_info): Remove.
26901         * dwarf2out.c (deferred_locations_struct): New struct
26902         (deferred_locations): New type.
26903         (deferred_locations_list): New static var.
26904         (deffer_location): New function.
26905         (gen_variable_die): Use it.
26906         (decls_for_scope): Output info on local static vars.
26907         (dwarf2out_finish): Process deferred locations.
26908         * varpool.c (varpool_output_debug_info): Remove.
26909
26910 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
26911
26912         PR rtl-optimization/39241
26913         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
26914         to subreg_offset_representable_p.
26915
26916 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
26917
26918         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
26919         execute function prototype.  Get f and nregs from max_reg_num
26920         and get_insns.  Remove the first backward pass as it's dead,
26921         guard the forward pass by flag_expensive_optimizations.
26922         (rest_of_handle_regmove): Delete.
26923         (pass_regmove): Replace it with regmove_optimize.
26924
26925 2009-02-25  Martin Jambor  <mjambor@suse.cz>
26926
26927         PR tree-optimization/39259
26928         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
26929         calls_alloca function flags.
26930         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
26931         calls are detected.
26932
26933 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
26934
26935         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
26936         flags_set_1_rtx, flags_set_1_set): Delete.
26937         (regmove_optimize): Do not call mark_flags_life_zones.
26938
26939 2009-02-24  Julian Brown  <julian@codesourcery.com>
26940
26941         PR target/35965
26942         * config/arm/arm.c (require_pic_register): Only set
26943         cfun->machine->pic_reg once per function.
26944
26945 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
26946
26947         * doc/invoke.texi (Link Options): Document an easier way to pass
26948         options that take arguments to the GNU linker using -Xlinker and -Wl.
26949
26950 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
26951
26952         PR target/33785
26953         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
26954
26955 2009-02-24  Richard Guenther  <rguenther@suse.de>
26956
26957         PR debug/39285
26958         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
26959
26960 2009-02-24  Richard Guenther  <rguenther@suse.de>
26961             Zdenek Dvorak  <ook@ucw.cz>
26962
26963         PR tree-optimization/39233
26964         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
26965         from converting them to a generic type.
26966
26967 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
26968
26969         PR tree-optimization/39260
26970         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
26971         contains a condition with a real type.
26972         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
26973
26974 2009-02-23  Jason Merrill  <jason@redhat.com>
26975
26976         PR c++/38880
26977         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
26978         narrowing_initializer_constant_valid_p.
26979         (narrowing_initializer_constant_valid_p): Don't return
26980         null_pointer_node for adding a pointer to itself.
26981
26982 2009-02-23  Jan Hubicka  <jh@suse.cz>
26983
26984         PR c/12245
26985         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
26986         resizing.
26987
26988 2009-02-23  Jan Hubicka  <jh@suse.cz>
26989
26990         PR tree-optimization/37709
26991         * tree.c (block_ultimate_origin): Move here from dwarf2out.
26992         * tree.h (block_ultimate_origin): Declare.
26993         * dwarf2out.c (block_ultimate_origin): Move to tree.c
26994         * tree-ssa-live.c (remove_unused_scope_block_p):
26995         Eliminate blocks containig no instructions nor live variables nor
26996         nested blocks.
26997         (dump_scope_block): New function.
26998         (remove_unused_locals): Enable removal of dead blocks by default;
26999         enable dumping at TDF_DETAILS.
27000
27001 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
27002
27003         * config/i386/i386.c (classify_argument): Don't allow COImode
27004         and OImode.
27005         (function_arg_advance_32): Don't allow OImode.
27006         (function_arg_32): Likewise.
27007         (function_value_32): Likewise.
27008         (return_in_memory_32): Likewise.
27009         (function_arg_64): Remove OImode comment.
27010
27011 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
27012
27013         PR target/39261
27014         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
27015         ix86_expand_vector_set for V4DImode in 64bit mode only.
27016         (ix86_expand_vector_init_one_var): Likewise.
27017
27018 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
27019
27020         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
27021
27022 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
27023
27024         PR bootstrap/39257
27025         * loop-iv.c: Revert last change.
27026         * emit-rtl.c: Likewise.
27027
27028 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
27029
27030         PR target/39256
27031         * config/i386/i386.c (type_natural_mode): Remove an extra
27032         space in the warning message.
27033         (function_value_32): Handle 32-byte vector modes.
27034         (return_in_memory_32): Likewise.
27035
27036 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
27037
27038         * loop-iv.c (truncate_value): New function.
27039         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
27040         of lowpart_subreg.
27041         (lowpart_subreg): Move to...
27042         * emit-rtl.c: ...here.
27043
27044 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
27045
27046         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
27047         accidental and undocumented change at revision 140860.
27048
27049 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
27050
27051         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
27052         take gimple_seq * arguments.
27053         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
27054         types_compatible_p langhook.
27055
27056 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
27057             Joseph Myers  <joseph@codesourcery.com>
27058
27059         * config/arm/arm.c (arm_builtin_va_list): New function.
27060         (arm_expand_builtin_va_start): Likewise.
27061         (arm_gimplify_va_arg_expr): Likewise.
27062         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
27063         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
27064         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
27065         (va_list_type): New variable.
27066         (arm_mangle_type): Mangle va_list_type appropriately.
27067
27068 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
27069
27070         PR middle-end/39157
27071         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
27072         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
27073         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
27074         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
27075         parameter to 1000 for -O1 by default.
27076         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
27077         parameter.
27078         * loop-invariant.c: Include params.h.
27079         (move_loop_invariants): Don't call move_single_loop_invariants on
27080         very large loops.
27081
27082 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
27083
27084         * calls.c (emit_library_call_value_1): Use slot_offset instead of
27085         offset when calculating bounds for indexing stack_usage_map.  Fixes
27086         a buffer overflow with certain target setups.
27087
27088 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
27089
27090         PR target/39240
27091         * calls.c (expand_call): Clear try_tail_call if caller and callee
27092         disagree in promotion of function return value.
27093
27094 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
27095
27096         PR target/39175
27097         * c-common.c (c_determine_visibility): If visibility changed and
27098         DECL_RTL has been already set, call make_decl_rtl to update symbol
27099         flags.
27100
27101 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
27102
27103         PR c++/39188
27104         * varasm.c (assemble_variable): Don't check DECL_NAME when
27105         globalizing a variable.
27106
27107 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
27108
27109         PR c/38483
27110         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
27111         expression before any __builtin_trap call.
27112         * c-typeck.c (build_function_call): Convert and check function
27113         arguments before generating a call to a trap.  Evaluate the
27114         function arguments before the trap.
27115
27116 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
27117
27118         PR target/39228
27119         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
27120         (UNSPEC_FXAM_MEM): New unspec.
27121         (fxam<mode>2_i387_with_temp): New insn and split pattern.
27122         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
27123         memory using fxam<mode>2_i387_with_temp to remove excess precision.
27124
27125 2009-02-19  Richard Guenther  <rguenther@suse.de>
27126
27127         PR tree-optimization/39207
27128         PR tree-optimization/39074
27129         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
27130         storedanything_tree): New.
27131         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
27132         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
27133         (build_succ_graph): Add edges from STOREDANYTHING to all
27134         non-direct nodes.
27135         (init_base_vars): Initialize STOREDANYTHING.
27136         (compute_points_to_sets): Free substitution info after
27137         building the succ graph.
27138         (ipa_pta_execute): Likewise.
27139
27140         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
27141         field.
27142         (do_ds_constraint): Do not add to special var or non-pointer
27143         field solutions.
27144         (type_could_have_pointers): Split out from ...
27145         (could_have_pointers): ... here.  For arrays use the element type.
27146         (create_variable_info_for): Initialize may_have_pointers.
27147         (new_var_info): Likewise.
27148         (handle_lhs_call): Make the HEAP variable unknown-sized.
27149         (intra_create_variable_infos): Use a type with pointers for
27150         PARM_NOALIAS, make it unknown-sized.
27151
27152 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
27153
27154         PR target/39224
27155         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
27156
27157 2009-02-18  Jason Merrill  <jason@redhat.com>
27158
27159         PR target/39179
27160         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
27161         value if DECL_EXTERNAL.
27162         * tree-sra.c (sra_walk_gimple_assign): Likewise.
27163         * target.h (gcc_target::binds_local_p): Clarify "module".
27164         * tree.h (TREE_PUBLIC): Clarify "module".
27165
27166 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
27167
27168         PR target/38891
27169         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
27170         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
27171
27172 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
27173
27174         PR target/39082
27175         * c.opt (Wabi): Support C and ObjC.
27176         (Wpsabi): New.
27177
27178         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
27179
27180         * config/i386/i386.c (classify_argument): Warn once about the ABI
27181         change when passing union with long double.
27182
27183         * doc/invoke.texi: Update -Wabi for warning psABI changes.
27184
27185 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
27186
27187         PR c/35447
27188         * c-parser.c (c_parser_compound_statement): Always enter and leave
27189         a scope.
27190
27191 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27192
27193         PR target/34587
27194         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
27195
27196 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
27197
27198         PR tree-optimization/36922
27199         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
27200         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
27201         Likewise.
27202
27203 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
27204
27205         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
27206         to 0 for EABI64.
27207
27208 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
27209
27210         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
27211
27212 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
27213
27214         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
27215         tree sharing.
27216
27217 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
27218             Richard Sandiford  <rdsandiford@googlemail.com>
27219
27220         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
27221         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
27222         (loongson_biadd): ...this.
27223
27224 2009-02-17  Richard Guenther  <rguenther@suse.de>
27225
27226         PR tree-optimization/39202
27227         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
27228         a var make sure to follow existing collapses.
27229
27230 2009-02-17  Richard Guenther  <rguenther@suse.de>
27231
27232         PR middle-end/39214
27233         * langhooks.c (lhd_print_error_function): Check for NULL block.
27234
27235 2009-02-17  Richard Guenther  <rguenther@suse.de>
27236
27237         PR tree-optimization/39204
27238         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
27239         of the PHI arg.
27240
27241 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
27242
27243         * config/soft-fp/double.h: Update from glibc CVS.
27244
27245 2009-02-17  Richard Guenther  <rguenther@suse.de>
27246
27247         PR tree-optimization/39207
27248         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
27249         strict-aliasing warnings for pointers pointing to NULL.
27250
27251 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
27252
27253         PR c/35446
27254         * c-parser.c (c_parser_braced_init): Call pop_init_level when
27255         skipping until next close brace.
27256
27257 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
27258
27259         PR target/37049
27260         * config/i386/i386.c (ix86_expand_push): Set memory alignment
27261         to function argument boundary.
27262
27263 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
27264
27265         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
27266         in the lea_add. Reload eventually constraints it properly.
27267         * config/picochip/constraints.md: Remove the target constraint
27268         "b", since it is not needed anymore.
27269
27270 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
27271
27272         * gthr-dce.h: Uglify function parameter and local variable names.
27273         * gthr-gnat.h: Likewise.
27274         * gthr-mipssde.h: Likewise.
27275         * gthr-nks.h: Likewise.
27276         * gthr-posix95.h: Likewise.
27277         * gthr-posix.h: Likewise.
27278         * gthr-rtems.h: Likewise.
27279         * gthr-single.h: Likewise.
27280         * gthr-solaris.h: Likewise.
27281         * gthr-tpf.h: Likewise.
27282         * gthr-vxworks.h: Likewise.
27283         * gthr-win32.h: Likewise.
27284
27285 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
27286
27287         PR target/39196
27288         * config/i386/i386.md: Restrict the new peephole2 to move
27289         between MMX/SSE registers.
27290
27291 2009-02-15  Richard Guenther  <rguenther@suse.de>
27292
27293         Revert
27294         2009-02-13  Richard Guenther  <rguenther@suse.de>
27295
27296         * configure.ac: Enable LFS.
27297         * configure: Re-generate.
27298         * config.in: Likewise.
27299
27300 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
27301
27302         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
27303         spu_srqwbyte, spu_srqwbytebc): Define.
27304         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
27305         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
27306         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
27307         "shrqby_<mode>"): New insn-and-split patterns.
27308         * config/spu/spu.c (expand_builtin_args): Determine and return
27309         number of operands using spu_builtin_description data.
27310         (spu_expand_builtin_1): Use it.
27311
27312 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
27313
27314         PR target/38056
27315         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
27316         TARGET_CONST_GP.
27317
27318 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
27319
27320         PR target/39149
27321         * config/i386/i386.c (override_options): Correct warning
27322         messages for -malign-loops, -malign-jumps and -malign-functions.
27323
27324 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
27325
27326         PR target/39152
27327         * config/i386/i386.md: Restrict the new peephole2 to move
27328         between the general purpose registers.
27329
27330 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
27331
27332         PR target/39162
27333         * config/i386/i386.c (type_natural_mode): Add a new argument.
27334         Return the original mode and warn ABI change if vector size is 32byte.
27335         (function_arg_advance): Updated.
27336         (function_arg): Likewise.
27337         (ix86_function_value): Likewise.
27338         (ix86_return_in_memory): Likewise.
27339         (ix86_sol10_return_in_memory): Likewise.
27340         (ix86_gimplify_va_arg): Likewise.
27341         (function_arg_32): Don't warn ABX ABI change here.
27342         (function_arg_64): Likewise.
27343
27344 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
27345
27346         * loop-iv.c (implies_p): In the final case, test that operands 0
27347         of the two comparisons match.
27348
27349         * config/bfin/bfin.c (find_prev_insn_start): New function.
27350         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
27351         (find_next_insn_start): Move.
27352
27353 2009-02-13  Richard Guenther  <rguenther@suse.de>
27354
27355         * configure.ac: Enable LFS.
27356         * configure: Re-generate.
27357         * config.in: Likewise.
27358
27359 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
27360
27361         PR c/35444
27362         * c-parser.c (c_parser_parms_list_declarator): Discard pending
27363         sizes on syntax error after some arguments have been parsed.
27364
27365 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
27366
27367         * doc/invoke.texi (-fira): Remove.
27368
27369 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
27370
27371         * caller-save.c: Replace regclass.c with reginfo.c in comments.
27372         * recog.c: Likewise.
27373         * rtl.h: Likewise.
27374
27375 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
27376
27377         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
27378         (umul_ppmm): Likewise.
27379         (count_leading_zeros): Likewise.
27380         (count_trailing_zeros): Likewise.
27381         (UMUL_TIME): Likewise.
27382
27383 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
27384
27385         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
27386         soft-fp/t-softfp to tmake_file.
27387
27388         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
27389         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
27390         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
27391         IA64_BUILTIN_INFQ]: New.
27392         (ia64_init_builtins): Initialize __builtin_infq,
27393         __builtin_fabsq and __builtin_copysignq if not HPUX.
27394         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
27395         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
27396
27397         * config/ia64/lib1funcs.asm (__divtf3): Define only if
27398         SHARED is defined.
27399         (__fixtfti): Likewise.
27400         (__fixunstfti): Likewise.
27401         (__floattitf): Likewise.
27402
27403         * config/ia64/libgcc-glibc.ver: New.
27404         * config/ia64/t-fprules-softfp: Likewise.
27405         * config/ia64/sfp-machine.h: Likewise.
27406
27407         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
27408         (LIBGCC2_TF_CEXT): Likewise.
27409         (TF_SIZE): Likewise.
27410         (TARGET_INIT_LIBFUNCS): Likewise.
27411
27412         * config/ia64/t-glibc (SHLINB_MAPFILES):
27413         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
27414
27415 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
27416
27417         * config/i386/i386.c (construct_container): Rewrite processing
27418         BLKmode with X86_64_SSE_CLASS.
27419
27420 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
27421
27422         PR target/39152
27423         * config/i386/i386.md: Replace simplify_replace_rtx with
27424         replace_rtx in the new peephole2.
27425
27426 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
27427
27428         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
27429         loop unrolling do not happen at -O2.
27430
27431 2009-02-12  Michael Matz  <matz@suse.de>
27432
27433         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
27434
27435 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
27436
27437         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
27438         for -g3.
27439
27440 2009-02-12  Ben Elliston  <bje@au.ibm.com>
27441
27442         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
27443         patterns when updating the back chain.  Missed in the 2009-02-10
27444         change.
27445
27446 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
27447
27448         * doc/extend.texi (Decimal Floating Types): Update identifier of
27449         draft TR and list of missing support.
27450
27451 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
27452
27453         PR middle-end/39154
27454         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
27455         bit to variable length decl's flags, add it also to its
27456         pointer replacement variable.
27457
27458 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
27459             Jakub Jelinek  <jakub@redhat.com>
27460
27461         PR target/39118
27462         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
27463         (memory_blockage): New expander.
27464         (*memory_blockage): New insn pattern.
27465         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
27466         instead of general blockage at the end of function prologue when
27467         frame pointer is used to access red zone area.  Do not emit blockage
27468         when profiling, it is emitted in generic code.
27469         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
27470         function epilogue when frame pointer is used to access red zone area.
27471
27472 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
27473
27474         PR target/38824
27475         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
27476         by arithmetic with memory operands.
27477         * config/i386/predicates.md (commutative_operator): New.
27478
27479 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
27480
27481         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
27482         bulleted lists.
27483
27484 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
27485
27486         * alias.h (record_alias_subset): Declare.
27487         * alias.c (record_alias_subset): Make global.
27488
27489 2009-02-10  Nick Clifton  <nickc@redhat.com>
27490
27491         * tree-parloops.c: Change license to GPLv3.
27492         * ipa-struct-reorg.c: Change license to GPLv3.
27493         * ipa-struct-reorg.h: Change license to GPLv3.
27494
27495 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
27496
27497         PR c/39084
27498         * c-decl.c (start_struct): Return NULL on error.
27499
27500 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
27501
27502         PR middle-end/39124
27503         * cfgloopmanip.c (remove_path): Call remove_bbs after
27504         cancel_loop_tree, not before it.
27505
27506         PR target/39139
27507         * function.h (struct function): Add has_local_explicit_reg_vars bit.
27508         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
27509         VAR_DECLs were seen.
27510         * tree-ssa-live.c (remove_unused_locals): Recompute
27511         cfun->has_local_explicit_reg_vars.
27512         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
27513         copies or clearings if cfun->has_local_explicit_reg_vars.
27514
27515 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
27516
27517         PR target/39118
27518         * config/i386/i386.c (expand_prologue): Emit blockage at the end
27519         of function prologue when frame pointer is used to access
27520         red zone area.
27521
27522 2009-02-10  Richard Guenther  <rguenther@suse.de>
27523
27524         PR middle-end/39127
27525         * gimplify.c (gimple_regimplify_operands): Always look if
27526         we need to create a temporary.
27527
27528 2009-02-10  Richard Guenther  <rguenther@suse.de>
27529
27530         PR tree-optimization/39132
27531         * tree-loop-distribution.c (todo): New global var.
27532         (generate_memset_zero): Trigger TODO_rebuild_alias.
27533         (tree_loop_distribution): Return todo.
27534
27535 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
27536
27537         PR target/39119
27538         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
27539         (x86_64_reg_class_name): Removed.
27540         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
27541         first one isn't X86_64_SSE_CLASS or any other ones aren't
27542         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
27543         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
27544         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
27545         and 3 X86_64_SSEUP_CLASS.
27546         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
27547         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
27548
27549 2009-02-10  Ben Elliston  <bje@au.ibm.com>
27550
27551         * config/rs6000/rs6000.md (allocate_stack): Always use an update
27552         form instruction to update the stack back chain word, even if the
27553         user has disabled the generation of update instructions.
27554         (movdi_<mode>_update_stack): New.
27555         (movsi_update_stack): Likewise.
27556         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
27557         always use an update form instruction to update the stack back
27558         chain word.
27559
27560 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
27561
27562         PR middle-end/38953
27563         * graphite.c (if_region_set_false_region): After moving a region in
27564         the false branch of a condition, remove the empty dummy basic block.
27565         (gloog): Remove wrong fix for PR38953.
27566
27567 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
27568
27569         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
27570         generation due to implicit sign extension.
27571
27572 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
27573
27574         PR middle-end/38981
27575         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
27576         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
27577
27578 2009-02-09  Richard Guenther  <rguenther@suse.de>
27579
27580         PR middle-end/35202
27581         * convert.c (convert_to_real): Disable (float)fn((double)x)
27582         to fnf(x) conversion if errno differences may occur and
27583         -fmath-errno is set.
27584
27585 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
27586
27587         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
27588         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
27589         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
27590
27591 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
27592
27593         PR c/35434
27594         * c-common.c (handle_alias_attribute): Disallow attribute for
27595         anything not a FUNCTION_DECL or VAR_DECL.
27596
27597 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
27598
27599         PR c/39035
27600         * real.c (do_compare): Special-case compare of zero against
27601         decimal float value.
27602
27603 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
27604
27605         PR c/36432
27606         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
27607         as indicating flexible array members unless the field itself is
27608         being declarared as the incomplete array.
27609
27610 2009-02-06  Jan Hubicka  <jh@suse.cz>
27611
27612         PR tree-optimization/38844
27613         * ipa-inline.c (try_inline): Stop inlining recursion when edge
27614         is already inlined.
27615
27616 2009-02-06  Richard Guenther  <rguenther@suse.de>
27617
27618         PR middle-end/38977
27619         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
27620         fork because we may expand it as __gcov_fork.
27621
27622 2009-02-06  Nick Clifton  <nickc@redhat.com>
27623
27624         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
27625
27626 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
27627
27628         PR tree-optimization/35659
27629         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
27630         vn_phi_eq): Shortcut if hashcode does not match.
27631         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
27632         NULL operands.
27633         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
27634         and avoid iterative_hash_expr.
27635         (FOR_EACH_VALUE_ID_IN_SET): New.
27636         (value_id_compare): Remove.
27637         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
27638         sort expressions by value id.
27639
27640 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
27641
27642         PR target/38991
27643         * config/sh/predicates.md (general_movsrc_operand): Don't check
27644         the subreg of system registers here.
27645
27646 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
27647
27648         PR c++/39106
27649         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
27650         on the copied decl.
27651
27652 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
27653
27654         PR rtl-optimization/39110
27655         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
27656         addresses, not aligned ones.
27657
27658 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
27659             Richard Guenther  <rguenther@suse.de>
27660
27661         PR tree-optimization/39100
27662         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
27663         comment says and add edges.
27664
27665 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
27666
27667         PR c/35435
27668         * c-common.c (handle_tls_model_attribute): Ignore attribute for
27669         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
27670
27671 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
27672
27673         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
27674         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
27675         register_bb_in_sese, new_sese, free_sese): Moved.
27676         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
27677         outermost_loop_in_scop, build_scop_iteration_domain,
27678         expand_scalar_variables_ssa_name, get_vdef_before_scop,
27679         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
27680         Use loop_in_sese_p instead of loop_in_scop_p.
27681         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
27682         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
27683         (scopdet_basic_block_info): Fix bug in scop detection.
27684         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
27685         eq_loop_to_cloog_loop): Remove.
27686         (nb_loops_around_loop_in_scop, nb_loop
27687         ref_nb_loops): Moved here...
27688         * graphite.h (ref_nb_loops): ... from here.
27689         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
27690         (loop_domain_dim, loop_iteration_vector_dim): Remove.
27691         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
27692
27693 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
27694             Hans-Peter Nilsson  <hp@axis.com>
27695
27696         PR rtl-optimization/37889
27697         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
27698         Move offset handling from PLUS to before the switch.  Use new
27699         arguments when considering SYMBOL_REFs too.
27700         (rtx_addr_can_trap_p): Pass dummy offset and size.
27701         (enum may_trap_p_flags): Remove.
27702         (may_trap_p_1): Pass size from MEM_SIZE.
27703
27704         PR rtl-optimization/38921
27705         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
27706         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
27707         * rtlanal.c (may_trap_after_code_motion_p): Delete.
27708         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
27709
27710 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
27711
27712         AVX Programming Reference (January, 2009)
27713         * config/i386/sse.md (*vpclmulqdq): New.
27714
27715 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
27716
27717         PR tree-optimization/38977
27718         PR gcov-profile/38292
27719         * calls.c (special_function_p): Disregard __builtin_ prefix.
27720
27721 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
27722
27723         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
27724         non-indexable addresses even before reload.
27725
27726 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
27727
27728         PR c/29129
27729         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
27730         as having variable size.  Do not give an error for unnamed
27731         parameters with [*] declarators.  Give a warning for type names
27732         with [*] declarators and mark them as variable size.
27733         * c-parser.c (c_parser_sizeof_expression): Do not give an error
27734         for sizeof applied to [*] type names.
27735
27736 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
27737
27738         PR C++/36607
27739         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
27740
27741 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
27742
27743         * gcc.c (process_command): Update copyright notice dates.
27744         * gcov.c (print_version): Likewise.
27745         * gcov-dump.c (print_version): Likewise.
27746         * mips-tfile.c (main): Likewise.
27747         * mips-tdump.c (main): Likewise.
27748
27749 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
27750
27751         PR c/35433
27752         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
27753         for composite type involving a zero-length array type.
27754
27755 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
27756
27757         PR target/35318
27758         * function.c (match_asm_constraints_1): Skip over
27759         initial optional % in the constraint.
27760
27761         PR inline-asm/39059
27762         * c-parser.c (c_parser_postfix_expression): If fixed point is not
27763         supported, don't accept FIXED_CSTs.
27764         * c-decl.c (finish_declspecs): Error if fixed point is not supported
27765         and _Sat is used without _Fract/_Accum.  Set specs->type to
27766         integer_type_node for cts_fract/cts_accum if fixed point is not
27767         supported.
27768
27769 2009-02-02  Catherine Moore  <clm@codesourcery.com>
27770
27771         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
27772
27773 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
27774
27775         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
27776         (ABI_HAS_64BIT_SYMBOLS): Use it.
27777         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
27778
27779 2009-02-02  Paul Brook  <paul@codesourcery.com>
27780
27781         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
27782
27783 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
27784
27785         PR inline-asm/39058
27786         * recog.h (asm_operand_ok): Add constraints argument.
27787         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
27788         recurse on matching constraint.
27789         (check_asm_operands): Pass constraints as 3rd argument to
27790         asm_operand_ok.  Don't look up matching constraint here.
27791         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
27792         to asm_operand_ok.
27793
27794 2009-02-02  Ben Elliston  <bje@au.ibm.com>
27795
27796         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
27797         TARGET_NARROW_VOLATILE_BITFIELD macro names.
27798
27799 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27800
27801         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
27802         information.  Remove some obsolete information.  Reorganize.
27803
27804         * config/pa/fptr.c: Revert license to GPL 2.
27805         * config/pa/milli64.S: Likewise.
27806
27807 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
27808
27809         PR target/38904
27810         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
27811         LIBRARY name in, instead of hard-coding it.
27812         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
27813         extra target make frag to tmake_files according to EH model.
27814         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
27815         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
27816         frags that define makefile variable EH_MODEL appropriately.
27817         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
27818         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
27819         to "-sjlj" according to type of EH configured.
27820         (LIBGCC_SONAME):  Concatenate it to shared library base name.
27821         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
27822         to "_sjlj" according to type of EH configured.
27823         (LIBGCC_SONAME):  Concatenate it to shared library base name.
27824         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
27825         (SHLIB_LINK):  Add missing semicolon to if-else construct.
27826         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
27827         string value of "pe_dll" command-line option.
27828         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
27829         (SHLIB_SONAME):  Use it when overriding t-cygming default.
27830         (SHLIB_IMPLIB):  Override t-cygming default.
27831         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
27832         string value of "pe_dll" command-line option.
27833
27834 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
27835
27836         PR target/38952
27837         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
27838         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
27839
27840 2009-01-31  Richard Guenther  <rguenther@suse.de>
27841
27842         PR tree-optimization/38937
27843         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
27844         computing the transitive closure.
27845
27846 2009-01-30  Richard Guenther  <rguenther@suse.de>
27847
27848         PR tree-optimization/39041
27849         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
27850         Propagate variable indices only if the types match for this stmt.
27851
27852 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
27853
27854         PR target/39013
27855         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
27856         inline but never defined.
27857
27858 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
27859
27860         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
27861         (*insv_h_di_reg_extimm): New insn.
27862         (*insv_l<mode>_reg_extimm): New insn.
27863
27864 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
27865
27866         * config/picochip/picochip.c (flag_conserve_stack): set
27867         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
27868         fconserve-stack. Reduce call-overhead used by inliner.
27869
27870 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
27871
27872         PR/38157
27873         * common.opt (flag_conserve_stack): Initialised to zero.
27874
27875 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
27876
27877         PR/39002
27878         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
27879         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
27880         method.
27881
27882 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
27883
27884         * ira-color.c (allocno_reload_assign): Update comments.
27885         * regmove.c (regmove_optimize): Likewise.
27886
27887         * ra.h: Removed.
27888
27889 2009-01-29  Robert Millan  <rmh@aybabtu.com>
27890
27891         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
27892         * config/i386/kopensolaris-gnu.h: New file.  Undefine
27893         `MD_UNWIND_SUPPORT'.
27894         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
27895
27896 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
27897
27898         PR tree-optimization/39007
27899         * tree-loop-distribution.c (generate_builtin): Use
27900         recompute_dominator to compute the immediate dominator of the
27901         basic block just after the loop.
27902
27903 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
27904
27905         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
27906         (ASM_OUTPUT_DWARF_PCREL): Define.
27907
27908 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
27909
27910         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
27911         * doc/passes.texi: Remove entries about regclass, local-alloc, and
27912         global.  Modify entries about regmove and IRA.
27913
27914         * ra-conflict.c: Remove the file.
27915
27916         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
27917
27918         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
27919         (pass_regclass_init): Rename to pass_reginfo_init.
27920
27921         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
27922
27923         * toplev.h (flag_ira): Remove.
27924
27925         * caller-save.c (setup_save_areas): Remove flag_ira.
27926
27927         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
27928
27929         * global.c: Remove the file.
27930
27931         * opts.c (decode_options): Remove flag_ira.
27932
27933         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
27934
27935         * regmove.c: Modify file description.
27936         (find_use_as_address, try_auto_increment): Define them only if
27937         AUTO_INC_DEC is defined.
27938         (replacement_quality, replace_in_call_usage, fixup_match_1,
27939         stable_and_no_regs_but_for_p): Remove.
27940         (reg_set_in_bb): Make it static.
27941         (regmove_optimize): Remove flag_ira and code which worked for
27942         !flag_ira.
27943
27944         * local-alloc.c: Remove the file.
27945
27946         * common.opt (fira): Remove.
27947
27948         * ira.c: Include except.h.
27949         (eliminable_regset): Move from global.c.
27950         (mark_elimination): Ditto.  Remove flag_ira.
27951         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
27952         equiv_mem_modified, validate_equiv_mem_from_store,
27953         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
27954         contains_replace_regs, memref_referenced_p, memref_used_between_p,
27955         no_equiv, recorded_label_ref): Move from local-alloc.c.
27956         (update_equiv_regs): Ditto.  Make it static.
27957         (print_insn_chain, print_insn_chains): Move it from global.c.
27958         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
27959         (build_insn_chain): Ditto.  Make it static.
27960         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
27961         Rename to init_live_subregs.
27962         (gate_ira): Remove flag_ira.
27963
27964         * regclass.c: Rename reginfo.c.  Change file description.
27965         (FORBIDDEN_INC_DEC_CLASSES): Remove.
27966         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
27967         (init_reg_sets_1): Remove code for evaluation of
27968         reg_class_superclasses and losing_caller_save_reg_set.
27969         (init_regs): Remove init_reg_autoinc.
27970         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
27971         ok_for_base_p_nonstrict): Remove.
27972         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
27973         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
27974         corresponding entries.
27975         (dump_regclass, record_operand_costs, scan_one_insn,
27976         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
27977         record_address_regs, auto_inc_dec_reg_p): Remove.
27978         (gt-regclass.h): Rename to gt-reginfo.h.
27979
27980         * rtl.h (dump_global_regs, retry_global_alloc,
27981         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
27982
27983         * Makefile.in (RA_H): Remove.
27984         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
27985         Rename regclass.o to reginfo.o.
27986         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
27987         gt-reginfo.h.
27988         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
27989         (GTFILES): Rename regclass.c to reginfo.c.
27990
27991         * passes.c (init_optimization_passes): Remove pass_local_alloc and
27992         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
27993
27994         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
27995         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
27996         Remove flag_ira.
27997         (finish_spills): Ditto.  Remove code for !flag_ira.
27998
27999 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
28000
28001         PR middle-end/35854
28002         * doc/invoke.texi (rtl debug options): Complete rewrite.
28003         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
28004         to auto_inc_dec".
28005         * mode-switching.c (pass_mode_switching): Rename pass from
28006         "mode-sw" to "mode_sw".
28007         * except.c (pass_convert_to_eh_ranges): Rename pass from
28008         "eh-ranges" to "eh_ranges".
28009         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
28010         to "subreg1".
28011
28012
28013 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
28014             Alexander Monakov  <amonakov@ispras.ru>
28015
28016         PR middle-end/38857
28017         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
28018         register.
28019         (move_exprs_to_boundary): Change return type and pass through
28020         should_move from move_op.  Relax assert.  Update usage ...
28021         (schedule_expr_on_boundary): ... here.  Use should_move instead of
28022         cant_move.
28023         (move_op_orig_expr_found): Indicate that insn was disconnected from
28024         stream.
28025         (code_motion_process_successors): Do not call after_merge_succs
28026         callback if original expression was not found when traversing any of
28027         the branches.
28028         (code_motion_path_driver): Change return type.  Update prototype.
28029         (move_op): Update comment.  Add a new parameter (should_move).  Update
28030         prototype.  Set *should_move based on indication provided by
28031         move_op_orig_expr_found.
28032
28033 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
28034
28035         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
28036         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
28037         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
28038         * config/rs6000/rs6000.c (rs6000_override_options): Default
28039         avoid-indexed-addresses on for Power6, off for everything else.
28040         (avoiding_indexed_address_p): New function.
28041         (rs6000_legitimize_address): Use it.
28042         (rs6000_legitimate_address): Likewise.
28043         * config/rs6000/rs6000.md (movXX_updateX): Likewise
28044
28045 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
28046
28047         PR tree-optimization/38997
28048         * tree-loop-distribution.c (generate_memset_zero): Use
28049         POINTER_PLUS_EXPR for a pointer addition.
28050
28051 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
28052
28053         * config/s390/s390.md (bswap<mode>2): New pattern added.
28054
28055 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
28056
28057         * config/s390/s390.md (*tls_load_31): Added type attribute.
28058
28059 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
28060
28061         * config/s390/s390.md: Fix a few comments.
28062
28063 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
28064
28065         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
28066         (*tm<mode>_full): Fixed z10prop attribute.
28067         (*tst<mode>_extimm): Fixed z10prop attribute.
28068         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
28069         (*tstqiCCT_cconly): Fixed z10prop attribute.
28070         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
28071         (*movsi_larl): Fixed z10prop attribute.
28072         (*movsi_zarch): Fixed z10prop attribute.
28073         (*movsi_eas): Fixed z10prop attribute.
28074         (*movhi): Fixed z10prop attribute.
28075         (*movqi): Fixed z10prop attribute.
28076         (*movstrictqi): Fixed z10prop attribute.
28077         (*mov<mode>): Fixed z10prop attribute.
28078         (*movcc): Fixed z10prop attribute.
28079         (*sethighpartdi_64): Fixed z10prop attribute.
28080         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
28081         (*negdi2_sign_cc): Fixed z10prop attribute.
28082         (*negdi2_sign): Fixed z10prop attribute.
28083         (*absdi2_sign_cc): Fixed z10prop attribute.
28084         (*absdi2_sign): Fixed z10prop attribute.
28085         (*negabsdi2_sign_cc): Fixed z10prop attribute.
28086         (*negabsdi2_sign): Fixed z10prop attribute.
28087         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
28088         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
28089         (doloop_si64): Fixed z10prop attribute.
28090         (doloop_si31): Fixed z10prop attribute.
28091         (doloop_long): Fixed z10prop attribute.
28092         (indirect_jump): Fixed z10prop attribute.
28093         (nop): Fixed z10prop attribute.
28094         (main_base_64): Fixed z10prop attribute.
28095         (reload_base_64): Fixed z10prop attribute.
28096
28097 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
28098
28099         PR rtl-optimization/38740
28100         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
28101         if !optimize.
28102         * config/mips/mips.c (mips_reorg): Likewise.
28103
28104 2009-01-28  Richard Guenther  <rguenther@suse.de>
28105
28106         PR tree-optimization/38926
28107         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
28108         with the correct value id to a value.
28109         (do_regular_insertion): Use the value number of edoubleprime
28110         for the value number of the expr.
28111
28112         Revert
28113         2008-08-21  Richard Guenther  <rguenther@suse.de>
28114
28115         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
28116         a PHI ask VN if it is already available.
28117         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
28118         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
28119
28120 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
28121
28122         PR middle-end/38934
28123         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
28124         set to varying whenever max has TREE_OVERFLOW set, similarly
28125         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
28126
28127 2009-01-28  Richard Guenther  <rguenther@suse.de>
28128
28129         PR middle-end/38908
28130         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
28131         uninitialized aggregate uses in call arguments.
28132
28133 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
28134
28135         PR tree-optimization/38984
28136         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
28137         the nothing_id variable if -fno-delete-null-pointer-checks.
28138
28139 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
28140
28141         PR target/38988
28142         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
28143         (set_got_offset_rex64): Ditto.
28144
28145 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
28146
28147         PR target/38941
28148         * doc/extend.texi: Improve local variable with asm reg.
28149
28150 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
28151
28152         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
28153         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
28154         was not supplied then set warn_packed_bitfield_compat to the
28155         default value of 1.
28156         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
28157         against 1.
28158
28159 2009-01-27  Richard Guenther  <rguenther@suse.de>
28160
28161         PR tree-optimization/38503
28162         * cfgexpand.c (expand_gimple_basic_block): Ignore
28163         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
28164         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
28165         variables that cannot have TBAA applied.
28166         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
28167         statements.
28168
28169 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
28170
28171         PR middle-end/38969
28172         * calls.c (initialize_argument_information): Do not wrap complex
28173         arguments in SAVE_EXPR.
28174
28175 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
28176
28177         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
28178         (INSTALL_LIBGCC): Revert typo commit.
28179
28180 2009-01-26  Richard Guenther  <rguenther@suse.de>
28181
28182         PR tree-optimization/38745
28183         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
28184         from special handling.
28185
28186 2009-01-26  Richard Guenther  <rguenther@suse.de>
28187
28188         PR tree-optimization/38745
28189         * tree-ssa.c (execute_update_addresses_taken): Do not include
28190         variables that cannot possibly be a register in not_reg_needs.
28191         Do not clear TREE_ADDRESSABLE on vars that may not become
28192         registers.
28193         * tree-ssa.c (update_alias_info_1): Include those in the set
28194         of addressable vars.
28195
28196 2009-01-26  Richard Guenther  <rguenther@suse.de>
28197
28198         PR middle-end/38851
28199         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
28200         * tree-ssa-dse.c: Include langhooks.h
28201         (execute_simple_dse): Remove stores with zero size.
28202
28203 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
28204
28205         PR c/38957
28206         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
28207         as PLUS_EXPR.
28208
28209 2009-01-24  Julian Brown  <julian@codesourcery.com>
28210
28211         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
28212         config/arm/linux-atomic.c.
28213         * config/arm/linux-atomic.c: New.
28214
28215 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
28216
28217         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
28218         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
28219         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
28220
28221 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
28222
28223         PR c/38938
28224         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
28225         properly.
28226
28227 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
28228
28229         PR tree-optimization/38953
28230         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
28231         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
28232         (gloog): Split the exit of the scop when the scop exit is a loop exit.
28233         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
28234         changed the CFG.
28235
28236 2009-01-24  Paul Brook  <paul@codesourcery.com>
28237
28238         * config/arm/neon.md (neon_type): Move to arm.md.
28239         (neon_mov<VSTRUCT>): Add neon_type attribute.
28240         * config/arm/arm.md (neon_type): Move to here.
28241         (conds): Add "unconditioal" and use as default for NEON insns.
28242
28243 2009-01-24  Ben Elliston  <bje@au.ibm.com>
28244
28245         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
28246         void *' warning from -Wc++-compat.
28247         * Makefile.in (dominance.o-warn): Remove.
28248
28249 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
28250
28251         PR tree-optimization/38932
28252         * fold-const.c (fold_unary_ignore_overflow): New.
28253         * tree.h (fold_unary_ignore_overflow): Declare.
28254         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
28255         * tree-ssa-sccvn.c (visit_reference_op_load,
28256         simplify_unary_expression): Likewise.
28257
28258 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
28259
28260         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
28261         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
28262         regardless of their type.
28263         * c-common.c (handle_packed_attribute): Don't ignore packed on
28264         bitfields.
28265         * c.opt (Wpacked-bitfield-compat): New warning option.
28266         * stor-layout.c (place_field): Warn if offset of a field changed.
28267         * doc/extend.texi (packed): Mention the ABI change.
28268         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
28269         (Warning Options): Add it to the list.
28270
28271 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
28272
28273         * c-opts.c (c_common_post_options): Fix a typo in comments.
28274
28275 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
28276
28277         PR middle-end/38615
28278         * gimplify.c (gimplify_init_constructor): Fix promotion of const
28279         variables to static.
28280         * doc/invoke.texi (-fmerge-all-constants): Update description.
28281
28282 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
28283
28284         PR target/38931
28285         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
28286         (*movdi_1_rex64): Use type "mmx" for alternative 5.
28287
28288 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
28289
28290         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
28291         a word boundary.
28292         (LOCAL_ALIGNMENT): Similarly.
28293
28294 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
28295             Joseph Myers  <joseph@codesourcery.com>
28296
28297         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
28298         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
28299         * config/arm/arm-tune.md: Regenerate.
28300         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
28301         -march=iwmmxt2.
28302
28303 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
28304
28305         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
28306         version number to five.
28307
28308 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
28309
28310         PR c++/38930
28311         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
28312         * c-common.c (set_underlying_type): Likewise.
28313         (is_typedef_decl ): Likewise
28314         * tree.h: Likewise
28315         (set_underlying_type): Likewise.
28316         (is_typedef_type): Likewise.
28317
28318 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
28319
28320         PR middle-end/38587
28321         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
28322         crossing setjmps.
28323
28324 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
28325
28326         PR bootstrap/37660
28327         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
28328         (LIBGCC_SPEC):  Don't define.
28329         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
28330
28331 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
28332
28333         PR rtl-optimization/38879
28334         * alias.c (base_alias_check): Unaligned access via AND address can
28335         alias all surrounding object types except those with sizes equal
28336         or wider than the size of unaligned access.
28337
28338 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
28339
28340         PR c++/26693
28341         * c-decl.c (clone_underlying_type): Move this ...
28342         * c-common.c (set_underlying_type): ... here.
28343         Also, make sure the function properly sets TYPE_STUB_DECL() on
28344         the newly created typedef variant type.
28345         (is_typedef_decl ): New entry point.
28346         * tree.h: Added a new member member_types_needing_access_check to
28347         struct tree_decl_non_common.
28348         (set_underlying_type): New entry point.
28349         (is_typedef_type): Likewise.
28350
28351 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
28352
28353         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
28354         Check whether two instructions have memory references that
28355         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
28356         are helper functions for traversing.
28357         * alias.h (insn_alias_sets_confilict_p): New prototypes.
28358         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
28359         not to draw dependency edge for instructions with non-conflicting
28360         alias sets.
28361
28362 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
28363
28364         PR other/38758
28365         * longlong.h: Update copyright years.  Use soft-fp license notice.
28366         Sync __clz_tab declaration with glibc.
28367
28368 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
28369
28370         PR target/30687
28371         * doc/extend.texi (syscall_linkage): New.
28372         (version_id): Modify.
28373
28374 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
28375             Richard Guenther  <rguenther@suse.de>
28376
28377         PR tree-optimization/38747
28378         PR tree-optimization/38748
28379         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
28380         conversion if the base address is an indirect reference and the
28381         aliasing sets could cause issues.
28382
28383 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
28384
28385         * common.opt (fgraphite, fgraphite-identity): Add comment for
28386         explaining why these options are not documented.
28387
28388 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
28389
28390         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
28391         gimple_call_lhs is NULL.
28392
28393 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
28394
28395         PR target/38868
28396         * emit-rtl.c (adjust_address_1): Make sure memref is never
28397         overwritten.
28398
28399 2009-01-20  Ben Elliston  <bje@au.ibm.com>
28400
28401         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
28402         const qualifier from arg parameter. Remove unnecessary cast to char *.
28403         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
28404         const qualifier from arg 2.
28405
28406 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
28407
28408         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
28409
28410 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
28411
28412         PR c/38869
28413         * rtl.h (reinit_regs): New prototype.
28414         * regclass.c: Include ira.h.
28415         (reinit_regs): New.
28416         * Makefile.in (regclass.o): Add ira.h.
28417         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
28418
28419 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
28420
28421         PR target/38736
28422         * c-common.c (handle_aligned_attribute): Use
28423         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
28424         default alignment value.
28425
28426         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
28427
28428         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
28429         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
28430
28431         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
28432         __BIGGEST_ALIGNMENT__.
28433
28434         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
28435
28436 2009-01-18  Richard Guenther  <rguenther@suse.de>
28437
28438         PR tree-optimization/38819
28439         * tree-flow.h (operation_could_trap_helper_p): Declare.
28440         * tree-eh.c (operation_could_trap_helper_p): Export.
28441         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
28442         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
28443         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
28444         are about to insert a possibly trapping instruction and fail
28445         in this case.
28446
28447 2009-01-18  Andreas Schwab  <schwab@suse.de>
28448
28449         * doc/install.texi (Configuration): Remove obsolete paragraph
28450         about use of --with-gnu-ld with --with-gnu-as.
28451
28452 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
28453
28454         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
28455         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
28456         Follow spelling conventions.
28457
28458 2009-01-18  Ben Elliston  <bje@au.ibm.com>
28459
28460         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
28461         C++ warning about implicit conversion from void * to struct
28462         bitmap_head_def *.
28463         (bitmap_obstack_free): Likewise for bitmap_element *.
28464         * Makefile.in (bitmap.o-warn): Remove.
28465
28466 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
28467
28468         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
28469
28470 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
28471             Tobias Grosser  <tobi.grosser@amd.com>
28472
28473         * graphite.c (graphite_trans_scop_block): Do not block single
28474         nested loops.
28475
28476 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
28477
28478         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
28479         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
28480         test with assertion.
28481
28482 2009-01-16  Richard Guenther  <rguenther@suse.de>
28483
28484         PR tree-optimization/38835
28485         PR middle-end/36227
28486         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
28487         and INT + PTR -> (INT)(PTR p+ INT) folding.
28488         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
28489
28490 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
28491
28492         PR target/38554
28493         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
28494         the subreg from a lowpart subreg if it is also casting the value.
28495
28496 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
28497             Tobias Grosser  <tobi.grosser@amd.com>
28498
28499         * graphite.c (compare_prefix_loops): New.
28500         (build_scop_canonical_schedules): Rewritten.
28501         (graphite_transform_loops): Move build_scop_canonical_schedules
28502         after build_scop_iteration_domain.
28503
28504 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
28505             Tobias Grosser  <tobi.grosser@amd.com>
28506
28507         * graphite.c (add_conditions_to_domain): Add the loops to
28508         the dimension of the iteration domain.  Do copy the domain
28509         only when it exists.
28510         (build_scop_conditions_1): Do not call add_conditions_to_domain.
28511         (add_conditions_to_constraints): New.
28512         (can_generate_code_stmt, can_generate_code): Removed.
28513         (gloog): Do not call can_generate_code.
28514         (graphite_transform_loops): Call add_conditions_to_constraints
28515         after building the iteration domain.
28516
28517 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
28518
28519         PR tree-optimization/38789
28520         * tree-ssa-threadedge.c
28521         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
28522         __builtin_constant_p.
28523
28524 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
28525
28526         * dce.c (delete_unmarked_insns): Reversed the order that insns are
28527         examined before deleting them.
28528
28529 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
28530
28531         * function.c (aggregate_value_p): Correctly extract the function
28532         type from CALL_EXPR_FN lookup.
28533
28534 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
28535
28536         * config/picochip/picochip.c (picochip_override_options): Revert
28537         CFI asm flag disable commited previously.
28538
28539 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
28540             Tobias Grosser  <tobi.grosser@amd.com>
28541             Jan Sjodin  <jan.sjodin@amd.com>
28542
28543         * graphite.c (scan_tree_for_params): On substractions negate
28544         all the coefficients of the term.
28545         (clast_to_gcc_expression_red): New.  Handle reduction expressions
28546         of more than two operands.
28547         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
28548         (get_vdef_before_scop): Handle also the case of default definitions.
28549
28550 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
28551
28552         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
28553         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
28554         Also use them when walking CALL_INSN_FUNCTION_USAGE.
28555
28556 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
28557             Joey Ye  <joey.ye@intel.com>
28558
28559         PR middle-end/37843
28560         * cfgexpand.c (expand_stack_alignment): Don't update stack
28561         boundary nor check incoming stack boundary here.
28562         (gimple_expand_cfg): Update stack boundary and check incoming
28563         stack boundary here.
28564
28565 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
28566
28567         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
28568
28569 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
28570
28571         PR rtl-optimization/38245
28572         * calls.c (expand_call): Add stack arguments to
28573         CALL_INSN_FUNCTION_USAGE even for pure calls (when
28574         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
28575         in regs and partially in memory or BLKmode arguments.
28576         (emit_library_call_value_1): Add stack arguments to
28577         CALL_INSN_FUNCTION_USAGE even for pure calls (when
28578         ACCUMULATE_OUTGOING_ARGS).
28579         * dce.c: Include tm_p.h.
28580         (find_call_stack_args): New function.
28581         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
28582         argument.
28583         (mark_insn): Call find_call_stack_args for CALL_Ps.
28584         (prescan_insns_for_dce): Walk insns backwards in bb rather than
28585         forwards.  Allocate and free arg_stores bitmap if needed, pass it
28586         down to deletable_insn_p, don't mark stores set in arg_stores
28587         bitmap, clear the bitmap at the beginning of each bb.
28588         * Makefile.in (dce.o): Depend on $(TM_P_H).
28589
28590 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
28591
28592         PR target/22599
28593         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
28594         to make sure the insn is a conditional test (bug 22599).  Reformat a
28595         few long lines.
28596
28597 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
28598
28599         PR middle-end/38431
28600         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
28601         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
28602         (gloog): Do not call cleanup_tree_cfg.
28603         (graphite_transform_loops): Call cleanup_tree_cfg after all
28604         scops have been code generated.
28605
28606 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
28607         * doc/gty.texi (Invoking the garbage collector): Added new node
28608         and section documenting ggc_collect.
28609
28610 2009-01-14  Richard Guenther  <rguenther@suse.de>
28611
28612         PR tree-optimization/38826
28613         PR middle-end/38477
28614         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
28615         initialization notes only if we actually emitted a warning.
28616         (intra_create_variable_infos): Add constraints for a result decl
28617         that is passed by hidden reference.
28618         (build_pred_graph): Mark all related variables non-direct on
28619         address-taking.
28620
28621 2009-01-14  Nick Clifton  <nickc@redhat.com>
28622
28623         * ira-conflicts.c: Include addresses.h for the definition of
28624         base_reg_class.
28625         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
28626         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
28627
28628 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
28629
28630         PR target/38811
28631         * Makefile.in (ira-lives.o): Add except.h.
28632
28633         * ira-lives.c: Include except.h.
28634         (process_bb_node_lives): Process can_throw_internal.
28635
28636 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
28637
28638         PR rtl-optimization/38774
28639         * combine.c (simplify_set): When undoing cc_use change, don't do
28640         PUT_CODE on the newly created comparison, but instead put back the
28641         old comparison.
28642
28643 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
28644
28645         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
28646         values.  Remove duplicate arm8 entry.
28647
28648 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
28649
28650         PR tree-optimization/38786
28651         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
28652         the SSA_NAME case of expand_scalar_variables_expr.
28653         Set the type of an expression to the type of its assign statement.
28654         (expand_scalar_variables_expr): Also gather the scalar computation
28655         used to index the memory access.  Do not pass loop_p.
28656         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
28657         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
28658         the gimple_stmt_iterator where it inserts new code.
28659         Do not pass loop_p.
28660         (copy_bb_and_scalar_dependences): Do not pass loop_p.
28661         (translate_clast): Update call to copy_bb_and_scalar_dependences.
28662
28663 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
28664
28665         * graphite.h (debug_value): Removed.
28666         * graphite.c (debug_value): Removed.
28667
28668 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
28669
28670         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
28671         ldrd/strd with two 32-bit instructions.
28672
28673 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
28674
28675         * config/arm/arm.c (struct processors): Pass for speed down into
28676         cost helper functions.
28677         (const_ok_for_op): Handle COMPARE and inequality nodes.
28678         (arm_rtx_costs_1): Rewrite.
28679         (arm_size_rtx_costs): Update prototype.
28680         (arm_rtx_costs): Pass speed down to helper functions.
28681         (arm_slowmul_rtx_costs): Rework cost calculations.
28682         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
28683         (arm_9e_rtx_costs): Likewise.
28684
28685 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
28686
28687         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
28688         relocations of local symbols wider than UNITS_PER_WORD are not valid.
28689         (alpha_legitimize_address): Do not split local symbols wider than
28690         UNITS_PER_WORD into HIGH/LO_SUM parts.
28691
28692 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
28693
28694         PR bootstrap/38580
28695         * gcc.c (process_command): Replace call to execvp with calls
28696         to pex_one and exit.
28697
28698 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
28699
28700         PR target/29141
28701         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
28702         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
28703         variant for devices with 3-byte PC.
28704         (__tablejump_elpm__): New.
28705
28706 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
28707
28708         PR c/32041
28709         * c-parser.c (c_parser_postfix_expression): Allow `->' in
28710         offsetof member-designator, handle it as `[0].'.
28711
28712 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
28713
28714         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
28715         function when not using named sections on targets with named sections
28716         if branch distance is less than 262132.
28717
28718 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
28719
28720         * combine.c (combine_instructions):  Recompute
28721         optimize_this_for_speed_p  for each BB in the main combine loop.
28722
28723 2009-01-12  Tomas Bily  <tbily@suse.cz>
28724
28725         PR middlend/38385
28726         * tree-loop-distribution.c (prop_phis): New function.
28727         (generate_builtin): Call prop_phis.
28728
28729 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
28730
28731         PR tree-optimization/38807
28732         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
28733         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
28734
28735 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
28736
28737         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
28738         subreg of op0 to the original op0.
28739
28740 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
28741
28742         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
28743
28744 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
28745
28746         PR debug/7055
28747         * mips-tfile.c (parse_def): Fix parsing of def strings
28748         starting with digits.
28749
28750 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
28751
28752         PR target/38695
28753         * config/arm/arm.c (arm_is_long_call_p): Don't call
28754         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
28755
28756 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
28757
28758         * regrename.c (regrename_optimize): Fix dumping.
28759         (find_oldest_value_reg): Preserve REG_POINTER.
28760         (copy_hardreg_forward_1): Likewise.
28761
28762 2009-01-09  Diego Novillo  <dnovillo@google.com>
28763
28764         * gimple.h (struct gimple_statement_base) <uid>: Document
28765         the restrictions on its use.
28766         (gimple_uid): Tidy.
28767         (gimple_set_uid): Tidy.
28768
28769 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
28770
28771         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
28772         zero guard even if align_bytes != 0 and count is smaller than
28773         size_needed.
28774
28775 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
28776
28777         PR rtl-optimization/38495
28778         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
28779         (add_range_and_copies_from_move_list): Print all added ranges.
28780         Add ranges to memory optimized destination.
28781
28782 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
28783
28784         PR target/38686
28785         PR target/38708
28786         * config/i386/i386.c (override_options): Reject
28787         -mstringop-strategy=rep_8byte with -m32.
28788         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
28789         to 1.  Do count comparison against epilogue_size_needed at compile
28790         time even when count_exp was constant forced into register.  For
28791         size_needed don't jump to epilogue, instead just avoid aligning
28792         and invoke the body algorithm.  If need_zero_guard, add zero guard
28793         even if count is non-zero, but smaller than size_needed + number of
28794         bytes that could be stored for alignment.
28795         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
28796         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
28797         but smaller than size_needed + number of bytes that could be stored
28798         for alignment.  Compare size_needed with epilogue_size_needed instead
28799         of desired_align - align, don't adjust size_needed, pass
28800         epilogue_size_needed to the epilogue expanders.
28801
28802         PR c/35742
28803         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
28804
28805 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
28806
28807         * pa.c (last_address): Change to unsigned.
28808         (update_total_code_bytes): Change argument to unsigned.  Don't
28809         check if insn addresses are set.
28810         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
28811         addresses are not set.
28812         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
28813
28814 2009-01-09  Nick Clifton  <nickc@redhat.com>
28815
28816         * config/sh/symbian.c: Replace uses of DECL_INLINE with
28817         DECL_DECLARED_INLINE_P.
28818
28819 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
28820
28821         PR middle-end/38347
28822         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
28823         GET_MODE (op0) in operand_subword_force calls.
28824
28825         PR middle-end/38771
28826         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
28827         fold_convert arg0 operands to TREE_TYPE (op0) first.
28828
28829 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
28830
28831         * params.def (ira-max-conflict-table-size): Decrease default value
28832         to 1000.
28833
28834 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
28835
28836         PR tree-optimization/37031
28837         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
28838         on parameter_set.
28839         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
28840         allocate it using gc instead of heap, use VEC_quick_push instead of
28841         VEC_safe_push.
28842         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
28843         instead of heap, use VEC_quick_push instead of VEC_safe_push.
28844         * tree-data-ref.h (struct access_matrix): Change matrix to gc
28845         allocated vector from heap allocated.
28846         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
28847         * tree-loop-linear.c (linear_transform_loops): Allocate nest
28848         vector only after perfect_loop_nest_depth call.
28849
28850 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
28851             Jan Sjodin  <jan.sjodin@amd.com>
28852
28853         PR tree-optimization/38559
28854         * graphite.c (debug_value, copy_constraint,
28855         swap_constraint_variables, scale_constraint_variable, ): New.
28856         (get_lower_bound, get_upper_bound): Removed.
28857         (graphite_trans_bb_strip_mine): Clean up this code that works
28858         only for constant number of iterations.  Fully copy upper and
28859         lower bound constraints, not only the constant part of them.
28860         * graphite.h (debug_value): Declared.
28861
28862 2009-01-08  Ira Rosen  <irar@il.ibm.com>
28863
28864         PR tree-optimization/37194
28865         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
28866         Don't add the cost of cost model guard in prologue to scalar
28867         outside cost in case of known number of iterations.
28868
28869 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
28870             Alan Modra  <amodra@bigpond.net.au>
28871
28872         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
28873         non-word-aligned REG+CONST addressing.
28874
28875 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
28876
28877         PR target/38706
28878         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
28879         free_after_compilation when outputting a thunk.
28880         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
28881         Do not call free_after_compilation here.
28882
28883 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
28884
28885         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
28886         (ix86_valid_target_attribute_inner_p): Ditto.
28887
28888 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
28889
28890         PR tree-optimization/38492
28891         PR tree-optimization/38498
28892         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
28893         * tree-chrec.h (scev_is_linear_expression): Declared.
28894         * graphite.c (graphite_cannot_represent_loop_niter): New.
28895         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
28896         (graphite_loop_normal_form): Use gcc_assert.
28897         (scan_tree_for_params): Use CASE_CONVERT.
28898         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
28899         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
28900         Use gcc_assert.  Discard scops that contain unhandled cases.
28901         (build_scop_conditions): Return a boolean status for unhandled cases.
28902         (strip_mine_profitable_p): Print the loop number, not its depth.
28903         (is_interchange_valid): Pass the depth of the loop nest, don't
28904         recompute it wrongly.
28905         (graphite_trans_bb_block): Same.
28906         (graphite_trans_bb_block): Print tentative of loop blocking.
28907         (graphite_trans_scop_block): Do not print that the loop has been
28908         blocked.
28909         (graphite_transform_loops): Do not handle scops that contain condition
28910         scalar phi nodes.
28911
28912 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
28913
28914         AVX Programming Reference (December, 2008)
28915         * config/i386/avxintrin.h (_mm256_stream_si256): New.
28916         (_mm256_stream_pd): Likewise.
28917         (_mm256_stream_ps): Likewise.
28918
28919         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
28920         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
28921         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
28922         (bdesc_special_args): Add __builtin_ia32_movntdq256,
28923         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
28924         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
28925         (ix86_expand_special_args_builtin): Likewise.
28926
28927         * config/i386/sse.md (AVXMODEDI): New.
28928         (avx_movnt<mode>): Likewise.
28929         (avx_movnt<mode>): Likewise.
28930         (<sse>_movnt<mode>): Remove AVX support.
28931         (sse2_movntv2di): Likewise.
28932
28933 2009-01-07  Richard Guenther  <rguenther@suse.de>
28934
28935         PR middle-end/38751
28936         * fold-const.c (extract_muldiv): Remove obsolete comment.
28937         (fold_plusminus_mult_expr): Undo MINUS_EXPR
28938         to PLUS_EXPR canonicalization for the canonicalization.
28939
28940 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
28941
28942         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
28943         hosted cross-compilers generating less efficient code.
28944
28945 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
28946
28947         * function.h (rtl_data): Add a dbr_scheduled_p field.
28948         * reorg.c (dbr_schedule): Set it.
28949         (gate_handle_delay_slots): Check it.
28950         * config/mips/mips.c (mips_base_delayed_branch): Delete.
28951         (mips_reorg): Check flag_delayed_branch instead of
28952         mips_base_delayed_branch.
28953         (mips_override_options): Don't set mips_base_delayed_branch
28954         or flag_delayed_branch.
28955
28956 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
28957
28958         PR rtl-optimization/38426.
28959         * ira.c (ira): Set current_function_is_leaf earlier.
28960
28961 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
28962
28963         PR rtl-optimization/38722
28964         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
28965         too early, only set a flag and modify after last possible
28966         undo_all point.
28967
28968 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
28969
28970         PR c/34252
28971         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
28972         * real.c (decimal_single_format): Correct values of emin and emax.
28973         (decimal_double_format): Ditto.
28974         (decimal_quad_format): Ditto.
28975         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
28976         computation of DECnn_MIN and DECnn_MAX for corrected values of
28977         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
28978         __DECnn_MIN__, and adjust its computation for the corrected value
28979         of emin.
28980
28981 2009-01-06  Jan Hubicka  <jh@suse.cz>
28982
28983         PR target/38744
28984         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
28985
28986 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
28987
28988         * doc/contrib.texi (Contributors): Slightly adjust the end note.
28989         Add Robert Clark to the list of testers.
28990
28991 2009-01-06  Jan Hubicka  <jh@suse.cz>
28992             Kai Tietz  <kai.tietz@onevision.com>
28993
28994         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
28995         * config/i386/i386.c (ix86_expand_call): Add clobbers.
28996
28997 2009-01-06  Jan Hubicka  <jh@suse.cz>
28998             Kai Tietz  <kai.tietz@onevision.com>
28999
29000         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
29001         for w64 ABI.
29002         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
29003         (ix86_nsaved_regs): Count only general purpose regs.
29004         (ix86_nsaved_sseregs): New.
29005         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
29006         to 16 for w64; compute padding and size of sse reg save area.
29007         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
29008         general purpose regs.
29009         (ix86_emit_save_sse_regs_using_mov): New.
29010         (ix86_expand_prologue): Save SSE regs if needed.
29011         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
29012         (ix86_emit_restore_sse_regs_using_mov): New.
29013         (ix86_expand_epilogue): Save SSE regs if needed.
29014
29015 2009-01-06  Jan Hubicka  <jh@suse.cz>
29016             Kai Tietz  <kai.tietz@onevision.com>
29017
29018         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
29019         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
29020         functions when accumulate outgoing args is off.
29021
29022 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
29023
29024         PR bootstrap/38742
29025         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
29026         before using pseudos_have_intersected_live_ranges_p.
29027
29028         * ira-int.h (ira_assert): Always define.
29029
29030 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
29031
29032         AVX Programming Reference (December, 2008)
29033         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
29034         (_mm256_permute2_pd): Likewise.
29035         (_mm_permute2_ps): Likewise.
29036         (_mm256_permute2_ps): Likewise.
29037         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
29038         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
29039
29040         * config/i386/i386.c (ix86_builtins): Remove
29041         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
29042         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
29043         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
29044         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
29045         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
29046         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
29047         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
29048         __builtin_ia32_vpermil2ps256.
29049         (ix86_init_mmx_sse_builtins): Updated.
29050         (ix86_expand_args_builtin): Likewise.
29051
29052 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
29053
29054         * pa.c (output_call): Relocate non-jump insns in the delay slot of
29055         long absolute calls when generating PA 2.0 code.
29056
29057 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
29058
29059         PR rtl-optimization/38583
29060         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
29061
29062         * params.def (ira-max-conflict-table-size): New.
29063
29064         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
29065
29066         * ira.h (ira_conflicts_p): New external definition.
29067
29068         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
29069         table.  Report this.  Return result of building.
29070         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
29071         building conflict table.
29072
29073         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
29074         (ira_color): Use ira_conflicts_p.
29075
29076         * global.c: Include ira.h.
29077         (pseudo_for_reload_consideration_p, build_insn_chain): Use
29078         ira_conflicts_p.
29079
29080         * Makefile.in (global.o): Add ira.h.
29081
29082         * ira-build.c (mark_all_loops_for_removal,
29083         propagate_some_info_from_allocno): New.
29084         (remove_unnecessary_allocnos): Call
29085         propagate_some_info_from_allocno.
29086         (remove_low_level_allocnos): New.
29087         (remove_unnecessary_regions): Add parameter.  Call
29088         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
29089         parameter to remove_unnecessary_regions.
29090         (ira_build): Remove all regions but root if the conflict table was
29091         not built.  Update conflict hard regs for allocnos crossing calls.
29092
29093         * ira.c (ira_conflicts_p): New global.
29094         (ira): Define and use ira_conflicts_p.
29095
29096         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
29097         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
29098         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
29099
29100 2009-01-06  Ben Elliston  <bje@au.ibm.com>
29101
29102         * gengtype-lex.l (YY_NO_INPUT): Define.
29103
29104 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
29105
29106         PR c/34911
29107         * c-common.c (handle_vector_size_attribute): Also reject
29108         BOOLEAN_TYPE types.
29109
29110 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
29111
29112         PR tree-optimization/38492
29113         * graphite.c (rename_map_elt, debug_rename_elt,
29114         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
29115         rename_map_elt_info, eq_rename_map_elts,
29116         get_new_name_from_old_name, bb_in_sese_p): Moved around.
29117         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
29118         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
29119         (sese_build_livein_liveouts): New.
29120         (new_sese, free_sese): New.
29121         (new_scop): Call new_sese.
29122         (free_scop): Call free_sese.
29123         (rename_variables_from_edge, rename_phis_end_scop): Removed.
29124         (register_old_new_names): Renamed register_old_and_new_names.
29125         (register_scop_liveout_renames, add_loop_exit_phis,
29126         insert_loop_close_phis, struct igp,
29127         default_liveout_before_guard, add_guard_exit_phis,
29128         insert_guard_phis, copy_renames): New.
29129         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
29130         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
29131         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
29132         (scop_adjust_phis_for_liveouts): New.
29133         (gloog): Call scop_adjust_phis_for_liveouts.
29134
29135         * graphite.h (struct sese): Documented.  Added fields liveout,
29136         num_ver and livein.
29137         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
29138         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
29139         (struct scop): Added field liveout_renames.
29140         (SCOP_LIVEOUT_RENAMES): New.
29141
29142 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
29143
29144         PR tree-optimization/38510
29145         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
29146         (translate_clast): Call recompute_all_dominators before
29147         graphite_verify.
29148         (gloog): Call recompute_all_dominators before graphite_verify.
29149
29150 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
29151             Jan Sjodin  <jan.sjodin@amd.com>
29152
29153         PR tree-optimization/38500
29154         * graphite.c (create_sese_edges): Call fix_loop_structure after
29155         splitting blocks.
29156
29157 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
29158
29159         * config.gcc: Add m32r*-*-rtems*.
29160         * config/m32r/rtems.h: New file.
29161
29162 2009-01-05  Ben Elliston  <bje@au.ibm.com>
29163
29164         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
29165         (.po.pox): Likewise.
29166         (po/gcc.pot): Likewise.
29167
29168 2009-01-04  David S. Miller  <davem@davemloft.net>
29169
29170         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
29171         (STARTING_FRAME_OFFSET): Always set to zero.
29172
29173 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
29174
29175         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
29176         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
29177         fixed-point types, and vectors of the same.
29178
29179 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
29180
29181         * config/mips/sync.md (*mb_barrier): Rename to...
29182         (*memory_barrier): ...this.
29183
29184 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
29185
29186         * doc/extend.texi (Function Attributes): Move @cindex after @item
29187         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
29188         and put in alphabetical order. Fix 'target' name and put in order.
29189         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
29190         typos.
29191
29192 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
29193
29194         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
29195         (memory_barrier): Expand as unspec instead of unspec_volatile.
29196         Remove mem:BLK from insn operands.  Use Pmode scratch register.
29197         (*memory_barrier): Define as unspec instead of unspec_volatile.
29198         Use (match_dup 0) as input operand.
29199
29200         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
29201         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
29202         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
29203         scratch register.  Remove operand 1.
29204         (*stbar): Define as unspec instead of unspec_volatile.
29205         Use (match_dup 0) as input operand, remove (const_int 8).
29206         (*membar): Define as unspec instead of unspec_volatile.
29207         Use (match_dup 0) as input operand, remove input operand 2.
29208
29209         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
29210         (memory_barrier): Expand as unspec instead of unspec_volatile.
29211         Remove mem:BLK from insn operands.  Use Pmode scratch register.
29212         (*memory_barrier): Define as unspec instead of unspec_volatile.
29213         Use (match_dup 0) as input operand.
29214
29215         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
29216         Remove mem:BLK from insn operands.  Use Pmode scratch register.
29217         Set volatile flag on operand 0.
29218         (*memory_barrier): New insn pattern.
29219
29220         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
29221         insn operands.
29222         (*memory_barrier): Use (match_dup 0) as input operand.
29223
29224         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
29225         Remove mem:BLK from insn operands.  Use Pmode scratch register.
29226         Set volatile flag on operand 0.
29227         (*mb_internal): New insn pattern.
29228
29229         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
29230
29231 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
29232
29233         PR middle-end/38586
29234         * function.c (struct temp_slot): Move to the section of the file
29235         that deals with temp slots.  Remove field 'address'.
29236         (temp_slot_address_table): New hash table of address -> temp slot.
29237         (struct temp_slot_address_entry): New struct, items for the table.
29238         (temp_slot_address_compute_hash, temp_slot_address_hash,
29239         temp_slot_address_eq, insert_temp_slot_address): Support functions
29240         for the new table.
29241         (find_temp_slot_from_address): Rewrite to use the new hash table.
29242         (remove_unused_temp_slot_addresses): Remove addresses of temp
29243         slots that have been made available.
29244         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
29245         worker function for remove_unused_temp_slot_addresses.
29246         (assign_stack_temp_for_type): Don't clear the temp slot address list.
29247         Add the temp slot address to the address -> temp slot map.
29248         (update_temp_slot_address): Update via insert_temp_slot_address.
29249         (free_temp_slots): Call remove_unused_temp_slot_addresses.
29250         (pop_temp_slots): Likewise.
29251         (init_temp_slots): Allocate the address -> temp slot map, or empty
29252         the map if it is already allocated.
29253         (prepare_function_start): Initialize temp slot processing.
29254
29255 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
29256
29257         PR middle-end/38584
29258         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
29259         Calculate the size of all stack vars assuming no packing of stack
29260         vars will happen, replacing a quadratic algorithm with a linear one.
29261
29262 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
29263
29264         PR target/38707
29265         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
29266         can't be used.
29267
29268 2009-01-03  Diego Novillo  <dnovillo@google.com>
29269
29270         * doc/contrib.texi: Update contributions.
29271
29272 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
29273
29274         PR c++/38705
29275         * builtins.c (fold_builtin_memory_op): Give up if either operand
29276         is volatile.  Set srctype or desttype to non-qualified version
29277         of the other type.
29278
29279         PR c/38700
29280         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
29281         and FUNCTION_DECLs.
29282
29283 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
29284
29285         PR rtl-optimization/35805
29286         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
29287         problem if fast dce is able to remove any instructions.
29288         * dce.c (dce_process_block): Fix dump message.
29289
29290 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
29291
29292         PR 33649
29293         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
29294
29295 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
29296
29297         PR middle-end/38690
29298         * tree-flow.h (op_code_prio, op_prio): New prototypes.
29299         * tree-pretty-print.c (op_code_prio): New function.
29300         (op_prio): No longer static.  Use op_code_prio.
29301         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
29302         Use op_prio and op_code_prio to determine if () should be
29303         printed around operand(s) or not.
29304
29305         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
29306         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
29307         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
29308         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
29309         pp_character instead of pp_string for single letter printing.
29310
29311 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
29312
29313         * doc/extend.texi: Fix '#pragma GCC option' typo.
29314
29315 2009-01-02  Richard Guenther  <rguenther@suse.de>
29316
29317         * doc/install.texi (--enable-checking): Mention different
29318         default for stage1.
29319         (--enable-stage1-checking): Document.
29320
29321 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
29322
29323         PR middle-end/30142
29324         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
29325         case to be an error.
29326
29327 2009-01-02  Ben Elliston  <bje@au.ibm.com>
29328
29329         * config/fp-bit.h (pack_d): Constify argument.
29330         * config/fp-bit.c (makenan): Constify return type. Remove casts.
29331         (isnan): Constify argument.
29332         (isinf): Likewise.
29333         (iszero): Likewise.
29334         (pack_d): Likewise.
29335         (_fpadd_parts): Constify return type.
29336         (_fpmul_parts): Likewise.
29337         (_fpdiv_parts): Likewise.
29338
29339 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
29340
29341         PR c/36489
29342         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
29343         warn about overwriting initializer with side-effects or
29344         -Woverride-init if !IMPLICIT.
29345         (output_init_element): Likewise.  Pass IMPLICIT down to
29346         add_pending_init.
29347         (process_init_element): Add IMPLICIT argument.  Pass it down
29348         to output_init_element.
29349         (push_init_element, pop_init_level, set_designator): Adjust
29350         process_init_element callers.
29351         (set_nonincremental_init, set_nonincremental_init_from_string):
29352         Adjust add_pending_init callers.
29353         (output_pending_init_elements): Adjust output_init_element callers.
29354         * c-tree.h (process_init_element): Adjust prototype.
29355         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
29356         process_init_element callers.
29357
29358 \f
29359 Copyright (C) 2009 Free Software Foundation, Inc.
29360
29361 Copying and distribution of this file, with or without modification,
29362 are permitted in any medium without royalty provided the copyright
29363 notice and this notice are preserved.