https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80104

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
                 CC|                            |hubicka at ucw dot cz
     Ever confirmed|0                           |1

--- Comment #1 from Martin Liška <marxin at gcc dot gnu.org> ---
Problem is that we produce a thunk which has an invisible reference type of an
argument. Optimized tree dumps looks as follows:

;; Function c (c, funcdef_no=3, decl_uid=2001, cgraph_uid=1, symbol_order=1)

c (complex float b)
{
  complex float arg.1;
  float retval.0;

  <bb 2> [100.00%]:
  arg.1_2 = b;
  retval.0_4 = a (arg.1_2); [tail call]
  return retval.0_4;

}

Problem is that without any optimization level, arg.1_2 isn't a default def.
Following patch can fix that, but I'm not sure whether it's OK, or it's more a
workaround?

diff --git a/gcc/calls.c b/gcc/calls.c
index 61caf4ca752..404f9e303b7 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -1745,8 +1745,15 @@ initialize_argument_information (int num_actuals
ATTRIBUTE_UNUSED,
                 address.  */
              if (TREE_CODE (args[i].tree_value) == SSA_NAME)
                {
-                 gcc_assert (SSA_NAME_IS_DEFAULT_DEF (args[i].tree_value));
-                 args[i].tree_value = SSA_NAME_VAR (args[i].tree_value);
+                  if (SSA_NAME_IS_DEFAULT_DEF (args[i].tree_value))
+                   args[i].tree_value = SSA_NAME_VAR (args[i].tree_value);
+                 else
+                 {
+                   gimple *g = SSA_NAME_DEF_STMT (args[i].tree_value);
+                   if (gimple_assign_single_p (g))
+                     args[i].tree_value = gimple_assign_rhs1 (g);
+                 }
+
                  gcc_assert (TREE_CODE (args[i].tree_value) == PARM_DECL);
                }
              /* Argument setup code may have copied the value to register.  We

Reply via email to