]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/emit-rtl.c
Update mainline egcs to gcc2 snapshot 971021.
[thirdparty/gcc.git] / gcc / emit-rtl.c
index 50c6597281902e79b6e6a23feb1718cd39be0347..2204cec03c307eedae7ec87fed2ed0413babe8aa 100644 (file)
@@ -35,6 +35,7 @@ Boston, MA 02111-1307, USA.  */
    is the kind of rtx's they make and what arguments they use.  */
 
 #include "config.h"
+#include <stdio.h>
 #ifdef __STDC__
 #include <stdarg.h>
 #else
@@ -48,6 +49,7 @@ Boston, MA 02111-1307, USA.  */
 #include "expr.h"
 #include "regs.h"
 #include "insn-config.h"
+#include "recog.h"
 #include "real.h"
 #include "obstack.h"
 
@@ -58,8 +60,6 @@ Boston, MA 02111-1307, USA.  */
 #include "bc-optab.h"
 #include "bc-emit.h"
 
-#include <stdio.h>
-
 /* Opcode names */
 #ifdef BCDEBUG_PRINT_CODE
 char *opcode_name[] =
@@ -958,6 +958,8 @@ gen_lowpart (mode, x)
 
       return change_address (x, mode, plus_constant (XEXP (x, 0), offset));
     }
+  else if (GET_CODE (x) == ADDRESSOF)
+    return gen_lowpart (mode, force_reg (GET_MODE (x), x));
   else
     abort ();
 }
@@ -1462,7 +1464,7 @@ gen_inline_header_rtx (first_insn, first_parm_insn, first_labelno,
                       pops_args, stack_slots, forced_labels, function_flags,
                       outgoing_args_size, original_arg_vector,
                       original_decl_initial, regno_rtx, regno_flag,
-                      regno_align)
+                      regno_align, parm_reg_stack_loc)
      rtx first_insn, first_parm_insn;
      int first_labelno, last_labelno, max_parm_regnum, max_regnum, args_size;
      int pops_args;
@@ -1475,6 +1477,7 @@ gen_inline_header_rtx (first_insn, first_parm_insn, first_labelno,
      rtvec regno_rtx;
      char *regno_flag;
      char *regno_align;
+     rtvec parm_reg_stack_loc;
 {
   rtx header = gen_rtx (INLINE_HEADER, VOIDmode,
                        cur_insn_uid++, NULL_RTX,
@@ -1484,7 +1487,8 @@ gen_inline_header_rtx (first_insn, first_parm_insn, first_labelno,
                        stack_slots, forced_labels, function_flags,
                        outgoing_args_size, original_arg_vector,
                        original_decl_initial,
-                       regno_rtx, regno_flag, regno_align);
+                       regno_rtx, regno_flag, regno_align,
+                       parm_reg_stack_loc);
   return header;
 }
 
@@ -1674,6 +1678,10 @@ copy_rtx_if_shared (orig)
          x->used = 1;
          return x;
        }
+      break;
+
+    default:
+      break;
     }
 
   /* This rtx may not be shared.  If it has already been seen,
@@ -1763,6 +1771,9 @@ reset_used_flags (x)
     case BARRIER:
       /* The chain of insns is not being copied.  */
       return;
+      
+    default:
+      break;
     }
 
   x->used = 0;