aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeoffrey Keating <geoffk@apple.com>2007-01-25 07:08:33 +0000
committerGeoffrey Keating <geoffk@gcc.gnu.org>2007-01-25 07:08:33 +0000
commit9dc5c4f5eb37ebb2a627a741fa25a08ac49e91ab (patch)
treea39f622bf461e27f41c20e714f4c32292dc22db9
parent01ffa370154d0d553874a5fa4e8e54852a8b93e7 (diff)
downloadgcc-9dc5c4f5eb37ebb2a627a741fa25a08ac49e91ab.zip
gcc-9dc5c4f5eb37ebb2a627a741fa25a08ac49e91ab.tar.gz
gcc-9dc5c4f5eb37ebb2a627a741fa25a08ac49e91ab.tar.bz2
* unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
From-SVN: r121165
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/unwind-dw2.c10
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d8f1cdd..2996d35 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2007-01-24 Geoffrey Keating <geoffk@apple.com>
+
+ * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
+
2007-01-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
PR middle-end/30447
diff --git a/gcc/unwind-dw2.c b/gcc/unwind-dw2.c
index b40b16f..a4fad20 100644
--- a/gcc/unwind-dw2.c
+++ b/gcc/unwind-dw2.c
@@ -636,6 +636,16 @@ execute_stack_op (const unsigned char *op_ptr, const unsigned char *op_end,
result = stack[stack_elt - 2];
break;
+ case DW_OP_swap:
+ {
+ _Unwind_Word t;
+ gcc_assert (stack_elt >= 2);
+ t = stack[stack_elt - 1];
+ stack[stack_elt - 1] = stack[stack_elt - 2];
+ stack[stack_elt - 2] = t;
+ goto no_push;
+ }
+
case DW_OP_rot:
{
_Unwind_Word t1, t2, t3;