OSDN Git Service

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