OSDN Git Service

0ee49143d3f76b90a4a82eca86b039ea46b1e3a9
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
2
3         * config/avr/avr.c (avr_override_options): Remove setting value of
4         PARAM_INLINE_CALL_COST.
5
6 2009-06-18  Richard Henderson  <rth@redhat.com>
7
8         PR 40488
9         * tree-pass.h (TDF_ASMNAME): New.
10         * tree-dump.c (dump_options): Add asmname.
11         * doc/invoke.texi: Document it.
12
13         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
14         (dump_decl_name): ...here.
15         (dump_function_name): New flags arg; mind TDF_ASMNAME.
16         (dump_generic_node): Update dump_function_name calls.
17         (print_call_name): New flags arg; update all dump calls.
18         * diagnostic.h (print_call_name): Update.
19         * gimple-pretty-print.c (dump_gimple_call): Update.
20
21 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
22
23         PR target/40470
24         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
25
26 2009-06-18  Diego Novillo  <dnovillo@google.com>
27
28         * doc/plugins.texi: Document plugin_is_GPL_compatible.
29         * plugin.c (str_license): Declare.
30         (try_init_one_plugin): Assert that the symbol
31         'plugin_is_GPL_compatible' exists.
32
33 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
34
35         * see.c: Remove.
36         * Makefile.in (OBJS-common): Remove see.o.
37         (see.o): Remove.
38         * common.opt (fsee): Mark as preserved for backward compatibility.
39         * opts.c (common_handle_option): Add OPT_fsee to the backward 
40         compatibility section.
41         * passes.c (init_optimization_passes, pass_see): Remove pass.
42         * timevar.def (TV_SEE): Remove.
43         * tree-pass.h (pass_see): Remove declaration.
44         * doc/invoke.texi (-fsee): Remove documentation.
45         * testsuite/gcc.dg/20080522-1.c: Remove testcase.
46         * testsuite/gcc.dg/20080528-1.c: Remove testcase.
47         
48 2009-06-18  Martin Jambor  <mjambor@suse.cz>
49
50         * tree-sra.c: Include statistics.h
51         (sra_stats): New variable.
52         (sra_initialize): Clear sra_stats.
53         (create_access_replacement): Increment sra_stats.replacements.
54         (get_access_replacement): Do not return twice.
55         (analyze_all_variable_accesses): Increment statistics counter by the
56         number of scalarized aggregates.
57         (generate_subtree_copies): Increment sra_stats.subtree_copies.
58         (sra_modify_expr): Increment sra_stats.exprs.
59         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
60         (sra_modify_assign): Increment sra_stats.exprs,
61         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
62         (perform_intra_sra): Update statistics counters.
63         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
64
65 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
66
67         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
68         (arm_scalar_mode_supported_p): New function.
69
70 2009-06-18  Paul Brook  <paul@codesourcery.com>
71             Sandra Loosemore  <sandra@codesourcery.com>
72
73         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
74         (__extendhfsf2, __truncsfhf2): Define.
75         * config/arm/fp16.c: New file.
76         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
77         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
78
79 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
80
81         * doc/extend.texi (Half-Precision): New section.
82         * doc/invoke.texi (Option Summary): List -mfp16-format.
83         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
84         * config/arm/arm.opt (mfp16-format=): New.
85         * config/arm/arm.c: Include intl.h.
86         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
87         (TARGET_INVALID_RETURN_TYPE): Redefine.
88         (TARGET_PROMOTED_TYPE): Redefine.
89         (TARGET_CONVERT_TO_TYPE): Redefine.
90         (arm_fp16_format): Define.
91         (all_fpus): Add entry for neon-fp16.
92         (fp_model_for_fpu): Likewise.
93         (struct fp16_format): Declare.
94         (all_fp16_formats): Define.
95         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
96         functions.
97         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
98         and no ldrh.
99         (arm_legitimate_index_p): Treat HFmode like HImode.
100         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
101         (coproc_secondary_reload_class): Special-case HFmode.
102         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
103         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
104         (arm_init_fp16_builtins): New.
105         (arm_init_builtins): Call it.
106         (arm_invalid_parameter_type): New.
107         (arm_invalid_return_type): New.
108         (arm_promoted_type): New.
109         (arm_convert_to_type).
110         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
111         format.
112         (arm_emit_fp16_const): New function.
113         (arm_mangle_type): Mangle __fp16 as "Dh".
114         * config/arm/arm.h (TARGET_VFPD32): Make it know about
115         FPUTYPE_NEON_FP16.
116         (TARGET_NEON_FP16): New.
117         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
118         (enum fputype): Add FPUTYPE_NEON_FP16.
119         (enum arm_fp16_format_type): Declare.
120         (arm_fp16_format): Declare.
121         (LARGEST_EXPONENT_IS_NORMAL): Define.
122         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
123         * config/arm/arm-modes.def (HFmode): Define.
124         * config/arm/vfp.md: (*movhf_vfp): New.
125         (extendhfsf2): New.
126         (truncsfhf2): New.
127         * config/arm/arm.md: (fpu): Add neon_fp16.
128         (floatsihf2, floatdihf2): New.
129         (fix_trunchfsi2, fix_trunchfdi2): New.
130         (truncdfhf2): New.
131         (extendhfdf2): New.
132         (movhf): New.
133         (*arm32_movhf): New.
134         (*thumb1_movhf): New.
135         (consttable_2): Add check for HFmode constants.
136         (consttable_4): Handle HFmode constants.
137
138 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
139
140         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
141
142 2009-06-17  Olivier Hainque  <hainque@adacore.com>
143
144         * collect2.c (main): Use CONST_CAST2 to perform char ** to
145         const char ** conversion in AIX specific section.
146         
147 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
148
149         * config/i386/i386.c (ix86_special_builtin_type): Remove
150         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
151         (bdesc_special_args): Updated.
152         (ix86_init_mmx_sse_builtins): Likewise.
153         (ix86_expand_special_args_builtin): Likewise.
154
155 2009-06-17  Richard Henderson  <rth@redhat.com>
156
157         * tree-pretty-print.c (maybe_dump_asm_name): New.
158         (dump_decl_name): Use it.
159         (PRINT_FUNCTION_NAME): Merge into...
160         (dump_function_name): ... here.  Use maybe_dump_asm_name.
161
162 2009-06-17  Cary Coutant  <ccoutant@google.com>
163
164         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
165         Change caller.
166         * debug.c (struct gcc_debug_hooks): Change placeholder for
167         source_line hook.
168         (debug_nothing_int_charstar_int): Replaced by...
169         (debug_nothing_int_charstar_int_bool): ...this.
170         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
171         source_line prototype.
172         (debug_nothing_int_charstar_int): Replaced by...
173         (debug_nothing_int_charstar_int_bool): ...this.
174         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
175         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
176         Output is_stmt operand when necessary.
177         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
178         (notice_source_line): Add is_stmt parameter.
179         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
180         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
181         Change callers.
182         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
183         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
184
185 2009-06-17  Ian Lance Taylor  <iant@google.com>
186
187         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
188         Change all uses.
189         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
190         call uses.
191
192 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
193
194         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
195         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
196         tree_strip_sign_nop_conversions and
197         tree_ssa_strip_useless_type_conversions rather than stripping
198         the operations here.
199         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
200         Declare them.
201         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
202         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
203         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
204         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
205         functions.
206
207 2009-06-17  Michael Eager  <eager@eagercon.com>
208
209         * config/rs6000/constraints.md (register_constraint "d"): New.
210         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
211         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
212         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
213         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
214         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
215         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
216         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
217         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
218         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
219         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
220         __fctiwz): Same.
221         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
222         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
223         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
224         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
225         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
226         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
227         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
228         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
229         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
230         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
231         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
232         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
233         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
234         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
235
236 2009-06-16  Ian Lance Taylor  <iant@google.com>
237
238         * profile.c (total_num_never_executed): Don't define.
239         (compute_branch_probabilities): Don't count or print
240         num_never_executed.
241         (init_branch_prob): Don't set total_num_never_executed.
242         (end_branch_prob): Don't print total_num_never_executed.
243
244 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
245
246         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
247
248 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
249
250         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
251         (nabstd2_fpr): Same.
252
253 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
254
255         * expr.c (expand_assignment): Change complex type check.
256
257 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
258
259         * doc/plugins.texi (Building GCC plugins): Added new section. 
260
261 2009-06-17  Ian Lance Taylor  <iant@google.com>
262
263         * c-pch.c (get_ident): Don't set size of templ array.
264         (pch_init): Don't set size of partial_pch array.
265
266         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
267         string constant to intialize an array whose size is the length of
268         the string.
269
270 2009-06-17  Richard Guenther  <rguenther@suse.de>
271
272         PR tree-optimization/40389
273         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
274         to addressable types.
275         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
276
277 2009-06-17  Richard Guenther  <rguenther@suse.de>
278
279         PR middle-end/40460
280         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
281         if there is no evolution of left in the loop bail out.
282         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
283         chrec_fold_multiply.
284
285 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
286             Janis Johnson  <janis187@us.ibm.com>
287
288         PR target/39254
289         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
290         for the symbol ref of a constant that is the source of a move
291         - nor for any other not-obvious-label-ref constants.
292
293 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
294
295         * plugin.c (position_pass): Skip newly inserted pass during list
296         traversal to avoid repeated insertion.
297
298 2009-06-16  Ian Lance Taylor  <iant@google.com>
299
300         * vec.h (VEC_stack_alloc): Define different version if
301         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
302         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
303         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
304         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
305
306 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
307
308         * config.gcc (extra_headers): Add ia32intrin.h for x86.
309
310         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
311         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
312         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
313         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
314         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
315         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
316         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
317         (bdesc_special_args): Add __builtin_ia32_rdtsc and
318         __builtin_ia32_rdtscp.
319         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
320         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
321         and __builtin_ia32_rorhi.
322         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
323         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
324         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
325         (ix86_expand_args_builtin): Likewise.
326         (ix86_expand_special_args_builtin): Likewise.
327
328         * config/i386/i386.md (UNSPECV_RDTSCP): New.
329         (UNSPECV_RDTSC): Likewise.
330         (UNSPECV_RDPMC): Likewise.
331         (*bsr): Renamed to ...
332         (bsr): This
333         (*bsr_rex64): Renamed to ...
334         (bsr_rex64): This.
335         (rdpmc): New.
336         (*rdpmc): Likewise.
337         (*rdpmc_rex64): Likewise.
338         (rdtsc): Likewise.
339         (*rdtsc): Likewise.
340         (*rdtsc_rex64): Likewise.
341         (rdtscp): Likewise.
342         (*rdtscp): Likewise.
343         (*rdtscp_rex64): Likewise.
344
345         * config/i386/ia32intrin.h: New.
346
347         * config/i386/x86intrin.h: Include <ia32intrin.h>.
348
349 2009-06-16  Ian Lance Taylor  <iant@google.com>
350
351         * ira-build.c (copy_info_to_removed_store_destinations):
352         Initialize parent_a.
353
354 2009-06-16  Ian Lance Taylor  <iant@google.com>
355
356         * c-decl.c (grokdeclarator): Change size_varies to bool.
357
358 2009-06-16  Ian Lance Taylor  <iant@google.com>
359
360         * sel-sched.c: Make forward declarations of move_op_hooks and
361         fur_hooks explicitly extern.
362
363 2009-06-16  Ian Lance Taylor  <iant@google.com>
364
365         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
366         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
367
368 2009-06-16  Ian Lance Taylor  <iant@google.com>
369
370         * resource.c (mark_referenced_resources): Change
371         include_delayed_effects parameter to bool.  Change all callers.
372         (mark_end_of_function_resources): Likewise.
373         * reorg.c (insn_references_resource_p): Likewise.
374         (insn_sets_resource_p): Likewise.
375         * resource.h (mark_referenced_resources): Update declaration.
376         (mark_end_of_function_resources): Update declaration.
377
378 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
379
380         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
381
382 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
383
384         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
385         GCC can bootstrap on AIX with GNU Binutils 2.20.
386
387 2009-06-16  Ian Lance Taylor  <iant@google.com>
388
389         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
390
391 2009-06-16  Ian Lance Taylor  <iant@google.com>
392
393         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
394         inline, not extern inline.
395         (exact_log2): Likewise.
396         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
397         test CLZ_HWI.
398         (exact_log2): Likewise, but don't test CTZ_HWI.
399
400 2009-06-16  Ian Lance Taylor  <iant@google.com>
401
402         * bitmap.c (bitmap_clear): Don't declare as inline.
403         * gimple.c (gimplify_assign): Likewise.
404         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
405         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
406         (sched_scan_info): Remove duplicate definition.
407
408 2009-06-16  Ian Lance Taylor  <iant@google.com>
409
410         * c-common.c (skip_evaluation): Don't define.
411         (c_inhibit_evaluation_warnings): Define global variable.
412         (overflow_warning): Check c_inhibit_evaluation_warnings rather
413         than skip_evaluation.
414         (convert_and_check, warn_for_div_by_zero): Likewise.
415         * c-common.h (skip_evaluation): Don't declare.
416         (c_inhibit_evaluation_warnings): Declare.
417         * c-parser.c (c_parser_typeof_specifier): Set
418         c_inhibit_evaluation_warnings rather than skip_evaluation.
419         (c_parser_conditional_expression): Likewise.
420         (c_parser_binary_expression): Likewise.
421         (c_parser_sizeof_expression): Likewise.
422         (c_parser_alignof_expression): Likewise.
423         * c-typeck.c (build_indirect_ref): Check
424         c_inhibit_evaluation_warnings rather than skip_evaluation.
425         (build_conditional_expr, build_binary_op): Likewise.
426
427 2009-06-16  Richard Guenther  <rguenther@suse.de>
428
429         * tree-ssa-alias.c (is_escape_site): Remove.
430         * tree-ssa-alias.h (enum escape_type): Remove.
431         (is_escape_site): Likewise.
432         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
433         via casts and asms without deferring to is_escape_site.
434
435 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
436
437         PR middle-end/40446
438         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
439         use gen_lowpart if op0 has complex mode.
440
441 2009-06-16  Richard Guenther  <rguenther@suse.de>
442
443         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
444         variables add them to ESCAPED.
445         (find_func_aliases): Do not make all indirectly stored values escaped.
446
447 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
448
449         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
450         make_decl_one_only.
451
452 2009-06-16  Martin Jambor  <mjambor@suse.cz>
453
454         PR tree-optimization/40432
455         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
456         check whether we need to force gimple register operand.
457
458 2009-06-16  Martin Jambor  <mjambor@suse.cz>
459
460         PR tree-optimization/40413
461         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
462         build_ref_for_offset.
463         (propagate_subacesses_accross_link): Fix a typo in a comment.
464
465 2009-06-16  Ira Rosen  <irar@il.ibm.com>
466
467         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
468         with additional parameter.
469         * tree-vectorizer.h (enum vect_def_type): Add new value
470         vect_nested_cycle.
471         (enum vect_relevant): Add comments.
472         (vect_is_simple_reduction): Add new argument.
473         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
474         Detect nested cycles.
475         (vect_is_simple_reduction): Update documentation, add an argument to
476         distinguish inner-loop reduction from nested cycle, detect nested
477         cycles, fix printings and indentation, don't swap operands in case
478         of nested cycle.
479         (get_initial_def_for_reduction): Handle subtraction.
480         (vect_create_epilog_for_reduction): Add new argument to specify
481         reduction variable.
482         (vect_finalize_reduction): Handle subtraction, fix comments.
483         (vectorizable_reduction): Handle nested cycles. In case of nested
484         cycle keep track of the reduction variable position. Call 
485         vect_is_simple_reduction with additional parameter. Use original 
486         statement code in reduction epilogue for nested cycle. Call
487         vect_create_epilog_for_reduction with additional parameter.
488         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
489         inner-loop vectorization.
490         (vect_recog_widen_sum_pattern): Likewise.
491         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
492         and reductions.
493         (vect_mark_stmts_to_be_vectorized): Likewise.
494         (vect_get_vec_def_for_operand): Handle nested cycles.
495
496 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
497
498         * doc/invoke.texi (Debugging Options): Fix option index entries
499         for -fdump-statistics, -frandom-seed add entries for
500         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
501         (FRV Options): Fix entries for -mTLS, -mtls.
502         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
503         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
504         (M68hc1x Options): Fix @itemx for -mnominmax.
505         (MCore Options): Fix entry for -mno-lsim.
506         (MMIX Options): Fix entry for -mabi=mmixware.
507         (PDP-11 Options): Fix entry for -mbcopy-builtin.
508
509 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
510
511         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
512         Mention the plugin mode of gengtype.
513         * doc/gty.texi (Source Files Containing Type Information): Likewise.
514         * gengtype.c: Updated copyright.
515         (plugin_files, nb_plugin_files) Added new static variables.
516         (measure_input_list) Care about plugin_files.
517         (write_rtx_next): Added early return in plugin mode.
518         (create_file): Updated copyright year in generated file. Added
519         asserts.
520         (oprintf): Added early return if NULL outf.
521         (get_output_file_with_visibility): Care of plugin_files.
522         (get_output_file_name): May return null.
523         (write_local): Added early return.
524         (put_mangled_filename): Ditto.
525         (finish_root_table): Added check for base_files.
526         (write_roots): Care about null when plugins.
527         (main): Added plugin mode.
528
529 2009-06-15  Ian Lance Taylor  <iant@google.com>
530
531         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
532         * gcov.c (read_count_file): Add braces around variables declared
533         before label.
534
535         * c.opt (Wjump-misses-init): New warning.
536         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
537         -Wall and -Wc++-compat if not already set.
538         (c_common_post_options): Clear warn_jump_misses_init if it was not
539         set.
540         * c-decl.c (struct c_binding): Change type field to a union with
541         new label field.  Make it the first field in the struct.  Update
542         references to type to use u.type instead.
543         (struct c_spot_bindings): Define.
544         (struct c_goto_bindings): Define.
545         (c_goto_bindings_p): Define, along with VECs.
546         (struct c_label_vars): Define.
547         (struct c_scope): Add has_label_bindings field.
548         (bind_label, set_spot_bindings): New static functions.
549         (decl_jump_unsafe, update_spot_bindings): New static functions.
550         (update_label_decls): New static function.
551         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
552         Update binding u.label field to shadowed field.
553         (c_binding_start_stmt_expr): New function.
554         (c_binding_end_stmt_expr): New function.
555         (pushdecl): Don't call c_begin_vm_scope.
556         (make_label): Add defining and p_label_vars parameters.  Change
557         all callers.
558         (lookup_label): Correct test for whether a label has not yet been
559         defined.  Call bind_label rather than bind.
560         (warn_about_goto): New static function.
561         (lookup_label_for_goto): New function.
562         (declare_label): Call bind_label rather than bind.
563         (check_earlier_gotos): New static function.
564         (define_label): Don't give errors about jumping into statement
565         expressions or scopes of variably modified types.  Call
566         set_spot_bindings and check_earlier_gotos.  Call bind_label
567         instead of bind.  Don't set label_context_stack_se or
568         label_context_stack_vm.
569         (c_get_switch_bindings): New function.
570         (c_release_switch_bindings): New function.
571         (c_check_switch_jump_warnings): New function.
572         (start_function): Don't set label_context_stack_se or
573         label_context_stack_vm.
574         (finish_function): Likewise.
575         * c-typeck.c (label_context_stack_se): Don't define.
576         (label_context_stack_vm): Don't define.
577         (c_finish_goto_label): Call lookup_label_for_goto rather than
578         lookup_label.  Don't give errors about jumping into a statement
579         expression or the scope of a variably modified type.  Don't set
580         label_context_stack_se or label_context_stack_vm.
581         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
582         fields.  Add bindings field.
583         (c_start_case): Don't set deleted fields.  Set bindings field.
584         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
585         or blocked_vm.  Call c_check_switch_jump_warnings.
586         (c_finish_case): Don't test blocked_stmt_expr field.  Call
587         c_release_switch_bindings.
588         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
589         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
590         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
591         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
592         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
593         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
594         (c_begin_vm_scope, c_end_vm_scope): Don't define.
595         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
596         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
597         (C_DECL_UNJUMPABLE_VM): Don't define.
598         (C_DECL_UNDEFINABLE_VM): Don't define.
599         (struct c_label_list): Don't define.
600         (struct c_label_context_se): Don't define.
601         (struct c_label_context_vm): Don't define.
602         (struct c_spot_bindings): Declare.
603         (c_bindings_start_stmt_expr): Declare.
604         (c_bindings_end_stmt_expr): Declare.
605         (lookup_label_for_goto): Declare.
606         (c_get_switch_bindings, c_release_switch_bindings): Declare.
607         (c_check_switch_jump_warnings): Declare.
608         (label_context_stack_se, label_context_stack_vm): Don't declare.
609         (c_finish_goto_label): Update declaration.
610         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
611         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
612         (Warning Options): Document -Wjump-misses-init.
613
614 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
615
616         * tree-object-size.c (addr_object_size): Fix a pasto in the last
617         change.
618
619 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
620
621         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
622
623 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
624
625         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
626
627 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
628
629         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
630
631 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
632
633         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
634         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
635         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
636         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
637         * dwarf2asm.c (dw2_force_const_mem): Update call to
638         make_decl_one_only.
639         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
640         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
641         * langhooks.c (lhd_comdat_group): Remove.
642         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
643         * tree.h (DECL_COMDAT_GROUP): New.
644         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
645         (tree_decl_with_vis): Add comdat_group. Remove one_only.
646         (make_decl_one_only): Change signature.
647         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
648         make_decl_one_only.
649         (make_decl_one_only): Change signature.
650         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
651
652 2009-06-15  Richard Guenther  <rguenther@suse.de>
653
654         PR middle-end/40439
655         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
656
657 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
658
659         * tree-ssa-math-opts.c: Remove extra divide.
660
661 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
662
663         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
664
665 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
666
667         * passes.c: Add bswap pass.
668         * tree-pass.h: Add pass_optimize_bswap declaration.
669         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
670         Include rtl.h, expr.h and optabs.h for optab_handler check.
671         (struct symbolic_number, pass_optimize_bswap): New definition.
672         (do_shift_rotate, verify_symbolic_number_p): New functions.
673         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
674         (gate_optimize_bswap): New function.
675         * tree.c (widest_int_cst_value): New function.
676         * tree.h (widest_int_cst_value): Prototype added.
677
678 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
679
680         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
681         REG_EQUAL/REG_EQUIV notes.
682
683 2009-06-14  Richard Guenther  <rguenther@suse.de>
684
685         PR middle-end/40389
686         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
687         has its address taken if NRV was applied and it is addressable.
688         * tree-ssa-structalias.c (get_constraint_for_address_of): New
689         function split out from ...
690         (get_constraint_for_1): ... here.
691         (handle_rhs_call): Use it to mark the return slot escaped if
692         it is addressable and NRV was applied.
693
694 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
695
696         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
697         Change first argument type to location_t.
698         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
699         Do not set input_location.
700         Use loc instead of input_location throughout.
701
702 2009-06-13  Richard Guenther  <rguenther@suse.de>
703
704         PR tree-optimization/40421
705         * tree-predcom.c (should_unroll_loop_p): Remove.
706         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
707
708 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
709
710         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
711         Add location argument.
712
713 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
714
715         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
716         build_decl.
717         * config/s390/s390.c (s390_build_builtin_va_list): Same.
718         (s390_gimplify_va_arg): Pass location to create_artificial_label.
719         * config/spu/spu-protos.h: Add location to
720         spu_resolve_overloaded_builtin.
721         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
722         spu_build_builtin_va_list.
723         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
724         argument.  Pass location to build_function_call_vec.
725         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
726         build_decl.
727         (emit_fpu_switch): Same.
728         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
729         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
730         to build_decl and create_artificial_label.
731         (xtensa_gimplify_va_arg_expr): Same.
732         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
733         (xstormy16_gimplify_va_arg_expr): Same.
734         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
735         * config/arm/arm.c (arm_build_builtin_va_list): Same.
736         * config/mips/mips.c (mips_build_builtin_va_list): Same.
737         (mips16_build_function_stub): Same.
738         (mips16_build_call_stub): Same.
739
740 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
741
742         PR target/40327
743         * arm/constraints.md (Pa, Pb): New constraints.
744         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a 
745         split pattern to deal with them.
746
747 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
748
749         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
750         fix index entry for -Xpreprocessor.
751
752 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
753
754         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
755         Add location argument to build_decl call.
756         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
757         (rs6000_init_builtins): Same.
758         (spe_init_builtins): Same.
759         (rs6000_gimplify_va_arg): Add location argument to
760         create_artificial_label call.
761
762 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
763
764         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
765         * combine-stack-adj.c (pass_stack_adjustments): Use it.
766         * Makefile.in: Fix GGC dependency for gcse.o.
767
768 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
769
770         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
771         * gimple-pretty-print.c (dump_gimple_stmt): Same.
772         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
773         created.
774         * c-parser.c (c_parser_binary_expression): Use current column while
775         building binary operations.
776         * common.opt (fshow-column): Enable by default.
777         * tree-vrp.c (check_array_ref): Use warning_at.
778         (check_array_bounds): Use location from call back if expr has no
779         location.
780         * tree.h: Add location argument to maybe_fold_*.
781         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
782         (maybe_fold_offset_to_array_ref): Add location argument and use it.
783         (maybe_fold_offset_to_component_ref): Same.
784         (maybe_fold_offset_to_reference): Same.
785         (maybe_fold_offset_to_address): Same.
786         (maybe_fold_stmt_indirect): Same.
787         (maybe_fold_stmt_addition): Same.
788         (fold_stmt_r): Pass location to maybe_fold_*.
789         (fold_gimple_assign): Same.
790         * c-tree.h: Add location argument to finish_decl,
791         default_function_array_conversion, store_init_value.
792         * c-decl.c (define_label): Use error_at.
793         (c_make_fname_decl): Pass location to finish_decl.
794         (finish_decl): New location argument.
795         (build_compound_literal): Pass location to store_init_value.
796         (grokdeclarator): Pass location to finish_decl.
797         (grokfield): Same.
798         * c-typeck.c (array_to_pointer_conversion): New location argument.
799         (function_to_pointer_conversion): Same.
800         (default_function_array_conversion): Same.
801         (parser_build_unary_op): Pass location to overflow_warning.
802         (parser_build_binary_op): Same.  Use warning_at.
803         (build_unary_op): Pass location to array_to_pointer_conversion.
804         (build_c_cast): Pass location to digest_init.
805         (build_modify_expr): New location argument.
806         (convert_for_assignment): Same.
807         (store_init_value): Same.
808         (digest_init): Same.
809         (output_init_element): Pass location to digest_init and
810         array_to_pointer_conversion.
811         (c_finish_return): Pass location to convert_for_assignment.
812         * gimplify.c (gimplify_conversion): Pass location to
813         maybe_fold_offset_to_address.
814         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
815         to maybe_fold_stmt_addition.
816         * c-omp.c (c_finish_omp_atomic): Pass new location to
817         build_modify_expr.
818         (c_finish_omp_for): Same.
819         * c-common.c (overflow_warning): New argument.
820         * c-common.h: New argument to build_modify_expr, overflow_warning.
821         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
822         finish_decl.
823         (c_parser_initializer): Pass location to
824         default_function_array_conversion.
825         (c_parser_initelt): Same.
826         (c_parser_initval): Same.
827         (c_parser_asm_operands): Same.
828         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
829         (c_parser_conditional_expression): Same.
830         (c_parser_binary_expression): Add location info to stack.  Use it.
831         (c_parser_unary_expression): Pass location to
832         default_function_array_conversion, parser_build_unary_op,
833         build_indirect_ref, c_parser_postfix_expression_after_primary.
834         (c_parser_postfix_expression_after_primary): New location argument.
835         Use it.
836         (c_parser_expression_conv): Pass location to
837         default_function_array_conversion.
838         (c_parser_expr_list): Same.
839         (c_parser_omp_atomic): Same.
840         (c_parser_omp_for_loop): Same.
841         * c-tree.h: (struct c_declarator): Add comment to id_loc.
842         (build_array_declarator): New argument.
843         * c-decl.c (build_array_declarator): Add location argument.
844         (grokdeclarator): Set id_loc for cdk_array.
845         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
846         build_array_declarator.
847         * tree.c (build_omp_clause): Add location argument.
848         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
849         (OMP_CLAUSE_LOCATION): New macro.
850         (struct tree_omp_clause): Add location field.
851         (build_omp_clause): Add argument.
852         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
853         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
854         build_omp_clause.
855         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
856         (cp_parser_omp_clause_collapse): Same.
857         (cp_parser_omp_clause_default): Same.
858         (cp_parser_omp_clause_if): Same.
859         (cp_parser_omp_clause_nowait): Same.
860         (cp_parser_omp_clause_num_threads): Same.
861         (cp_parser_omp_clause_ordered): Same.
862         (cp_parser_omp_clause_schedule): Same.
863         (cp_parser_omp_clause_untied): Same.
864         (cp_parser_omp_for_loop): Same.
865         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
866         * c-tree.h (c_start_case): Add location argument.
867         (c_process_expr_stmt): Same.
868         (c_finish_goto_*): Same.
869         * tree-parloops.c (initialize_reductions): Pass location to
870         build_omp_clause.
871         (create_parallel_loop): Same.
872         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
873         (gfc_trans_omp_reduction_list): Same.
874         (gfc_trans_omp_clauses): Same.
875         (gfc_trans_omp_do): Same.
876         * c-typeck.c (c_finish_goto_label): Same.
877         (c_finish_goto_ptr): New location argument.
878         (c_start_case): Same.
879         (emit_side_effect_warnings): Same.
880         (c_process_expr_stmt): Same.
881         (c_finish_stmt_expr): Same.
882         (c_finish_omp_clauses): Use error_at instead of error.
883         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
884         build_omp_clause.
885         * c-omp.c (c_split_parallel_clauses): New location argument.
886         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
887         to build_omp_clause.
888         (convert_local_reference_stmt): Same.
889         (convert_gimple_call): Same.
890         * c-common.h (c_split_parallel_clauses): New argument.
891         * c-parser.c (c_parser_statement_after_labels): Pass location to
892         c_finish_goto_label.
893         (c_parser_switch_statement): Pass location to c_start_case.
894         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
895         and c_process_expr_stmt.
896         (c_parser_omp_variable_list): Add location argument.
897         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
898         (c_parser_omp_clause_default): Same.
899         (c_parser_omp_clause_if): Same.
900         (c_parser_omp_clause_num_threads): Same.
901         (-c_parser_omp_clause_ordered): Same.
902         (c_parser_omp_clause_reduction): Pass location to
903         c_parser_omp_variable_list.
904         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
905         (c_parser_omp_clause_untied): Same.
906         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
907         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
908
909         * c-tree.h (check_for_loop_decls, undeclared_variable,
910         build_component_ref, build_array_ref, build_external_ref,
911         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
912         build_conditional_expr, build_compound_expr, c_cast_expr,
913         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
914         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
915         argument.
916         * c-semantics.c (build_stmt): Same.
917         (build_case_label): Same.
918         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
919         (undeclared_variable): New argument.
920         (make_label): Same.
921         (lookup_label): Pass location on down.
922         (define_label): Same.
923         (finish_decl): Same.
924         (build_compound_literal): Same.
925         (finish_struct): Same.
926         (finish_function): Do not set location here.
927         (check_for_loop_decls): New argument.
928         * tree.c (save_expr): Set location.
929         (build_empty_stmt): New argument.
930         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
931         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
932         * builtins.c (gimplify_va_arg_expr): Use locations.
933         (expand_builtin_sync_operation): Same.
934         * c-typeck.c (build_component_ref): New argument.
935         (build_array_ref): Same.
936         (build_external_ref): Same.
937         (c_expr_sizeof_expr): Same.
938         (c_expr_sizeof_type): Same.
939         (parser_build_unary_op): Same.
940         (build_conditional_expr): Same.
941         (build_compound_expr): Pass location on down.
942         (build_compound_expr): New argument.
943         (build_c_cast): Same.
944         (c_cast_expr): Same.
945         (build_asm_expr): Same.
946         (c_finish_return): Same.
947         (c_process_expr_stmt): Pass location on down.
948         (c_finish_stmt_expr): New argument.
949         (push_clenaup): Same.
950         (c_finish_omp_parallel): Same.
951         (c_finish_omp_task): Same.
952         * gimplify.c (gimplify_call_expr): Pass location on down.
953         * c-omp.c (c_finish_omp_master): New argument.
954         (c_finish_omp_critical): Same.
955         (c_finish_omp_ordered): Same.
956         (c_finish_omp_barrier): Same.
957         (-c_finish_omp_taskwait): Same.
958         (c_finish_omp_atomic): Same.
959         (c_finish_omp_flush): Same.
960         * tree-inline.c (copy_tree_body_r): Pass location on down.
961         (inline_forbidden_p): Remove use of input_location.
962         * c-gimplify.c (c_build_bind_expr): New argument.
963         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
964         (c_sizeof_or_alignof_type): New argument.
965         (c_alignof_expr): Same.
966         (build_va_arg): Same.
967         (c_add_case_label): Same.
968         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
969         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
970         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
971         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
972         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
973         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
974         New argument.
975         * stub-objc.c (objc_build_selector_expr): Same.
976         (objc_build_throw_stmt): Same.
977         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
978         (c_parser_initelt): Same.
979         (c_parser_compound_statement): Same.
980         (c_parser_compound_statement_nostart): Same.
981         (c_parser_label): Same.
982         (c_parser_statement_after_labels): Same.
983         (c_parser_if_body): Same.
984         (c_parser_else_body): Same.
985         (c_parser_if_statement): Same.
986         (c_parser_switch_statement): Same.
987         (c_parser_while_statement): Same.
988         (c_parser_do_statement): Same.
989         (c_parser_for_statement): Same.
990         (c_parser_asm_statement): Same.
991         (c_parser_conditional_expression): Same.
992         (c_parser_binary_expression): Same.
993         (c_parser_cast_expression): Same.
994         (c_parser_unary_expression): Same.
995         (c_parser_sizeof_expression): Same.
996         (c_parser_alignof_expression): Same.
997         (c_parser_postfix_expression): Same.
998         (c_parser_expression): Same.
999         (c_parser_objc_receiver): Same.
1000         (c_parser_omp_variable_list): Same.
1001         (c_parser_omp_structured_block): Same.
1002         (c_parser_omp_atomic): New argument.
1003         (c_parser_omp_barrier): Same.
1004         (c_parser_omp_critical): Same.
1005         (c_parser_omp_flush): Pass location on down.
1006         (c_parser_omp_for_loop): New argument.
1007         (c_parser_omp_for): Same.
1008         (c_parser_omp_master): Same.
1009         (c_parser_omp_ordered): Same.
1010         (c_parser_omp_sections_scope): Same.
1011         (c_parser_omp_sections): Same.
1012         (c_parser_omp_parallel): Same.
1013         (c_parser_omp_single): Same.
1014         (c_parser_omp_task): Same.
1015         (c_parser_omp_taskwait): Pass location on down.
1016         (c_parser_omp_construct): Same.
1017         (c_parser_omp_threadprivate): Same.
1018         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
1019         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
1020         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
1021         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
1022         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
1023         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
1024         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
1025         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
1026         config/i386/i386.c, stmt.c:
1027         Add location argument to the following function definitions and/or
1028         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
1029         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
1030         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
1031         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
1032         do_case, c_finish_bc_stmt, build_compound_literal,
1033         build_function_call.
1034         * c-decl.c (build_compound_literal): Add location argument.
1035         Make all diagnostic calls use location.
1036         (start_struct): Same.
1037         (finish_struct): Same.
1038         (start_enum): Same.
1039         (build_enumerator): Same.
1040         (start_function): Same.
1041         (grokdeclarator): Make all diagnostic calls use location.
1042         (store_parm_decls_oldstyle): Same.
1043         * c-typeck.c (build_function_call): Add location argument.
1044         Make all diagnostic calls use location.
1045         (do_case): Same.
1046         (c_finish_bc_stmt): Same.
1047         * tree-nested.c (get_trampoline_type): Add argument.
1048         Pass location to build_decl.
1049         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
1050         * rtl.h (RTL_LOCATION): New.
1051         * c-common.c (c_add_case_label): Add location argument.
1052         Make all diagnostic calls use location.
1053         * c-common.h: Add location argument to make_fname_decl, do_case,
1054         c_add_case_label, build_function_call, resolve_overloaded_builtin.
1055         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
1056         Set it appropriately for every case.  Pass enum_loc to start_enum
1057         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
1058         parser_xref_tag.
1059         (c_parser_struct_or_union_specifier): Save location.  Use it for
1060         start_struct, finish_struct, and parser_xref_tag.
1061
1062 2009-06-12  Ian Lance Taylor  <iant@google.com>
1063
1064         * fold-const.c (fold_unary): Rename local variable and to and_expr.
1065
1066         * c-opts.c (c_common_handle_option): For -Wc++-compat set
1067         cpp_opts->warn_cxx_operator_names.
1068
1069 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1070
1071         PR tree-opt/38865
1072         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
1073         is returns NULL and OP is a VCE, look through the VCE.
1074
1075 2009-06-12  Ian Lance Taylor  <iant@google.com>
1076
1077         PR bootstrap/40430
1078         * collect2.c (main): Use CONST_CAST2 in code inside #if
1079         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
1080
1081 2009-06-12  Joey Ye  <joey.ye@intel.com>
1082
1083         PR middle-end/39146
1084         * cfgexpand.c (get_decl_align_unit): Update
1085         max_used_stack_slot_alignment with align instead of
1086         stack_alignment_needed.
1087
1088         * function.c (assign_stack_local_1): Update
1089         max_used_stack_slot_alignment with alignment_in_bits instead
1090         of stack_alignment_needed.
1091         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
1092         here.
1093
1094 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
1095
1096         * dwarf2out.c (last_var_location_insn): New variable.
1097         (dwarf2out_end_epilogue): Clear last_var_location_insn.
1098         (dwarf2out_var_location): Don't record anything after last real
1099         insn.  Only change labels if there were any real instructions
1100         in between last note and this one, or if changed sections.
1101
1102 2009-06-11  Richard Henderson  <rth@redhat.com>
1103
1104         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
1105         note when storing the frame pointer in a register.
1106         (FRP): Don't redefine to nothing for epilogue.
1107         (alpha_expand_epilogue): Mark register and sp restores.
1108         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
1109
1110         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
1111         when gen_lowpart is needed.
1112
1113 2009-06-11  Richard Henderson  <rth@redhat.com>
1114
1115         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
1116
1117         * dwarf2out.c (need_data_align_sf_opcode): New.
1118         (div_data_align): Move earlier.
1119         (def_cfa_1, reg_save): Use it.
1120
1121 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
1122
1123         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
1124         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
1125         (ix86_handle_option): Handle OPT_mcrc32.
1126         (ix86_target_string): Add -mcrc32.
1127         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
1128
1129         * config/i386/i386.h (TARGET_CRC32): New.
1130
1131         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
1132         (sse4_2_crc32di): Likewise.
1133
1134         * config/i386/i386.opt (mcrc32): New.
1135
1136         * doc/invoke.texi: Document -mcrc32.
1137
1138 2009-06-11  Richard Henderson  <rth@redhat.com>
1139
1140         * common.opt (gdwarf-): Accept a version number.
1141         * doc/invoke.texi (gdwarf-): Update docs.
1142         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
1143         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
1144         version level, and record it.
1145
1146         * dwarf2.h (DW_CIE_VERSION): Remove.
1147         * dwarf2out.c (DWARF_VERSION): Remove.
1148         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
1149         (output_call_frame_info): Use CIE version 3 for dwarf3,
1150         or if the return register column is out of range for version 1.
1151         (dwarf_stack_op_name): Add all dwarf3 values.
1152         (DEBUG_PUBTYPES_SECTION): New.
1153         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
1154         encoding change for dwarf3.
1155         (output_die) [dw_val_class_die_ref]: Likewise.
1156         (output_compilation_unit_header): Emit correct version for dwarf3.
1157         (output_line_info): Likewise.
1158         (output_pubnames): Update for DWARF_VERSION removal.
1159         (output_aranges): Likewise.
1160         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
1161         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
1162         (dwarf2out_finish): Likewise.
1163
1164 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
1165
1166         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
1167         in r148403.
1168
1169 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
1170
1171         PR c/39252
1172         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
1173         * builtins.c (expand_builtin_unreachable): New function.
1174         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
1175         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
1176         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
1177         successors.
1178         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
1179         searching for missing barriers.
1180
1181 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1182
1183         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
1184         when -fprofile-generate* was passed.
1185         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
1186
1187 2009-06-11  Anthony Green  <green@moxielogic.com>
1188
1189         * config/moxie/moxie.md: Define length attribute for all instructions.
1190         (rCC): Define.
1191         (*b<cond:code>): Support limited branch ranges for new PC-relative
1192         branch instructions.
1193         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
1194
1195 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
1196
1197         * config/i386/i386.c (min_insn_size): Use get_attr_length
1198         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
1199         For __asm return 0.
1200
1201         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
1202         instead of emit_insn_before.
1203
1204 2009-06-10  Ian Lance Taylor  <iant@google.com>
1205
1206         PR bootstrap/40408
1207         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
1208         GIMPLE_SWITCH.
1209
1210 2009-06-10  Revital Eres  <eres@il.ibm.com>
1211
1212         * passes.c (init_optimization_passes): Reschedule
1213         predictive-commoning pass before complete unroll pass.
1214
1215 2009-06-10  Martin Jambor  <mjambor@suse.cz>
1216
1217         * cgraph.c (cgraph_node_can_be_local_p): New function.
1218         (cgraph_make_node_local): New function.
1219         * cgraph.h (cgraph_node_can_be_local_p): Declare.
1220         (cgraph_make_node_local): Declare.
1221
1222 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
1223
1224         * tree.h (tree_base): Add packed_flag and user_align fields.
1225         Decrease size of spare field.
1226         (TYPE_USER_ALIGN): Use user_align from tree_base.
1227         (DECL_USER_ALIGN): Likewise.
1228         (TYPE_PACKED): Use packed_flag from tree_base.
1229         (DECL_PACKED): Likewise.
1230         (tree_type): Delete packed_flag and user_align fields.  Widen
1231         precision field.  Widen mode field and shuffle fields to align
1232         mode on an 8-bit boundary.
1233         (tree_decl_common): Delete decl_flag_1 and user_align fields.
1234         Renumber decl_flag_* fields.  Fix comments.  Widen
1235         decl_common_unused field.
1236         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
1237         (DECL_EXTERNAL): Likewise.
1238         (DECL_BIT_FIELD): Likewise.
1239         (DECL_NONADDRESSABLE_P): Likewise.
1240         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
1241         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
1242
1243 2009-06-10  Ian Lance Taylor  <iant@google.com>
1244
1245         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
1246         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
1247         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
1248         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
1249         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
1250         DEF_VEC_ALLOC_FUNC_P.
1251         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
1252         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
1253         DEF_VEC_ALLOC_FUNC_O.
1254         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
1255         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
1256         DEF_VEC_ALLOC_FUNC_I.
1257         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
1258         (vec_stack_p_reserve_exact_1): Declare.
1259         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
1260         (vec_stack_free): Declare.
1261         (VEC_stack_alloc): Define.
1262         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
1263         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
1264         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
1265         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
1266         for void_p.
1267         (stack_vecs): New static variable.
1268         (vec_stack_p_reserve_exact_1): New function.
1269         (vec_stack_o_reserve_1): New static function.
1270         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
1271         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
1272         (vec_stack_free): New function.
1273         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
1274         (VEC_df_ref_stack_alloc): Define.
1275         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
1276         DEF_VEC_ALLOC_P_STACK.
1277         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
1278         (struct df_collection_rec): Change _vec fields to VEC.  Remove
1279         _use fields.
1280         (df_free_collection_rec): Adjust for new fields.
1281         (df_insn_rescan): Use new df_collection_rec fields.
1282         (df_notes_rescan, df_canonize_collection_rec): Likewise.
1283         (df_ref_create_structure, df_ref_record): Likewise.
1284         (df_get_conditional_uses, df_get_call_refs): Likewise.
1285         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
1286         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
1287         (df_record_exit_block_uses, df_bb_verify): Likewise.
1288         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
1289         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
1290         Remove count parameter.  Change return type to void.  Change all
1291         callers.
1292         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
1293         Remove count parameter.  Change return type to void.  Change all
1294         callers.
1295         (df_install_refs): Change old_vec parameter to VEC.  Remove count
1296         parameter.  Change all callers.
1297         (df_install_mws): Change old_vec parameter to VEC.  Remove count
1298         parameter.  Change all callers.
1299         (df_refs_verify): Change new_rec parameter to VEC.  Change call
1300         callers.
1301         (df_mws_verify): Likewise.
1302
1303 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
1304
1305         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
1306
1307 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
1308
1309         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
1310
1311 2009-06-10  Anthony Green  <green@moxielogic.com>
1312
1313         * config/moxie/crti.asm: New file.
1314         * config/moxie/crtn.asm: New file.
1315         * config/moxie/moxie.c: New file.
1316         * config/moxie/moxie.h: New file.
1317         * config/moxie/sfp-machine.h: New file.
1318         * config/moxie/moxie-protos.h: New file.
1319         * config/moxie/t-moxie: Created.
1320         * config/moxie/t-moxie-softfp: Created.
1321         * config/moxie/moxie.md: Created.
1322         * config/moxie/constraints.md: Created.
1323         * config.gcc: Add moxie support.
1324         * doc/md.texi (Machine Constraints): Add moxie constraints.
1325         * doc/contrib.texi (Contributors): Mention moxie port.
1326         * doc/install.texi (Specific): Mention the moxie port.
1327
1328 2009-06-09  Ian Lance Taylor  <iant@google.com>
1329
1330         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
1331         compiling with C++.
1332         * optabs.c (optab_table): Only use designated initializers if
1333         HAVE_DESIGNATED_INITIALIZERS is defined.
1334         (convert_optab_table): Likewise.
1335         (init_optabs): Always call init_insn_codes if
1336         HAVE_DESIGNATED_INITIALIZERS is not defined.
1337
1338 2009-06-09  Ian Lance Taylor  <iant@google.com>
1339
1340         * targhooks.c (default_builtin_vectorized_function): Change fn
1341         parameter to unsigned int.
1342         (default_builtin_vectorized_conversion): Change code parameter to
1343         unsigned int.
1344         (default_builtin_reciprocal): Change fn parameter to unsigned int.
1345         * targhooks.h: Update declarations.
1346         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
1347         parameter to unsigned int.
1348
1349         * c-typeck.c (comptypes_check_enum_int): New static function.
1350         (comptypes_internal): Add enum_and_int_p parameter.  Change all
1351         callers.
1352         (comp_target_types): Add location parameter.  Change all callers.
1353         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
1354         Change all callers.
1355         (function_types_compatible_p, type_lists_compatible_p): Likewise.
1356         (build_conditional_expr): Add colon_loc parameter.  Change all
1357         callers.
1358         (convert_for_assignment): Add location parameter.  Change all callers.
1359         * c-parser.c (c_parser_conditional_expression): Pass location of
1360         colon to build_conditional_expr.
1361         * c-tree.h (build_conditional_expr): Update declaration.
1362
1363 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
1364
1365         * graphite.c: Revert previous patch.
1366
1367 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
1368
1369         PR bootstrap/40103
1370         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
1371
1372 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
1373
1374         * tree-ssa-loop-prefetch.c
1375         (loop_prefetch_arrays): Fixed a portability problem in printf format
1376         string.
1377
1378 2009-06-09  Martin Jambor  <mjambor@suse.cz>
1379
1380         PR tree-optimization/40351
1381         * tree-sra.c (propagate_subacesses_accross_link): Check that a
1382         refrence to a potential artifical subaccess can be constructed.
1383
1384 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
1385
1386         * config/sh/sh-protos.h (sh_optimization_options): Declare.
1387         (sh_override_options): Likewise.
1388         * config/sh/sh.c: Include params.h.
1389         (sh_optimization_options): New.
1390         (sh_override_options): Likewise.
1391         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
1392         (OVERRIDE_OPTIONS): Use sh_override_options.
1393
1394 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
1395
1396         * dwarf2out.c (emit_cfa_remember): New variable.
1397         (add_fde_cfi): If emit_cfa_remember, recurse to add
1398         DW_CFA_remember_state first.
1399         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
1400         instead just set emit_cfa_remember.
1401
1402 2009-06-08  Jan Hubicka  <jh@suse.cz>
1403
1404         PR debug/40126
1405         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
1406
1407 2009-06-08  Jan Hubicka  <jh@suse.cz>
1408
1409         PR middle-end/39834
1410         * cgraphunit.c (save_inline_function_body): Do not copy transform
1411         hooks for saved inline bodies.
1412         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
1413         for given function.
1414
1415 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
1416
1417         * jump.c (returnjump_p): Handle delayed branches.  Add missing
1418         function comment.
1419
1420 2009-06-08  Jan Hubicka  <jh@suse.cz>
1421
1422         PR middle-end/40102
1423         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
1424         original node might've been modified.
1425         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
1426
1427 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
1428
1429         * tree-object-size.c (addr_object_size): Add OSI argument.
1430         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
1431         (compute_builtin_object_size, expr_object_size): Adjust callers.
1432         (plus_stmt_object_size): Call addr_object_size instead of
1433         compute_builtin_object_size.
1434
1435 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
1436             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1437         
1438         * tree-ssa-loop-prefetch.c 
1439         (gather_memory_references): Introduced a counter for the number of 
1440         memory references.
1441         (anything_to_prefetch_p): Introduced a counter for the number of 
1442         prefetches.
1443         (is_loop_prefetching_profitable): New function with a cost model 
1444         for prefetching.
1445         (loop_prefetch_arrays): Use the new cost model to determine if 
1446         prefetching is profitable.
1447         * params.def (MIN_INSN_TO_PREFETCH_RATIO, 
1448         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
1449         * params.h (MIN_INSN_TO_PREFETCH_RATIO, 
1450         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
1451         * doc/invoke.texi (MIN_INSN_TO_PREFETCH_RATIO, 
1452         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
1453         
1454 2009-06-08  Michael Matz  <matz@suse.de>
1455
1456         PR debug/40012
1457         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
1458         partitions use the same.
1459         (expand_one_var): Deal with DECL_RTL sometimes begin set also
1460         for basevars of SSA_NAMEs.
1461         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
1462         to not expand them twice.
1463         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
1464         multiple places.
1465
1466 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
1467
1468         * common.opt (fcompare-debug=, fcompare-debug-second): New.
1469         (fdump-final-insns=, gtoggle): New.
1470         * doc/invoke.texi: Document them.
1471         * final.c (rest_of_clean_state): Dump final insn stream.
1472         * gcc.c (invoke_as): Hook in -fcompare-debug.
1473         (static_spec_functions): Add compare-debug-dump-opt,
1474         compare-debug-self-opt and compare-debug-auxbase-opt.
1475         (compare_debug, compare_debug_second, compare_debug_opt): New.
1476         (switches_debug_check, n_switches_debug_check): New.
1477         (debug_auxbase_opt, debug_check_temp_file): New.
1478         (process_command): Handle -fno-compare-debug, -fcompare-debug and
1479         -fcompare-debug=*.
1480         (do_self_spec): Handle arguments after switches.
1481         (do_spec_1): Add .gk extension to temp file basenames for compare.
1482         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
1483         (cc1_options): Use it instead of normal auxbase computation for
1484         the second compare-debug compilation.
1485         (compare_files): New.
1486         (main): Set up and implement compare debug mode.
1487         (compare_debug_dump_opt_spec_function): New.
1488         (compare_debug_self_opt_spec_function): New.
1489         (compare_debug_auxbase_opt_spec_function): New.
1490         * toplev.c (process_options): Handle flag_gtoggle,
1491         flag_dump_final_insns.
1492         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
1493         during -fcompare-debug-second compilation.
1494
1495 2009-06-07  Ian Lance Taylor  <iant@google.com>
1496
1497         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
1498         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
1499
1500         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
1501         with no default node.  Change warning with %H to warning_at.
1502         Don't clear warn_switch around case checking.
1503         * doc/invoke.texi (Warning Options): Clarify distinction between
1504         -Wswitch and -Wswitch-enum.
1505
1506 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
1507
1508         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
1509
1510 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
1511
1512         * gbl-ctors.h: Add header guard.
1513
1514 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
1515
1516         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
1517         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
1518         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
1519         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
1520         prototypes for removed functions.
1521         (expressions_equal_p): Move to ...
1522         * tree-ssa-sccvn.h: ... here and ...
1523         * matrix-reorg.c: ... adjust includes.
1524
1525 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
1526
1527         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
1528
1529 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
1530
1531         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
1532         (finish_function): Remove erroneous whitespace.
1533
1534 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
1535
1536         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
1537         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
1538
1539 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
1540
1541         * errors.c (internal_error): Commentary typo fix.
1542         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
1543         * tree-ssa-pre.c: Ditto.
1544
1545 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
1546
1547         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
1548         them is supposed to hold actual statements.
1549
1550 2009-06-06  Ian Lance Taylor  <iant@google.com>
1551
1552         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
1553         empty statements can now have attributes.
1554
1555 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
1556
1557         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
1558         * config/mips/mips.md: Ditto.
1559
1560 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
1561
1562         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
1563         _RELOCATABLE.
1564         (__eabi_uconvert): Likewise.
1565
1566 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
1567
1568         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
1569         CFI_* definitions with IN_GCC.
1570
1571 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
1572
1573         * xcoffout.h (xcoffout_source_line): Update prototype.
1574
1575 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1576
1577         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
1578         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
1579
1580 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
1581
1582         PR middle-end/40340
1583         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
1584         inlined_function_outer_scope_p blocks for artificial inlines
1585         even at -g0/-g1.
1586         * tree.c (tree_nonartificial_location): Rewrite using
1587         block_nonartificial_location.
1588
1589 2009-06-05  Revital Eres  <eres@il.ibm.com>
1590             Leehod Baruch  <leehod@il.ibm.com>
1591
1592         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
1593         (expand_expr_real_1): Remove comment.
1594         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
1595         Vectorize misaligned access when the target supports it.
1596         (vect_supportable_dr_alignment): Check for unaligned access support.
1597         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
1598         and remove asset.
1599
1600 2009-06-05  Julian Brown  <julian@codesourcery.com>
1601
1602         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
1603         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
1604
1605 2009-06-05  Richard Guenther  <rguenther@suse.de>
1606
1607         PR bootstrap/40350
1608         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
1609         as possibly unused.
1610
1611 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
1612
1613         * config/s390/s390.c (global_not_special_regno_p): New static inline.
1614         (save_gprs): Don't tell unwinder when a global register is saved.
1615         (s390_emit_epilogue): Emit needed epilogue unwind info.
1616
1617 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
1618
1619         * dwarf2out.c (deferred_asm_name): New.
1620         (add_name_and_src_coords_attributes): Defer creation of
1621         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
1622         computed yet.
1623         (move_linkage_attr): New.
1624         (dwarf2out_finish): Revisit deferrals and emit attributes at the
1625         right place.
1626
1627 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
1628
1629         * tree-nested.c (finalize_nesting_tree_1): Declare the
1630         frame_decl in the binding tree.
1631
1632 2009-06-04  Cary Coutant  <ccoutant@google.com>
1633
1634         * basic-block.h (struct basic_block_def): Add discriminator field.
1635         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
1636         callers.
1637         * debug.c (do_nothing_debug_hooks): Add additional entry.
1638         (debug_nothing_int_charstar_int): New function.
1639         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
1640         (debug_nothing_int_charstar_int): New declaration.
1641         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
1642         discriminator value in .loc directive.
1643         * final.c (last_discriminator): New variable.
1644         (discriminator): New variable.
1645         (final_start_function): Initialize above variables, pass current
1646         discriminator to debug hook.
1647         (notice_source_line): Check for discriminator change.
1648         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
1649         * sdbout.c (sdbout_source_line): New parameter.
1650         * tree-cfg.c (struct locus_discrim_map): New structure type.
1651         (discriminator_per_locus): New hash table.
1652         (build_gimple_cfg): Allocate and free discriminator hash table.
1653         (make_edges): Call assign_discriminator.
1654         (locus_map_hash): New function.
1655         (locus_map_eq): New function.
1656         (next_discriminator_for_locus): New function.
1657         (same_line_p): New function.
1658         (assign_discriminator): New function.
1659         (make_cond_expr_edges): Call assign_discriminator.
1660         (make_gimple_switch_edges): Likewise.
1661         (first_non_label_stmt): New function.
1662         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
1663         all callers.
1664         * xcoffout.c (xcoffout_source_line): Add new parameter.
1665
1666         * configure.ac (gcc_cv_as_discriminator): New configury check for
1667         gas support for discriminator.
1668         * configure: Regenerate.
1669         * config.in: Regenerate.
1670
1671 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1672
1673         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
1674         val after checking for integers.
1675
1676 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
1677
1678         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
1679         X64_REGPARM_MAX.
1680         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
1681         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
1682         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
1683         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
1684         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
1685         X64_SSE_REGPARM_MAX.
1686         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
1687         X64_SSE_REGPARM_MAX.
1688
1689 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
1690
1691         * gcc.c (report_times_to_file): New.
1692         (execute): Implement it.
1693         (process_command): Support -time=.
1694         * doc/invoke.texi: Document it.
1695
1696 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
1697
1698         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
1699         that have value exprs.
1700
1701 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
1702
1703         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
1704         declarations for constants until...
1705         (dw2_output_indirect_constant_1): ... this point.
1706
1707 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
1708
1709         PR target/10242
1710         * arm.md (arm_addsi3): Don't try to split an add with an
1711         eliminable register until after reload has completed.
1712
1713 2009-06-03  Ian Lance Taylor  <iant@google.com>
1714
1715         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
1716         * genattrtab.c (write_length_unit_log): Likewise.
1717         * genchecksum.c (dosum): Likewise.
1718         * gengtype.c (write_rtx_next): Likewise.
1719         (finish_root_table, write_roots): Likewise.
1720         * gimple.c (gimple_ops_offset_): Likewise.
1721         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
1722         * config/arc/arc.c (arc_attribute_table): Likewise.
1723         * config/arm/arm.c (arm_attribute_table): Likewise.
1724         * config/avr/avr.c (avr_attribute_table): Likewise.
1725         * config/crx/crx.c (crx_attribute_table): Likewise.
1726         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
1727         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
1728         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
1729         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
1730         * config/sh/sh.c (sh_attribute_table): Likewise.
1731         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
1732         * config/spu/spu.c (spu_attribute_table): Likewise.
1733         * config/v850/v850.c (v850_attribute_table): Likewise.
1734
1735         * config/alpha/alpha.c (vms_attribute_table): Make static.
1736         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
1737         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
1738         * config/mips/mips.c (mips_attribute_table): Likewise.
1739
1740         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
1741         $(SYSTEM_H).
1742         (cc1-checksum.o): Likewise.
1743
1744 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
1745
1746         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
1747
1748 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
1749
1750         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
1751         insn if it is changing sp.  Use gen_add3_insn instead of
1752         conditionally gen_addsi3 and gen_adddi3.
1753         (offset_below_red_zone_p): New static inline function.
1754         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
1755         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
1756         * config/rs6000/ppc-asm.h: Include auto-host.h.
1757         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
1758         CFI_RESTORE): Define.
1759         * config/rs6000/crtresxgpr.asm: Add unwind info.
1760         * config/rs6000/crtresxfpr.asm: Likewise.
1761         * config/rs6000/crtresgpr.asm: Likewise.
1762         * config/rs6000/crtresfpr.asm: Likewise.
1763         * config/rs6000/crtsavgpr.asm: Likewise.
1764         * config/rs6000/crtsavfpr.asm: Likewise.
1765
1766         * dwarf2out.c (output_cfi_directive): Pass 1 instead of
1767         0 to second argument of DWARF2_FRAME_REG_OUT macros.
1768
1769 2009-06-03  Julian Brown  <julian@codesourcery.com>
1770
1771         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
1772         words or less (including TImode) in core registers.
1773
1774 2009-06-03  Richard Guenther  <rguenther@suse.de>
1775
1776         PR middle-end/40328
1777         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
1778
1779 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
1780
1781         * statistics.c (statistics_counter_event): Do not record event 
1782         in pass dump if its number == -1.
1783         (curr_statistics_hash): Add assert that we never get passes 
1784         with static number == -1.
1785
1786 2009-06-03  Richard Guenther  <rguenther@suse.de>
1787             Andrey Belevantsev  <abel@ispras.ru>
1788
1789         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only 
1790         non-BLKmode arrays addressable.
1791
1792 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
1793
1794         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
1795         * config/m68k/m68k.h: ... here.
1796         * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
1797         m68k and fido.
1798
1799 2009-06-03  Martin Jambor  <mjambor@suse.cz>
1800
1801         PR tree-optimization/40323
1802         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
1803         assignment.
1804
1805 2009-06-03  Richard Guenther  <rguenther@suse.de>
1806
1807         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
1808         consistently.
1809
1810 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
1811
1812         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
1813         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
1814         JUMP_TABLE_DATA_P where applicable.
1815         * config/sh/sh.c: Ditto.
1816         * config/sh/sh.h: Ditto.
1817         * config/sh/sh.md: Ditto.
1818         * config/sh/symbian.c: Ditto.
1819
1820 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
1821
1822         * config/i386/driver-i386.c (describe_cache): Optimize
1823         concatenation of strings.  Use snprintf instead of sprintf.
1824         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
1825         target when not compiling with GCC.
1826
1827 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
1828
1829         * config/sh/sh.c: Revert last change.
1830         (sh_expand_epilogue): Emit a blockage insn before the frame
1831         pointer adjustment unconditionally.
1832
1833 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
1834
1835         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
1836         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
1837         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
1838         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
1839         to COLLECT_GCC_OPTIONS.
1840
1841 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
1842
1843         * collect2.c (target_system_root): New variable.
1844         (main): Handle --sysroot=.
1845         (ignore_library): Strip the sysroot from the library path.
1846
1847 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
1848
1849         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
1850         (collect2.o): Depend on collect2-aix.h.
1851         (collect2-aix.o): New rule.
1852         * collect2-aix.h: New file.
1853         * collect2-aix.c: Likewise.
1854         * collect2.c: Include collect2-aix.h.  Don't undefine
1855         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
1856         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
1857         Use TARGET_AIX_VERSION instead of _AIX51.
1858         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
1859         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
1860         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
1861         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
1862         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
1863
1864 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
1865
1866         * collect2.c (ignore_library): Avoid premature post-increment
1867         and null deference.
1868
1869 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
1870
1871         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
1872         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
1873         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
1874         CROSS_DIRECTORY_STRUCTURE too.
1875         (LINK_LIBG_SPEC): Likewise.
1876         (LIB_SPEC): Add %R to sysroot paths.
1877         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
1878         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
1879         * config/rs6000/aix51.h: As for aix43.h.
1880         * config/rs6000/aix52.h: Likewise.
1881         * config/rs6000/aix53.h: Likewise.
1882         * config/rs6000/aix61.h: Likewise.
1883         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
1884         to the beginning of sysroot paths.
1885
1886 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1887
1888         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
1889         INSN_LISTs that are out of the REG_NOTE range.
1890
1891 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1892
1893         * loop-unroll.c (struct iv_to_split): Add pointer to next.
1894         (struct var_to_expand): Likewise.
1895         (struct opt_info): Add head and tail for linked lists of the above.
1896         (analyze_insn_to_expand_var): Initialize next.
1897         (analyze_iv_to_split_insn): Likewise.
1898         (analyze_insns_in_loop): Create linked lists.
1899         (allocate_basic_variable): Simplify for use without hash table.
1900         (insert_var_expansion_initialization): Likewise, make it type-safer.
1901         (combine_var_copies_in_loop_exit): Likewise.
1902         (apply_opt_in_copies): Walk lists rather than hash tables.
1903         (release_var_copies): Simplified and inlined by hand into...
1904         (free_opt_info): ... this function.
1905
1906 2009-06-02  Richard Guenther  <rguenther@suse.de>
1907
1908         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
1909         for field decls.
1910
1911 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1912
1913         * cfgexpand.c (gimple_expand_cfg): Discard the source location
1914         only for builtins that are not overridden.
1915
1916 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1917
1918         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
1919         label string.
1920
1921 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1922
1923         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
1924
1925 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1926
1927         * combine.c (move_deaths): Compare LUIDs within the same BB only.
1928
1929 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1930
1931         * common.opt (fdump-unnumbered-links): New.
1932         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
1933         * print-rtl.c (flag_dump_unnumbered_links): New.
1934         (print_rtx): Test it.
1935
1936 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
1937
1938         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
1939         push/pop multiple to 8-byte alignment.
1940
1941 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
1942
1943         * config/i386/i386.c (queued_cfa_restores): New static variable.
1944         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
1945         functions.
1946         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
1947         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
1948         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
1949         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
1950         note unconditionally.
1951         (ix86_emit_restore_regs_using_mov): Likewise.
1952         (ix86_emit_restore_sse_regs_using_mov): Likewise.
1953         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
1954         it through to ix86_emit_restore_reg_using_pop.
1955         (ix86_emit_leave): Add RED_OFFSET argument.  Call
1956         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
1957         instead of adding REG_CFA_OFFSET note unconditionally.
1958         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
1959         the above functions.  Call ix86_add_queued_cfa_restore_notes when
1960         needed.
1961
1962         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
1963         force output of the label even for dwarf2out_do_cfi_asm.
1964         (add_fde_cfi): If -g2 and above and cfi might change CFA,
1965         force creation of CFI label and chain DW_CFA_set_loc jumping to it
1966         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
1967         caller.
1968         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
1969         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
1970         dwarf2out_cfi_label callers.
1971         * tree.h (dwarf2out_cfi_label): Adjust prototype.
1972         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
1973         Adjust dwarf2out_cfi_label callers.
1974         * config/vax/vax.c (vax_output_function_prologue): Likewise.
1975
1976         * config/i386/i386.h (struct machine_cfa_state,
1977         struct machine_function): Guard with ifndef USED_FOR_TARGET
1978         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
1979
1980         PR other/40024
1981         * emutls.c (__emutls_get_address): Change arr->size to mean number
1982         of allocated arr->data entries instead of # of slots + 1.
1983
1984         PR middle-end/40316
1985         * recog.c (peep2_reinit_state): New function.
1986         (peephole2_init_state): Use it at the end of a basic block and also
1987         when seeing a RTX_FRAME_RELATED_P insn.
1988
1989 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
1990
1991         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
1992         fixuns_truncrfdi2): New.
1993         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
1994         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
1995         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
1996         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
1997         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
1998         *recip_approx): Remove.
1999         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
2000         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
2001         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
2002         move to div.md.
2003         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
2004         setf_exp_rf): New.
2005
2006 2009-06-01  Ian Lance Taylor  <iant@google.com>
2007
2008         * attribs.c (register_attribute): Use CONST_CAST.
2009         * collect2.c (main): Use CONST_CAST2.
2010         (scan_prog_file): Likewise.
2011         * gcc.c (process_command, main): Likewise.
2012         * toplev.c (toplev_main): Likewise.
2013
2014         * c-typeck.c (handle_warn_cast_qual): New static function,
2015         partially broken out of build_c_cast.
2016         (build_c_cast): Call handle_warn_cast_qual.
2017         * doc/invoke.texi (Warning Options): Document new effect of
2018         -Wcast-qual.
2019
2020 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
2021
2022         * diagnostic.c (diagnostic_build_prefix): Always print columns.
2023         (diagnostic_report_current_module): Print columns.
2024         * common.opt (flag_show_column): Enable by default.
2025
2026 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
2027
2028         * alias.c (find_base_term): Check for NULL term before returning.
2029
2030 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
2031
2032         Revert due to PR40320:
2033         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
2034         * calls.c (emit_library_call_value_1): Don't force_operand for move
2035         and push insns.
2036
2037 2009-06-01  Olivier Hainque  <hainque@adacore.com>
2038             Eric Botcazou  <ebotcazou@adacore.com>
2039
2040         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
2041         to be processed as a bitfield for constructor output purposes.
2042         * output.h (initializer_constant_valid_for_bitfield_p): Declare
2043         new function.
2044         * varasm.c (oc_local_state): New type, output_constructor
2045         local state to support communication with helpers.
2046         (oc_outer_state): New type, output_constructor outer state of
2047         relevance in recursive calls.
2048         (output_constructor_array_range): New output_constructor helper,
2049         extracted code for an array range element.
2050         (output_constructor_regular_field): New output_constructor helper,
2051         extracted code for an element that is not a bitfield.
2052         (output_constructor_bitfield): New output_constructor helper,
2053         extracted code for a bitfield element.  Accept an OUTER state
2054         argument for recursive processing.  Recurse on record or array
2055         CONSTRUCTOR values, possibly past noop conversions.
2056         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
2057         VALUE is a valid constant-valued expression for use in a static
2058         bit-field initializer.
2059         (output_constructor): Rework to use helpers.  Accept and honor an
2060         OUTER state argument for recursive calls.  Return total size.  Be
2061         prepared for nested constructors initializing bitfields.
2062         (output_constant): Feed OUTER in calls to output_constructor.
2063
2064 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
2065
2066         * calls.c (emit_library_call_value_1): Don't force_operand for move
2067         and push insns.
2068
2069 2009-06-01  Nick Clifton  <nickc@redhat.com>
2070
2071         * doc/invoke.texi (IA-64 Options): Fix typo.
2072
2073 2009-06-01  Ira Rosen  <irar@il.ibm.com>
2074
2075         PR tree-optimization/39129
2076         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the 
2077         printed message.
2078         (vect_do_peeling_for_loop_bound): Use 
2079         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
2080         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
2081         (vect_loop_versioning): Likewise.
2082         (vect_create_cond_for_alias_checks): Fix indentation.
2083         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the 
2084         macros.
2085         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
2086         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
2087         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to 
2088         "control flow in loop".
2089         (vect_estimate_min_profitable_iters): Use 
2090         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
2091         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
2092         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
2093         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
2094         * tree-vect-stmts.c (vectorizable_store): Replace the check that the 
2095         statement belongs to a group of strided accesses with the exact code 
2096         check.
2097         (vectorizable_load): Likewise.
2098         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
2099         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
2100
2101 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
2102
2103         * config/freebsd-stdint.h: New file.
2104         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
2105         Add freebsd-stdint.h to tm_file.
2106
2107 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
2108
2109         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
2110         (thumb2_extendhidi2): Likewise.
2111
2112 2009-05-31  Ian Lance Taylor  <iant@google.com>
2113
2114         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
2115
2116 2009-05-31  Ian Lance Taylor  <iant@google.com>
2117
2118         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
2119         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
2120         (ipa-reference.o): Depend upon gt-ipa-reference.h.
2121
2122 2009-05-31  Jason Merrill  <jason@redhat.com>
2123
2124         * tree-pretty-print.c (print_call_name): Take the callee, not the
2125         call itself.  Make non-static.  Use dump_function_name for functions.
2126         (dump_generic_node): Adjust.
2127         * diagnostic.h: Declare print_call_name.
2128         * gimple-pretty-print.c (dump_gimple_call): Use it.
2129
2130 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
2131
2132         * config/sh/sh.md (ashldi3_std): New define_expand.
2133         (ashldi3): Use it.
2134
2135 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
2136
2137         PR target/40313
2138         * config/sh/sh.c: Include debug.h.
2139         (sh_expand_epilogue): Emit a blockage insn before the frame
2140         pointer adjustment also when dwarf2out_do_frame returns true.
2141
2142 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
2143
2144         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
2145         (thumb2_extendqidi2): New pattern.
2146
2147 2009-05-31  Ira Rosen  <irar@il.ibm.com>
2148
2149         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
2150         mark phis for renaming.
2151         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
2152         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
2153         Call mark_sym_for_renaming.
2154         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
2155         * tree-vect-loop.c (vect_transform_loop): Remove
2156         vect_memsyms_to_rename initialization and a call to
2157         mark_set_for_renaming.
2158
2159 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
2160
2161         PR middle-end/40304
2162         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
2163         frame related even if !set_cfa && style < 0.
2164
2165 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
2166
2167         * config/i386/mingw-tls.c: New file.
2168         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
2169         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
2170         defining _WIN32 but not __CYGWIN__.
2171
2172 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2173
2174         * configure.ac: Add MPC support.
2175         
2176         * config.in, configure: Regenerate.     
2177
2178 2009-05-29  Richard Henderson  <rth@redhat.com>
2179
2180         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
2181         NOTE_INSN_BASIC_BLOCK.
2182         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
2183         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
2184         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
2185         to be deleted.
2186         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
2187         add in_use field.
2188         (add_cfi): Disable check redefining cfa away from drap.
2189         (lookup_cfa_1): Add remember argument; handle remember/restore.
2190         (lookup_cfa): Pass remember argument.
2191         (cfa_remember): New.
2192         (compute_barrier_args_size_1): Remove sibcall check.
2193         (dwarf2out_frame_debug_def_cfa): New.
2194         (dwarf2out_frame_debug_adjust_cfa): New.
2195         (dwarf2out_frame_debug_cfa_offset): New.
2196         (dwarf2out_frame_debug_cfa_register): New.
2197         (dwarf2out_frame_debug_cfa_restore): New.
2198         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
2199         (dwarf2out_begin_epilogue): New.
2200         (dwarf2out_frame_debug_restore_state): New.
2201         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
2202         DW_CFA_restore_state.
2203         (output_cfi_directive): Likewise.
2204         (convert_cfa_to_fb_loc_list): Likewise.
2205         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
2206         * dwarf2out.h: Update.
2207         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
2208         (copy_insn_1): Early out for null.
2209         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
2210         and dwarf2out_frame_debug_restore_state.
2211         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
2212         (prologue_insn_hash, epilogue_insn_hash): New.
2213         (free_after_compilation): Adjust freeing accordingly.
2214         (record_insns): Create hash table if needed; push insns into
2215         hash instead of array.
2216         (maybe_copy_epilogue_insn): New.
2217         (contains): Search hash table instead of array.
2218         (sibcall_epilogue_contains): Remove.
2219         (thread_prologue_and_epilogue_insns): Split eh_return insns
2220         and mark them as epilogues.
2221         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
2222         scanning in terms of basic blocks.
2223         * insn-notes.def (CFA_RESTORE_STATE): New.
2224         * jump.c (returnjump_p_1): Accept EH_RETURN.
2225         (eh_returnjump_p_1, eh_returnjump_p): New.
2226         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
2227         CFA_REGISTER, CFA_RESTORE): New.
2228         * rtl.def (EH_RETURN): New.
2229         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
2230
2231         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
2232         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
2233
2234         * config/i386/i386.c (gen_push): Update cfa state.
2235         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
2236         add a CFA_ADJUST_CFA note.
2237         (ix86_dwarf_handle_frame_unspec): Remove.
2238         (ix86_expand_prologue): Update cfa state.
2239         (ix86_emit_restore_reg_using_pop): New.
2240         (ix86_emit_restore_regs_using_pop): New.
2241         (ix86_emit_leave): New.
2242         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
2243         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
2244         * config/i386/i386.h (struct machine_cfa_state): New.
2245         (ix86_cfa_state): New.
2246         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
2247         (eh_return_internal): Merge from eh_return_<mode>,
2248         use eh_return rtx, split w/ epilogue.
2249
2250 2009-05-29  Ian Lance Taylor  <iant@google.com>
2251
2252         * builtins.c (validate_gimple_arglist): Don't use va_arg with
2253         enum type.
2254         * calls.c (emit_library_call_value_1): Likewise.
2255
2256         * c-typeck.c (c_build_va_arg): New function.
2257         * c-tree.h (c_build_va_arg): Declare.
2258         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
2259         instead of build_va_arg.
2260
2261 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
2262
2263         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
2264         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
2265         (ptr_difference_cost): Use affine combinations to compute it.
2266         (difference_cost): Likewise.
2267         (get_computation_cost_at): Compute more accurate cost for addresses
2268         if the ratio is a multiplier allowed in addresses.
2269         For non-addresses, consider that an additional offset or symbol is
2270         added only once.
2271
2272 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
2273
2274         * config/i386/i386.c (ix86_decompose_address): Avoid useless
2275         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
2276
2277         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
2278         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
2279         (prefix_rex): For UNIT_MMX don't imply the prefix by default
2280         if MODE_DI.
2281         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
2282         to 1 for TYPE_SSE{IADD1,CVT1}.
2283         (prefix_vex_imm8): Removed.
2284         (length_vex): Only pass 1 as second argument to
2285         ix86_attr_length_vex_default if prefix_extra is 0.
2286         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
2287         (length): For prefix vex computation use length_immediate
2288         attribute instead of prefix_vex_imm8.
2289         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
2290         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
2291         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
2292         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
2293         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
2294         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
2295         a space in between the operands.
2296         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
2297         if one operand is 0xff and the other one si, di, bp or sp.
2298         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
2299         other one si, di, bp or sp.
2300         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
2301         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
2302         type and mode attributes.
2303         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
2304         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
2305         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
2306         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
2307         prefix_data16 attribute iff MODE_DF.
2308         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
2309         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
2310         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
2311         constm128_operand in length_immediate computation.
2312         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
2313         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
2314         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
2315         length_immediate attribute to 1.
2316         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
2317         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
2318         for certain alternatives.
2319         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
2320         prefix_data16 attribute if MODE_V1DF.
2321         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
2322         length_immediate to 1.
2323         (set_got_rex64, set_rip_rex64): Remove length attribute, set
2324         length_address to 4, set mode attribute to MODE_DI.
2325         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
2326         (fxam<mode>2_i387): Set length attribute to 4.
2327         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
2328         *prefetch_3dnow_rex): Override length_address attribute.
2329         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
2330         attributes.
2331         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
2332         (constm128_operand): Removed.
2333         * config/i386/i386.c (memory_address_length): For
2334         disp && !index && !base in 64-bit mode account for SIB byte if
2335         print_operand_address can't optimize disp32 into disp32(%rip)
2336         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
2337         for fs: or gs: segment.
2338         (ix86_attr_length_immediate_default): When checking if shortform
2339         is possible, truncate immediate to the length of the non-shortened
2340         immediate.
2341         (ix86_attr_length_address_default): Ignore MEM_P operands
2342         with X constraint.
2343         (ix86_attr_length_vex_default): Only check for DImode on
2344         GENERAL_REG_P operands.
2345         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
2346         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
2347         (sse_cvttps2pi): Clear prefix_rep attribute.
2348         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
2349         attribute.
2350         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
2351         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
2352         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
2353         iff operand 2 is const_int_operand.
2354         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
2355         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
2356         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
2357         instead of vex.
2358         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
2359         prefix_data16.
2360         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
2361         prefix_data16 attribute for movlpd and movhpd instructions.
2362         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
2363         length_immediate for shufpd instruction.
2364         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
2365         (avx_cmpp<avxmodesuffixf2c><mode>3,
2366         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
2367         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
2368         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
2369         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
2370         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
2371         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
2372         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
2373         prefix_data16 attribute for the first alternative to 1.
2374         (*avx_loadlps): Override length_immediate for the first alternative.
2375         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
2376         attributes for second alternative.
2377         (*vec_concatv2sf_sse4_1): Override length_immediate and
2378         prefix_data16 attributes for second alternative.
2379         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
2380         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
2381         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
2382         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
2383         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
2384         prefix_data16 and length_immediate to 1.
2385         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
2386         to 1.
2387         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
2388         prefix_extra attribute for variants that don't have 0f prefix alone.
2389         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
2390         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
2391         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
2392         *sse4_1_pextrd): Set length_immediate to 1.
2393         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
2394         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
2395         to 1.
2396         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
2397         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
2398         length_immediate to 1 for second alternative.
2399         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
2400         prefix_extra and length_immediate attributes for the first
2401         alternative.
2402         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
2403         first alternative.
2404         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
2405         to 1 for the first and third alternative.
2406         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
2407         alternative.
2408         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
2409         attribute.
2410         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
2411         attribute to 0.
2412         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
2413         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
2414         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
2415         *avx_psign<mode>3): Set prefix_extra attribute to 1.
2416         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
2417         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
2418         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
2419         ssse3_psign<mode>3): Override prefix_rex attribute.
2420         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
2421         (ssse3_palignrti): Override length_immediate to 1.
2422         (ssse3_palignrdi): Override length_immediate to 1, override
2423         prefix_rex attribute.
2424         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
2425         (sse4a_extrqi): Override length_immediate to 2.
2426         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
2427         (sse4a_insertq): Override prefix_data16 to 0.
2428         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
2429         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
2430         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
2431         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
2432         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
2433         and length_immediate to 1.
2434         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
2435         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
2436         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
2437         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
2438         and length_immediate to 1.
2439         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
2440         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
2441         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
2442         avx_ptest256): Override prefix_extra to 1.
2443         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
2444         Override prefix_data16 and length_immediate to 1.
2445         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
2446         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
2447         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
2448         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
2449         prefix_data16 to 0 and prefix_extra to 2.
2450         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
2451         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
2452         attribute.
2453         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
2454         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
2455         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
2456         and prefix_extra to 2.
2457         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
2458         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
2459         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
2460         avx_vpermilvar<mode>3,
2461         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
2462         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
2463         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
2464         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
2465         Override prefix_extra to 1.
2466         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
2467         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
2468         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
2469         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
2470         prefix_extra and length_immediate to 1.
2471         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
2472         modrm to 0.
2473         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
2474         to 1 for the first alternative.
2475         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
2476         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
2477         cases.
2478         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
2479         *movv2sf_internal_avx, *movv2sf_internal): Override
2480         prefix_rep attribute for certain alternatives.
2481         (*mov<mode>_internal): Override prefix_rep or prefix_data16
2482         attributes for certain alternatives.
2483         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
2484         attributes for certain alternatives.
2485         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
2486         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
2487         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
2488         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
2489         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
2490         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
2491         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
2492         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
2493         length_immediate to 1 if operand 2 is const_int_operand.
2494         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
2495         *vec_extractv2si_1): Set length_immediate attribute to 1.
2496         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
2497         using old 3DNOW insn rather than SSE/3DNOW_A.
2498         (mmx_emms, mmx_femms): Clear modrm attribute.
2499
2500 2009-05-29  Martin Jambor  <mjambor@suse.cz>
2501
2502         * tree-sra.c:  New implementation of SRA.
2503
2504         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
2505         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
2506         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
2507         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
2508         (SRA_MAX_STRUCTURE_COUNT): Removed.
2509         (SRA_FIELD_STRUCTURE_RATIO): Removed.
2510         * doc/invoke.texi (sra-max-structure-size): Removed.
2511         (sra-field-structure-ratio): Removed.
2512
2513 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
2514
2515         PR middle-end/40291
2516         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
2517         before expansion.
2518
2519 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
2520
2521         PR rtl-optimization/40101
2522         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
2523         seqno.  Adjust comment.
2524         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when 
2525         inserting bookkeeping before a jump, the jump is not scheduled.
2526         When no positive seqno found, provide a value.  Add comment.
2527
2528 2009-05-29  Richard Guenther  <rguenther@suse.de>
2529
2530         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
2531         short-cutting on the first component.
2532
2533 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
2534
2535         PR middle-end/39958
2536         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
2537         for trees other than decls/types.
2538
2539 2009-05-29  Richard Guenther  <rguenther@suse.de>
2540
2541         * tree-ssa-operands.c (get_expr_operands): Do not handle
2542         INDIRECT_REFs in the handled-component case.  Remove
2543         unused get_ref_base_and_extent case.
2544         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
2545         tree_low_cst and host_integerp where possible.
2546         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
2547         codes for equivalence.
2548         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
2549
2550 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
2551
2552         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
2553         to tmake_file for i[34567]86-*-cygwin*. 
2554
2555 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
2556
2557         PR target/40017
2558         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
2559         (altivec_categorize_keyword, init_vector_keywords,
2560         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
2561         similar to bool.
2562
2563 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
2564
2565         * tree.c (handle_dll_attribute): Check if node is
2566         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
2567
2568 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
2569
2570         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
2571         component.
2572         (thumb2_zero_extendqidi2): Likewise.
2573
2574 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
2575
2576         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
2577         instead of gen_movrt.
2578         * config/sh/sh.md (movrt): Remove.
2579
2580 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
2581
2582         * doc/invoke.texi (IA-64 Options):
2583         Add -msdata, -mfused-madd, -mno-inline-float-divide, 
2584         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
2585         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
2586         -msched-prefer-non-control-spec-insns,
2587         -msched-stop-bits-after-every-cycle,
2588         -msched-count-spec-in-critical-path,
2589         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
2590         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
2591         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
2592         and -msched-spec-verbose.
2593
2594 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
2595
2596         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
2597         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
2598         error if used.
2599         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
2600
2601 2009-05-28  Richard Guenther  <rguenther@suse.de>
2602
2603         * tree-ssa-alias.c (ao_ref_init): New function.
2604         (ao_ref_base): Likewise.
2605         (ao_ref_base_alias_set): Likewise.
2606         (ao_ref_alias_set): Likewise.
2607         (refs_may_alias_p_1): Change signature.
2608         (refs_may_alias_p): Adjust.
2609         (refs_anti_dependent_p): Likewise.
2610         (refs_output_dependent_p): Likewise.
2611         (call_may_clobber_ref_p_1): Change signature.
2612         (call_may_clobber_ref_p): Adjust.
2613         (stmt_may_clobber_ref_p_1): New function split out from ...
2614         (stmt_may_clobber_ref_p): ... here.
2615         (maybe_skip_until): Adjust signature.
2616         (get_continuation_for_phi): Likewise.
2617         (walk_non_aliased_vuses): Likewise.
2618         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
2619         (ao_ref_init): Declare.
2620         (ao_ref_base): Likewise.
2621         (ao_ref_alias_set): Likewise.
2622         (stmt_may_clobber_ref_p_1): Likewise.
2623         (walk_non_aliased_vuses): Adjust.
2624         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
2625         (get_ref_from_reference_ops): remove.
2626         (vn_reference_lookup_2): Adjust signature.
2627         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
2628         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
2629         (vn_reference_lookup): Adjust.
2630         (vn_reference_insert): Likewise.
2631         (vn_reference_insert_pieces): Adjust signature.
2632         (visit_reference_op_call): Adjust.
2633         * tree-ssa-pre.c (get_expr_type): Simplify.
2634         (phi_translate_1): Adjust.
2635         (compute_avail): Likewise.
2636         (translate_vuse_through_block): Do not re-build trees.
2637         (value_dies_in_block_x): Likewise.
2638         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
2639         fields.
2640         (vn_reference_lookup_pieces): Adjust declaration.
2641         (vn_reference_insert_pieces): Likewise.
2642
2643 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
2644
2645         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
2646         with checking disabled.
2647
2648 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
2649
2650         PR target/37216
2651
2652         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
2653         macro definition for support of three-operand format aligned
2654         .comm directive in assembler on cygwin/pe/mingw target OS.
2655         * configure:  Regenerate.
2656         * config.h:  Regenerate.
2657
2658         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
2659         aligned form of .comm directive if -mpe-aligned-commons is in effect.
2660         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
2661
2662         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
2663         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
2664
2665 2009-05-28  Ira Rosen  <irar@il.ibm.com>
2666
2667         PR tree-optimization/40254
2668         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
2669         in analysis of basic blocks.
2670
2671 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
2672
2673         PR middle-end/33699
2674         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
2675         * target-def.h (TARGET_CONST_ANCHOR): New macro.
2676         (TARGET_INITIALIZER): Use it.
2677         * cse.c (CHEAPER): Move it up to the other macros.
2678         (insert): Rename this ...
2679         (insert_with_costs): ... to this.  Add cost parameters.  Update
2680         function comment.
2681         (insert): New function.  Call insert_with_costs.
2682         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
2683         find_reg_offset_for_const, try_const_anchors): New functions.
2684         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
2685         when using a const-anchor.  Call insert_const_anchors.
2686         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
2687         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
2688
2689 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
2690
2691         * tree-inline.c (remap_decls): Enable nonlocalized variables
2692         when not optimizing.
2693
2694 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
2695
2696         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
2697         Simplify other tests involving optimize.
2698
2699 2009-05-27  Tom Tromey  <tromey@redhat.com>
2700
2701         * unwind-dw2.c (_Unwind_DebugHook): New function.
2702         (uw_install_context): Call _Unwind_DebugHook.
2703
2704 2009-05-27  Tom Tromey  <tromey@redhat.com>
2705
2706         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
2707
2708 2009-05-27  Ian Lance Taylor  <iant@google.com>
2709
2710         * Makefile.in (LINKER, LINKER_FLAGS): Define.
2711         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
2712         (ALL_LINKERFLAGS): Define.
2713         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
2714         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
2715         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
2716         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
2717         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
2718         $(LINKER_FOR_BUILD).
2719         (build/gcov-iov$(build_exeext)): Likewise.
2720
2721 2009-05-27  Julian Brown  <julian@codesourcery.com>
2722
2723         * gcse.c (target.h): Include.
2724         (can_assign_to_reg_without_clobbers_p): Check that the target allows
2725         copy of argument to a pseudo register.
2726
2727 2009-05-27  Diego Novillo  <dnovillo@google.com>
2728
2729         * tree-ssa-live.c (dump_scope_block): Document arguments.
2730         (dump_scope_blocks): Document.
2731         (debug_scope_blocks): New.
2732         * tree-flow.h (debug_scope_blocks): Declare.
2733
2734 2009-05-21  Denis Chertykov  <denisc@overta.ru>
2735
2736         * doc/contrib.texi (Contributors): Add myself to the list.
2737
2738 2009-05-27  Olivier Hainque  <hainque@adacore.com>
2739
2740         * expr.c (target_align): New function.  Alignment the TARGET of an
2741         assignment may be assume to have.
2742         (highest_pow2_factor_for_target): Use it instead of relying on
2743         immediate tree attributes of TARGET, not necessarily honored when
2744         intermediate bitfields are involved.
2745         
2746 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
2747
2748         PR target/40266
2749         * config/i386/driver-i386.c (host_detect_local_cpu): Support
2750         AVX, SSE4, AES, PCLMUL and POPCNT.
2751
2752 2009-05-27  Diego Novillo  <dnovillo@google.com>
2753
2754         * tree-pretty-print.c (dump_location): New.
2755         (dump_generic_node): Call it.
2756         Factor code to handle BLOCK nodes ...
2757         (dump_block_node): ... here.
2758
2759 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
2760
2761         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
2762         with it.
2763         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
2764         included.
2765         * gcc-plugin.h: Include config.h and system.h.
2766         (IN_GCC): Define if not defined.
2767
2768 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
2769
2770         PR middle-end/40249
2771         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
2772         with -fno-inline.
2773
2774 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
2775
2776         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
2777         applicable.
2778         * config/m32r/m32r.h: Ditto.
2779         * config/m32r/m32r.md: Ditto.
2780         * config/m32r/predicates.md: Ditto.
2781
2782 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
2783
2784         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
2785
2786 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
2787
2788         * doc/plugins.texi
2789         (Loading plugins): typo.
2790         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
2791         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
2792         (Interacting with the GCC Garbage Collector): Added new section.
2793         (Giving information about a plugin): Added new section for
2794         PLUGIN_INFO.
2795         * ggc.h (ggc_register_root_tab): Added declaration.
2796         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
2797         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
2798         (register_callback): Improved comment in declaration.
2799         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
2800         (extra_root_vec) Added static variable for dynamic roots registration.
2801         (ggc_register_root_tab) Added new routine.
2802         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
2803         PLUGIN_GGC_MARKING event.
2804         * ggc-zone.c: Include plugin.h.
2805         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
2806         * ggc-page.c: Include plugin.h.
2807         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
2808         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
2809         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
2810         (register_callback): check lack of callbacks for
2811         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
2812         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
2813         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
2814         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
2815         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
2816         dependency on plugin.h.
2817         (plugin.o): Added dependency on ggc.h...
2818
2819 2009-05-26  Richard Guenther  <rguenther@suse.de>
2820
2821         PR middle-end/40248
2822         Revert
2823         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
2824         with mismatched comparison modes.
2825
2826         * expr.c (expand_expr_real_1): Expand the operand of a
2827         VIEW_CONVERT_EXPR in its natural mode.
2828
2829 2009-05-26  Ian Lance Taylor  <iant@google.com>
2830
2831         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
2832         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
2833         (ALL_COMPILERFLAGS): Define.
2834         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
2835         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
2836         (collect2$(exeext), collect2.o): Likewise.
2837         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
2838         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
2839         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
2840         (libbackend.o, intl.o, cppdefault.o): Likewise.
2841         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
2842         (build/%.o): Use $(COMPILER_FOR_BUILD).
2843         (build/gen%$(build_exeext)): Likewise.
2844         (build/gcov-iov$(build_exeext)): LIkewise.
2845         * config/t-darwin (darwin.o): Use $(COMPILER).
2846         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
2847         * config/t-sol2 (sol2-c.o): Likewise.
2848         (sol2.o): Likewise.
2849         * config/t-vxworks (vxworks.o): Likewise.
2850         * config/x-darwin (host-darwin.o): Likewise.
2851         * config/x-hpux (host-hpux.o): Likewise.
2852         * config/x-linux (host-linux.o): Likewise.
2853         * config/x-solaris (host-solaris.o): Likewise.
2854         * config/alpha/x-alpha (driver-alpha.o): Likewise.
2855         * config/arm/t-arm (arm-c.o): Likewise.
2856         * config/arm/t-pe (pe.o): Likewise.
2857         * config/arm/t-wince-pe (pe.o): Likewise.
2858         * config/i386/t-cygming (winnt.o): Likewise.
2859         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
2860         * config/i386/t-cygwin (cygwin1.o): Likewise.
2861         (cygwin2.o): Likewise.
2862         * config/i386/t-i386 (i386-c.o): Likewise.
2863         * config/i386/t-interix (winnt.o): Likewise.
2864         * config/i386/t-netware (netware.o): Likewise.
2865         * config/i386/t-nwld (nwld.o): Likewise.
2866         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
2867         * config/i386/x-i386 (driver-i386.o): Likewise.
2868         * config/i386/x-cygwin (host-cygwin.o): Likewise.
2869         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
2870         * config/ia64/t-ia64 (ia64-c.o): Likewise.
2871         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
2872         * config/mips/x-native (driver-native.o): Likewise.
2873         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
2874         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
2875         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
2876         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
2877         * config/score/t-score-elf (score7.o): Likewise.
2878         (score3.o): Likewise.
2879         * config/sh/t-sh (sh-c.o): Likewise.
2880         * config/sh/t-symbian (sh-c.o): Likewise.
2881         (symbian.o): Likewise.
2882         * config/spu/t-spu-elf (spu-c.o): Likewise.
2883         * config/v850/t-v850 (v850-c.o): Likewise.
2884         * config/v850/t-v850e (v850-c.o): Likewise.
2885
2886 2009-05-26  Richard Guenther  <rguenther@suse.de>
2887
2888         PR tree-optimization/40122
2889         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
2890         VECTOR_CSTs if possible.
2891         (fold_gimple_assign): Likewise.
2892
2893 2009-05-26  Richard Guenther  <rguenther@suse.de>
2894
2895         PR middle-end/40252
2896         * fold-const.c (fold_binary): Use the correct types for building
2897         rotates.
2898
2899 2009-05-26  Richard Guenther  <rguenther@suse.de>
2900
2901         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
2902         redundant calls to merge_alias_info.
2903         (bump_vector_ptr): Likewise.
2904         * tree-ssa-copy.c (merge_alias_info): Remove.
2905         (replace_exp_1): Remove call to merge_alias_info.
2906         (propagate_tree_value): Likewise.
2907         (fini_copy_prop): Propagate points-to info.
2908         * tree-flow.h (merge_alias_info): Remove.
2909
2910 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
2911
2912         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
2913
2914 2009-05-25  Jan Hubicka  <jh@suse.cz>
2915
2916         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2917         * cgraph.h (struct inline_summary): New filed self_wize,
2918         size_inlining_benefit, self_time and time_inlining_benefit.
2919         (struct cgraph_global_info): Replace insns by time ans size fields.
2920         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2921         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2922         (ipcp_update_callgraph): Do not touch function bodies.
2923         * ipa-inline.c: Include except.h
2924         (MAX_TIME): New constant.
2925         (overall_insns): Remove.
2926         (leaf_node_p): New.
2927         (overall_size, max_benefit): New static variables.
2928         (cgraph_estimate_time_after_inlining): New function.
2929         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2930         (cgraph_clone_inlined_nodes): Update size.
2931         (cgraph_mark_inline_edge): Update size.
2932         (cgraph_estimate_growth): Use size info.
2933         (cgraph_check_inline_limits): Check size.
2934         (cgraph_default_inline_p): Likewise.
2935         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2936         (cgraph_decide_recursive_inlining): Check size.
2937         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
2938         and times.
2939         (cgraph_decide_inlining): Likewise.
2940         (cgraph_decide_inlining_incrementally): Likewise; honor
2941         PARAM_EARLY_INLINING_INSNS.
2942         (likely_eliminated_by_inlining_p): New predicate.
2943         (estimate_function_body_sizes): New function.
2944         (compute_inline_parameters): Use it.
2945         * except.c (must_not_throw_labels): New function.
2946         * except.h (must_not_throw_labels): Declare.
2947         * tree-inline.c (init_inline_once): Kill inlining_weigths
2948         * tree-ssa-structalias.c: Avoid uninitialized warning.
2949         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2950         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2951         (PARAM_INLINE_CALL_COST): Remove.
2952         (PARAM_EARLY_INLINING_INSNS): New.
2953
2954 2009-05-25  Richard Guenther  <rguenther@suse.de>
2955
2956         PR tree-optimization/36327
2957         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
2958         callback for reference translation or lookup at the point of may-defs.
2959         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
2960         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
2961         for union COMPONENT_REFs.
2962         (vn_reference_lookup_3): New callback.  Lookup from memset
2963         and CONSTRUCTOR assignment, translate through struct copies.
2964         (vn_reference_lookup_pieces): Make sure to not free the
2965         passed operands array.  Adjust walk_non_aliased_vuses call.
2966         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
2967         make sure we do not leak memory.
2968
2969 2009-05-25  Richard Guenther  <rguenther@suse.de>
2970
2971         * tree-ssa-alias.h (dump_points_to_solution): Declare.
2972         * tree-inline.c (expand_call_inline): Reset the escaped and
2973         callused solutions.
2974         * tree-ssa-structalias.c (pass_build_ealias): New.
2975         * tree-pass.h (pass_build_ealias): Declare.
2976         * passes.c (init_optimization_passes): Add PTA during 
2977         early optimizations.
2978         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
2979         and CALLUSED solutions.
2980         (dump_points_to_solution): New function, split out from ...
2981         (dump_points_to_info_for): ... here.
2982         * tree-parloops.c (parallelize_loops): Reset the escaped and
2983         callused solutions.
2984
2985 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2986
2987         PR bootstrap/40027
2988         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
2989         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
2990
2991 2009-05-25  Ira Rosen  <irar@il.ibm.com>
2992
2993         PR tree-optimization/40238
2994         * tree-vect-stmts.c (vect_init_vector): Insert initialization
2995         statements after basic block's labels.
2996         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() 
2997         to free the allocated memory.
2998
2999 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
3000
3001         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
3002         return address with a USE.
3003
3004 2009-05-24  Richard Guenther  <rguenther@suse.de>
3005
3006         PR middle-end/40233
3007         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
3008         array type from the main variant of the inner type.
3009
3010 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
3011
3012         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
3013         definition to bool (from int) to un-break build.
3014         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
3015
3016 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
3017
3018         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
3019         discard_stmt_changes): Delete.
3020         * tree-ssa-operands.c (scb_stack): Delete.
3021         (init_ssa_operands): Do not initialize it.
3022         (fini_ssa_operands): Do not free it.
3023         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
3024
3025         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with 
3026         update_stmt, remove the others.  Fix comments.
3027         * tree-dfa.c (optimize_stack_restore): Likewise.
3028         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
3029         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
3030         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
3031         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
3032         Likewise.
3033         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
3034         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
3035         (dom_opt_finalize_block): Likewise, adjusting access to
3036         stmts_to_rescan.
3037         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
3038         (stmts_to_rescan): Change item type to gimple.
3039         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
3040
3041 2009-05-24  Ira Rosen  <irar@il.ibm.com>
3042
3043         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
3044         * tree-pass.h (pass_slp_vectorize): New pass.
3045         * params.h (SLP_MAX_INSNS_IN_BB): Define.
3046         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
3047         * tree-vectorizer.c (timevar.h): Include.
3048         (user_vect_verbosity_level): Declare.
3049         (vect_location): Fix comment.
3050         (vect_set_verbosity_level): Update user_vect_verbosity_level
3051         instead of vect_verbosity_level.
3052         (vect_set_dump_settings): Add an argument. Ignore user defined
3053         verbosity if dump flags require higher level of verbosity. Print to
3054         stderr only for loop vectorization.
3055         (vectorize_loops): Update call to vect_set_dump_settings.
3056         (execute_vect_slp): New function.
3057         (gate_vect_slp): Likewise.
3058         (struct gimple_opt_pass pass_slp_vectorize): New.
3059         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
3060         access its members.
3061         (vec_info_for_bb): New function.
3062         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
3063         (VECTORIZATION_ENABLED): New macro.
3064         (SLP_ENABLED, SLP_DISABLED): Likewise.
3065         (vect_is_simple_use): Add bb_vec_info argument.
3066         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
3067         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
3068         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
3069         vect_schedule_slp, vect_analyze_slp): Likewise.
3070         (vect_analyze_stmt): Add slp_tree argument.
3071         (find_bb_location): Declare.
3072         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
3073         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
3074         (vect_analyze_loop_operations, vect_analyze_loop,
3075         get_initial_def_for_induction, vect_create_epilog_for_reduction,
3076         vect_finalize_reduction, vectorizable_reduction,
3077         vectorizable_live_operation, vect_transform_loop): Likewise.
3078         * tree-data-ref.c (dr_analyze_innermost): Update comment,
3079         skip evolution analysis if analyzing a basic block.
3080         (dr_analyze_indices): Likewise.
3081         (initialize_data_dependence_relation): Skip the test whether the
3082         object is invariant for basic blocks.
3083         (compute_all_dependences): Skip dependence analysis for data
3084         references in basic blocks.
3085         (find_data_references_in_stmt): Don't fail in case of invariant
3086         access in basic block.
3087         (find_data_references_in_bb): New function.
3088         (find_data_references_in_loop): Move code to
3089         find_data_references_in_bb and add a call to it.
3090         (compute_data_dependences_for_bb): New function.
3091         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
3092         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
3093         that STEP is 0.
3094         (vect_analyze_data_ref_dependence): Check for interleaving in case of
3095         unknown dependence in basic block and fail in case of dependence in
3096         basic block.
3097         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
3098         dependence instances from either loop or basic block vectorization
3099         info.
3100         (vect_compute_data_ref_alignment): Check if it is loop vectorization
3101         before calling nested_in_vect_loop_p.
3102         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
3103         dependence instances from either loop or basic block vectorization
3104         info.
3105         (vect_verify_datarefs_alignment): Likewise.
3106         (vect_enhance_data_refs_alignment): Adjust function calls.
3107         (vect_analyze_data_refs_alignment): Likewise.
3108         (vect_analyze_group_access): Fix printing. Skip different checks if
3109         DR_STEP is 0. Keep strided stores either in loop or basic block
3110         vectorization data structure. Fix indentation.
3111         (vect_analyze_data_ref_access): Fix comments, allow zero step in
3112         basic blocks.
3113         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
3114         dependence instances from either loop or basic block vectorization
3115         info.
3116         (vect_analyze_data_refs): Update comment. Call
3117         compute_data_dependences_for_bb to analyze basic blocks.
3118         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
3119         case of loop vectorization. In case of basic block vectorization use
3120         data-ref itself as a base.
3121         (vect_create_data_ref_ptr): In case of basic block vectorization:
3122         don't advance the pointer, add new statements before the current
3123         statement.  Adjust function calls.
3124         (vect_supportable_dr_alignment): Support only aligned accesses in
3125         basic block vectorization.
3126         * common.opt (ftree-slp-vectorize): New flag.
3127         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
3128         (vect_pattern_recog_1): Likewise.
3129         * tree-vect-stmts.c (process_use): Likewise.
3130         (vect_init_vector): Add new statements in the beginning of the basic
3131         block in case of basic block SLP.
3132         (vect_get_vec_def_for_operand): Adjust function calls.
3133         (vect_finish_stmt_generation): Likewise.
3134         (vectorizable_call): Add assert that it is loop vectorization, adjust
3135         function calls.
3136         (vectorizable_conversion, vectorizable_assignment): Likewise.
3137         (vectorizable_operation): In case of basic block SLP, take
3138         vectorization factor from statement's type and skip the relevance
3139         check. Adjust function calls.
3140         (vectorizable_type_demotion): Add assert that it is loop
3141         vectorization, adjust function calls.
3142         (vectorizable_type_promotion): Likewise.
3143         (vectorizable_store): Check for outer loop only in case of loop
3144         vectorization. Adjust function calls. For basic blocks, skip the
3145         relevance check and don't advance pointers.
3146         (vectorizable_load): Likewise.
3147         (vectorizable_condition): Add assert that it is loop vectorization,
3148         adjust function calls.
3149         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
3150         that it is not reduction, get vector type, call only supported
3151         functions, skip loop specific parts.
3152         (vect_transform_stmt): Check for outer loop only in case of loop
3153         vectorization.
3154         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
3155         (vect_is_simple_use): Fix comment, add new argument, fix conditions
3156         for external definition.
3157         * passes.c (pass_slp_vectorize): New pass.
3158         * tree-vect-slp.c (find_bb_location): New function.
3159         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
3160         check for patterns only in loops.
3161         (vect_build_slp_tree): Add argument, adjust function calls, fail in
3162         case of multiple types in basic block SLP.
3163         (vect_mark_slp_stmts_relevant): New function.
3164         (vect_supported_load_permutation_p): Fix comment.
3165         (vect_analyze_slp_instance): Add argument. In case of basic block
3166         SLP, take vectorization factor from statement's type, check that
3167         unrolling factor is 1. Adjust function call. Save SLP instance in
3168         either loop or basic block vectorization structure. Return FALSE,
3169         if SLP failed.
3170         (vect_analyze_slp): Add argument. Get strided stores groups from
3171         either loop or basic block vectorization structure. Return FALSE
3172         if basic block SLP failed.
3173         (new_bb_vec_info): New function.
3174         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
3175         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
3176         (vect_schedule_slp): Add argument. Get SLP instances from either
3177         loop or basic block vectorization structure. Set vectorization factor
3178         to be 1 for basic block SLP.
3179         (vect_slp_transform_bb): New function.
3180         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
3181
3182 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
3183
3184         * final.c (shorten_branches): Do not align labels for jump tables.
3185         (final_scan_insn): Use JUMP_TABLE_DATA_P.
3186
3187 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
3188
3189         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
3190         Remove outdated reference to flow.c and fix nits.
3191         * doc/gccint.texi: Tweak RTL description.
3192         * doc/rtl.texi: Likewise.
3193
3194 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
3195
3196         * config/avr/avr.c: Change my email address.
3197         * config/avr/avr.h: Likewise.
3198         * config/avr/avr.md: Likewise.
3199         * config/avr/avr-protos.h: Likewise.
3200         * config/avr/libgcc.S: Likewise.
3201
3202 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
3203
3204         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
3205         (spu_split_load, spu_split_store): Change return type to int.
3206         (spu_split_convert): Declare.
3207         * config/spu/predicates.md (spu_mem_operand): Remove.
3208         (spu_mov_operand): Update.
3209         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
3210         * config/spu/spu.c (regno_aligned_for_load): Remove.
3211         (reg_aligned_for_addr, spu_expand_load): Define.
3212         (spu_expand_extv): Reimplement and handle MEM.
3213         (spu_expand_insv): Handle MEM.
3214         (spu_sched_reorder): Handle insn's with length 0.
3215         (spu_legitimate_address_p): Reimplement.
3216         (store_with_one_insn_p): Return TRUE for any mode with size
3217         larger than 16 bytes.
3218         (address_needs_split): Define.
3219         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
3220         operands.
3221         (spu_convert_move): Define.
3222         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
3223         (spu_split_store): Change all MEM's to TImode.
3224         (spu_init_expanders): Preallocate registers that correspond to
3225         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
3226         mark_reg_pointer.
3227         (spu_split_convert): Define.
3228         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
3229         (_move<mode>, _movdi, _movti): Update predicate and condition.
3230         (load, store): Change to define_split.
3231         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
3232         extend<mode>ti2.
3233         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
3234         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
3235         define_insn_and_split of lshr<mode>3.
3236         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
3237         (<v>ashr<mode>3_imm): Define.
3238         (extv, extzv, insv): Allow MEM operands.
3239         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
3240         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
3241         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
3242         (_spu_convert2): Change to define_insn_and_split and remove the
3243         corresponding define_peephole2.
3244         (stack_protect_set, stack_protect_test, stack_protect_test_si):
3245         Change predicates to memory_operand.
3246
3247 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
3248
3249         * config/arm/thumb2.md: Add 16-bit multiply instructions.
3250
3251 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
3252
3253         PR tree-optimization/40219
3254         * tree.c (iterative_hash_expr): Make sure the builtin function is
3255         a normal builtin function and not a front end or back end builtin
3256         before indexing into the built_in_decls array.
3257
3258 2009-05-22  Richard Guenther  <rguenther@suse.de>
3259
3260         PR middle-end/38964
3261         * alias.c (write_dependence_p): Do not use TBAA for answering
3262         anti-dependence or output-dependence.
3263         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
3264         (emit_pointer_definition): Remove.
3265         (emit_alias_warning): Likewise.
3266         (find_what_var_points_to): Remove TBAA pruning code.
3267         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
3268         violations.
3269         (compute_points_to_sets): Remove code computing the set of
3270         dereferenced pointers.
3271         * tree-data-ref.c (dr_may_alias_p): Properly use the split
3272         oracle for querying anti and output dependencies.
3273         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
3274         if TBAA may be applied.
3275         (refs_anti_dependent_p): New function.
3276         (refs_output_dependent_p): Likewise.
3277         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
3278         (refs_output_dependent_p): Likewise.
3279         * doc/tree-ssa.texi (Memory model): New section.
3280         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
3281         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
3282         * cfgexpand.c (expand_gimple_basic_block): Do not handle
3283         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
3284         * expr.c (expand_expr_real_1): Likewise.
3285         * gimple-low.c (lower_stmt): Likewise.
3286         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
3287         (dump_gimple_cdt): Remove.
3288         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
3289         (gimple_size): Likewise.
3290         (walk_gimple_op): Likewise.
3291         (is_gimple_stmt): Likewise.
3292         (walk_stmt_load_store_addr_ops): Likewise.
3293         (gimple_build_cdt): Remove.
3294         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
3295         * gimple.h (gimple_cdt_new_type): Remove.
3296         (gimple_cdt_new_type_ptr): Likewise.
3297         (gimple_cdt_set_new_type): Likewise.
3298         (gimple_cdt_location): Likewise.
3299         (gimple_cdt_location_ptr): Likewise.
3300         (gimple_cdt_set_location): Likewise.
3301         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
3302         * tree-cfg.c (remove_useless_stmts_1): Do not handle
3303         GIMPLE_CHANGE_DYNAMIC_TYPE.
3304         (verify_types_in_gimple_stmt): Likewise.
3305         * tree-inline.c (estimate_num_insns): Likewise.
3306         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
3307         (copy_decl_to_var): Likewise.
3308         (copy_result_decl_to_var): Likewise.
3309         * tree-pretty-print.c (dump_generic_node): Do not handle
3310         CHANGE_DYNAMIC_TYPE_EXPR.
3311         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
3312         * tree-ssa-operands.c (get_expr_operands): Likewise.
3313         * tree-ssa-structalias.c (struct variable_info): Remove
3314         no_tbaa_pruning member.
3315         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
3316         (unify_nodes): Do not copy it.
3317         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
3318         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
3319         (set_uids_in_ptset): Do not check it.
3320         (find_what_var_points_to): Likewise.
3321         (compute_tbaa_pruning): Remove.
3322         (compute_points_to_sets): Do not call it.
3323         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
3324         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
3325         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
3326         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
3327         (DECL_NO_TBAA_P): Likewise.
3328         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
3329         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
3330         (expand_omp_atomic_pipeline): Do not set it.
3331         * print-tree.c (print_node): Do not dump it.
3332         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
3333         redundant check.
3334
3335 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
3336
3337         PR target/39856
3338         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
3339         for clobber.
3340
3341 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
3342
3343         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
3344         non-external.
3345
3346 2009-05-22  Ben Elliston  <bje@au.ibm.com>
3347
3348         * Makefile.in (bversion.h, s-bversion): New targets.
3349         (TOPLEV_H): Add bversion.h.
3350         * toplev.h: Include "bversion.h".
3351         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
3352         the __format__ attribute only if compiling with the same version
3353         of GCC as the sources (the "build version").
3354
3355 2009-05-22  Ben Elliston  <bje@au.ibm.com>
3356
3357         * c-format.c (handle_format_attribute): Fix comment typo.
3358
3359 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
3360
3361         PR target/37846
3362         * config/ia64/ia64.opt (mfused-madd): New.
3363         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
3364         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
3365         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
3366         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
3367         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
3368         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
3369         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
3370         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms 
3371         instruction if !TARGET_FUSED_MADD.
3372         (fpma, fpms): Remove colon from name.
3373
3374 2009-05-22  Richard Guenther  <rguenther@suse.de>
3375
3376         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
3377         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
3378         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
3379         TARGET_MEM_REF.
3380         (create_expression_by_pieces): Only convert if necessary.
3381         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
3382         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
3383
3384 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
3385
3386         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
3387         regular pattern from a template and rename it ...
3388         (*extzv_truncsi_exts): ... to this.
3389
3390 2009-05-21  Richard Guenther  <rguenther@suse.de>
3391
3392         * cgraph.h (struct cgraph_node): Remove inline_decl member.
3393         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
3394         (cgraph_default_inline_p): Likewise.
3395         (cgraph_decide_inlining_incrementally): Likewise.
3396
3397 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
3398             Uros Bizjak  <ubizjak@gmail.com>
3399
3400         * config/i386/cpuid.h (bit_MOVBE): New.
3401
3402         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
3403
3404         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
3405         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
3406         (ix86_handle_option): Handle OPT_mmovbe.
3407         (ix86_target_string): Add -mmovbe.
3408         (pta_flags): Add PTA_MOVBE.
3409         (processor_alias_table): Add PTA_MOVBE to "atom".
3410         (override_options): Handle PTA_MOVBE.
3411
3412         * config/i386/i386.h (TARGET_MOVBE): New.
3413
3414         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
3415         (*bswapsi_movbe): New.
3416         (*bswapdi_movbe): Likewise.
3417         (bswapdi2): Renamed to ...
3418         (*bswapdi_1): This.
3419         (bswapdi2): New expander.
3420
3421         * config/i386/i386.opt (mmovbe): New.
3422
3423         * doc/invoke.texi: Document -mmovbe.
3424
3425 2009-05-21  Taras Glek  <tglek@mozilla.com>
3426
3427         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
3428         * gcc-plugin.h (plugin_init): Updated signature.
3429         * gcc-plugin.h (plugin_name_args): Moved to this header.
3430         * doc/plugins.texi (plugin_init): Updated documention to reflect
3431         API change.
3432         * doc/plugins.texi (plugin_name_args): Added to documention.
3433
3434 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
3435
3436         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
3437         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
3438
3439 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
3440
3441         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
3442         JUMP_TABLE_DATA_P predicates where applicable.
3443         * config/i386/predicates.md: Ditto.
3444         * config/i386/sse.md: Ditto.
3445
3446 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
3447
3448         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
3449         operand2 -128 override length_immediate attribute to 1.
3450         * config/i386/predicates.md (constm128_operand): New predicate.
3451
3452         * config/i386/i386.c (memory_address_length): Handle %r12
3453         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
3454         also check REGNO.
3455         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
3456         mode look through optional ZERO_EXTEND and SUBREG.
3457         * config/i386/i386.md (R12_REG): New define_constant.
3458         (prefix_data16): For sse unit set also for MODE_TI insns.
3459         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
3460         insns set if operand 1 is ext_QIreg_operand.
3461         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
3462         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
3463         immediate.
3464         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
3465         mode from MODE_DI to MODE_SI.
3466         (movdi_1_rex64): Override modrm and length_immediate attributes
3467         only for movabs (TYPE_IMOV, alternative 2).
3468         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
3469         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
3470         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
3471         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
3472         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
3473         prefix_rex attribute if DImode.
3474         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
3475         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
3476         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
3477         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
3478         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
3479         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
3480         Likewise.  For TYPE_IMOV clear length_immediate attribute.
3481         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
3482         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
3483         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
3484         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
3485         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
3486         or one operand TYPE_ISHIFT.
3487         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
3488         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
3489         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
3490         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
3491         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
3492         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
3493         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
3494         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
3495         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
3496         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
3497         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
3498         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
3499         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
3500         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
3501         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
3502         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
3503         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
3504         set mode attribute, don't override length attribute.
3505         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
3506         to 1.
3507         (return_internal_long): Set length attribute to 2 instead of 1.
3508         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
3509         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
3510         prefix_rex attribute.
3511         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
3512         New predicates.
3513         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
3514
3515 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3516
3517         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
3518
3519 2009-05-20  Ian Lance Taylor  <iant@google.com>
3520
3521         * tree.c (build_tree_list_vec_stat): New function.
3522         (ctor_to_vec): New function.
3523         (build_nt_call_vec): New function.
3524         (build_call_array): Change args to be a const pointer.
3525         (build_call_vec): New function.
3526         * tree.h (build_nt_call_vec): Declare.
3527         (build_tree_list_vec_stat): Declare.
3528         (build_tree_list_vec): Define.
3529         (build_call_array): Update declaration.
3530         (build_call_vec): Declare.
3531         (ctor_to_vec): Declare.
3532         * c-common.c (tree_vector_cache): New static variable.
3533         (make_tree_vector): New function.
3534         (release_tree_vector): New function.
3535         (make_tree_vector_single): New function.
3536         (make_tree_vector_copy): New function.
3537         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
3538         (make_tree_vector_single, make_tree_vector_copy): Declare.
3539         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
3540         (c_parser_expr_list): Don't manage cache here, instead call
3541         make_tree_vector.
3542         (c_parser_release_expr_list): Remove static function.
3543         (c_parser_vec_to_tree_list): Remove static function.
3544         (c_parser_attributes): Call build_tree_list_vec instead of
3545         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
3546         c_parser_release_expr_list.
3547         (c_parser_postfix_expression_after_primary): Likewise.
3548         (c_parser_objc_keywordexpr): Likewise.
3549
3550 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
3551
3552         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
3553         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
3554         TARGET_CONVERT_TO_TYPE.
3555         * hooks.c (hook_tree_const_tree_null): Define.
3556         * hooks.h (hook_tree_const_tree_null): Declare.
3557         * target.h (struct gcc_target):  Add invalid_parameter_type,
3558         invalid_return_type, promoted_type, and convert_to_type fields.
3559         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
3560         (TARGET_INVALID_RETURN_TYPE): Define.
3561         (TARGET_PROMOTED_TYPE): Define.
3562         (TARGET_CONVERT_TO_TYPE): Define.
3563         (TARGET_INITIALIZER): Update for new fields.
3564         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
3565         (grokparms): Check targetm.invalid_parameter_type.
3566         * c-typeck.c (default_conversion): Check targetm.promoted_type.
3567         * c-convert.c (convert): Check targetm.convert_to_type.
3568
3569 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
3570
3571         * config/mips/mips.md (*extenddi_truncate<mode>,
3572         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
3573         defintions.
3574         (*extendhi_truncateqi): New define_insn_and_sptit.
3575
3576 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
3577
3578         PR middle-end/40204
3579         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
3580         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
3581
3582 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
3583
3584         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
3585         the operand of VIEW_CONVERT_EXPR.
3586
3587 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
3588
3589         * config/i386/driver-i386.c (host_detect_local_cpu): Check
3590         extended family and model for Intel processors.  Support Intel Atom.
3591
3592 2009-05-20  Olivier Hainque  <hainque@adacore.com>
3593
3594         * gstab.h (stab_code_type): Define, to be used instead of the
3595         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
3596         notice.
3597         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
3598         occurrences by stab_code_type.
3599         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
3600
3601 2009-05-20  Martin Jambor  <mjambor@suse.cz>
3602
3603         * tree-flow.h (insert_edge_copies_seq): Undeclare.
3604         (sra_insert_before): Likewise.
3605         (sra_insert_after): Likewise.
3606         (sra_init_cache): Likewise.
3607         (sra_type_can_be_decomposed_p): Likewise.
3608         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
3609         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
3610         (sra_insert_before): Likewise.
3611         (sra_insert_after): Likewise.
3612         (sra_init_cache): Likewise.
3613         (insert_edge_copies_seq): Made static and moved upwards.
3614
3615         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
3616         case.
3617
3618         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
3619
3620         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
3621         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
3622         simple copies.
3623
3624 2009-05-20  Richard Guenther  <rguenther@suse.de>
3625
3626         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
3627         with mismatched comparison modes.
3628
3629 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3630
3631         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
3632         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
3633         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
3634         with shifts for Thumb2.
3635         (orsi_notsi): New for orn.
3636         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
3637         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
3638         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
3639         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
3640         Don't invert remainder for IOR.
3641         
3642 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
3643
3644         PR tree-optimization/40087
3645         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
3646         number_of_iterations_ne): Rename never_infinite argument.
3647         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
3648         number_of_iterations_le): Handle pointer-type ivs when
3649         exit_must_be_taken is false.
3650         (number_of_iterations_cond):  Do not always assume that
3651         exit_must_be_taken if the control variable is a pointer.
3652
3653 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3654
3655         * c-typeck.c (build_binary_op): Allow % on integal vectors.
3656         * doc/extend.texi (Vector Extension): Document that % is allowed too.
3657
3658 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
3659
3660         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
3661         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
3662
3663 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
3664
3665         PR c/40172
3666         * c.opt (Wlogical-op): Disabled by default.
3667         * c-opt (c_common_post_options): Do not enable Wlogical-op with
3668         Wextra.
3669         * doc/invoke.texi (Wlogical-op): Likewise.
3670         
3671 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
3672
3673         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
3674         into CASE_CONVERT.
3675         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
3676         Propagate the type of the first operand.
3677         <ASSERT_EXPR>: Simplify.
3678         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
3679         Rewrite using the RHS code as discriminant.
3680         <NOP_EXPR>: Turn into CASE_CONVERT.
3681         <PLUS_EXPR>: Propagate the type of the first operand.
3682
3683 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
3684
3685         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
3686         (ia64_dconst_0_375): New.
3687         * config/ia64/ia64.c (ia64_override_options): Remove
3688         -minline-sqrt-min-latency warning.
3689         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
3690         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
3691         * config/ia64/ia64.md (*sqrt_approx): Remove.
3692         (sqrtsf2): Remove #if 0.
3693         (sqrtsf2_internal_thr): Rewrite and move to div.md.
3694         (sqrtdf): Remove assert.
3695         (sqrtdf2_internal_thr): Rewrite and move to div.md.
3696         (sqrtxf2): Remove #if 0.
3697         (sqrtxf2_internal_thr): Rewrite and move to div.md.
3698         * div.md (sqrt_approx_rf): New.
3699         (sqrtsf2_internal_thr): New implementation.
3700         (sqrtsf2_internal_lat): New.
3701         (sqrtdf2_internal_thr: New implementation.
3702         (sqrtxf2_internal): New implementation.
3703
3704 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
3705             Hans-Peter Nilsson  <hp@axis.com>
3706
3707         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
3708         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
3709         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
3710         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
3711         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
3712         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
3713         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
3714         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
3715         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
3716         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
3717         * c-common.c: ...from here.
3718
3719 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
3720
3721         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
3722
3723 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3724
3725         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
3726
3727 2009-05-19  Ben Elliston  <bje@au.ibm.com>
3728
3729         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
3730         assignments with memcpy calls.
3731         (add_fdes): Likewise.
3732         (binary_search_unencoded_fdes): Likewise.
3733         (linear_search_fdes): Eliminate type puns.
3734         
3735 2009-05-19  Richard Guenther  <rguenther@suse.de>
3736
3737         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
3738         not falsely claim to have propagated into all uses.
3739
3740 2009-05-19  Ben Elliston  <bje@au.ibm.com>
3741
3742         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
3743         version to v3.0.
3744
3745 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
3746
3747         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
3748         * config/sh/sh.c (sh_legitimate_address_p): Make static.
3749         (TARGET_LEGITIMATE_ADDRESS_P): New.
3750         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3751         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
3752         
3753 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
3754
3755         PR debug/40109
3756         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
3757         child of the containing namespace's DIE.
3758
3759 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
3760
3761         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
3762         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
3763         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
3764         extend patterns.
3765
3766 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
3767
3768         PR target/39942
3769         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
3770         gen_align with gen_pad.
3771         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
3772         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
3773
3774         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
3775         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
3776
3777         * config/i386/i386.md (align): Renamed to ...
3778         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
3779         ASM_OUTPUT_MAX_SKIP_PAD.
3780
3781 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
3782
3783         * config.gcc: Fix variable syntax.
3784
3785         PR target/39531
3786         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
3787         before calling exact_log2.
3788         (output_iorsi3): Likewise.
3789         (output_xorsi3): Likewise.
3790
3791 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
3792
3793         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
3794         for the none zero constant operand except for EQ and NE
3795         comprisons even when the first operand is R0.
3796
3797 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
3798
3799         * config/s390/2064.md: Remove trailing whitespaces.
3800         * config/s390/2084.md: Likewise.
3801         * config/s390/constraints.md: Likewise.
3802         * config/s390/fixdfdi.h: Likewise.
3803         * config/s390/libgcc-glibc.ver: Likewise.
3804         * config/s390/s390-modes.def: Likewise.
3805         * config/s390/s390-protos.h: Likewise.
3806         * config/s390/s390.c: Likewise.
3807         * config/s390/s390.h: Likewise.
3808         * config/s390/s390.md: Likewise.
3809         * config/s390/tpf-unwind.h: Likewise.
3810
3811 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
3812
3813         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
3814
3815 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
3816
3817         M68K TLS support.
3818         * configure.ac (m68k-*-*): Check if binutils support TLS.
3819         * configure: Regenerate.
3820         * config/m68k/predicates.md (symbolic_operand): Extend comment.
3821         * config/m68k/constraints.md (Cu): New constraint.
3822         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
3823         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
3824         (movsi): Handle TLS symbols.
3825         (addsi3_5200): Handle XTLS symbols, indent.
3826         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
3827         (m68k_tls_reference_p): Declare.
3828         (m68k_legitimize_address): Declare.
3829         (m68k_unwrap_symbol): Declare.
3830         * config/m68k/m68k.opt (mxtls): New option.
3831         * config/m68k/m68k.c (ggc.h): Include.
3832         (m68k_output_dwarf_dtprel): Implement hook.
3833         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
3834         (m68k_expand_prologue): Load GOT pointer when function needs it.
3835         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
3836         (m68k_legitimate_constant_address_p): Same.
3837         (m68k_decompose_address): Handle TLS references.
3838         (m68k_get_gp): New static function.
3839         (enum m68k_reloc): New contants.
3840         (TLS_RELOC_P): New macro.
3841         (m68k_wrap_symbol): New static function.
3842         (m68k_unwrap_symbol): New function.
3843         (m68k_final_prescan_insn_1): New static function.
3844         (m68k_final_prescan_insn): New function.
3845         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
3846         functions.
3847         (legitimize_pic_address): Handle TLS references..
3848         (m68k_tls_get_addr, m68k_get_tls_get_addr)
3849         (m68k_libcall_value_in_a0_p)
3850         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
3851         (m68k_call_m68k_read_tp): Helper variables and functions for ...
3852         (m68k_legitimize_tls_address): Handle TLS references.
3853         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
3854         New functions.
3855         (m68k_legitimize_address): Handle TLS symbols.
3856         (m68k_get_reloc_decoration): New static function.
3857         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
3858         UNSPEC_RELOC32.
3859         (m68k_output_dwarf_dtprel): Implement hook.
3860         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
3861         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
3862         m68k_call_* routines.
3863         (sched_attr_op_type): Handle TLS symbols.
3864         (gt-m68k.h): Include.
3865         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
3866         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
3867
3868 2009-05-18  Martin Jambor  <mjambor@suse.cz>
3869
3870         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
3871         (visit_store_addr_for_mod_analysis): New function.
3872         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
3873         (determine_cst_member_ptr): Use gimple_assign_single_p.
3874         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
3875         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
3876         operands.  Don't check number of operands of a NOP_EXPR.
3877
3878 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
3879
3880         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
3881
3882 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
3883
3884         PR c/40172
3885         * c-common.c (warn_logical_operator): Don't warn if one of
3886         expression isn't always true or false.
3887
3888 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
3889
3890         * config/i386/biarch32.h: New file.
3891         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
3892
3893 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
3894
3895         * config/mips/mips.md (*zero_extend<mode>_trunchi,
3896         *zero_extend<mode>_truncqi): Merge these into ...
3897         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
3898         Name the pattern following this as *zero_extendhi_truncqi.
3899
3900 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
3901
3902         PR middle-end/39301
3903         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
3904         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
3905         (output_info): Make field HOST_WIDEST_INT.
3906         (print_statistics): Use HOST_WIDEST_INT_PRINT.
3907         (dump_bitmat_statistics): Same.
3908
3909 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
3910
3911         * config.gcc (use_gcc_stdint):  Set to wrap.
3912         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
3913         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
3914         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
3915         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
3916         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
3917         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
3918         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
3919         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
3920
3921 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
3922
3923         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
3924         tune_64.
3925         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
3926         Move definitions earlier.
3927         (OPT_ARCH64, OPT_ARCH32): Define.
3928         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
3929         and tune_64.
3930
3931 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
3932
3933         PR target/40153
3934         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
3935         implies.
3936
3937 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
3938
3939         * arm.md (movdi2): Copy non-reg values to DImode registers.