OSDN Git Service

* function.c (diddle_return_value): Use hard_function_value to
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 12 Nov 1999 03:46:21 +0000 (03:46 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 12 Nov 1999 03:46:21 +0000 (03:46 +0000)
        get an rtx suitable for use in the USE/CLOBBER insn.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30494 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/function.c

index 7ac9966..68fbfbd 100644 (file)
@@ -1,5 +1,8 @@
 Thu Nov 11 18:54:24 1999  Jeffrey A Law  (law@cygnus.com)
 
+       * function.c (diddle_return_value): Use hard_function_value to
+       get an rtx suitable for use in the USE/CLOBBER insn.
+
        * global.c (global_conflicts): Update comments.
        (record_conflicts): No need to record conflicts between pseudos here.
 
index edf979f..a8ed54c 100644 (file)
@@ -6200,10 +6200,16 @@ void
 diddle_return_value (code)
      enum rtx_code code;
 {
-  rtx return_reg = DECL_RTL (DECL_RESULT (current_function_decl));
+  rtx return_reg;
+  tree decl_result = DECL_RESULT (current_function_decl);
 
-  if (return_reg)
+  if (DECL_RTL (decl_result))
     {
+      /* Use hard_function_value to avoid creating a reference to a BLKmode 
+        register in the USE/CLOBBER insn.  */
+      return_reg = hard_function_value (TREE_TYPE (decl_result),
+                                       current_function_decl);
+
       if (GET_CODE (return_reg) == REG
          && REGNO (return_reg) < FIRST_PSEUDO_REGISTER)
        emit_insn (gen_rtx_fmt_e (code, VOIDmode, return_reg));