------- Comment #3 from pinskia at gcc dot gnu dot org  2008-08-05 00:22 -------
Note the reason why this "works" on x86 and not rs6000 or really any other
backend is that the x86 back-end assumes that the middle-end asks about some
calls that could return in different locations:
  /* Check that the return value locations are the same.  Like
...
This is also the place we notice 
     differences in the return value ABI.  Note that it is ok for one
     of the functions to have void return type as long as the return
     value of the other is passed in a register.  */
....
  if (STACK_REG_P (a) || STACK_REG_P (b))
    { 
      if (!rtx_equal_p (a, b))
        return false;
    }
  else if (VOID_TYPE_P (TREE_TYPE (DECL_RESULT (cfun->decl))))
    ;
  else if (!rtx_equal_p (a, b))
    return false;


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37024

Reply via email to