OSDN Git Service

f318d33f77fb6c1d03965995e888e53b4d8134c7
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
2
3         * Makefile.in (OBJS-common): Add regcprop.o.
4         (regcprop.o): New.
5         * timevar.def (TV_CPROP_REGISTERS): New.
6         * regrename.c (regrename_optimize): Return 0.
7         (rest_of_handle_regrename): Delete.
8         (pass_rename_registers): Point to regrename_optimize.
9         (struct value_data_entry, struct value_data, 
10         kill_value_one_regno, kill_value_regno, kill_value,
11         set_value_regno, init_value_data, kill_clobbered_value,
12         kill_set_value, kill_autoinc_value, copy_value,
13         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
14         replace_oldest_value_reg, replace_oldest_value_addr,
15         replace_oldest_value_mem, copyprop_hardreg_forward_1,
16         debug_value_data, validate_value_data): Move...
17         * regcprop.c: ... here.
18         (rest_of_handle_cprop): Delete.
19         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
20
21 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
22
23         PR middle-end/40057
24         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
25         GEN_INT for 1 << bitnum.
26         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
27         build_int_cst_type.
28
29 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
30
31         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
32         Remove wrong description of "nand" functionality.
33
34 2009-05-06  Richard Guenther  <rguenther@suse.de>
35             Adam Nemet  <anemet@caviumnetworks.com>
36
37         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
38         comment.  Add that if LHS is not a gimple register, then RHS1 has
39         to be a single object (GIMPLE_SINGLE_RHS).
40
41 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
42
43         * expr.c (get_def_for_expr): Move it up in the file.
44         (store_field): When expanding a bit-field store, look at the
45         defining gimple stmt for the masking conversion.
46
47 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
48
49         PR middle-end/39986
50         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
51         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
52         32-bit memcpy into long.
53
54 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
55
56         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
57         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
58         new_reg_loc_descr.
59         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
60         instead of appending DW_OP_deref*.
61
62 2009-05-06  Michael Matz  <matz@suse.de>
63
64         PR middle-end/40021
65         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
66         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
67
68 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
69
70         * Makefile.in (install-plugin): Fix srcdir handling.
71
72 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
73
74         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
75         when processing for not_regs_needed bitmap.
76         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
77         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while 
78         handling it for rhs. 
79
80 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
81
82         * config/i386/i386.md (unnamed inc/dec peephole): Use
83         optimize_insn_for_size_p instead of optimize_size.
84         * config/i386/predicates.md (incdec_operand): Likewise.
85         (aligned_operand): Likewise.
86         * config/i386/sse.md (divv8sf3): Likewise.
87         (sqrtv8sf2): Likewise.
88
89 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
90
91         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
92
93         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
94
95 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
96
97         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
98         ssemodesuffixf2c with avxmodesuffixf2c.
99
100 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
101
102         PR c/40032
103         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
104
105 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
106
107         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
108         (struct tree_base): Adjust spacing for 8 bit boundaries.
109         (struct tree_decl_common): Add decl_by_reference_flag bit.
110         (DECL_BY_REFERENCE): Adjust.
111         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
112         print DECL_BY_REFERENCE bit.
113         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
114         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
115         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
116         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
117         unconditionally.
118
119         PR middle-end/39666
120         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
121         range of the type, but default label is missing, add it with one
122         of the existing labels instead of adding a new label for it.
123
124 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
125
126         * dwarf.h: Remove.
127
128 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
129
130         * Makefile.in (enable_plugin, plugin_includedir): New.
131         (install): Depend on install-plugin.
132         (PLUGIN_HEADERS): New.
133         (install-plugin): New.
134         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
135
136 2009-05-05  Richard Guenther  <rguenther@suse.de>
137
138         PR tree-optimization/40022
139         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
140         the only vuse.
141         (phivn_valid_p): Fix tuplification error, simplify.
142         (phiprop_insert_phi): Add dumps.
143         (propagate_with_phi): Simplify.
144
145 2009-05-05  Richard Guenther  <rguenther@suse.de>
146
147         PR middle-end/40023
148         * builtins.c (gimplify_va_arg_expr): Properly build the address.
149
150 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
151
152         * tree.h (strip_float_extensions): Remove duplicate declaration.
153         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
154         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
155         block_ultimate_origin): Rearrange the declarations line to match the
156         comment that indicates the .c file which the functions are defined.
157         (dwarf2out_*, set_decl_rtl): Add comment.
158         (get_base_address): Adjust comment.
159         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
160         declarations line and add comment.
161         (is_builtin_name): Add blank after function name, for clarity.
162
163 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
164
165         * attribs.c (decl_attributes): Use %qE for identifiers in
166         diagnostics.
167         * cgraphunit.c (verify_cgraph_node): Translate function names to
168         locale character set in diagnostics.
169         * coverage.c (get_coverage_counts): Use %qE for identifiers in
170         diagnostics.
171         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
172         Document that functions are named in UTF-8.
173         * expr.c (expand_expr_real_1): Translate function names to locale
174         character set in diagnostics.
175         * gimplify.c (omp_notice_variable, omp_is_private,
176         gimplify_scan_omp_clauses): Use %qE for identifiers in
177         diagnostics.
178         * langhooks.c (lhd_print_error_function): Translate function names
179         to locale character set.
180         * langhooks.h (decl_printable_name): Document that return value is
181         in internal character set.
182         * stmt.c: Include pretty-print.h
183         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
184         diagnostics.
185         (resolve_operand_name_1): Translate named operand name to locale
186         character set.
187         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
188         diagnostics.
189         * toplev.c (announce_function): Translate function names to locale
190         character set.
191         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
192         (default_tree_printer): Use pp_identifier or translate identifiers
193         to locale character set.  Mark "<anonymous>" for translation.
194         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
195         for identifiers in diagnostics.
196         * tree.c (handle_dll_attribute): Use %qE for identifiers in
197         diagnostics.
198         * varasm.c (output_constructor): Use %qE for identifiers in
199         diagnostics.
200
201 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
202
203         * configure.ac: use ` ` instead of $()
204         * configure: Regenerate.
205
206 2009-05-05  Ben Elliston  <bje@au.ibm.com>
207
208         * config/pa/linux-atomic.c: Eliminate conditional include of
209         errno.h on non-LP64 systems to simplify build requirements.
210
211 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
212
213         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
214         diagnostics.
215         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
216         and pass value to identifier_to_locale.
217         (warn_variable_length_array): Make name a tree.
218         (grokdeclarator): Separate diagnostic texts for named and unnamed
219         declarators.  Use %qE for named declarators.
220         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
221         diagnostics.
222         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
223         identifiers in diagnostics.
224         * c-typeck.c (push_member_name, start_init): Pass identifiers to
225         identifier_to_locale.  Mark "anonymous" strings for translation.
226
227 2009-05-04  Michael Eager <eager@eagercon.com>
228
229         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
230         address for DImode/DFmode only if double-precision FP regs.
231
232 2009-05-04  Michael Eager <eager@eagercon.com>
233
234         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
235         TARGET_SINGLE_FLOAT check.
236
237 2009-05-04  Michael Eager <eager@eagercon.com>
238
239         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
240
241 2009-05-04  Michael Eager <eager@eagercon.com>
242
243         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
244         * config/rs6000/t-xilinx: New
245
246 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
247
248         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
249         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
250         * gcc/explow.c (memory_address): Use target hook.
251         * gcc/targhooks.c (default_legitimize_address): New.
252         * gcc/targhooks.h (default_legitimize_address): New.
253         * gcc/target.h (legitimize_address): New.
254         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
255         (TARGET_INITIALIZER): Include it.
256         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
257
258         * config/bfin/bfin-protos.h (legitimize_address): Remove.
259         * config/bfin/bfin.c (legitimize_address): Remove.
260         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
261         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
262         Remove.
263         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
264         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
265
266         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
267         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
268         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
269         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
270         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
271         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
272         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
273         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
274         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
275         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
276         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
277         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
278         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
279         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
280         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
281         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
282         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
283         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
284         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
285         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
286         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
287         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
288         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
289
290         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
291         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
292         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
293         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
294         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
295         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
296         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
297         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
298         (thumb_legitimize_address): Delete.
299         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
300         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
301         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
302         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
303         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
304         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
305         Delete.
306         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
307         Delete.
308
309         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
310         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
311         * config/m32r/m32r.c (m32r_legitimize_address): New.
312         * config/m68k/m68k.c (m68k_legitimize_address): New.
313         * config/score/score.c (score_legitimize_address): Standardize.
314         * config/score/score3.c (score3_legitimize_address): Standardize.
315         * config/score/score3.h (score3_legitimize_address): Adjust.
316         * config/score/score7.c (score7_legitimize_address): Standardize.
317         * config/score/score7.h (score7_legitimize_address): Adjust.
318         * config/sh/sh.c (sh_legitimize_address): New.
319         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
320
321         * gcc/config/s390/s390.c (legitimize_address): Rename to...
322         (s390_legitimize_address): ... this.
323         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
324         (sparc_legitimize_address): ... this.
325         * gcc/config/i386/i386.c (legitimize_address): Rename to...
326         (ix86_legitimize_address): ... this.
327         * gcc/config/avr/avr.c (legitimize_address): Rename to...
328         (avr_legitimize_address): ... this.
329         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
330         (mn10300_legitimize_address): ... this.
331         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
332         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
333         (alpha_expand_mov): Adjust call.
334
335         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
336         * config/spu/spu.c (spu_legitimize_address): Likewise.
337         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
338         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
339
340 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
341
342         * intl.c (locale_encoding, locale_utf8): New.
343         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
344         * intl.h (locale_encoding, locale_utf8): Declare.
345         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
346         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
347         New.
348         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
349         argument.
350         (pp_tree_identifier): Define to call pp_base_tree_identifier.
351         (pp_base_tree_identifier): Declare as function.
352         (identifier_to_locale): Declare.
353         * Makefile.in (pretty-print.o): Update dependencies.
354         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
355
356 2009-05-04  Richard Guenther  <rguenther@suse.de>
357
358         PR middle-end/40015
359         * builtins.c (fold_builtin_memory_op): Do not decay to element
360         type if the size matches the whole array.
361
362 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
363
364         * expmed.c (synth_mult): When trying out a shift, pass the result
365         of a signed shift.
366
367 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
368
369         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
370         (shiftsub1_cost): New.
371         (init_expmed): Compute shiftsub1_cost.
372         (synth_mult): Optimize multiplications by constants of the form
373         -(2^^m-1) for some constant positive integer m.
374
375 2009-05-03  Richard Guenther  <rguenther@suse.de>
376
377         PR c/39983
378         * c-typeck.c (array_to_pointer_conversion): Do not built
379         ADDR_EXPRs of arrays of pointer-to-element type.
380         * c-gimplify.c (c_gimplify_expr): Revert change fixing
381         up wrong ADDR_EXPRs after-the-fact.
382         * c-common.c (strict_aliasing_warning): Strip pointer
383         conversions for obtaining the original type.
384         * builtins.c (fold_builtin_memset): Handle array types.
385         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
386         and array types
387
388 2009-05-03  Richard Guenther  <rguenther@suse.de>
389
390         PR middle-end/23329
391         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
392         Do not lose casts from array types with unknown extent to array
393         types with known extent.
394         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
395         alias set compatibility.
396
397 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
398
399         * flags.h (extra_warnings): Delete.
400         * toplev.c (process_options): Handle Wuninitialized here.
401         * opts.c (extra_warnings): Delete.
402         (set_Wextra): Delete.
403         (common_handle_option): -Wextra can be handled automatically.
404         * c-opts.c (c_common_handle_option): Delete obsolete code.
405         (c_common_post_options): Simplify comment.
406         * common.opt (W): Add Var.
407         (Wextra): Add Var.
408         (Wuninitialized): Initialize to -1.
409
410 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
411             Richard Guenther  <rguenther@suse.de>
412
413         * expr.c (get_def_for_expr): New function.
414         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
415         SSA rather than trees.
416         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
417         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
418         
419 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
420
421         * c-common.c (reswords): Add _Imaginary.
422         * c-common.c (enum rid): Add RID_IMAGINARY.
423
424 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
425
426         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
427         Patch by Richard Guenther.
428
429 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
430
431         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
432         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
433         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
434         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
435         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
436         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
437         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
438         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
439         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
440         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
441         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
442         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
443         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
444         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
445         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
446         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
447         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
448         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
449
450 2009-05-02  Richard Guenther  <rguenther@suse.de>
451
452         PR tree-optimization/39940
453         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
454         doing so.
455
456 2009-05-02  Richard Guenther  <rguenther@suse.de>
457
458         PR middle-end/40001
459         * tree-ssa.c (execute_update_addresses_taken): Properly check
460         if we can mark a variable DECL_GIMPLE_REG_P.
461         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
462         back to the end of the function.
463         (is_gimple_reg_type): Remove complex type special casing.
464         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
465         if not optimizing.
466
467 2009-05-02  Ben Elliston  <bje@au.ibm.com>
468
469         * doc/collect2.texi (Collect2): Document search path behaviour
470         when configured with --with-ld.
471
472 2009-05-02  Jan Hubicka  <jh@suse.cz>
473
474         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
475         parameter; update callers.
476         (coalesce_cost_edge): EH edges are costier because they needs
477         splitting even if not critical and even more costier when there are
478         multiple EH predecestors.
479
480 2009-05-02  Jan Hubicka  <jh@suse.cz>
481
482         * except.c (remove_eh_handler_and_replace): Handle updating after
483         removing TRY blocks.
484
485 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
486
487         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
488
489 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
490
491         * varasm.c: Do not include c-pragma.h.
492         * attribs.c: Do not incude c-common.h.
493
494 2009-05-01  Michael Matz  <matz@suse.de>
495
496         * calls.c (initialize_argument_information): Handle SSA names like
497         decls with a non MEM_P DECL_RTL.
498
499 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
500
501         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
502         * ipa-utils.c: Likewise.
503         * ipa-type-escape.c: Likewise.
504         * cgraphunit.c Do not include c-common.h.
505         * ipa-pure-const.c: Likewise.
506         * tree-if-conv.c: Likewise.
507         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
508         * ipa-struct-reorg.c: Likewise.
509         * tree-nomudflap.c: Likewise.
510         * tree-ssa-structalias.c: Likewise.
511
512 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
513
514         * store-motion.c: Many cleanups to make this pass a first-class
515         citizen instead of an appendix to gcse load motion.  Add TODO list
516         to make this pass faster/cleaner/better.
517
518         (struct ls_expr): Post gcse.c-split cleanups.
519         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
520         "stores" field to "avail_stores".
521         (pre_ldst_mems): Rename to store_motion_mems.
522         (pre_ldst_table): Rename to store_motion_mems_table.
523         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
524         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
525         (ldst_entry): Rename to st_expr_entry, update users.
526         (free_ldst_entry): Rename to free_st_expr_entry, update users.
527         (free_ldst_mems): Rename to free_store_motion_mems, update users.
528         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
529         update caller.
530         (first_ls_expr): Rename to first_st_expr, update users.
531         (next_ls_expr): Rename to next_st_expr, update users.
532         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
533         fields properly for store motion instead of names inherited from load
534         motion in gcse.c.
535         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
536         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
537         are done with it.
538
539         (ae_kill): Rename to st_kill, update users.
540         (ae_gen): Rename to st_avloc, update users.
541         (transp): Rename to st_transp, update users.
542         (pre_insert_map): Rename to st_insert_map, update users.
543         (pre_delete_map): Rename to st_delete_map, update users.
544         (insert_store, build_store_vectors, free_store_memory,
545         one_store_motion_pass): Update for abovementioned changes.
546
547         (gcse_subst_count, gcse_create_count): Remove.
548         (one_store_motion_pass): New statistics counters "n_stores_deleted"
549         and "n_stores_created", local variables.
550
551         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
552         use for_each_rtx.
553
554         (regvec, compute_store_table_current_insn): Remove.
555         (reg_set_info, reg_clear_last_set): Remove.
556         (compute_store_table): Use DF caches instead of local dataflow
557         solvers.
558
559 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
560
561         * c-objc-common.c (c_tree_printer): Print identifiers with
562         pp_identifier, not pp_string.  Mark "({anonymous})" for
563         translation.
564         * c-pretty-print.c (pp_c_ws_string): New.
565         (pp_c_cv_qualifier, pp_c_type_specifier,
566         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
567         pp_c_storage_class_specifier, pp_c_function_specifier,
568         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
569         pp_c_primary_expression, pp_c_postfix_expression,
570         pp_c_unary_expression, pp_c_shift_expression,
571         pp_c_relational_expression, pp_c_equality_expression,
572         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
573         use pp_string and pp_c_ws_string in place of pp_identifier and
574         pp_c_identifier for non-identifiers.  Mark English strings for
575         translation.
576         * c-pretty-print.h (pp_c_ws_string): Declare.
577
578 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
579             Roland McGrath <roland@redhat.com>
580
581         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
582         (ENABLE_LD_BUILDID): New configuration option.
583         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
584         (LINK_BUILDID_SPEC): New macro.
585         (init_spec): If defined, prepend it between LINK_EH_SPEC and
586         link_spec.
587         * doc/install.texi: Document --enable-linker-build-id option.
588         * configure: Rebuild.
589         * config.in: Rebuild.
590
591 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
592
593         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
594         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
595         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
596         MIPS_GP_SAVE_AREA_SIZE.
597         * config/mips/mips.c (struct mips_frame_info): Update comment
598         before arg_pointer_offset and hard_frame_pointer_offset.
599         (mips_compute_frame_info): Update diagram before function: to
600         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
601         indicate the position of frame_pointer_rtx with -fstack-protector and
602         to show args_size.  Don't allocate cprestore area for leaf functions
603         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
604         cprestore_size.
605         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
606
607 2009-04-30  Michael Matz  <matz@suse.de>
608
609         PR tree-optimization/39955
610         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
611
612 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
613
614         * ira.c (setup_cover_and_important_classes):  Use safe macro
615         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
616         directly.
617         * genpreds.c (write_tm_preds_h):  Output suitable definition of
618         REG_CLASS_FOR_CONSTRAINT.
619
620 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
621
622         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
623         instead of an int.
624         * bitmap.c (bitmap_descriptor): Likewise.
625         * ggc-common.c (loc_descriptor): Likewise.
626         * varray.c (varray_descriptor): Likewise.
627         * vec.c (vec_descriptor): Likewise.
628
629 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
630
631         * Makefile.in (dce.o): Add $(EXCEPT_H).
632         * dce.c: Include except.h and delete redundant vector definitions.
633         (deletable_insn_p): Return false for non-call insns that can throw
634         if DF is running.
635
636 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
637
638         * gcse.c (ae_gen): Remove.
639         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
640         and make non-static function to make it available in store-motion.c.
641         Update call sites with search-and-replace.
642         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
643         extract_mentioned_regs, extract_mentioned_regs_helper,
644         find_moveable_store, compute_store_table, load_kills_store, find_loads,
645         store_killed_in_insn, store_killed_after, store_killed_before,
646         build_store_vectors, insert_insn_start_basic_block, insert-store,
647         remove_reachable_equiv_notes, replace_store_insn, delete_store,
648         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
649         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
650         * store-motion.c: ...new file.  Also copy data structures from gcse.c
651         and clean up to remove parts not used by store motion.
652         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
653         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
654
655 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
656
657         PR target/38571
658         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
659         when optimizing for size.
660
661 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
662
663         * gcse.c (gcse_constant_p): Fix typo in last change.
664
665 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
666
667         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
668
669 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
670
671         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
672
673 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
674
675         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
676         CONST_HIGH_PART result.
677
678 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
679
680         * config/avr/avr.c (initial_elimination_offset): Rename to
681         avr_initial_elimination_offset.
682         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
683         change return type to bool.
684         (avr_can_eliminate): New function.
685         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
686         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
687         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
688         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
689         avr_initial_elimination_offset.
690         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
691         (avr_initial_elimination_offset): Define.
692
693 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
694             Steven Bosscher  <steven@gcc.gnu.org>
695
696         PR rtl-optimization/39938
697         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
698         * cfgrtl.c: Include insn-attr.h.
699         (rest_of_pass_free_cfg): New function.
700         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
701         * resource.c (init_resource_info): Remove call to df_analyze.
702
703 2009-04-29  Richard Guenther  <rguenther@suse.de>
704
705         PR target/39943
706         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
707         allow conversion to signed integers.
708
709 2009-04-29  Richard Guenther  <rguenther@suse.de>
710
711         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
712         shifts of floating point vectors if the shift amount is
713         a constant multiple of the element size.
714
715 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
716             Michael Matz  <matz@suse.de>
717
718         PR middle-end/39927
719         PR bootstrap/39929
720         * tree-outof-ssa.c (emit_partition_copy): New function.
721         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
722         insert_part_to_rtx_on_edge): Perform the partition base var
723         copy using emit_partition_copy.
724         (insert_value_copy_on_edge): Convert constants to the right mode.
725         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
726         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
727
728 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
729
730         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
731         scan backwards to try to find a constant to initialize it.
732
733         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
734         insn before the loop_end instruction, don't look past labels.
735
736 2009-04-29  Richard Guenther  <rguenther@suse.de>
737
738         PR middle-end/39937
739         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
740         loose type conversions.
741         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
742         stmts only if there are no uses of its definition.
743
744 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
745
746         * config/bfin/bfin.h (splitting_loops): Declare.
747         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
748         Reorder bit definitions to be ascending.
749         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
750         * config/bfin/bfin.c (splitting_loops): New variable.
751         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
752         (struct loop_info): Remove members INIT and LOOP_INIT.
753         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
754         the LSETUP sequence.  Allow LC to be loaded from any register, but
755         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
756         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
757         set to 1.
758         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
759         of reload_completed.
760
761         From Jie Zhang:
762         * config/bfin/bfin.md (movsi_insn): Refine constraints.
763
764 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
765
766         * Makefile.in (PLUGIN_VERSION_H): New.
767         (OBJS-common): Remove plugin-version.o.
768         (plugin.o): Depend on (PLUGIN_VERSION_H).
769         (plugin-version.o): Remove.
770         * configure: Regenerate
771         * configure.ac: Create plugin-version.h.
772         * gcc-plugin.h (plugin_gcc_version): Remove.
773         (plugin_default_version_check): Change signature.
774         * plugin-version.c: Remove.
775         * plugin.c: Include plugin-version.h.
776         (str_plugin_gcc_version_name): Remove.
777         (try_init_one_plugin): Pass gcc version to plugin_init.
778         (plugin_default_version_check): Both gcc and plugin versions are now
779         arguments.
780
781 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
782         
783         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
784         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
785         Remove special case testing for last insn of inner loops. Don't fail
786         if the loop ends with a jump, emit an extra nop instead.
787
788         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
789         DREGS rather than comparing directly.  Remove code that tries to
790         account for latencies.
791
792 2009-04-29  Richard Guenther  <rguenther@suse.de>
793
794         PR tree-optimization/39941
795         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
796         eliminating an indirect call.
797
798 2009-04-29  Richard Guenther  <rguenther@suse.de>
799
800         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
801         parameter.  Allow invariants as base if !require_lvalue.
802         (verify_gimple_assign_single): Adjust.
803
804 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
805
806         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
807         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
808         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
809         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
810         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
811         a VEC_SELECT.
812         * config/bfin/bfin.c (bfin_expand_builtin,
813         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
814
815 2009-04-28  Richard Guenther  <rguenther@suse.de>
816
817         * tree-vect-loop.c (get_initial_def_for_induction): Use
818         correct types for pointer increment.
819
820 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
821
822         * toplev.c (print_version): Update GMP version string calculation.
823
824 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
825
826         PR rtl-optimization/39938
827         * resource.c (init_resource_info): Add call to df_analyze.
828
829 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
830
831         * config/alpha/alpha.md (usegp): Cast the result of
832         alpha_find_lo_sum_using_gp to enum attr_usegp.
833         * config/alpha/alpha.c (override_options): Remove end-of-structure
834         marker element from cpu_table.  Use array size of cpu_table to handle
835         -mcpu and -mtune options.
836         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
837
838 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
839
840         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
841         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
842         tune_32 and tune_64.
843         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
844         support on PowerPC.
845         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
846         * config/rs6000/option-defaults.h: ... here.  New file.
847         (OPT_64, OPT_32): Define.
848         (MASK_64BIT): Define to 0 if not already defined.
849         (OPT_ARCH64, OPT_ARCH32): Define.
850         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
851         and tune_64.
852
853 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
854
855         * config/arm/arm.c (arm_override_options): Emit error on using
856         fpa with AAPCS.
857
858 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
859
860         PR rtl-optimization/39914
861         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
862         registers for allocnos created from user-defined variables only
863         when not optimizing.
864
865 2009-04-28  Richard Guenther  <rguenther@suse.de>
866
867         PR middle-end/39937
868         * fold-const.c (fold_binary): Use distribute_real_division only
869         on float types.
870
871 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
872
873         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
874         add hpux-stdint.h to tm_file.
875         (hppa[12]*-*-hpux11*): Ditto.
876         (ia64*-*-hpux*): Ditto.
877         * config/hpux-stdint.h: New.
878         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
879         __STDC_EXT__ for all compiles.
880         * config/pa/pa-hpux.h: Ditto.
881         * config/pa/pa-hpux10.h: Ditto.
882         * config/pa/pa-hpux11.h: Ditto.
883
884 2009-04-28  Catherine Moore  <clm@codesourcery.com>
885
886         * debug.h (set_name): Add comment.
887
888 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
889
890         PR target/39929
891         * config/darwin.c (machopic_gen_offset): Check
892         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
893         * config/arm/arm.c (require_pic_register): Likewise.
894
895 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
896
897         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
898         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
899         m32c_promote_prototypes): Delete.
900
901 2009-04-28  Michael Matz  <matz@suse.de>
902
903         PR middle-end/39922
904         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
905         constants.
906
907 2009-04-28  Richard Guenther  <rguenther@suse.de>
908
909         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
910
911 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
912
913         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
914         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
915         * config/arm/arm-tune.md: Regenerate.
916
917 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
918
919         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
920         block if there are complex incoming edges.
921         (sel_merge_blocks): Remove useless assert.
922         (sel_redirect_edge_and_branch): Check that edge was redirected.
923         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
924         (sel_find_rgns): Delete declaration.
925         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
926         the region when it is not a preheader.
927
928 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
929
930         PR c/39323
931         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
932
933 2009-04-28  Richard Guenther  <rguenther@suse.de>
934
935         * tree.h (SSA_NAME_VALUE): Remove.
936         (struct tree_ssa_name): Remove value_handle member.
937         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
938         array for jump threading.
939         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
940         SSA_NAME_VALUEs.
941         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
942         * tree-flow.h (threadedge_initialize_values): Declare.
943         (threadedge_finalize_values): Likewise.
944         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
945         (SSA_NAME_VALUE): Define.
946         (threadedge_initialize_values): New function.
947         (threadedge_finalize_values): Likewise.
948         * tree-ssa-dom.c (ssa_name_values): New global variable.
949         (SSA_NAME_VALUE): Define.
950         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
951
952 2009-04-28  Ira Rosen  <irar@il.ibm.com>
953
954         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
955         Use REPORT_VECTORIZED_LOCATIONS instead 
956         REPORT_VECTORIZED_LOOPS.
957         * tree-vectorizer.c (vect_verbosity_level): Make static.
958         (vect_loop_location): Rename to vect_location.
959         (vect_set_verbosity_level): Update comment.
960         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
961         and vect_location.
962         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
963         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
964         instead REPORT_UNVECTORIZED_LOOPS.
965         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def and
966         vect_loop_def to vect_external_def and vect_internal_def.
967         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
968         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and 
969         REPORT_UNVECTORIZED_LOCATIONS.
970         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
971         and vect_used_in_loop and to vect_unused_in_scope and 
972         vect_used_in_scope.
973         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
974         (vect_verbosity_level): Remove declaration.
975         (vect_analyze_operations): Likewise.
976         (vect_analyze_stmt): Declare.
977         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
978         REPORT_UNVECTORIZED_LOCATIONS.
979         (vect_get_loop_niters): Fix indentation.
980         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
981         (vect_analyze_loop_operations): New function.
982         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
983         vect_analyze_operations.
984         (vect_is_simple_reduction): Use new names.
985         (vectorizable_live_operation, vect_transform_loop): Likewise.
986         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value to
987         specify whether the data references can be a part of interleaving chain.
988         (vect_analyze_data_ref_dependence): Use new names.
989         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
990         (vect_create_addr_base_for_vector_ref): Remove redundant code.
991         * tree-vect-patterns.c (widened_name_p): Use new names.
992         (vect_recog_dot_prod_pattern): Likewise.
993         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
994         (process_use, vect_mark_stmts_to_be_vectorized, 
995         vect_model_simple_cost, vect_model_store_cost,
996         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
997         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
998         vectorizable_operation, vectorizable_type_demotion,
999         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
1000         vectorizable_condition): Likewise.
1001         (vect_analyze_operations): Split into vect_analyze_loop_operations
1002         and ...
1003         (vect_analyze_stmt): ... new function.
1004         (new_stmt_vec_info): Use new names.
1005         (vect_is_simple_use): Use new names and fix comment.
1006         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
1007         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
1008
1009 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
1010
1011         PR target/39911
1012         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
1013         and integer modes for x87 operands.  Do not ICE for unsupported size,
1014         generate error instead.  Generate error for unsupported operand types.
1015         ['z']: Do not handle HImode memory operands specially.  Warning
1016         for floating-point operands.  Fallthru to 'Z' for unsupported operand
1017         types.  Do not ICE for unsupported size, generate error instead.
1018         (output_387_binary_op): Use %Z to output operands.
1019         (output_fp_compare): Ditto.
1020         (output_387_reg_move): Ditto.
1021
1022 2009-04-28  Ben Elliston  <bje@au.ibm.com>
1023
1024         PR c++/35652
1025         Revert:
1026
1027         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1028
1029         * builtins.c (c_strlen): Do not warn here.
1030         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
1031         * c-common.c (pointer_int_sum): Take an explicit location.
1032         Warn about offsets out of bounds.
1033         * c-common.h (pointer_int_sum): Adjust declaration.
1034
1035 2009-04-27  Ian Lance Taylor  <iant@google.com>
1036
1037         * collect2.c (is_ctor_dtor): Change type of ret field in struct
1038         names to symkind.
1039         * dce.c (run_fast_df_dce): Change type of old_flags to int.
1040         * df-core.c (df_set_flags): Change return type to int.  Change
1041         type of old_flags to int.
1042         (df_clear_flags): Likewise.
1043         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
1044         (df_get_conditional_uses): Likewise.
1045         * df.h (df_set_flags, df_clear_flags): Update declarations.
1046         * dwarf2out.c (struct indirect_string_node): Change type of form
1047         field to enum dwarf_form.
1048         (AT_string_form): Change return type to enum dwarf_form.
1049         * fixed-value.c (fixed_compare): Add cast to enum type.
1050         * fwprop.c (update_df): Change 0 to VOIDmode.
1051         * gensupport.c: Change 0 to UNKNOWN.
1052         * gimple.h (gimple_cond_code): Add cast to enum type.
1053         * haifa-sched.c (reemit_notes): Add cast to enum type.
1054         * hooks.c (hook_int_void_no_regs): Remove function.
1055         * hooks.h (hook_int_void_no_regs): Remove declaration.
1056         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
1057         * predict.c (combine_predictions_for_insn): Add casts to enum type.
1058         * real.c (real_arithmetic): Add cast to enum type.
1059         (real_compare): Likewise.
1060         * target.h (struct gcc_target): Change return type of
1061         branch_target_register_class to enum reg_class.
1062         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
1063         default_branch_target_register_class.
1064         * targhooks.c (default_branch_target_register_class): New function.
1065         * targhooks.h (default_branch_target_register_class): Declare.
1066         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
1067         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
1068         cast to int.
1069         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
1070         ERROR_MARK.
1071         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
1072         vect_uninitialized_def.  Change 0 to ERROR_MARK.
1073         * tree-vect-stmts.c (supportable_widening_operation): Don't
1074         initialize icode1 and icode2.
1075         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
1076         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
1077         and to STD_C89.
1078         (cmn_err_flag_specs): Change 0 to STD_C89.
1079         (cmn_err_char_table): Likewise.
1080         * config/arm/arm.c (get_arm_condition_code): Change type of code
1081         to enum arm_cond_code.
1082         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
1083         (IWMMXT_BUILTIN2): Likewise.
1084         (neon_builtin_type_bits): Don't define typedef.
1085         (neon_builtin_datum): Change type of bits field to int.
1086         (arm_expand_neon_args): Add cast to enum type.
1087         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
1088         TLS_MODEL_NONE.
1089         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
1090         casts to enum type.
1091         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
1092         MIPS_FP_COND_f.
1093         * config/mips/mips.md (jal_macro): Return enum constant.
1094         (single_insn): Likewise.
1095         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
1096         CODE_FOR_nothing.
1097         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
1098         casts to enum type.
1099         * config/s390/s390.c (s390_tune_flags): Change type to int.
1100         (s390_arch_flags): Likewise.
1101         (s390_handle_arch_option): Change flags field of struct pta to int.
1102         * config/s390/s390.h (s390_tune_flags): Update declaration.
1103         (s390_arch_flags): Likewise.
1104         * config/sh/sh.c (prepare_move_operands): Compare
1105         tls_symbolic_operand result with enum constant.
1106         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
1107         (sh_expand_prologue): Add cast to enum type.
1108         (sh_expand_epilogue): Likewise.
1109         (tls_symbolic_operand): Change return type to enum tls_model.
1110         (fpscr_set_from_mem): Add cast to enum type.
1111         (legitimize_pic_address): Compare tls_symbolic_operand result with
1112         enum constant.
1113         (sh_target_reg_class): Change return type to enum reg_class.
1114         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
1115         PROCESSOR_xxx.
1116         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
1117         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
1118         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
1119         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
1120         (delayed_branch, tls_call_delay): Likewise.
1121         (eligible_for_sibcall_delay): Likewise.
1122         (eligible_for_return_delay): Likewise. 
1123         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
1124         (spu_expand_builtin_1): Likewise.
1125
1126         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
1127         for all types of conversions.
1128         (output_init_element): Issue -Wc++-compat warning if needed when
1129         initializing a bitfield with enum type.
1130         * c-parser.c (c_parser_expression): Set original_type to
1131         original_type of right hand operand of comman operator.
1132
1133 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1134
1135         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
1136         grammar nits.
1137         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
1138         * doc/cpp.texi (Standard Predefined Macros)
1139         (Implementation-defined behavior): Likewise.
1140         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
1141         * doc/gimple.texi (GIMPLE Exception Handling)
1142         (@code{GIMPLE_ASSIGN}): Likewise.
1143         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
1144         * doc/invoke.texi (Warning Options, Optimize Options)
1145         (AVR Options, Darwin Options): Likewise.
1146         (Optimize Options): Reformulate -fwhole-program description.
1147         * doc/loop.texi (Lambda): Likewise.
1148         * doc/md.texi (Output Template, Define Constraints)
1149         (Standard Names, Insn Splitting): Likewise.
1150         * doc/options.texi (Option properties): Likewise.
1151         * doc/passes.texi (Tree-SSA passes): Likewise.
1152         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
1153         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
1154         (File Names and DBX): Likewise.
1155         * doc/trouble.texi (Incompatibilities): Likewise.
1156
1157 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
1158
1159         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
1160         instruction is correct.
1161
1162 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
1163
1164         Allow non-constant arguments to conversion intrinsics.
1165         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
1166         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
1167         * spu.c (print_operand): Handle 'v' and 'w'.
1168         (exp2_immediate_p, spu_gen_exp2): Define.
1169         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
1170         spu_convtf_1): Update parameter descriptions.
1171         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
1172         * constraints.md ('v', 'w'): New.
1173         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
1174         Remove.
1175         (i2f, I2F): New define_mode_attr.
1176         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
1177         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
1178         fixuns_truncv4sfv4si2):  Update to use mode attribute.
1179         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
1180         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
1181         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
1182         patterns for combine.
1183
1184 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
1185
1186         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
1187         (cprop, hoist, pre, store_motion): New debug counters.
1188         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
1189         is not an RTL pass anymore.
1190         (pass_profiling): Remove extern decl for pass removed in 2005.
1191         (pass_gcse, pass_jump_bypass): Remove.
1192         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
1193         to 0 for clean state.
1194         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
1195         * cse.c (gate_handle_cse_after_global_opts,
1196         rest_of_handle_cse_after_global_opts): New functions.
1197         (pass_cse_after_global_opts): New pass, does local CSE.
1198         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
1199         (TV_CPROP): New timevar.
1200         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
1201         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
1202         (gcse_main, recompute_all_luids): Remove.
1203         (compute_hash_table_work): Call max_reg_num instead of reading
1204         max_gcse_regno.
1205         (cprop_jump): Don't set run_jump_opt_after_gcse.
1206         (constprop_register): Always allow to alter jumps.
1207         (cprop_insn): Likewise.
1208         (do_local_cprop): Likewise.
1209         (local_cprop_pass): Likewise.  Return non-zero if something changed.
1210         (cprop): Remove function, fold interesting bits into one_cprop_pass.
1211         (find_implicit_sets): Add note about missed optimization opportunity.
1212         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
1213         pass_rtl_cprop execute function.
1214         Don't bother tracking the pass number, each pass gets its own dumpfile
1215         now anyway.
1216         Always allow to alter jumpsand bypass jumps.
1217         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
1218         will just find no suitable set.
1219         (pre_edge_insert): Fix dumping, this function is for PRE only.
1220         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
1221         pass_rtl_pre execute function.
1222         (hoist_code): Return non-zero if something changed.  Keep track of
1223         substitutions and insertions for statistics gathering similar to PRE.
1224         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
1225         called from the pass_rtl_hoist execute function.  Show pass statistics.
1226         (compute_store_table): Use max_reg_num directly instead of using the
1227         formerly global max_gcse_regno.
1228         (build_store_vectors): Likewise.
1229         (replace_store_insn): Fix dumping.
1230         (store_motion): Rename to ...
1231         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
1232         pass, called from the pass_rtl_store_motion execute function.  Keep
1233         track of substitutions and insertions for statistics gathering similar
1234         to PRE.
1235         (bypass_jumps): Remove, fold interesting bits into ...
1236         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
1237         from the pass_rtl_cprop execute function.
1238         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
1239         pass_jump_bypass): Remove.
1240         (gate_handle_gcse, rest_of_handle_gcse): Remove.
1241         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
1242         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
1243         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
1244         (gate_rtl_store_motion, execute_rtl_store_motion,
1245         pass_rtl_store_motion): New.
1246         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
1247         make it clear that -fcse-skip-blocks is a no-op for backward compat.
1248         * passes.c (init_optimization_passes): Remove pass_gcse and
1249         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
1250         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
1251         instead of pass_jump_bypass.
1252
1253 2009-04-27  Richard Guenther  <rguenther@suse.de>
1254
1255         PR middle-end/39928
1256         * gimplify.c (gimplify_expr): If we are required to create
1257         a temporary make sure it ends up as register.
1258
1259 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
1260
1261         PR target/39903
1262         * config/i386/i386.c (construct_container): Don't call
1263         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
1264         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
1265
1266 2009-04-27  Michael Matz  <matz@suse.de>
1267
1268         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
1269         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
1270         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
1271         (dump_replaceable_exprs): Take a bitmap.
1272         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
1273         array.
1274         (expand_gimple_basic_block): Likewise.
1275         * tree-ssa-ter.c (struct temp_expr_table_d): Make
1276         replaceable_expressions member a bitmap.
1277         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
1278         (mark_replaceable): Likewise.
1279         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
1280         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
1281
1282 2009-04-27  Richard Guenther  <rguenther@suse.de>
1283
1284         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
1285         (verify_stmts): Dispatch to gimple/type verification code.
1286         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
1287         issue with call argument types.
1288
1289 2009-04-27  Michael Matz  <matz@suse.de>
1290
1291         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
1292         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
1293         to above.
1294
1295 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
1296             Eric Botcazou  <ebotcazou@adacore.com>
1297
1298         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
1299         a label's basic block.
1300         (mark_target_live_regs): Tidy and rework obsolete comments.
1301         Change back DF problem to LIVE.  If a label starts a basic block,
1302         assume that all registers that used to be live then still are.
1303         (init_resource_info): If a label starts a basic block, set its
1304         BLOCK_FOR_INSN accordingly.
1305         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
1306
1307 2009-04-27  Richard Guenther  <rguenther@suse.de>
1308
1309         * tree-flow-inline.h (function_ann): Remove.
1310         (get_function_ann): Likewise.
1311         * tree-dfa.c (create_function_ann): Remove.
1312         * tree-flow.h (struct static_var_ann_d): Remove.
1313         (struct function_ann_d): Likewise.
1314         (union tree_ann_d): Remove fdecl member.
1315         (function_ann_t): Remove.
1316         (function_ann, get_function_ann, create_function_ann): Remove
1317         declarations.
1318
1319 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
1320
1321         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
1322
1323 2009-04-27  Jan Hubicka  <jh@suse.cz>
1324
1325         * ipa-pure-const.c (struct funct_state_d): New fields
1326         state_previously_known, looping_previously_known; remove
1327         state_set_in_source.
1328         (analyze_function): Use new fields.
1329         (propagate): Avoid assumption that state_set_in_source imply
1330         nonlooping.
1331
1332         * tree-ssa-loop-niter.c (finite_loop_p): New function.
1333         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
1334         * cfgloop.h (finite_loop_p): Declare.
1335
1336 2009-04-26  Michael Matz  <matz@suse.de>
1337
1338         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
1339
1340 2009-04-26  Michael Matz  <matz@suse.de>
1341
1342         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
1343         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
1344         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
1345         pass_mark_used_blocks): Remove.
1346         * tree-optimize.c (pass_free_datastructures,
1347         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
1348         * passes.c (init_optimization_passes): Don't call
1349         pass_mark_used_blocks, remove dead code.
1350
1351 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
1352
1353         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
1354         * tree-ssa-live.h (register_ssa_partition): Likewise.
1355
1356 2009-04-26  Michael Matz  <matz@suse.de>
1357
1358         Expand from SSA.
1359         * builtins.c (fold_builtin_next_arg): Handle SSA names.
1360         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
1361         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
1362         SSA names. 
1363         (compare_pairs): Swap cost comparison.
1364         (coalesce_ssa_name): Don't use change_partition_var.
1365         * tree-nrv.c (struct nrv_data): Add modified member.
1366         (finalize_nrv_r): Set it.
1367         (tree_nrv): Use it to update statements.
1368         (pass_nrv): Require PROP_ssa.
1369         * tree-mudflap.c (mf_decl_cache_locals,
1370         mf_build_check_statement_for): Use make_rename_temp.
1371         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
1372         * alias.c (find_base_decl): Handle SSA names.
1373         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
1374         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
1375         * rtl.h (set_reg_attrs_for_parm): Declare.
1376         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
1377         to "optimized", remove unused locals at finish.
1378         (execute_free_datastructures): Make global, call
1379         delete_tree_cfg_annotations.
1380         (execute_free_cfg_annotations): Don't call
1381         delete_tree_cfg_annotations.
1382
1383         * ssaexpand.h: New file.
1384         * expr.c (toplevel): Include ssaexpand.h.
1385         (expand_assignment): Handle SSA names the same as register variables.
1386         (expand_expr_real_1): Expand SSA names.
1387         * cfgexpand.c (toplevel): Include ssaexpand.h.
1388         (SA): New global variable.
1389         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
1390         (SSAVAR): New macro.
1391         (set_rtl): New helper function.
1392         (add_stack_var): Deal with SSA names, use set_rtl.
1393         (expand_one_stack_var_at): Likewise.
1394         (expand_one_stack_var): Deal with SSA names.
1395         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
1396         before unique numbers.
1397         (expand_stack_vars): Use set_rtl.
1398         (expand_one_var): Accept SSA names, add asserts for them, feed them
1399         to above subroutines.
1400         (expand_used_vars): Expand all partitions (without default defs),
1401         then only the local decls (ignoring those expanded already).
1402         (expand_gimple_cond): Remove edges when jumpif() expands an
1403         unconditional jump.
1404         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
1405         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
1406         SSA name.
1407         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
1408         members of SA; deal with PARM_DECL partitions here; expand
1409         all PHI nodes, free tree datastructures and SA.  Commit instructions
1410         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
1411         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
1412         info and statements at start, collect garbage at finish.
1413         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
1414         (VAR_ANN_PARTITION) Remove.
1415         (change_partition_var): Don't declare.
1416         (partition_to_var): Always return SSA names.
1417         (var_to_partition): Only accept SSA names.
1418         (register_ssa_partition): Only check argument.
1419         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
1420         member.
1421         (delete_var_map): Don't free it.
1422         (var_union): Only accept SSA names, simplify.
1423         (partition_view_init): Mark only useful SSA names as used.
1424         (partition_view_fini): Only deal with SSA names.
1425         (change_partition_var): Remove.
1426         (dump_var_map): Use ssa_name instead of partition_to_var member.
1427         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
1428         basic blocks.
1429         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
1430         (struct _elim_graph): New member const_dests; nodes member vector of
1431         ints.
1432         (set_location_for_edge): New static helper.
1433         (create_temp): Remove.
1434         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
1435         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
1436         (new_elim_graph): Allocate const_dests member.
1437         (clean_elim_graph): Truncate const_dests member.
1438         (delete_elim_graph): Free const_dests member.
1439         (elim_graph_size): Adapt to new type of nodes member.
1440         (elim_graph_add_node): Likewise.
1441         (eliminate_name): Likewise.
1442         (eliminate_build): Don't take basic block argument, deal only with
1443         partition numbers, not variables.
1444         (get_temp_reg): New static helper.
1445         (elim_create): Use it, deal with RTL temporaries instead of trees.
1446         (eliminate_phi): Adjust all calls to new signature.
1447         (assign_vars, replace_use_variable, replace_def_variable): Remove.
1448         (rewrite_trees): Only do checking.
1449         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
1450         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
1451         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
1452         contains_tree_r, MAX_STMTS_IN_LATCH,
1453         process_single_block_loop_latch, analyze_edges_for_bb,
1454         perform_edge_inserts): Remove.
1455         (expand_phi_nodes): New global function.
1456         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
1457         functions, initialize new parameter, remember partitions having a
1458         default def.
1459         (finish_out_of_ssa): New global function.
1460         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
1461         don't reset in_ssa_p here, don't disable TER when mudflap.
1462         (pass_del_ssa): Remove.
1463         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
1464         partition members.
1465         (execute_free_datastructures): Declare.
1466         * Makefile.in (SSAEXPAND_H): New variable.
1467         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
1468         * basic-block.h (commit_one_edge_insertion): Declare.
1469         * passes.c (init_optimization_passes): Move pass_nrv and
1470         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
1471         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
1472         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
1473         (redirect_branch_edge): Deal with super block when expanding, split
1474         out jump patching itself into ...
1475         (patch_jump_insn): ... here, new static helper.
1476
1477 2009-04-26  Michael Matz  <matz@suse.de>
1478
1479         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
1480         beyond num_ssa_names.
1481         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
1482         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
1483
1484 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
1485
1486         PR inline-asm/39543
1487         * fwprop.c (forward_propagate_asm): New function.
1488         (forward_propagate_and_simplify): Propagate also into __asm, if it
1489         doesn't increase the number of referenced registers.
1490
1491         PR c/39889
1492         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
1493
1494 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
1495
1496         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
1497         note_nonlocal_vla_type for nonlocal VLAs.
1498         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
1499         contains_remapped_vars, remap_vla_decls): New functions.
1500         (convert_nonlocal_reference_stmt): If not optimizing, call
1501         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
1502         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
1503         if it wasn't found in var_map.
1504         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
1505         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
1506         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
1507         declare_vars.
1508         * gimplify.c (nonlocal_vlas): New variable.
1509         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
1510         referenced VLAs.
1511         (gimplify_body): Create and destroy nonlocal_vlas.
1512
1513         * dwarf2out.c (loc_descr_plus_const): New function.
1514         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
1515         mem_loc_descriptor, loc_descriptor_from_tree_1,
1516         descr_info_loc, gen_variable_die): Use it.
1517
1518         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
1519         !TREE_STATIC VAR_DECLs.
1520         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
1521         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
1522         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
1523         DECL_BY_REFERENCE is valid.
1524         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
1525         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
1526         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
1527         Copy DECL_BY_REFERENCE.
1528         (struct nesting_copy_body_data): New type.
1529         (nesting_copy_decl): New function.
1530         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
1531         if they have variable length.
1532
1533 2009-04-26  Michael Matz  <matz@suse.de>
1534
1535         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
1536         mark new temporaries for renaming.
1537
1538 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
1539
1540         PR c/39581
1541         * c-decl.c (global_bindings_p): Return negative value.
1542         (c_variable_size): New.  Based on variable_size from
1543         stor-layout.c.
1544         (grokdeclarator): Call c_variable_size not variable_size.
1545
1546 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
1547
1548         * config/i386/i386.c (print_operand) ['z']: Fix typo.
1549
1550 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
1551
1552         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
1553         Redefine it to just use mingw/include.
1554         (ASM_SPEC): Rules for -m32 and -m64.
1555         (LINK_SPEC): Use Likewise.
1556         (SPEC_32): New define.
1557         (SPEC_64): Likewise.
1558         (SUB_LINK_SPEC): Likewise.
1559         (MULTILIB_DEFAULTS): New define.
1560         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
1561         Add multilib options.
1562         (MULTILIB_DIRNAMES): Likewise.
1563         (MULTILIB_OSDIRNAMES): Likewise.
1564         (LIBGCC): Likewise.
1565         (INSTALL_LIBGCC): Likewise.
1566
1567 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
1568
1569         PR c/39556
1570         * c-tree.h (enum c_inline_static_type): New.
1571         (record_inline_static): Declare.
1572         * c-decl.c (struct c_inline_static, c_inline_statics,
1573         record_inline_static, check_inline_statics): New.
1574         (pop_file_scope): Call check_inline_statics.
1575         (start_decl): Call record_inline_static instead of pedwarning
1576         directly for static in inline function.
1577         * c-typeck.c (build_external_ref): Call record_inline_static
1578         instead of pedwarning directly for static referenced in inline
1579         function.
1580
1581 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
1582
1583         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
1584         not new but only being rescanned.
1585         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
1586         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
1587         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
1588         record_set_info, compute_set, grealloc): Remove.
1589         (recompute_all_luids): New function.
1590         (gcse_main): Don't compute sets, and don't do related memory
1591         allocations/free-ing.  If something changed before the end of the
1592         pass, update LUIDs using recompute_all_luids.
1593         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
1594         (free_gcse_mem): Don't free it either.
1595         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
1596         Use the df insn LUIDs.
1597         (load_killed_in_block): Likewise.
1598         (compute_hash_table_work): Don't compute reg_set_in_block.
1599         (compute_transp): Use DF_REG_DEF_CHAINs.
1600         (local_cprop_pass): Don't use compute_sets and related functions.
1601         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
1602         Use get_max_uid() instead of max_cuid.
1603         (insert_insn_end_basic_block, pre_insert_copy_insn,
1604         update_ld_motion_stores): Don't try to
1605         keep reg_set tables up to date.
1606         (pre_insert_copies): Use df insn LUIDs.
1607         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
1608         (reg_set_info): Don't use extra bitmap argument.
1609         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
1610         information to compute regs_set_in_block.
1611         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
1612         (bypass_jumps): Don't use compute_sets and friends.
1613
1614 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1615
1616         PR testsuite/39710
1617         * opts.c (undocumented_msg): Do not leave blank even with
1618         ENABLE_CHECKING.
1619
1620 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
1621
1622         * c-decl.c (build_enumerator): Allow values folding to integer
1623         constants but not integer constant expressions with a pedwarn if
1624         pedantic.
1625
1626 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
1627
1628         PR c/39582
1629         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
1630         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
1631         type is an integer constant.
1632
1633 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
1634
1635         PR target/39897
1636         * config/i386/i386.c (print_operand) ['z']: Revert handling of
1637         HImode operands.
1638
1639 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
1640
1641         PR c/39564
1642         * c-decl.c (grokdeclarator): Diagnose declarations of functions
1643         with variably modified return type and no storage class
1644         specifiers, except for the case of nested functions.  Distinguish
1645         extern declarations of functions with variably modified return
1646         types from those of objects with variably modified types.
1647
1648 2009-04-25  Jan Hubicka  <jh@suse.cz>
1649
1650         * tree.c (list_equal_p): New function.
1651         * tree.h (list_equal_p): Declare.
1652         * coretypes.h (edge_def, edge, const_edge, basic_block_def
1653         basic_block_def, basic_block, const_basic_block): New.
1654         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
1655         (redirect_eh_edge): New function.
1656         (make_eh_edge_update_phi): EH edges are not abnormal.
1657         * except.c: Include tree-flow.h.
1658         (list_match): New function.
1659         (eh_region_replaceable_by_p): New function.
1660         (replace_region): New function.
1661         (hash_type_list): New function.
1662         (hash_eh_region): New function.
1663         (eh_regions_equal_p): New function.
1664         (merge_peers): New function.
1665         (remove_unreachable_regions): Verify EH tree when checking;
1666         merge peers.
1667         (copy_eh_region_1): New function.
1668         (copy_eh_region): New function.
1669         (push_reachable_handler): New function.
1670         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
1671         regions without label but with live RESX.
1672         * except.h (redirect_eh_edge_to_label): New.
1673         * tree-flow.h (redirect_eh_edge): New.
1674         * coretypes.h (edge_def, edge, const_edge, basic_block_def
1675         basic_block_def, basic_block, const_basic_block): Remove.
1676         * Makefile.in (except.o): Add dependency on tree-flow.h
1677         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
1678         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
1679         Remove.
1680
1681 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
1682
1683         PR bootstrap/39645
1684         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
1685         on the destination of memcpy.
1686
1687 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
1688
1689         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
1690         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
1691         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
1692
1693 2009-04-25  Jan Hubicka  <jh@suse.cz>
1694
1695         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
1696         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
1697         to be reached by different label than left.
1698         (update_eh_edges): Update comment; remove edge_to_remove if possible
1699         and return true if suceeded.
1700         (cleanup_empty_eh): Accept sharing map; handle shared regions.
1701         (cleanup_eh): Compute sharing map.
1702         * except.c (remove_eh_handler_and_replace): Add argument if we should
1703         update regions.
1704         (remove_unreachable_regions): Update for label sharing.
1705         (label_to_region_map): Likewise.
1706         (get_next_region_sharing_label): New function.
1707         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
1708         prev_try pointers.
1709         (remove_eh_handler): Update.
1710         (remove_eh_region_and_replace_by_outer_of): New function.
1711         * except.h (struct eh_region): Add next_region_sharing_label.
1712         (remove_eh_region_and_replace_by_outer_of,
1713         get_next_region_sharing_label): Declare.
1714         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
1715
1716 2009-04-25  Jan Hubicka  <jh@suse.cz>
1717
1718         * tree-cfg.c (split_critical_edges): Split also edges where we can't
1719         insert code even if they are not critical.
1720
1721 2009-04-25  Jan Hubicka  <jh@suse.cz>
1722
1723         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
1724         (gimple_can_remove_branch_p): EH edges won't remove branch by
1725         redirection.
1726         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
1727         updating of non-abnormal EH edges.
1728         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
1729         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
1730         (split_critical_edges): Split also edges where emitting code on them
1731         will lead to splitting later.
1732
1733 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
1734             H.J. Lu  <hongjiu.lu@intel.com>
1735
1736         PR target/39590
1737         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
1738         the configured assembler supports fildq and fistpq mnemonics.
1739         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
1740         * configure: Regenerated.
1741         * config.in: Ditto.
1742
1743         * config/i386/i386.c (print_operand): Handle 'Z'.
1744         ['z']: Remove handling of special fild/fist suffixes.
1745         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
1746         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
1747         suffix of fild insn.
1748         (*floatsi<mode>2_vector_mixed): Ditto.
1749         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
1750         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
1751         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
1752         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
1753         * config/i386/gas.h (GAS_MNEMONICS): Remove.
1754
1755 2009-04-25  Ben Elliston  <bje@au.ibm.com>
1756  
1757         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
1758         the source of a set operation.
1759
1760 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
1761
1762         * target.h (struct gcc_target): Add case_values_threshold field.
1763         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
1764         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
1765         * targhooks.c (default_case_values_threshold): New function.
1766         * targhooks.h (default_case_values_threshold): Declare function.
1767         * stmt.c (expand_case): Use case_values_threshold target hook.
1768         * expr.h (case_values_threshold): Remove declartation.
1769         * expr.c (case_values_threshold): Remove function.
1770         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
1771
1772         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
1773         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
1774         (avr_case_values_threshold): Declare as static.
1775         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
1776
1777         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
1778         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
1779         (mn10300_case_values_threshold): New function.
1780
1781 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
1782
1783         * ira.c (setup_cover_and_important_classes): Add enum cast.
1784
1785 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
1786
1787         * genpreds.c (write_enum_constraint_num): Output definition of
1788         CONSTRAINT_NUM_DEFINED_P macro.
1789         * ira.c (setup_cover_and_important_classes): Use
1790         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
1791         
1792 2009-04-24  DJ Delorie  <dj@redhat.com>
1793
1794         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
1795         __SH2A_SINGLE_ONLY__ also.
1796
1797 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
1798
1799         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
1800         (movdf_internal): Ditto.
1801         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
1802         SFmode and DFmode constants.
1803         (ia64_print_operand): Add 'G' format for printing
1804         floating point constants.
1805
1806 2009-04-24  Richard Guenther  <rguenther@suse.de>
1807
1808         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
1809         from unsigned additions.
1810
1811 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
1812
1813         * c-typeck.c (set_init_index): Allow array designators that are
1814         not integer constant expressions with a pedwarn if pedantic.
1815
1816 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
1817
1818         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
1819         zero if no overlap in nonzero bits between the operands.
1820
1821 2009-04-24  Ian Lance Taylor  <iant@google.com>
1822
1823         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
1824         (record_dead_and_set_regs): Likewise.
1825         * df.h (struct df_mw_hardreg): Change flags field to int.
1826         (struct df_base_ref): Likewise.
1827         (struct df): Change changeable_flags field to int.
1828         * df-scan.c (df_defs_record): Change clobber_flags to int.
1829         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
1830         constants rather than #define macros.
1831         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
1832         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
1833         (enum dwarf_calling_convention): Likewise.
1834         (enum dwarf_line_number_x_ops): Likewise.
1835         (enum dwarf_call_frame_info): Likewise.
1836         (enum dwarf_source_language): Likewise.
1837         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
1838         (add_calling_convention_attribute): Likewise.
1839         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
1840         (combine_comparisons): Change compcode to int.  Add cast to enum type.
1841         * genrecog.c (maybe_both_true_2): Change c to int.
1842         (write_switch): Likewise.  Add cast to enum type.
1843         * gimplify.c (gimplify_omp_for): Handle return values from
1844         gimplify_expr using MIN rather than bitwise or.
1845         (gimplify_expr): Add cast to enum type.
1846         * ipa-prop.c (update_jump_functions_after_inlining): Change
1847         IPA_BOTTOM to IPA_JF_UNKNOWN.
1848         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
1849         Add casts to enum type.
1850         (setup_cover_and_important_classes): Change cl to int.  Add casts
1851         to enum type.
1852         (setup_class_translate): Change cl and mode to int.
1853         (ira_init_once): Change mode to int.
1854         (free_register_move_costs): Likewise.
1855         (setup_prohibited_mode_move_regs): Add casts to enum type.
1856         * langhooks.c (add_builtin_function_common): Rework assertion that
1857         value fits bitfield.
1858         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
1859         * omega.c (omega_do_elimination): Avoid math on enum types.
1860         * optabs.c (expand_vec_shift_expr): Remove casts to int.
1861         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
1862         int local to handle integral_argment value.
1863         * regmove.c (try_auto_increment): Change PUT_MODE to
1864         PUT_REG_NOTE_KIND.
1865         * reload.c (push_secondary_reload): Add casts to enum type.
1866         (secondary_reload_class, find_valid_class): Likewise.
1867         * reload1.c (emit_input_reload_insns): Likewise.
1868         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
1869         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
1870         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
1871         constant.
1872         * tree.c (build_common_builtin_nodes): Add casts to enum type.
1873         * tree-complex.c (complex_lattice_t): Typedef to int rather than
1874         enum type.
1875         (expand_complex_libcall): Add casts to enum type.
1876         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
1877         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
1878         with ERROR_MARK, not NUM_TREE_CODES.
1879         (vect_create_epilog_for_reduction): Likewise.
1880         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
1881         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
1882         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
1883         enum machine_mode.
1884         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
1885         vect_unused_in_loop.  Change 0 to loop_vect.
1886         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
1887         * var-tracking.c (get_init_value): Change return type to enum
1888         var_init_status.
1889         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
1890         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
1891         arm_fp_model.
1892         (arm_override_options): Add casts to enum type.
1893         (arm_emit_tls_decoration): Likewise.
1894         * config/i386/i386.c (ix86_function_specific_restore): Add casts
1895         to enum type.
1896         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
1897         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
1898         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
1899         enum type.
1900         * config/s390/s390.c (code_for_builtin_64): Change to array of
1901         enum insn_code.
1902         (code_for_builtin_31): Likewise.
1903         (s390_expand_builtin): Change code_for_builtin to enum insn_code
1904         const *.
1905         * config/sparc/sparc.c (sparc_override_options): Change value
1906         field in struct code_model to enum cmodel.  In initializer change
1907         0 to NULL and add cast to enum type.
1908
1909         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
1910         Change all callers.  Issue a -Wc++-compat warning using
1911         lhs_origtype if necessary.
1912         (convert_for_assignment): Issue -Wc++-compat warnings about
1913         invalid conversions to enum type on assignment.
1914         * c-common.h (build_modify_expr): Update declaration.
1915
1916 2009-04-24  Nick Clifton  <nickc@redhat.com>
1917
1918         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
1919         (function_arg_advance): Likewise.
1920         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
1921         5th alternative.
1922
1923 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
1924
1925         * config/s390/constraints.md ('I', 'J'): Fix condition.
1926
1927 2009-04-24  Diego Novillo  <dnovillo@google.com>
1928
1929         * gengtype-parse.c (parse_error): Add newline after message.
1930
1931 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
1932
1933         * config/i386/sse.md (avxmodesuffixs): Removed.
1934         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
1935         (*avx_pinsr<ssevecsize>): This.
1936
1937 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
1938
1939         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
1940         follow chains of regs with a single definition, and allow expressions
1941         that are function_invariant_p.
1942         (simple_rhs_p): Allow expressions that are function_invariant_p.
1943
1944 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
1945
1946         PR middle-end/39867
1947         * fold-const.c (fold_cond_expr_with_comparison): When folding
1948         > and >= to MAX, make sure the MAX uses the same type as the
1949         comparison's operands.
1950
1951 2009-04-24  Nick Clifton  <nickc@redhat.com>
1952
1953         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
1954         addressing for DImode accesses.
1955         (frv_print_operand_address): Handle PLUS case.
1956         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
1957
1958 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
1959
1960         PR rtl-optimization/39794
1961         * alias.c (canon_true_dependence): Add x_addr argument.
1962         * rtl.h (canon_true_dependence): Adjust prototype.
1963         * cse.c (check_dependence): Adjust canon_true_dependence callers.
1964         * cselib.c (cselib_invalidate_mem): Likewise.
1965         * gcse.c (compute_transp): Likewise.
1966         * dse.c (scan_reads_nospill): Likewise.
1967         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
1968         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
1969         canon_base_addr of the group, plus optional offset.
1970         (struct group_info): Rename canon_base_mem to
1971         canon_base_addr.
1972         (get_group_info): Set canon_base_addr to canon_rtx of base, not
1973         canon_rtx of base_mem.
1974
1975 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
1976
1977         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
1978         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
1979
1980 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1981
1982         * config/spu/spu-builtins.h: Delete file.
1983
1984         * config/spu/spu.h (enum spu_builtin_type): Move here from
1985         spu-builtins.h.
1986         (struct spu_builtin_description): Likewise.  Add GTY marker.
1987         Do not use enum spu_function_code or enum insn_code.
1988         (spu_builtins): Add extern declaration.
1989
1990         * config/spu/spu.c: Do not include "spu-builtins.h".
1991         (enum spu_function_code, enum spu_builtin_type_index,
1992         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
1993         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
1994         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
1995         unsigned_V2DI_type_node): Move here from spu-builtins.h.
1996         (spu_builtin_types): Make static.  Add GTY marker.
1997         (spu_builtins): Add extern declaration with GTY marker.
1998         Include "gt-spu.h".
1999
2000         * config/spu/spu-c.c: Do not include "spu-builtins.h".
2001         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
2002         Check programmatically whether all parameters are scalar.
2003
2004         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
2005
2006 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
2007
2008         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
2009         assignment from the constructor either if the target is volatile.
2010
2011 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
2012
2013         * config/arm/arm.md (insv): Do not share operands[0].
2014
2015 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
2016
2017         * config/vxlib-tls.c (active_tls_threads): Delete.
2018         (delete_hook_installed): New.
2019         (tls_delete_hook): Don't delete the delete hook.
2020         (tls_destructor): Delete it here.
2021         (__gthread_set_specific): Adjust installing the delete hook.
2022         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
2023         __gthread_leave_tsd_dtor_context.
2024
2025 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
2026
2027         * c-format.c (gcc_tdiag_char_table): Add support for %E.
2028
2029 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
2030
2031         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
2032         enum type.
2033         (alpha_rtx_costs): Ditto.
2034         (emit_unlikely_jump): Use add_reg_note.
2035         (emit_frame_store_1): Ditto.
2036         (alpha_expand_prologue): Ditto.
2037         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
2038         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
2039
2040 2009-04-23  Nick Clifton  <nickc@redhat.com>
2041
2042         * config/v850/v850.md (epilogue): Remove suppressed code.
2043         (return): Rename to return_simple and remove test of frame size.
2044         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
2045         to gen_return_simple.
2046
2047 2009-04-22  Jing Yu  <jingyu@google.com>
2048
2049         PR testsuite/39781
2050         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
2051
2052 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2053
2054         PR C/31499
2055         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
2056         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
2057         value is a VECTOR_CST, the element type is the element type of the
2058         vector.
2059
2060 2009-04-22  DJ Delorie  <dj@redhat.com>
2061
2062         * config/m32c/m32c.h: Update GTY annotations to new syntax.
2063
2064 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
2065
2066         * alias.c (find_base_term): Move around LO_SUM case, so that
2067         CONST falls through into PLUS/MINUS handling.
2068
2069         PR c/39855
2070         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
2071         into 0, use omit_one_operand.
2072
2073 2009-04-23  Ben Elliston  <bje@au.ibm.com>
2074
2075         * config/rs6000/linux-unwind.h (get_regs): Remove type
2076         puns. Change the type of `pc' to an array of unsigned ints and
2077         update all users.  Constify frame24.
2078
2079 2009-04-22  DJ Delorie  <dj@redhat.com>
2080
2081         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
2082         declarations before code.
2083         (current_function_special_page_vector): Likewise.
2084         (m32c_expand_insv): Silence a warning.
2085
2086 2009-04-21  Taras Glek  <tglek@mozilla.com>
2087
2088         * alias.c: Update GTY annotations to new syntax.
2089         * basic-block.h: Likewise.
2090         * bitmap.h: Likewise.
2091         * c-common.h: Likewise.
2092         * c-decl.c: Likewise.
2093         * c-parser.c: Likewise.
2094         * c-pragma.c: Likewise.
2095         * c-tree.h: Likewise.
2096         * cfgloop.h: Likewise.
2097         * cgraph.h: Likewise.
2098         * config/alpha/alpha.c: Likewise.
2099         * config/arm/arm.h: Likewise.
2100         * config/avr/avr.h: Likewise.
2101         * config/bfin/bfin.c: Likewise.
2102         * config/cris/cris.c: Likewise.
2103         * config/darwin.c: Likewise.
2104         * config/frv/frv.c: Likewise.
2105         * config/i386/i386.c: Likewise.
2106         * config/i386/i386.h: Likewise.
2107         * config/i386/winnt.c: Likewise.
2108         * config/ia64/ia64.h: Likewise.
2109         * config/iq2000/iq2000.c: Likewise.
2110         * config/mips/mips.c: Likewise.
2111         * config/mmix/mmix.h: Likewise.
2112         * config/pa/pa.c: Likewise.
2113         * config/pa/pa.h: Likewise.
2114         * config/rs6000/rs6000.c: Likewise.
2115         * config/s390/s390.c: Likewise.
2116         * config/sparc/sparc.c: Likewise.
2117         * config/xtensa/xtensa.c: Likewise.
2118         * cselib.h: Likewise.
2119         * dbxout.c: Likewise.
2120         * dwarf2out.c: Likewise.
2121         * except.c: Likewise.
2122         * except.h: Likewise.
2123         * fixed-value.h: Likewise.
2124         * function.c: Likewise.
2125         * function.h: Likewise.
2126         * gimple.h: Likewise.
2127         * integrate.c: Likewise.
2128         * optabs.c: Likewise.
2129         * output.h: Likewise.
2130         * real.h: Likewise.
2131         * rtl.h: Likewise.
2132         * stringpool.c: Likewise.
2133         * tree-data-ref.c: Likewise.
2134         * tree-flow.h: Likewise.
2135         * tree-scalar-evolution.c: Likewise.
2136         * tree-ssa-address.c: Likewise.
2137         * tree-ssa-alias.h: Likewise.
2138         * tree-ssa-operands.h: Likewise.
2139         * tree.c: Likewise.
2140         * tree.h: Likewise.
2141         * varasm.c: Likewise.
2142         * varray.h: Likewise.
2143         * vec.h: Likewise.
2144         * coretypes.h: Do not define GTY macro if it is already defined.
2145         * doc/gty.texi: Update GTY documentation to new syntax.
2146         * gengtype-lex.l: Enforce attribute-like syntax for GTY
2147         annotations on structs.
2148         * gengtype-parse.c: Likewise.
2149
2150 2009-04-22  Mark Heffernan  <meheff@google.com>
2151
2152         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
2153
2154 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
2155
2156         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
2157         where appropriate.
2158
2159 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
2160
2161         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
2162         the same as a PLUS without a shift.  Increase the cost of a
2163         CONST_INT in MULT.
2164
2165 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2166
2167         * Makefile.in: Update dependencies.
2168         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
2169         * errors.h: Remove bogus comment about compatibility.
2170         (warning): Update declaration.
2171         * genautomata.c: Update all calls to warning.
2172         * gimple.c: Do not include errors.h. Include toplev.h.
2173         * tree-ssa-structalias.c: Do not include errors.h.
2174         * omega.c: Likewise.
2175         * tree-ssa-reassoc.c: Likewise.
2176         * config/spu/spu-c.c: Likewise.
2177         * config/spu/t-spu-elf: Update dependencies.
2178
2179 2009-04-22  Richard Guenther  <rguenther@suse.de>
2180
2181         PR tree-optimization/39824
2182         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
2183         make sure the types are compatible.
2184
2185 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2186
2187         PR c++/14875
2188         * c-common.c (c_parse_error): Take a token_flags parameter.
2189         Use token_type for the token type instead.
2190         Pass token_flags to cpp_type2name.
2191         * c-common.h (c_parse_error): Update declaration.
2192         * c-parser.c (c_parser_error): Pass 0 as token flags.
2193
2194 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
2195
2196         PR rtl-optimization/39580
2197         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert. 
2198         
2199 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2200
2201         * function.c (expand_function_end): Do not emit a jump to the "naked"
2202         return label for fall-through returns.
2203         * except.c (sjlj_emit_function_exit): Always place the call to the
2204         unregister function at the location installed by expand_function_end.
2205
2206 2009-04-22  Richard Guenther  <rguenther@suse.de>
2207
2208         PR tree-optimization/39845
2209         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
2210         (gen_inbound_check): Likewise.
2211
2212 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
2213
2214         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
2215         padding for PPC.
2216         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
2217         * config/vxlib.c (__gthread_once): Add race guard for PPC.
2218
2219 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
2220
2221         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
2222         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
2223         shift counts to avoid out-of-bounds array accesses.
2224
2225 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
2226
2227         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
2228         (Pmode): Move above.
2229
2230 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
2231
2232         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
2233         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
2234         GET_CODE macro.  Use IN_RANGE macro where appropriate.
2235         * config/alpha/alpha.h: Ditto.
2236         * config/alpha/alpha.md: Ditto.
2237         * config/alpha/constraints.md: Ditto.
2238         * config/alpha/predicates.md: Ditto.
2239         
2240 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
2241
2242         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
2243         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2244         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2245         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2246         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2247         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2248         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2249         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2250         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2251         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2252         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2253         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2254         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2255         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2256         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2257         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2258         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2259         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2260         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2261         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2262         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2263         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2264         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2265         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2266         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2267         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2268         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
2269
2270 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
2271
2272         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
2273         references from comments.
2274         * cfgbuild.c: (count_basic_blocks): Delete.
2275         (find_basic_blocks_1): Delete.
2276         (find_basic_blocks): Delete.
2277         * except.c (finish_eh_generation): Make static.  Move comment from
2278         except.h here.  Remove find_basic_blocks references from comments.
2279         * except.h (finish_eh_generation): Delete.
2280         * basic-block.h (find_basic_blocks): Delete.
2281         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
2282
2283 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
2284
2285         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
2286         (sdbout_parms):  Likewise.
2287
2288 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
2289
2290         * config/sh/sh.c (prepare_cbranch_operands): Use
2291         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
2292         (expand_cbranchdi4): Likewise.
2293         (from_compare): Add cast to enum type.
2294         (expand_cbranchsi4): Use add_reg_note.
2295         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
2296         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
2297         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
2298         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
2299         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
2300         instead of CODE_FOR_nothing.
2301         (cbranchdi4): Likewise.  Fix the order of arguments for
2302         gen_rtx_fmt_ee.
2303         (push_fpscr): Use add_reg_note.
2304         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
2305         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
2306         
2307 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
2308
2309         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
2310         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
2311         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
2312         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
2313         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
2314         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
2315         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
2316         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
2317         config/alpha/x-vms, config/arc/t-arc,
2318         config/arm/README-interworking, config/arm/arm-c.c,
2319         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
2320         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
2321         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
2322         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
2323         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
2324         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
2325         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
2326         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
2327         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
2328         config/cris/t-elfmulti, config/crx/t-crx,
2329         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
2330         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
2331         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
2332         config/h8300/t-h8300, config/i386/athlon.md,
2333         config/i386/darwin-libgcc.10.4.ver,
2334         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
2335         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
2336         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
2337         config/i386/t-linux64, config/i386/t-nwld,
2338         config/i386/t-rtems-i386, config/i386/t-sol2-10,
2339         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
2340         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
2341         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
2342         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
2343         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
2344         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
2345         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
2346         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
2347         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
2348         config/m68k/t-uclinux, config/mcore/t-mcore,
2349         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
2350         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
2351         config/mips/crtn.asm, config/mips/irix-crti.asm,
2352         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
2353         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
2354         config/mips/mips-fixed.md, config/mips/sb1.md,
2355         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
2356         config/mips/t-iris6, config/mips/t-isa3264,
2357         config/mips/t-libgcc-mips16, config/mips/t-linux64,
2358         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
2359         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
2360         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
2361         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
2362         config/mn10300/t-linux, config/mn10300/t-mn10300,
2363         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
2364         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
2365         config/picochip/libgccExtras/clzsi2.asm,
2366         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
2367         config/rs6000/darwin-libgcc.10.4.ver,
2368         config/rs6000/darwin-libgcc.10.5.ver,
2369         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
2370         config/rs6000/t-aix43, config/rs6000/t-aix52,
2371         config/rs6000/t-darwin, config/rs6000/t-fprules,
2372         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
2373         config/rs6000/t-lynx, config/rs6000/t-netbsd,
2374         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
2375         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
2376         config/rs6000/t-rtems, config/rs6000/t-spe,
2377         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
2378         config/score/t-score-elf, config/sh/divcost-analysis,
2379         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
2380         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
2381         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
2382         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
2383         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
2384         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
2385         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
2386         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
2387         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
2388         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
2389         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
2390         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
2391         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
2392         limitx.h, version.c, xcoff.h: Add copyright and license notices.
2393         * config/h8300/genmova.sh: Include copyright and license notices
2394         in generated output.
2395         * config/h8300/mova.md: Regenerate.
2396         * doc/install.texi2html: Include word "Copyright" in copyright
2397         notice and use name "Free Software Foundation, Inc.".
2398         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
2399         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
2400         ChangeLog-2007, ChangeLog-2008: Correct dates.
2401
2402 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
2403
2404         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
2405         NE_EXPR operations as well.
2406         * c-parser.c (c_parser_condition): Do not set location information on
2407         the condition.
2408         (c_parser_conditional_expression): Likewise.
2409         (c_parser_binary_expression): Set location information on operators.
2410         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
2411         TRUTH_NOT_EXPR has been folded.
2412         * fold-const.c (fold_truth_not_expr): Copy location information from
2413         the incoming expression to the outgoing one.
2414         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
2415         recursive calls on the LHS of the operator but pass that of the
2416         operator to recursive calls on the RHS of the operator.  Set it
2417         on the COND_EXPR.
2418         (shortcut_cond_expr): Set the locus of the operator on the second
2419         COND_EXPR and that of the expression on the first in degenerate cases.
2420         Pass the locus of the expression to calls to shortcut_cond_r.
2421         Set the locus of the 'then' block on the associated jump, if any.
2422         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
2423         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
2424         expression to call to gimplify_boolean_expr.
2425
2426 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
2427
2428         * config.gcc: Add additional configuration for
2429         i686-w64-mingw* and x86_64-w64-mingw* triplet.
2430         * config/i386/mingw-w64.h: New mingw-w64 specific header.
2431         (CPP_SPEC): Redefine for allowing -municode option.
2432         (STARTFILE_SPEC): Likewise.
2433         * config/i386/t-mingw-w64: New.
2434         * config/i386/mingw-w64.opt: New.
2435         (municode): Add new target option.
2436         * doc/invoke.texi (municode): Add documentation for new option.
2437
2438 2009-04-21  Ian Lance Taylor  <iant@google.com>
2439
2440         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
2441         Correct test for number of arguments.
2442         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
2443
2444 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
2445
2446         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
2447         argument of emit_library_call.
2448
2449 2009-04-21  Richard Guenther  <rguenther@suse.de>
2450
2451         PR middle-end/39829
2452         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
2453         inside VIEW_CONVERT_EXPRs.
2454
2455 2009-04-21  Martin Jambor  <mjambor@suse.cz>
2456
2457         * tree-switch-conversion.c (build_constructors): Split a long line.
2458         (constructor_contains_same_values_p): New function.
2459         (build_one_array): Create assigns of constants if possible, do not
2460         call mark_sym_for_renaming, call update_stmt.
2461         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
2462         make_rename_temp.  Do not call mark_symbols_for_renaming, call
2463         update_stmt.
2464         (gen_def_assigns): Do not call mark_symbols_for_renaming or
2465         find_new_referenced_vars, call update_stmt.
2466         (gen_inbound_check): Use create_tmp_var and create ssa names manually
2467         instead of calling make_rename_temp.  Do not call
2468         find_new_referenced_vars or mark_symbols_for_renaming, call
2469         update_stmt.
2470
2471 2009-04-21  Richard Guenther  <rguenther@suse.de>
2472
2473         PR tree-optimization/39827
2474         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
2475         (tree_ssa_phiprop): Pass the correct array size.
2476
2477 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
2478
2479         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
2480
2481 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2482
2483         PR 16202
2484         * c-typeck.c (lvalue_p): Move declaration ...
2485         * c-common.h (lvalue_p): ... to here.
2486         * c-common.c (candidate_equal_p): New.
2487         (add_tlist): Use it.
2488         (merge_tlist): Use it.
2489         (warn_for_collisions_1): Likewise.
2490         (warning_candidate_p): Accept more candidates.
2491         (verify_tree): A warning candidate can be an expression. Use
2492         candidate_equal_p.
2493
2494 2009-04-21  Ben Elliston  <bje@au.ibm.com>
2495
2496         PR target/5267
2497         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
2498         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
2499         options.  Remove -mcall-solaris documentation.
2500
2501 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2502
2503         PR c++/13358
2504         * doc/invoke.texi (-Wlong-long): Update description.
2505         * c-lex (interpret_integer): Only warn if there was no previous
2506         overflow and -Wlong-long is enabled.
2507         * c-decl.c (declspecs_add_type): Drop redundant flags.
2508         * c.opt (Wlong-long): Init to -1.
2509         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
2510         and front-end warn_long_long. Wlong-long only depends on other
2511         flags if it is uninitialized.
2512         * c-parser.c (disable_extension_diagnostics): warn_long_long is
2513         the same for CPP and FE.
2514         (restore_extension_diagnostics): Likewise.
2515
2516 2009-04-20  Ian Lance Taylor  <iant@google.com>
2517
2518         Fix enum conversions which are invalid in C++:
2519         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
2520         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
2521         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
2522         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
2523         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
2524         (dbxout_parms): Likewise.
2525         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
2526         (df_clear_flags): Likewise.
2527         * df-problems.c (df_rd_bb_local_compute_process_def): Change
2528         top_flag parameter to int.
2529         (df_chain_create_bb_process_use): Likewise.
2530         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
2531         Remove cast.
2532         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
2533         (df_ref_create_structure, df_def_record_1): Likewise.
2534         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
2535         (df_notes_rescan): Change 0 to VOIDmode in function call.
2536         (df_get_call_refs, df_insn_refs_collect): Likewise.
2537         (df_bb_regs_collect): Likewise.
2538         (df_entry_block_defs_collect): Likewise.
2539         (df_exit_block_uses_collect): Likewise.
2540         * df.h: Update declarations.
2541         * double-int.c (double_int_divmod): Add cast to enum type.
2542         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
2543         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
2544         (based_loc_descr): Likewise.
2545         (loc_descriptor_from_tree_1): Change first_op and second_op to
2546         enum dwarf_location_atom.  Add cast to enum type.
2547         * expmed.c (init_expmed): Change 0 to SET in function call.
2548         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
2549         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
2550         (do_store_flag): Likewise.
2551         * fixed-value.h (struct fixed_value): Change mode to enum
2552         machine_mode.
2553         * function.c (assign_parms): Change 0 to VOIDmode in function call.
2554         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
2555         function call.
2556         (insert_insn_decl, insert_decl, insert_state): Likewise.
2557         (automata_list_finish): Likewise.
2558         * genrecog.c (process_define_predicate): Add cast to enum type.
2559         * gensupport.c (init_predicate_table): Add cast to enum type.
2560         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
2561         function call.
2562         (gimple_build_call_1, gimple_build_label): Likewise.
2563         (gimple_build_goto, gimple_build_asm_1): Likewise.
2564         (gimple_build_switch_1, gimple_build_cdt): Likewise.
2565         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
2566         (enum fallback): Rename from enum fallback_t.
2567         (fallback_t): Typedef as int.
2568         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
2569         GSI_SAME_STMT in function call.
2570         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
2571         enum type.
2572         (setup_reg_class_relations): Likewise.
2573         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
2574         (setup_prohibited_class_mode_regs): Add cast to enum type.
2575         (setup_prohibited_mode_move_regs): Likewise.
2576         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
2577         (record_address_regs): Change i to enum reg_class.
2578         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
2579         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
2580         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
2581         (GET_MODE_2XWIDER_MODE): Likewise.
2582         (GET_CLASS_NARROWEST_MODE): Likewise.
2583         * omp-low.c (expand_omp_for): Add cast to enum type.
2584         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
2585         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
2586         * postreload.c (reload_cse_simplify_operands): Change rclass local
2587         to enum reg_class.
2588         * predict.c (combine_predictions_for_insn): Change best_predictor
2589         and predictor to enum br_predictor.
2590         (combine_predictions_for_bb): Likewise.
2591         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
2592         use SET_PREDICT_EXPR_OUTCOME.
2593         * real.c (real_arithmetic): Change icode to code in function call.
2594         * reginfo.c (init_move_cost): Add casts to enum type.
2595         (init_reg_sets_1, init_fake_stack_mems): Likewise.
2596         * regmove.c (regclass_compatible_p): Change class0 and class1 to
2597         enum reg_class.
2598         * reload.c (find_valid_class): Add casts to enum type.
2599         (push_reload): Change 0 to NO_REGS in function call.
2600         (find_reloads): Change this_alternative to array of enum
2601         reg_class.  Remove some now-unnecessary casts.
2602         (make_memloc): Change 0 to VOIDmode in function call.
2603         * reload1.c (reload): Change 0 to VOIDmode in function call.
2604         (eliminate_regs_1, elimination_effects): Likewise.
2605         (eliminate_regs_in_insn): Likewise.
2606         (emit_input_reload_insns): Add cast to enum type.
2607         (delete_output_reload): Change 0 to VOIDmode in function call.
2608         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
2609         to enum type in function call.
2610         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
2611         (SET_PREDICT_EXPR_OUTCOME): Define.
2612         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
2613         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
2614         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
2615         (dump_function): Likewise.
2616         * tree-dump.h: Update declarations.
2617         * tree-pass.h: Update declarations.
2618         * varasm.c (assemble_integer): Change mclass to enum mode_class.
2619         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
2620         enum type.
2621         (arm_rtx_costs_1): Correct parenthesization.
2622         (arm_rtx_costs): Add casts to enum type.
2623         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
2624         (vfp_emit_fstmd): Use add_rg_note.
2625         (emit_multi_reg_push, emit_sfm): Likewise.
2626         (thumb_set_frame_pointer): Likewise.
2627         (arm_expand_prologue): Likewise.
2628         (arm_regno_class): Change return type to enum reg_class.
2629         (thumb1_expand_prologue): Use add_reg_note.
2630         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
2631         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
2632         in function call.
2633         * config/arm/gentune.sh: Add cast to enum type.
2634         * config/arm/arm-tune.md: Rebuild.
2635         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
2636         (ix86_split_fp_branch, predict_jump): Likewise.
2637         (ix86_expand_multi_arg_builtin): Change sub_code from enum
2638         insn_code to enum rtx_code.
2639         (ix86_builtin_vectorized_function): Add cast to enum type.
2640         * config/i386/i386.md (truncdfsf2): Change slot to enum
2641         ix86_stack_slot.
2642         (truncxf<mode>2, isinf<mode>2): Likewise.
2643         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
2644         enum type.
2645         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
2646         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
2647         (insert_bundle_state): Change 1 to INSERT in function call.
2648         (ia64_add_bundle_selector_before): Likewise.
2649         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
2650         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
2651         (restore_stack_nonlocal): Likewise.
2652         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
2653         function call.
2654         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
2655         function call.
2656         (mips_rtx_costs): Likewise.
2657         (mips_override_options): Add casts to enum type.
2658         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
2659         in function call.
2660         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
2661         (store_reg, set_reg_plus_d): Likewise.
2662         (hppa_expand_prologue, hppa_profile_hook): Likewise.
2663         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
2664         cast to enum type.
2665         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
2666         function call.
2667         (emit_unlikely_jump): Use add_reg_note.
2668         (rs6000_emit_allocate_stack): Likewise.
2669         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
2670         (output_toc): Change 1 to INSERT in function call.
2671         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
2672         (rs6000_initialize_trampoline): Likewise.
2673         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
2674         function call.
2675         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
2676         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
2677         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
2678         (save_gprs): Use add_reg_note.
2679         (s390_emit_prologue): Likewise.
2680         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
2681         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
2682         (sparc_fold_builtin): Add cast to enum type.
2683         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
2684         enum insn_code.
2685         (spu_expand_prologue): Use add_reg_note.
2686         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
2687
2688 2009-04-20  Ian Lance Taylor  <iant@google.com>
2689
2690         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
2691         (c_parser_postfix_expression_after_primary): Get VEC for list of
2692         arguments.  Get original types of arguments.  Call
2693         build_function_call_vec.
2694         (cached_expr_list_1, cached_expr_list_2): New static variables.
2695         (c_parser_expr_list): Change return type to VEC *.  Add
2696         p_orig_types parameter.  Change all callers.
2697         (c_parser_release_expr): New static function.
2698         (c_parser_vec_to_tree_list): New static function.
2699         * c-typeck.c (build_function_call): Rewrite to build a VEC and
2700         call build_function_call_vec.
2701         (build_function_call_vec): New function, based on old
2702         build_function_call.
2703         (convert_arguments): Remove nargs and argarray parameters.  Change
2704         values to a VEC.  Add origtypes parameter.
2705         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
2706         (convert_for_assignment): Add origtype parameter.  Change all
2707         callers.  If warn_cxx_compat, check for conversion to an enum
2708         type when calling a function.
2709         (store_init_value): Add origtype parameter.  Change all callers.
2710         (digest_init): Likewise.
2711         (struct init_node): Add origtype field.
2712         (add_pending_init): Add origtype parameter.  Change all callers.
2713         (output_init_element): Likewise.
2714         (output_pending_init_elements): Pass origtype from init_node to
2715         output_init_element.
2716         (process_init_element): Pass origtype from c_expr to
2717         output_init_element.
2718         (c_finish_return): Add origtype parameter.  Change all callers.
2719         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
2720         caller.
2721         (sync_resolve_params): Likewise.
2722         (sync_resolve_return): Change params to first_param.  Change caller.
2723         (resolve_overloaded_builtins): Change params to VEC *.  Change
2724         callers.  Save first parameter around call to build_function_call_vec.
2725         * c-decl.c (finish_decl): Add origtype parameter.  Change all
2726         callers.  Call build_function_call_vec rather than
2727         build_function_call for cleanup.
2728         * c-tree.h: Update declarations.
2729         * c-common.h: Update declarations.
2730         * stub-objc.c (objc_rewrite_function_call): Change parameter from
2731         params to first_param.
2732         * target.h (struct gcc_target): Change resolve_overloaded_builtin
2733         params parameter from tree to void *.
2734         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
2735         Change arglist parameter to have type void *, and to be a pointer
2736         to a VEC.
2737         * config/rs6000/rs6000-protos.h
2738         (altivec_resolve_overloaded_builtin): Update declaration.
2739         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
2740         fnargs parameter to have type void *, and to be a pointer to a
2741         VEC.  Call build_function_call_vec instead of
2742         build_function_call.
2743         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
2744
2745 2009-04-20  Joey Ye  <joey.ye@intel.com>
2746             Xuepeng Guo  <xuepeng.guo@intel.com>
2747             H.J. Lu  <hongjiu.lu@intel.com>
2748
2749         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
2750
2751         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
2752         (IX86_LEA_PRIORITY): Likewise.
2753         (distance_non_agu_define): New function.
2754         (distance_agu_use): Likewise.
2755         (ix86_lea_for_add_ok): Likewise.
2756         (ix86_dep_by_shift_count): Likewise.
2757
2758         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
2759         should split for LEA.
2760
2761         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
2762         function.
2763         (ix86_dep_by_shift_count): Likewise.
2764
2765 2009-04-20  Richard Guenther  <rguenther@suse.de>
2766
2767         * expr.c (handled_component_p): Move ...
2768         * tree.h (handled_component_p): ... here.
2769         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
2770         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
2771         and REALPART_EXPR to be in one group.
2772
2773 2009-04-20  Richard Guenther  <rguenther@suse.de>
2774
2775         * basic-block.h (get_all_dominated_blocks): Declare.
2776         * dominance.c (get_all_dominated_blocks): New function.
2777         * tree-cfg.c (get_all_dominated_blocks): Remove.
2778         (remove_edge_and_dominated_blocks): Adjust.
2779         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
2780         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
2781         instead of recursing.
2782
2783 2009-04-20  Doug Kwan  <dougkwan@google.com>
2784
2785         * cgraph.h (cgraph_node_ptr): New type for vector functions.
2786         (struct cgraph_node_set_def): New type.
2787         (cgraph_node_set) New type. Also declare vector functions.
2788         (struct cgraph_node_set_element_def): New type.
2789         (cgraph_node_set_element): Ditto.
2790         (cgraph_node_set_iterator): New iterator type.
2791         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
2792         cgraph_node_set_remove, dump_cgraph_node_set,
2793         debug_cgraph_node_set): New prototypes.
2794         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
2795         cgraph_node_set_size): New inlines.
2796         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
2797         including cgraph.h.
2798         (struct ipa_opt_pass): Add struct cgraph_node_set_def
2799         argument to function 'write_summary'.
2800         * ipa.c: Include ggc.h.
2801         (hash_cgraph_node_set_element,
2802         eq_cgraph_node_set_element, cgraph_node_set_new,
2803         cgraph_node_set_add, cgraph_node_set_remove,
2804         cgraph_node_set_find, dump_cgraph_node_set,
2805         debug_cgraph_node_set): New functions.
2806         * Makefile.in (ipa.o): Add dependency on GGC_H.
2807
2808 2009-04-20  Ira Rosen  <irar@il.ibm.com>
2809
2810         PR tree-optimization/39675
2811         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
2812         check of the return code of vect_schedule_slp. Check that
2813         stmt_vec_info still exists for the statement, before checking its
2814         vectorization type.
2815
2816 2009-04-20  Michael Matz  <matz@suse.de>
2817
2818         * Makefile.in (generated_files): Take out $(simple_generated_c).
2819
2820 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
2821
2822         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
2823         (UINTPTR_TYPE):  Likewise.
2824
2825 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
2826
2827         PR c/37481
2828         * c-typeck.c (digest_init): Check for initializing an array with a
2829         string literal.
2830
2831 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
2832
2833         PR c/19771
2834         * c-semantics.c (pop_stmt_list): Propagate
2835         STATEMENT_LIST_HAS_LABEL to parent statement list.
2836
2837 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
2838
2839         * config/mips/mips.h (mips_tune_attr): New macro.
2840         * config/mips/mips.md (cpu): Use it.
2841
2842 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
2843
2844         PR c/38243
2845         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
2846         declaring a tag.
2847
2848 2009-04-19  Diego Novillo  <dnovillo@google.com>
2849
2850         * toplev.c (compile_file): Move call to coverage_finish ...
2851         * cgraphunit.c (ipa_passes): ... here.
2852         Call cgraph_process_new_functions.
2853         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
2854         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
2855
2856 2009-04-19  Jan Hubicka  <jh@suse.cz>
2857
2858         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
2859         cfun.
2860         (dump_cgraph_node): Dump can throw external flag.
2861         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
2862
2863 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2864
2865         PR c/32061
2866         PR c++/36954
2867         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
2868         * common.opt (Wlogical-op): Move from here...
2869         * c.opt (Wlogical-op): ... to here.
2870         * c-typeck.c (parser_build_binary_op): Update call to
2871         warn_logical_operator.
2872         * c-opts.c (c_common_post_options): Enable warn_logical_op with
2873         extra_warnings.
2874         * c-common.c (warn_logical_op): Update.
2875         * c-common.h (warn_logical_op): Update declaration.
2876
2877 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
2878
2879         * tree.c (protected_set_expr_location): Fix formatting.
2880
2881 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
2882
2883         PR c/27676
2884         * c-typeck.c (readonly_warning): new.
2885         (build_unary_op, build_modify_expr): Use readonly_warning for
2886         storing into something readonly but not const-qualified.
2887
2888 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
2889
2890         PR c/22367
2891         * c-typeck.c (build_unary_op): Check for taking address of
2892         expression of type void.
2893
2894 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
2895
2896         PR c/35210
2897         * c-typeck.c (build_function_call): Check for calling a function
2898         with qualified void return types.  Call require_complete_type when
2899         generating a trap.
2900
2901 2009-04-18  Jan Hubicka  <jh@suse.cz>
2902
2903         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
2904         Set nothrow flag.
2905         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
2906         can_throw_external flag.
2907         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
2908         * ipa-pure-const.c (ignore_edge): New function.
2909         (propagate): Compute order for NOTHROW computation; set NOTHROWs
2910         only over can_throw_external edges.
2911         (local_pure_const): Add nothrow flag.
2912         * ipa-utils.c (searchc): Add ignore_edge callback.
2913         (ipa_utils_reduced_inorder): Add ignore_edge callback.
2914         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
2915         (set_nothrow_function_flags): Update cgraph.
2916         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
2917
2918 2009-04-18  Richard Guenther  <rguenther@suse.de>
2919
2920         PR middle-end/39804
2921         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
2922         (fold_stmt): ... this and ...
2923         (fold_stmt_inplace): ... this.
2924         (fold_stmt_1): Fold references in calls and asms.
2925         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
2926
2927 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
2928
2929         * tree-vrp.c (ssa_name_nonzero_p): Remove.
2930         * tree.h: Remove the prototype for ssa_name_nonzero_p.
2931
2932 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
2933
2934         * tree.c (function_args_count): Remove.
2935         * tree.h: Remove the prototype for function_args_count.
2936
2937 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
2938
2939         * tree-iterator.c (expr_only): Remove.
2940         * tree.h: Remove the prototype for expr_only.
2941
2942 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
2943
2944         * reginfo.c (cannot_change_mode_set_regs): Remove.
2945         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
2946
2947 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
2948
2949         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
2950         whether operands 0 and 1 overlaps.
2951
2952 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2953
2954         PR middle-end/36902
2955         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
2956         pointer. Use warning_at instead of warning.
2957         (search_for_addr_array): Likewise.
2958         (check_array_bounds): Likewise.
2959         (check_all_array_refs): Check that the incoming edge is not in the
2960         list of edges to be removed.
2961         (check_all_array_refs): Avoid the temporal pointer.
2962         (vrp_visit_cond_stmt): Fix typo.
2963         (simplify_switch_using_ranges): Handle the case where the switch
2964         index is an integer constant.
2965
2966 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
2967
2968         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
2969
2970 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
2971
2972         * doc/extend.texi, doc/invoke.texi: Fix typos.
2973
2974 2009-04-17  Cary Coutant  <ccoutant@google.com>
2975
2976         * tree-flow-inline.h (get_lineno): Fix inverted test.
2977
2978 2009-04-17  Diego Novillo  <dnovillo@google.com>
2979
2980         * tree-ssa-pre.c (create_expression_by_pieces): Remove
2981         assertion for AVAIL_OUT.
2982
2983 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
2984
2985         PR target/38627
2986         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
2987         * config/sh/linux-atomic.asm: Likewise.
2988
2989 2009-04-17  Diego Novillo  <dnovillo@google.com>
2990
2991         * except.c (debug_eh_tree): New.
2992         (struct eh_region, struct eh_status): Move ...
2993         * except.h: ... here.
2994         (add_type_for_runtime): Declare extern.
2995         (lookup_type_for_runtime): Likewise.
2996         (debug_eh_tree): Declare.
2997         * Makefile.in (GTFILES): List except.h before except.c
2998
2999 2009-04-17  Diego Novillo  <dnovillo@google.com>
3000
3001         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
3002         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
3003         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
3004         (find_vars_r): ... here.
3005         * tree-flow.h (find_referenced_vars_in): Declare.
3006         * tree-ssa-pre.c (create_expression_by_pieces): Assert
3007         that AVAIL_OUT exists for BLOCK.
3008         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
3009         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
3010         (tree-parloops.o): Likewise.
3011
3012 2009-04-17  Simon Baldwin  <simonb@google.com>
3013
3014         * toplev.c (default_tree_printer): Add handling for %E format.
3015
3016 2009-04-17  Diego Novillo  <dnovillo@google.com>
3017
3018         * tree-pretty-print.c (dump_generic_node): Add break after
3019         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
3020         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
3021         FUNCTION_TYPE together.  Call print_struct_decl when printing
3022         structures and TDF_SLIM is not given.
3023         (print_struct_decl): Fix logic for detecting recursion.
3024
3025 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
3026
3027         PR 31567
3028         * gcc.c (create_at_file): New.
3029         (compile_input_file_p): New.
3030         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
3031         * main.c (main): Update call to toplev_main.
3032         * toplev.c (toplev_main): Change signature. Call expandargv.
3033         * toplev.h (toplev_main): Change signature.
3034
3035 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
3036
3037         * dwarf2out.c (field_byte_offset): Use the type size as the field size
3038         if the latter is not constant.
3039
3040 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
3041
3042         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
3043
3044 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
3045
3046         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
3047         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
3048
3049 2009-04-17  Richard Guenther  <rguenther@suse.de>
3050
3051         * tree-ssa-structalias.c (get_constraint_for_component_ref):
3052         Handle component references view-converting an invariant address.
3053
3054 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
3055
3056         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
3057         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
3058         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
3059         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
3060         Use @deftypevr rather than @deftypevar.
3061
3062 2009-04-17  Richard Guenther  <rguenther@suse.de>
3063
3064         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
3065         (get_prop_source_stmt): Likewise.
3066         (can_propagate_from): Likewise.
3067
3068 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
3069
3070         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
3071         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
3072         (--with-multilib-list): Add default value.
3073         * configure: Regenerate.
3074         * Makefile.in (TM_ENDIAN_CONFIG): Define.
3075         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
3076         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
3077         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
3078         Don't add default cpu to multilib list unnecessarily, but do enable
3079         the relevant compiler option..
3080         Add support for --with-multilib-list=<blank> and
3081         --with-multilib-list=!<somelib> to supress unwanted multilibs.
3082         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
3083         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
3084         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
3085         TM_MULTILIB_CONFIG.
3086         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
3087         (MULTILIB_OSDIRNAMES): New variable.
3088         * config/sh/t-1e: Delete file.
3089         * config/sh/t-mlib-sh1: Delete file.
3090         * config/sh/t-mlib-sh2: Delete file.
3091         * config/sh/t-mlib-sh2a: Delete file.
3092         * config/sh/t-mlib-sh2a-nofpu: Delete file.
3093         * config/sh/t-mlib-sh2a-single: Delete file.
3094         * config/sh/t-mlib-sh2a-single-only: Delete file.
3095         * config/sh/t-mlib-sh2e: Delete file.
3096         * config/sh/t-mlib-sh3e: Delete file.
3097         * config/sh/t-mlib-sh4: Delete file.
3098         * config/sh/t-mlib-sh4-nofpu: Delete file.
3099         * config/sh/t-mlib-sh4-single: Delete file.
3100         * config/sh/t-mlib-sh4-single-only: Delete file.
3101         * config/sh/t-mlib-sh4a: Delete file.
3102         * config/sh/t-mlib-sh4a-nofpu: Delete file.
3103         * config/sh/t-mlib-sh4a-single: Delete file.
3104         * config/sh/t-mlib-sh4a-single-only: Delete file.
3105         * config/sh/t-mlib-sh4al: Delete file.
3106         * config/sh/t-mlib-sh5-32media: Delete file.
3107         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
3108         * config/sh/t-mlib-sh5-64media: Delete file.
3109         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
3110         * config/sh/t-mlib-sh5-compact: Delete file.
3111         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
3112         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
3113         * doc/install.texi (Options specification): Add
3114         --with-multilib-list and --with-endian.
3115
3116 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
3117
3118         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
3119         REVISION_c.
3120         (OBJS-common): Add plugin-version.o.
3121         (plugin-version.o): New.
3122         * gcc-plugin.h (plugin_gcc_version): New.
3123         (plugin_default_version_check): New.
3124         (plugin_init_func, plugin_init): Add version argument.
3125         * plugin-version.c: New.
3126         * plugin.c (str_plugin_gcc_version_name): New.
3127         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
3128         pass it to the init function.
3129         (plugin_default_version_check): New.
3130
3131 2009-04-17  Richard Guenther  <rguenther@suse.de>
3132
3133         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
3134         for decl-vs-decl disambiguation.
3135
3136 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
3137
3138         * config/s390/s390.h (s390_tune_attr): New macro definition.
3139         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
3140
3141 2009-04-17  Richard Guenther  <rguenther@suse.de>
3142
3143         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
3144         (fold_stmt_r): Likewise.
3145         (maybe_fold_reference): New function.
3146         (fold_gimple_assign): Handle cases fold_stmt_r did.
3147         (fold_stmt): Do not use fold_stmt_r.
3148         (fold_stmt_inplace): Likewise.
3149
3150 2009-04-17  Richard Guenther  <rguenther@suse.de>
3151
3152         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
3153         (record_equivalences_from_stmt): Remove useless checks and
3154         simplifications.
3155         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
3156         the type is already suitable.
3157
3158 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
3159
3160         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
3161
3162 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
3163
3164         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
3165         (CMPtype): Define as __gcc_CMPtype.
3166
3167 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
3168
3169         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
3170         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
3171
3172 2009-04-17  Richard Guenther  <rguenther@suse.de>
3173
3174         PR tree-optimization/39746
3175         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
3176         special-casing for builtins and static variable use/def.
3177         (call_may_clobber_ref_p_1): Likewise.
3178
3179 2009-04-16  Ian Lance Taylor  <iant@google.com>
3180
3181         * df.h: Include "timevar.h".
3182         (struct df_problem): Change tv_id field to timevar_id_t.
3183         * tree-pass.h: Include "timevar.h".
3184         (struct opt_pass): Change tv_id field to timevar_id_t.
3185         * timevar.h (timevar_id_t): Define TV_NONE.
3186         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
3187         TV_NONE rather than tv_id != 0.
3188         (execute_one_pass): Likewise.
3189         * Makefile.in (DF_H): Add $(TIMEVAR_H).
3190         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
3191         dependencies to $(TREE_PASS_H).
3192         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
3193         to TV_NONE.
3194         (pass_branch_target_load_optimize2): Likewise.
3195         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
3196         (pass_outof_cfg_layout_mode): Likewise.
3197         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
3198         (pass_rebuild_cgraph_edges): Likewise.
3199         (pass_remove_cgraph_callee_edges): Likewise.
3200         * df-core.c (pass_df_initialize_opt): Likewise.
3201         (pass_df_initialize_no_opt): Likewise.
3202         (pass_df_finish): Likewise.
3203         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
3204         * except.c (pass_set_nothrow_function_flags): Likewise.
3205         (pass_convert_to_eh_region_ranges): Likewise.
3206         * final.c (pass_compute_alignments): Likewise.
3207         * function.c (pass_instantiate_virtual_regs): Likewise.
3208         (pass_init_function): Likewise.
3209         (pass_leaf_regs): Likewise.
3210         (pass_match_asm_constraints): Likewise.
3211         * gimple-low.c (pass_lower_cf): Likewise.
3212         (pass_mark_used_blocks): Likewise.
3213         * init-regs.c (pass_initialize_regs): Likewise.
3214         * integrate.c (pass_initial_value_sets): Likewise.
3215         * ira.c (pass_ira): Likewise.
3216         * jump.c (pass_cleanup_barriers): Likewise.
3217         * omp-low.c (pass_expand_omp): Likewise.
3218         (pass_lower_omp): Likewise.
3219         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
3220         * recog.c (pass_split_all_insns): Likewise.
3221         (pass_split_after_reload): Likewise.
3222         (pass_split_before_regstack): Likewise.
3223         (pass_split_before_sched2): Likewise.
3224         (pass_split_for_shorten_branches): Likewise.
3225         * reginfo.c (pass_reginfo_init): Likewise.
3226         (pass_subregs_of_mode_init): Likewise.
3227         (pass_subregs_of_mode_finish): Likewise.
3228         * passes.c (pass_postreload): Likewise.
3229         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
3230         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
3231         (pass_warn_function_return): Likewise.
3232         (pass_warn_function_noreturn): Likewise.
3233         * tree-complex.c (pass_lower_complex): Likewise.
3234         (pass_lower_complex_O0): Likewise.
3235         * tree-if-conv.c (pass_if_conversion): Likewise.
3236         * tree-into-ssa.c (pass_build_ssa): Likewise.
3237         * tree-mudflap.c (pass_mudflap_1): Likewise.
3238         (pass_mudflap_2): Likewise.
3239         * tree-nomudflap.c (pass_mudflap_1): Likewise.
3240         (pass_mudflap_2): Likewise.
3241         * tree-nrv.c (pass_return_slot): Likewise.
3242         * tree-object-size.c (pass_object_sizes): Likewise.
3243         * tree-optimize.c (pass_all_optimizations): Likewise.
3244         (pass_early_local_passes): Likewise.
3245         (pass_all_early_optimizations): Likewise.
3246         (pass_cleanup_cfg): Likewise.
3247         (pass_cleanup_cfg_post_optimizing): Likewise.
3248         (pass_free_datastructures): Likewise.
3249         (pass_free_cfg_annotations): Likewise.
3250         (pass_fixup_cfg): Likewise.
3251         (pass_init_datastructures): Likewise.
3252         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
3253         (pass_late_warn_uninitialized): Likewise.
3254         (pass_update_address_taken): Likewise.
3255         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
3256         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
3257         (pass_cse_sincos): Likewise.
3258         (pass_convert_to_rsqrt): Likewise.
3259         * tree-ssa-structalias.c (pass_build_alias): Likewise.
3260         * tree-stdarg.c (pass_stdarg): Likewise.
3261         * tree-tailcall.c (pass_tail_recursion): Likewise.
3262         (pass_tail_calls): Likewise.
3263         * tree-vect-generic.c (pass_lower_vector): Likewise.
3264         (pass_lower_vector_ssa): Likewise.
3265         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
3266
3267 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
3268
3269         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
3270         XLR entry.
3271         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
3272         Handle -march=xlr.
3273         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
3274         logical and signext.
3275
3276 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
3277
3278         PR target/39767
3279         * config/sh/predicates.md (arith_operand): Check if the operand
3280         of TRUNCATE is a REG.
3281
3282 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
3283
3284         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
3285         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
3286
3287 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
3288
3289         * tree-iterator.c (tsi_split_statement_list_after,
3290         tsi_split_statement_list_before): Remove.
3291         * tree-iterator.h: Remove the prototypes for
3292         tsi_split_statement_list_after and tsi_split_statement_list_before.
3293
3294 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
3295
3296         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
3297         * tree-ssa-propagate.h: Remove the prototype for
3298         stmt_makes_single_load.
3299
3300 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
3301
3302         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
3303         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
3304
3305 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
3306
3307         * tree-iterator.c (EXPR_LAST_BODY): Remove.
3308
3309 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
3310
3311         * except.c (eh_region_outer_p): Remove.
3312         * except.h: Remove the prototype for eh_region_outer_p.
3313
3314 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
3315
3316         * function.c (current_function_assembler_name): Remove.
3317         * function.h: Remove the prototype for
3318         current_function_assembler_name.
3319
3320 2009-04-16  Ian Lance Taylor  <iant@google.com>
3321
3322         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
3323         (add_reg_note): Call alloc_reg_note.
3324         * rtl.h (alloc_reg_note): Declare.
3325         * combine.c (try_combine): Use alloc_reg_note.
3326         (recog_for_combine, move_deaths): Likewise.
3327         (distribute_notes): Use alloc_reg_note and add_reg_note.
3328         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
3329         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
3330         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
3331
3332 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
3333
3334         PR rtl-optimization/39762
3335         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
3336         ira_may_move_out_cost): Add comments about way of their usage.
3337         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
3338
3339         * ira-conflicts.c (process_regs_for_copy): Use function
3340         ira_get_register_move_cost instead of global
3341         ira_register_move_cost.
3342
3343         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
3344         color_pass, move_spill_restore, update_curr_costs): Ditto.
3345
3346         * ira-lives.c (process_single_reg_class_operands): Ditto.
3347
3348         * ira-emit.c (emit_move_list): Ditto.
3349
3350         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
3351         (record_reg_classes): Ditto.  Use functions
3352         ira_get_register_move_cost and ira_get_may_move_cost instead of
3353         global vars ira_register_move_cost, ira_may_move_out_cost and
3354         ira_may_move_in_cost.
3355         (record_address_regs): Don't call ira_init_register_move_cost.
3356         Use function ira_get_may_move_cost instead of global
3357         ira_may_move_in_cost.
3358         (process_bb_node_for_hard_reg_moves): Use function
3359         ira_get_register_move_cost instead of global ira_register_move_cost.
3360         (ira_costs): Don't call ira_init_register_move_cost.
3361
3362 2009-04-16  Richard Guenther  <rguenther@suse.de>
3363
3364         * tree-cfg.c (verify_gimple_assign_binary):
3365         Allow