OSDN Git Service

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