aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-param-manipulation.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ipa-param-manipulation.c')
-rw-r--r--gcc/ipa-param-manipulation.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/gcc/ipa-param-manipulation.c b/gcc/ipa-param-manipulation.c
index 839bd2e..5fc0de5 100644
--- a/gcc/ipa-param-manipulation.c
+++ b/gcc/ipa-param-manipulation.c
@@ -111,6 +111,9 @@ ipa_dump_adjusted_parameters (FILE *f,
unsigned i, len = vec_safe_length (adj_params);
bool first = true;
+ if (!len)
+ return;
+
fprintf (f, " IPA adjusted parameters: ");
for (i = 0; i < len; i++)
{
@@ -787,7 +790,11 @@ ipa_param_adjustments::modify_call (gcall *stmt,
if (!is_gimple_reg (old_parm) || kept[i])
continue;
tree origin = DECL_ORIGIN (old_parm);
- tree arg = gimple_call_arg (stmt, i);
+ tree arg;
+ if (transitive_remapping)
+ arg = gimple_call_arg (stmt, index_map[i]);
+ else
+ arg = gimple_call_arg (stmt, i);
if (!useless_type_conversion_p (TREE_TYPE (origin), TREE_TYPE (arg)))
{
@@ -899,7 +906,7 @@ ipa_param_adjustments::dump (FILE *f)
fprintf (f, " m_always_copy_start: %i\n", m_always_copy_start);
ipa_dump_adjusted_parameters (f, m_adj_params);
if (m_skip_return)
- fprintf (f, " Will SKIP return.\n");
+ fprintf (f, " Will SKIP return.\n");
}
/* Dump information contained in the object in textual form to stderr. */
@@ -1028,10 +1035,6 @@ ipa_param_body_adjustments::common_initialization (tree old_fndecl,
DECL_CONTEXT (new_parm) = m_fndecl;
TREE_USED (new_parm) = 1;
DECL_IGNORED_P (new_parm) = 1;
- /* We assume all newly created arguments are not addressable. */
- if (TREE_CODE (new_type) == COMPLEX_TYPE
- || TREE_CODE (new_type) == VECTOR_TYPE)
- DECL_GIMPLE_REG_P (new_parm) = 1;
layout_decl (new_parm, 0);
m_new_decls.quick_push (new_parm);
@@ -1888,7 +1891,7 @@ ipa_param_body_adjustments::reset_debug_stmts ()
TREE_ADDRESSABLE (copy) = TREE_ADDRESSABLE (decl);
TREE_READONLY (copy) = TREE_READONLY (decl);
TREE_THIS_VOLATILE (copy) = TREE_THIS_VOLATILE (decl);
- DECL_GIMPLE_REG_P (copy) = DECL_GIMPLE_REG_P (decl);
+ DECL_NOT_GIMPLE_REG_P (copy) = DECL_NOT_GIMPLE_REG_P (decl);
DECL_ARTIFICIAL (copy) = DECL_ARTIFICIAL (decl);
DECL_IGNORED_P (copy) = DECL_IGNORED_P (decl);
DECL_ABSTRACT_ORIGIN (copy) = DECL_ORIGIN (decl);