]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
* unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
authorGeoffrey Keating <geoffk@apple.com>
Thu, 25 Jan 2007 07:08:33 +0000 (07:08 +0000)
committerGeoffrey Keating <geoffk@gcc.gnu.org>
Thu, 25 Jan 2007 07:08:33 +0000 (07:08 +0000)
From-SVN: r121165

gcc/ChangeLog
gcc/unwind-dw2.c

index d8f1cddc59cf46b6b283d6d1071bfc183066333c..2996d351317e390729a43692e288fc84cda39881 100644 (file)
@@ -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
index b40b16fda552b84c96ec7b0c843f4f1a4e17cea9..a4fad20f4cd2b12c5572460927b3ea0f74c8d604 100644 (file)
@@ -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;