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