From: Jan Hubicka Date: Sun, 8 Mar 2009 22:37:26 +0000 (+0100) Subject: re PR target/39361 (Many new neon test failures) X-Git-Tag: releases/gcc-4.4.0~327 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8454d27e6e01ad0a9b49ebb7a2aba4a418d4a49e;p=thirdparty%2Fgcc.git re PR target/39361 (Many new neon test failures) PR target/39361 * tree-inline.c (setup_one_parameter): Do replacement of const argument by constant in SSA form. From-SVN: r144713 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ac3f3fb3af05..90f93eac12cf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-03-07 Jan Hubicka + + PR target/39361 + * tree-inline.c (setup_one_parameter): Do replacement of const argument + by constant in SSA form. + 2009-03-07 Ulrich Weigand PR middle-end/38028 diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 917b5267434f..15419c38a67e 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -2110,6 +2110,10 @@ setup_one_parameter (copy_body_data *id, tree p, tree value, tree fn, We need to construct map for the variable anyway as it might be used in different SSA names when parameter is set in function. + Do replacement at -O0 for const arguments replaced by constant. + This is important for builtin_constant_p and other construct requiring + constant argument to be visible in inlined function body. + FIXME: This usually kills the last connection in between inlined function parameter and the actual value in debug info. Can we do better here? If we just inserted the statement, copy propagation @@ -2118,7 +2122,9 @@ setup_one_parameter (copy_body_data *id, tree p, tree value, tree fn, We might want to introduce a notion that single SSA_NAME might represent multiple variables for purposes of debugging. */ if (gimple_in_ssa_p (cfun) && rhs && def && is_gimple_reg (p) - && optimize + && (optimize + || (TREE_READONLY (p) + && is_gimple_min_invariant (rhs))) && (TREE_CODE (rhs) == SSA_NAME || is_gimple_min_invariant (rhs)) && !SSA_NAME_OCCURS_IN_ABNORMAL_PHI (def))