(expand_end_bindings): Add test and call for nonlocal_goto_receiver pattern.
authorRichard Kenner <kenner@gcc.gnu.org>
Mon, 12 Aug 1996 11:46:32 +0000 (07:46 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Mon, 12 Aug 1996 11:46:32 +0000 (07:46 -0400)
(expand_end_bindings): Add test and call for nonlocal_goto_receiver
pattern.
(expand_asm_operands): Fix off-by-one error when scanning constraints.

From-SVN: r12622

gcc/stmt.c

index b443fc4..080b1e4 100644 (file)
@@ -1416,7 +1416,7 @@ expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)
         the worst that happens if we get it wrong is we issue an error
         message.  */
 
-      for (j = 0; j < TREE_STRING_LENGTH (TREE_PURPOSE (tail)) - 1; j++)
+      for (j = 0; j < TREE_STRING_LENGTH (TREE_PURPOSE (tail)); j++)
        switch (TREE_STRING_POINTER (TREE_PURPOSE (tail))[j])
          {
          case '+':
@@ -1522,7 +1522,7 @@ expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)
 
       /* Make sure constraint has neither `=' nor `+'.  */
 
-      for (j = 0; j < TREE_STRING_LENGTH (TREE_PURPOSE (tail)) - 1; j++)
+      for (j = 0; j < TREE_STRING_LENGTH (TREE_PURPOSE (tail)); j++)
        switch (TREE_STRING_POINTER (TREE_PURPOSE (tail))[j])
          {
          case '+':   case '=':
@@ -3176,6 +3176,11 @@ expand_end_bindings (vars, mark_ends, dont_jump_in)
        }
 #endif
 
+#ifdef HAVE_nonlocal_goto_receiver
+      if (HAVE_nonlocal_goto_receiver)
+       emit_insn (gen_nonlocal_goto_receiver ());
+#endif
+
       /* The handler expects the desired label address in the static chain
         register.  It tests the address and does an appropriate jump
         to whatever label is desired.  */