diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1996-08-12 07:46:32 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1996-08-12 07:46:32 -0400 |
commit | 4e05a62cb769ebe4f413a9119d7729126e85302b (patch) | |
tree | 37e167294b85386248a063849fb5c50f03cd78dd /gcc | |
parent | 32ccb0aca0b9af986d0f0a87f347eccde8bf1c48 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/stmt.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -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. */ |