aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1996-08-12 07:46:32 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1996-08-12 07:46:32 -0400
commit4e05a62cb769ebe4f413a9119d7729126e85302b (patch)
tree37e167294b85386248a063849fb5c50f03cd78dd
parent32ccb0aca0b9af986d0f0a87f347eccde8bf1c48 (diff)
downloadgcc-4e05a62cb769ebe4f413a9119d7729126e85302b.zip
gcc-4e05a62cb769ebe4f413a9119d7729126e85302b.tar.gz
gcc-4e05a62cb769ebe4f413a9119d7729126e85302b.tar.bz2
(expand_end_bindings): Add test and call for nonlocal_goto_receiver pattern.
(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
-rw-r--r--gcc/stmt.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/stmt.c b/gcc/stmt.c
index b443fc4..080b1e4 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -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. */