aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Sandiford <richard@codesourcery.com>2007-07-31 15:01:37 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2007-07-31 15:01:37 +0000
commit2bde7ae91a1edba5968c32ceb6f10b7b5ea98bfa (patch)
treea8997046d112f6cbfa6e8aa9caf9d79a4a494b61 /gcc
parent58d4783b08975a9517e4c11c6e8204dee41bd8a1 (diff)
downloadgcc-2bde7ae91a1edba5968c32ceb6f10b7b5ea98bfa.zip
gcc-2bde7ae91a1edba5968c32ceb6f10b7b5ea98bfa.tar.gz
gcc-2bde7ae91a1edba5968c32ceb6f10b7b5ea98bfa.tar.bz2
mode-switching.c (create_pre_exit): Don't search past calls.
gcc/ * mode-switching.c (create_pre_exit): Don't search past calls. From-SVN: r127092
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/mode-switching.c11
2 files changed, 15 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8323fae..1f03151 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2007-07-31 Richard Sandiford <richard@codesourcery.com>
+
+ * mode-switching.c (create_pre_exit): Don't search past calls.
+
2007-07-31 Sandra Loosemore <sandra@codesourcery.com>
* config/mips/mips.h (ISA_HAS_SYNCI): Add !TARGET_MIPS16 test.
diff --git a/gcc/mode-switching.c b/gcc/mode-switching.c
index 9667d96..dc05208 100644
--- a/gcc/mode-switching.c
+++ b/gcc/mode-switching.c
@@ -245,6 +245,17 @@ create_pre_exit (int n_entities, int *entity_map, const int *num_modes)
if (INSN_P (return_copy))
{
+ /* When using SJLJ exceptions, the call to the
+ unregister function is inserted between the
+ clobber of the return value and the copy.
+ We do not want to split the block before this
+ or any other call; if we have not found the
+ copy yet, the copy must have been deleted. */
+ if (CALL_P (return_copy))
+ {
+ short_block = 1;
+ break;
+ }
return_copy_pat = PATTERN (return_copy);
switch (GET_CODE (return_copy_pat))
{