rguenth [Mon, 10 Oct 2011 15:45:53 +0000 (15:45 +0000)]
2011-10-10 Richard Guenther <rguenther@suse.de>
PR middle-end/50389
* gimple-fold.c (gimplify_and_update_call_from_tree): Do not
mark symbols for renaming. Append the VUSE to all statements
that possibly can have one.
nickc [Mon, 10 Oct 2011 13:31:03 +0000 (13:31 +0000)]
PR middle-end/49801
* compare-elim.c (find_comparisons_in_bb): Use df_get_live_in and
df_get_live_out instead of accessing the bitmaps directly.
(execute_compare_elim_after_reload): Remove calls to df_set_flags,
df_live_add_problem and df_analyze.
rsandifo [Mon, 10 Oct 2011 11:42:55 +0000 (11:42 +0000)]
gcc/
* modulo-sched.c (ps_reg_move_info): Add num_consecutive_stages.
(SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES): Delete.
(node_sched_params): Remove first_reg_move and nreg_moves.
(ps_num_consecutive_stages, extend_node_sched_params): New functions.
(update_node_sched_params): Move up file.
(print_node_sched_params): Print the stage. Don't dump info related
to first_reg_move and nreg_moves.
(set_columns_for_row): New function.
(set_columns_for_ps): Move up file and use set_columns_for_row.
(schedule_reg_move): New function.
(schedule_reg_moves): Call extend_node_sched_params and
schedule_reg_move. Extend size of uses bitmap. Initialize
num_consecutive_stages. Return false if a move could not be
scheduled.
(apply_reg_moves): Don't emit moves here.
(permute_partial_schedule): Handle register moves.
(duplicate_insns_of_cycles): Remove for_prolog. Emit moves according
to the same stage-count test as ddg nodes.
(generate_prolog_epilog): Update calls accordingly.
(sms_schedule): Allow move-scheduling to add a new first stage.
rsandifo [Mon, 10 Oct 2011 11:42:38 +0000 (11:42 +0000)]
gcc/
* modulo-sched.c (ps_insn): Adjust comment.
(ps_reg_move_info): New structure.
(partial_schedule): Add reg_moves field.
(SCHED_PARAMS): Use node_sched_param_vec instead of node_sched_params.
(node_sched_params): Turn first_reg_move into an identifier.
(ps_reg_move): New function.
(ps_rtl_insn): Cope with register moves.
(ps_first_note): Adjust comment and assert that the instruction
isn't a register move.
(node_sched_params): Replace with...
(node_sched_param_vec): ...this vector.
(set_node_sched_params): Adjust accordingly.
(print_node_sched_params): Take a partial schedule instead of a ddg.
Use ps_rtl_insn and ps_reg_move.
(generate_reg_moves): Rename to...
(schedule_reg_moves): ...this. Remove rescan parameter. Record each
move in the partial schedule, but don't emit it here. Don't perform
register substitutions here either.
(apply_reg_moves): New function.
(duplicate_insns_of_cycles): Use register indices directly,
rather than finding instructions using PREV_INSN. Use ps_reg_move.
(sms_schedule): Call schedule_reg_moves before committing to
a partial schedule. Try the next ii if the schedule fails.
Use apply_reg_moves instead of generate_reg_moves. Adjust
call to print_node_sched_params. Free node_sched_param_vec
instead of node_sched_params.
(create_partial_schedule): Initialize reg_moves.
(free_partial_schedule): Free reg_moves.
rsandifo [Mon, 10 Oct 2011 11:42:21 +0000 (11:42 +0000)]
gcc/
* modulo-sched.c (ps_insn): Replace node field with an identifier.
(SCHED_ASAP): Replace with..
(NODE_ASAP): ...this macro.
(SCHED_PARAMS): New macro.
(SCHED_TIME, SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES, SCHED_ROW)
(SCHED_STAGE, SCHED_COLUMN): Redefine using SCHED_PARAMS.
(node_sched_params): Remove asap.
(ps_rtl_insn, ps_first_note): New functions.
(set_node_sched_params): Use XCNEWVEC. Don't copy across the
asap values.
(print_node_sched_params): Use SCHED_PARAMS and NODE_ASAP.
(generate_reg_moves): Pass ids to the SCHED_* macros.
(update_node_sched_params): Take a ps insn identifier rather than
a node as parameter. Use ps_rtl_insn.
(set_columns_for_ps): Update for above field and SCHED_* macro changes.
(permute_partial_schedule): Use ps_rtl_insn and ps_first_note.
(optimize_sc): Update for above field and SCHED_* macro changes.
Update calls to try_scheduling_node_in_cycle and
update_node_sched_params.
(duplicate_insns_of_cycles): Adjust for above field and SCHED_*
macro changes. Use ps_rtl_insn and ps_first_note.
(sms_schedule): Pass ids to the SCHED_* macros.
(get_sched_window): Adjust for above field and SCHED_* macro changes.
Use NODE_ASAP instead of SCHED_ASAP.
(try_scheduling_node_in_cycle): Remove node parameter. Update
call to ps_add_node_check_conflicts. Pass ids to the SCHED_*
macros.
(sms_schedule_by_order): Update call to try_scheduling_node_in_cycle.
(ps_insert_empty_row): Adjust for above field changes.
(compute_split_row): Use ids rather than nodes.
(verify_partial_schedule): Adjust for above field changes.
(print_partial_schedule): Use ps_rtl_insn.
(create_ps_insn): Take an id rather than a node.
(ps_insn_find_column): Adjust for above field changes.
Use ps_rtl_insn.
(ps_insn_advance_column): Adjust for above field changes.
(add_node_to_ps): Remove node parameter. Update call to
create_ps_insn.
(ps_has_conflicts): Use ps_rtl_insn.
(ps_add_node_check_conflicts): Replace node parameter than an id.
irar [Sun, 9 Oct 2011 15:09:00 +0000 (15:09 +0000)]
PR tree-optimization/50635
* tree-vect-patterns.c (vect_handle_widen_mult_by_const): Add
DEF_STMT to the list of statements to be replaced by the
pattern statements.
(vect_handle_widen_mult_by_const): Don't check TYPE_OUT.
nicola [Sun, 9 Oct 2011 10:29:50 +0000 (10:29 +0000)]
In libobjc/:
2011-10-09 Nicola Pero <nicola.pero@meta-innovation.com>
PR libobjc/49883
* init.c (__objc_exec_class): Work around a bug in clang's code
generation. Clang sets the class->info field to values different
from 0x1 or 0x2 (the only allowed values in the traditional GNU
Objective-C runtime ABI) to store some additional information, but
this breaks backwards compatibility. Wipe out all the bits in the
fields other than the first two upon loading a class.
2011-10-09 Nicola Pero <nicola.pero@meta-innovation.com>
* class.c (objc_lookup_class): Added back for compatibility with
clang which seems to emit calls to it.
jakub [Sun, 9 Oct 2011 09:35:23 +0000 (09:35 +0000)]
* pt.c (reregister_specialization): Use htab_find instead of
htab_find_slot with INSERT.
(maybe_process_partial_specialization, lookup_template_class_1): Change
slot variable type to void ** to avoid aliasing problems.
(register_specialization): Likewise. Use slot != NULL instead of
more expensive !optimize_specialization_lookup_p (tmpl) test.
nicola [Sat, 8 Oct 2011 17:52:06 +0000 (17:52 +0000)]
In libobjc/:
2011-10-08 Richard Frith-Macdonald <rfm@gnu.org>
Nicola Pero <nicola.pero@meta-innovation.com>
PR libobjc/50428
* sendmsg.c (__objc_send_initialize): If a class does not have an
+initialize method, search for an +initialize method in the
superclass and in the ancestor classes and execute the first one
that is found. This makes the GNU runtime behave in the same way
as the Apple/NeXT runtime with respect to +initialize methods and
subclassing.
In gcc/:
2011-10-08 Nicola Pero <nicola.pero@meta-innovation.com>
PR libobjc/50428
* doc/objc.texi (Garbage Collection): Updated example to protect
+initialize against execution in subclasses.
In gcc/testsuite/:
2011-10-08 Nicola Pero <nicola.pero@meta-innovation.com>
PR libobjc/50428
* objc/execute/initialize-1.m: New test.
rth [Fri, 7 Oct 2011 22:41:48 +0000 (22:41 +0000)]
Rename vshuffle/vec_shuffle to vec_perm.
* doc/extend.texi (__builtin_shuffle): Improve the description to
include the modulus of the selector. Mention OpenCL.
* doc/md.texi (vec_perm, vec_perm_const): Document named patterns.
* tree.def (VEC_PERM_EXPR): Rename from VEC_SHUFFLE_EXPR.
* genopinit.c (optabs): Rename vshuffle to vec_perm.
* c-typeck.c (c_build_vec_perm_expr): Rename from
c_build_vec_shuffle_expr. Update for name changes.
* optabs.c (expand_vec_perm_expr_p): Rename from
expand_vec_shuffle_expr_p.
(expand_vec_perm_expr): Rename from expand_vec_shuffle_expr.
* optabs.h (OTI_vec_perm): Rename from DOI_vshuffle.
(vec_perm_optab): Rename from vshuffle_optab.
* expr.c, gimple-pretty-print.c, gimple.c, gimplify.c,
c-tree.h, c-parser.c, tree-cfg.c, tree-inline.c, tree-pretty-print.c,
tree-ssa-operands.c, tree-vect-generic.c: Update for name changes.
* config/i386/i386.c (ix86_expand_vec_perm): Rename from
ix86_expand_vshuffle.
* config/i386/i386-protos.h: Update.
* config/i386/sse.md (VEC_PERM_AVX2): Rename from VSHUFFLE_AVX2.
(vec_perm<VEC_PERM_AVX2>): Rename from vshuffle<VSHUFFLE_AVX2>.
mikael [Fri, 7 Oct 2011 19:24:07 +0000 (19:24 +0000)]
* trans-array.h (struct gfc_se): New flag want_coarray.
* trans-intrinsic.c (trans_this_image, trans_image_index,
conv_intrinsic_cobound): Set want_coarray.
* trans_array.c (gfc_conv_expr_descriptor): Evaluate codimension
earlier and without relying on the scalarizer.
ams [Fri, 7 Oct 2011 15:00:06 +0000 (15:00 +0000)]
2011-10-07 Andrew Stubbs <ams@codesourcery.com>
gcc/
* config/arm/predicates.md (shift_amount_operand): Remove constant
range check.
(shift_operator): Check range of constants for all shift operators.
gcc/testsuite/
* gcc.dg/pr50193-1.c: New file.
* gcc.target/arm/shiftable.c: New file.
ams [Fri, 7 Oct 2011 14:59:37 +0000 (14:59 +0000)]
2011-10-07 Andrew Stubbs <ams@codesourcery.com>
gcc/
* config/arm/predicates.md (shift_amount_operand): Remove constant
range check.
(shift_operator): Check range of constants for all shift operators.
gcc/testsuite/
* gcc.dg/pr50193-1.c: New file.
* gcc.target/arm/shiftable.c: New file.
janus [Fri, 7 Oct 2011 14:40:14 +0000 (14:40 +0000)]
2011-10-07 Janus Weil <janus@gcc.gnu.org>
PR fortran/50625
* class.c (gfc_build_class_symbol): Fix whitespace.
* module.c (mio_symbol): Set 'class_ok' attribute.
* trans-decl.c (gfc_get_symbol_decl): Make sure the backend_decl has
been built for class symbols.
bernds [Fri, 7 Oct 2011 12:20:17 +0000 (12:20 +0000)]
* function.c (frame_required_for_rtx): Remove function.
(requires_stack_frame_p): New arg set_up_by_prologue. All callers
changed. Compute a set of mentioned registers and compare against
the new arg rather than calling frame_required_for_rtx.
(thread_prologue_and_epilogue_insns): Compute the set_up_by_prologue
reg set. Convert the unconverted_simple_returns mechanism to store
jump insns rather than their basic blocks. Also check the
orig_entry_edge destination for new blocks.
ebotcazou [Fri, 7 Oct 2011 11:43:03 +0000 (11:43 +0000)]
PR lto/50492
* gcc-interface/gigi.h (gnat_pushdecl): Adjust comment.
* gcc-interface/utils.c (global_context): New variable.
(gnat_pushdecl): Initialize it and set it as the DECL_CONTEXT of DECLs
that are either public external or at top level. Use "No" macro.
(end_subprog_body): Call decl_function_context.
(rest_of_subprog_body_compilation): Likewise.
ebotcazou [Fri, 7 Oct 2011 11:17:55 +0000 (11:17 +0000)]
* gcc-interface/gigi.h (gnat_useless_type_conversion): Declare.
(rest_of_subprog_body_compilation): Likewise.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: For renaming,
test for useless conversions by means of gnat_useless_type_conversion.
* gcc-interface/trans.c: Include bitmap.h and cgraph.h.
(language_function): Add named_ret_val and other_ret_val.
(f_named_ret_val): New macro.
(f_other_ret_val): Likewise.
(gigi): Call rest_of_subprog_body_compilation.
(struct nrv_data): New structure.
(is_nrv_p): New predicate.
(prune_nrv_r): New helper function.
(prune_nrv_in_block): New function.
(finalize_nrv_r): New helper function.
(finalize_nrv): New function.
(return_value_ok_for_nrv_p): New predicate.
(build_return_expr): If optimization is enabled, record candidates for
the Named Return Value optimization.
(build_function_stub): Call rest_of_subprog_body_compilation.
(Subprogram_Body_to_gnu): If optimization is enabled and there are
candidates, finalize the Named Return Value optimization.
Call rest_of_subprog_body_compilation.
(call_to_gnu): At the end, if a return value is needed, simplify the
result before wrapping it up in a COMPOUND_EXPR.
* gcc-interface/utils.c (end_subprog_body): Split into...
(rest_of_subprog_body_compilation): ...this. New function.
(gnat_useless_type_conversion): Likewise.
rth [Thu, 6 Oct 2011 22:22:11 +0000 (22:22 +0000)]
PR 50632
* combine-stack-adjust.c (maybe_move_args_size_note): Add after
parameter; use it to decide whether to merge two notes.
(combine_stack_adjustments_for_block): Use maybe_move_args_size_note
for the deallocation case as well.
* a-cihase.adb, a-ciorma.adb: Avoid accessibility checks in container
references.
2011-10-06 Matthew Heaney <heaney@adacore.com>
* a-cuprqu.ads, a-cuprqu.adb, a-cbprqu.ads, a-cbprqu.adb
(Dequeue_Only_High_Priority): Protected procedure now implemented.
2011-10-06 Vincent Celier <celier@adacore.com>
* g-trasym.adb: Replace old implementation with the default
implementation that returns list of addresses as "0x...".
* g-trasym.ads: Update the list of platforms with the full
capability. Indicate that there is a default implementation
for other platforms.
* g-trasym-unimplemented.ads, g-trasym-unimplemented.adb: Remove.
* gcc-interface/Makefile.in: Remove g-trasym-unimplemented, as there
is now a default implementation for all platforms without the full
capability.
davem [Thu, 6 Oct 2011 19:15:39 +0000 (19:15 +0000)]
Correct errors in sparc SImode popcount/clz patterns when 64-bit.
* config/sparc/sparc.md (popcount<mode>2, clz<mode>2): Split up into...
(popcountdi2, popcountsi2, clzdi2, clzsi2): Explicit expanders, in the
SI mode 64-bit code gen case explicitly zero-extend and truncate.
(*popcount<mode>_sp64): Split up into...
(*popcountdi_sp64, *popcountsi_64): Explicit instantiations, and in the
SImode case use truncate.
(*clzsi_sp64): Rewrite to use truncate, and let the expander emit the
subtract so the compiler can optimize it.
(SIDI): Remove unused mode iterator.
jakub [Thu, 6 Oct 2011 17:49:36 +0000 (17:49 +0000)]
PR tree-optimization/50596
* tree-vectorizer.h (vect_is_simple_cond): New prototype.
(NUM_PATTERNS): Change to 6.
* tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): New
function.
(vect_vect_recog_func_ptrs): Add vect_recog_mixed_size_cond_pattern.
(vect_mark_pattern_stmts): Don't create stmt_vinfo for def_stmt
if it already has one, and don't set STMT_VINFO_VECTYPE in it
if it is already set.
* tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Handle
COND_EXPR in pattern stmts.
(vect_is_simple_cond): No longer static.
* lib/target-supports.exp (check_effective_target_vect_cond_mixed):
New.
* gcc.dg/vect/vect-cond-8.c: New test.
jakub [Thu, 6 Oct 2011 16:50:23 +0000 (16:50 +0000)]
* tree-vect-patterns.c (vect_pattern_recog_1): Use
vect_recog_func_ptr typedef for the first argument.
(vect_pattern_recog): Rename vect_recog_func_ptr variable
to vect_recog_func, use vect_recog_func_ptr typedef for it.
bernds [Thu, 6 Oct 2011 15:59:53 +0000 (15:59 +0000)]
* function.c (thread_prologue_and_epilogue_insns): Build a vector
of unconverted simple return blocks rather than trying to
recompute them later based on bb_flags bitmap tests.
jakub [Thu, 6 Oct 2011 14:36:44 +0000 (14:36 +0000)]
* tree-vect-patterns.c (vect_handle_widen_mult_by_const): For lhs
don't set SSA_NAME_DEF_STMT that has been already set by
gimple_build_assign_with_ops.
(vect_recog_pow_pattern, vect_recog_widen_sum_pattern,
vect_operation_fits_smaller_type, vect_recog_over_widening_pattern):
Likewise.
jakub [Thu, 6 Oct 2011 14:34:48 +0000 (14:34 +0000)]
* tree.h (avoid_folding_inline_builtin): New prototype.
* builtins.c (avoid_folding_inline_builtin): No longer static.
* gimple-fold.c (gimple_fold_builtin): Give up if
avoid_folding_inline_builtin returns true.