2005-09-06 Saurabh Verma <saurabh.verma@codito.com>
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 6 Sep 2005 22:29:45 +0000 (22:29 +0000)
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 6 Sep 2005 22:29:45 +0000 (22:29 +0000)
        PR target/8973
        * config/arc/arc.c (arc_output_function_epilogue): Update flags while
        returning from an interrupt handler.

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

gcc/ChangeLog
gcc/config/arc/arc.c

index 96d6d60..5fae469 100644 (file)
@@ -1,5 +1,11 @@
 2005-09-06  Saurabh Verma  <saurabh.verma@codito.com>
 
+       PR target/8973
+       * config/arc/arc.c (arc_output_function_epilogue): Update flags while
+       returning from an interrupt handler.
+
+2005-09-06  Saurabh Verma  <saurabh.verma@codito.com>
+
        PR target/8972
        * config/arc/arc.c (output_shift): Add check for loop count when
        optimizing.
index 6d8666e..78a95f4 100644 (file)
@@ -1362,8 +1362,13 @@ arc_output_function_epilogue (FILE *file, HOST_WIDE_INT size)
        static const int regs[4] = {
          0, RETURN_ADDR_REGNUM, ILINK1_REGNUM, ILINK2_REGNUM
        };
-       fprintf (file, "\tj.d %s\n", reg_names[regs[fn_type]]);
-      }
+
+       /* Update the flags, if returning from an interrupt handler. */
+       if (ARC_INTERRUPT_P (fn_type))
+         fprintf (file, "\tj.d.f %s\n", reg_names[regs[fn_type]]);
+       else
+         fprintf (file, "\tj.d %s\n", reg_names[regs[fn_type]]);
+       }
 
       /* If the only register saved is the return address, we need a
         nop, unless we have an instruction to put into it.  Otherwise