From 162bfc7efa6dd23a317147f89c557a709488b78b Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Mon, 12 May 2008 18:55:43 +0200 Subject: [PATCH] re PR rtl-optimization/36111 (GCC 4.4.0-20080501 failed to compile openmpi's malloc.c file.) PR rtl-optimization/36111 * recog.c (validate_replace_rtx_1): Unshare new RTL expression that was created for swappable operands. testsuite/ChangeLog: PR rtl-optimization/36111 * gcc.dg/pr36111.c: New test. From-SVN: r135221 --- gcc/ChangeLog | 38 ++++++++++++++++++++-------------- gcc/recog.c | 10 ++++----- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr36111.c | 16 ++++++++++++++ 4 files changed, 49 insertions(+), 20 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr36111.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f21f4da8ce1..2d309c04363 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-05-12 Uros Bizjak + + PR rtl-optimization/36111 + * recog.c (validate_replace_rtx_1): Unshare new RTL expression + that was created for swappable operands. + 2008-05-12 Samuel Tardieu PR ada/36001 @@ -57,10 +63,10 @@ 2008-05-09 Uros Bizjak PR tree-optimization/36129 - * tree-ssa-cpp.c: Include value-prof.h. + * tree-ssa-ccp.c: Include value-prof.h. (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if built-in function was folded to a constant. - * Makefile.in (tree-ssa-cpp.c): Depend on value-prof.h + * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h 2008-05-09 Jan Sjodin Sebastian Pop @@ -114,7 +120,8 @@ * convert.c (strip_float_extensions): Use CONVERT_EXPR_P. * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise. * config/alpha/alpha.c (va_list_skip_additions): Likewise. - * c-common.c (c_alignof_expr, check_function_arguments_recurse): Likewise. + * c-common.c (c_alignof_expr, check_function_arguments_recurse): + Likewise. * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise. * varasm.c (initializer_constant_valid_p, output_constant): Likewise. * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from) @@ -125,12 +132,14 @@ * emit-rtl.c (component_ref_for_mem_expr) (set_mem_attributes_minus_bitpos): Likewise. * tree-ssa-phiopt.c (conditional_replacement): Likewise. - * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr): Likewise. + * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr): + Likewise. * c-typeck.c (default_function_array_conversion, build_indirect_ref) (build_function_call, pointer_diff, build_compound_expr) (c_finish_return): Likewise. * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise. - * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1): Likewise. + * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1): + Likewise. * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise. * expr.c (is_aligning_offset): Likewise. * tree-ssa-alias.c (is_escape_site): Likewise. @@ -150,22 +159,22 @@ * tree.c (really_constant_p, get_unwidened): Likewise. * tree-ssa-loop-niter.c (expand_simple_operations): Likewise. * tree-ssa-loop-im.c (rewrite_bittest): Likewise. - * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1): Likewise. - * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use CONVERT_EXPR_P. + * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1): + Likewise. + * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use + CONVERT_EXPR_P. (CONVERT_EXPR_P): Define. (CASE_CONVERT): Define. 2008-05-08 Kenneth Zadeck PR middle-end/36117 - * dce.c (deletable_insn_p): Do not delete calls if - df_in_progress. - (delete_unmarked_insns): When deleting a call, call + * dce.c (deletable_insn_p): Do not delete calls if df_in_progress. + (delete_unmarked_insns): When deleting a call, call delete_unreachable_blocks. * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P, - RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed - doc. - + RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc. + 2008-05-08 Richard Guenther * doc/invoke.texi (-fdump-tree-salias): Remove documentation. @@ -353,8 +362,7 @@ (add_to_addressable_set): Likewise. * tree-ssa.c (verify_ssa_name): Do not handle SFTs. * tree-tailcall.c (suitable_for_tail_opt_p): Likewise. - * tree-vect-transform.c (vect_create_data_ref_ptr): Do not - set subvars. + * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars. * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization. (tree_code_size): Remove STRUCT_FIELD_TAG handling. (tree_node_structure): Likewise. diff --git a/gcc/recog.c b/gcc/recog.c index 7303b2a86f3..91e4e999d6c 100644 --- a/gcc/recog.c +++ b/gcc/recog.c @@ -589,11 +589,11 @@ validate_replace_rtx_1 (rtx *loc, rtx from, rtx to, rtx object) if (SWAPPABLE_OPERANDS_P (x) && swap_commutative_operands_p (XEXP (x, 0), XEXP (x, 1))) { - validate_change (object, loc, - gen_rtx_fmt_ee (COMMUTATIVE_ARITH_P (x) ? code - : swap_condition (code), - GET_MODE (x), XEXP (x, 1), - XEXP (x, 0)), 1); + validate_unshare_change (object, loc, + gen_rtx_fmt_ee (COMMUTATIVE_ARITH_P (x) ? code + : swap_condition (code), + GET_MODE (x), XEXP (x, 1), + XEXP (x, 0)), 1); x = *loc; code = GET_CODE (x); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 182f0494d75..e2624e44e41 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-05-12 Uros Bizjak + + PR rtl-optimization/36111 + * gcc.dg/pr36111.c: New test. + 2008-05-12 Francois-Xavier Coudert PR fortran/36176 diff --git a/gcc/testsuite/gcc.dg/pr36111.c b/gcc/testsuite/gcc.dg/pr36111.c new file mode 100644 index 00000000000..498c39e1be4 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr36111.c @@ -0,0 +1,16 @@ +/* { dg-do compile { target fpic } } */ +/* { dg-options "-O2 -fpic" } */ + +typedef struct { + int lock; + int pad0_; +} mutex_t; + +static mutex_t main_arena; + +void __malloc_check_init() +{ + for(;;) + __asm__ __volatile__ ("": "+m"(main_arena.lock) ); +} + -- 2.30.2