re PR target/48090 (gcc 4.5.2 miscompilation when building on arm)
[platform/upstream/gcc.git] / gcc / ChangeLog
index 445317d..6c130b3 100644 (file)
@@ -1,3 +1,139 @@
+2011-04-12  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
+
+       PR target/48090
+       * config/arm/arm.md (*arm_negdi2): Fix early clobber constraints.
+
+2011-04-12  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * recog.h (insn_operand_data): Add an "allows_mem" field.
+       * genoutput.c (output_operand_data): Initialize it.
+       * optabs.c (maybe_legitimize_operand_same_code): New function.
+       (maybe_legitimize_operand): Use it when matching the original
+       op->value.
+
+2011-04-12  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * genpreds.c (process_define_predicate): Move most processing
+       to gensupport.c.  Continue to validate the expression.
+       * genrecog.c (did_you_mean_codes, compute_predicate_codes)
+       (process_define_predicate): Move processing to gensupport.c.
+       (main): Remove DEFINE_PREDICATE and DEFINE_SPECIAL_PREDICATE cases.
+       * gensupport.c (did_you_mean_codes): Moved from genrecog.c.
+       (compute_predicate_codes): Moved from genrecog.c.  Add lineno
+       argument.
+       (valid_predicate_name_p): New function, split out from old
+       genpreds.c:process_define_predicate.
+       (process_define_predicate): New function, combining code from
+       old genpreds.c and genrecog.c functions.
+       (process_rtx): Call it for DEFINE_PREDICATE and
+       DEFINE_SPECIAL_PREDICATE.
+
+2011-04-12  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * config/arm/arm.c (arm_print_operand): Use MEM_SIZE to get the
+       size of a '%A' memory reference.
+       (T_DREG, T_QREG): New neon_builtin_type_bits.
+       (arm_init_neon_builtins): Assert that the load and store operands
+       are neon_struct_operands.
+       (locate_neon_builtin_icode): Provide the neon_builtin_type_bits.
+       (NEON_ARG_MEMORY): New builtin_arg.
+       (neon_dereference_pointer): New function.
+       (arm_expand_neon_args): Add a neon_builtin_type_bits argument.
+       Handle NEON_ARG_MEMORY.
+       (arm_expand_neon_builtin): Update after above interface changes.
+       Use NEON_ARG_MEMORY for loads and stores.
+       * config/arm/predicates.md (neon_struct_operand): New predicate.
+       * config/arm/iterators.md (V_two_elem): Tweak formatting.
+       (V_three_elem): Use BLKmode for accesses that have no associated mode.
+       (V_four_elem): Tweak formatting.
+       * config/arm/neon.md (neon_vld1<mode>, neon_vld1_dup<mode>)
+       (neon_vst1_lane<mode>, neon_vst1<mode>, neon_vld2<mode>)
+       (neon_vld2_lane<mode>, neon_vld2_dup<mode>, neon_vst2<mode>)
+       (neon_vst2_lane<mode>, neon_vld3<mode>, neon_vld3_lane<mode>)
+       (neon_vld3_dup<mode>, neon_vst3<mode>, neon_vst3_lane<mode>)
+       (neon_vld4<mode>, neon_vld4_lane<mode>, neon_vld4_dup<mode>)
+       (neon_vst4<mode>): Replace pointer operand with a memory operand.
+       Use %A in the output template.
+       (neon_vld3qa<mode>, neon_vld3qb<mode>, neon_vst3qa<mode>)
+       (neon_vst3qb<mode>, neon_vld4qa<mode>, neon_vld4qb<mode>)
+       (neon_vst4qa<mode>, neon_vst4qb<mode>): Likewise, but halve
+       the width of the memory access.  Remove post-increment.
+       * config/arm/neon-testgen.ml: Allow addresses to have an alignment.
+
+2011-04-12  Nick Clifton  <nickc@redhat.com>
+
+       * config/v850/v850.c (expand_prologue): Do not use the CALLT
+       instruction for interrupt handlers if the target is the basic V850
+       architecture.
+       (expand_epilogue): Likewise.
+
+2011-04-12  Jakub Jelinek  <jakub@redhat.com>
+
+       PR rtl-optimization/48549
+       * combine.c (propagate_for_debug): Also stop after BB_END of
+       this_basic_block.  Process LAST and just stop processing after it.
+       (combine_instructions): If last_combined_insn has been deleted,
+       set last_combined_insn to its PREV_INSN.
+
+2011-04-12  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/46076
+       * gimple.h (struct gimple_statement_call): Add fntype field.
+       (gimple_call_fntype): Adjust.
+       (gimple_call_set_fntype): New function.
+       * gimple.c (gimple_build_call_1): Set the call function type.
+       * gimplify.c (gimplify_call_expr): Preserve the function
+       type the frontend used for the call.
+       (gimplify_modify_expr): Likewise.
+       * lto-streamer-in.c (input_gimple_stmt): Input the call stmts
+       function type.
+       * lto-streamer-out.c (output_gimple_stmt): Output the call stmts
+       function type.
+       * tree-ssa.c (useless_type_conversion_p): Function pointer
+       conversions are useless.
+
+2011-04-12  Martin Jambor  <mjambor@suse.cz>
+
+       * cgraph.h (cgraph_node): Remove function declaration.
+       (cgraph_create_node): Declare.
+       (cgraph_get_create_node): Likewise.
+       * cgraph.c (cgraph_create_node): Renamed to cgraph_create_node_1.
+       Updated all callers.
+       (cgraph_node): Renamed to cgraph_create_node, assert that a node for
+       the decl does not already exist.  Call cgraph_get_create_node instead
+       of cgraph_node.
+       (cgraph_get_create_node): New function.
+       (cgraph_same_body_alias): Update comment.
+       (cgraph_set_call_stmt): Call cgraph_get_node instead of cgraph_node,
+       assert it does not return NULL.
+       (cgraph_update_edges_for_call_stmt): Likewise.
+       (cgraph_clone_edge): Likewise.
+       (cgraph_create_virtual_clone): Likewise.
+       (cgraph_update_edges_for_call_stmt_node): Call cgraph_get_create_node
+       instead of cgraph_node.
+       (cgraph_add_new_function): Call cgraph_create_node or
+       cgraph_get_create_node instead of cgraph_node.
+       * cgraphbuild.c (record_reference): Call cgraph_get_create_node
+       instead of cgraph_node.
+       (record_eh_tables): Likewise.
+       (mark_address): Likewise.
+       (mark_load): Likewise.
+       (build_cgraph_edges): Call cgraph_get_create_node instead
+       of cgraph_node.
+       (rebuild_cgraph_edges): Likewise.
+       * cgraphunit.c (cgraph_finalize_function): Call cgraph_get_create_node
+       instead of cgraph_node.
+       (cgraph_copy_node_for_versioning): Call cgraph_create_node instead of
+       cgraph_node.
+       * lto-symtab.c (lto_symtab_merge_cgraph_nodes_1): Call
+       cgraph_create_node instead of cgraph_node.
+       * c-decl.c (finish_function): Call cgraph_get_create_node instead
+       of cgraph_node.
+       * lto-cgraph.c (input_node): Likewise.
+       * lto-streamer-in.c (input_function): Likewise.
+       * varasm.c (mark_decl_referenced): Likewise.
+       (assemble_alias): Likewise.
+
 2011-04-12  Martin Jambor  <mjambor@suse.cz>
 
        * tree-inline.c (tree_function_versioning): Call cgraph_get_node