summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0049-PR-target-48142.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0049-PR-target-48142.patch')
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0049-PR-target-48142.patch92
1 files changed, 0 insertions, 92 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0049-PR-target-48142.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0049-PR-target-48142.patch
deleted file mode 100644
index 4c0420a..0000000
--- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0049-PR-target-48142.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From 18bc61fc490330f5dc59639626fa9bb5269e31d7 Mon Sep 17 00:00:00 2001
-From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
-Date: Thu, 31 Mar 2011 11:14:41 +0000
-Subject: [PATCH] PR target/48142
- * config/i386/i386.c (ix86_adjust_stack_and_probe): Differentiate
- frame-related from frame-unrelated adjustments to the stack pointer.
-
-git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171778 138bc75d-0d04-0410-961f-82ee72b054a4
-
-index 4fb654f..a524d77 100644
---- a/gcc/config/i386/i386.c
-+++ b/gcc/config/i386/i386.c
-@@ -9981,7 +9981,7 @@ ix86_adjust_stack_and_probe (const HOST_WIDE_INT size)
- probe that many bytes past the specified size to maintain a protection
- area at the botton of the stack. */
- const int dope = 4 * UNITS_PER_WORD;
-- rtx size_rtx = GEN_INT (size);
-+ rtx size_rtx = GEN_INT (size), last;
-
- /* See if we have a constant small number of probes to generate. If so,
- that's the easy case. The run-time loop is made up of 11 insns in the
-@@ -10021,9 +10021,9 @@ ix86_adjust_stack_and_probe (const HOST_WIDE_INT size)
- emit_stack_probe (stack_pointer_rtx);
-
- /* Adjust back to account for the additional first interval. */
-- emit_insn (gen_rtx_SET (VOIDmode, stack_pointer_rtx,
-- plus_constant (stack_pointer_rtx,
-- PROBE_INTERVAL + dope)));
-+ last = emit_insn (gen_rtx_SET (VOIDmode, stack_pointer_rtx,
-+ plus_constant (stack_pointer_rtx,
-+ PROBE_INTERVAL + dope)));
- }
-
- /* Otherwise, do the same as above, but in a loop. Note that we must be
-@@ -10084,15 +10084,33 @@ ix86_adjust_stack_and_probe (const HOST_WIDE_INT size)
- }
-
- /* Adjust back to account for the additional first interval. */
-- emit_insn (gen_rtx_SET (VOIDmode, stack_pointer_rtx,
-- plus_constant (stack_pointer_rtx,
-- PROBE_INTERVAL + dope)));
-+ last = emit_insn (gen_rtx_SET (VOIDmode, stack_pointer_rtx,
-+ plus_constant (stack_pointer_rtx,
-+ PROBE_INTERVAL + dope)));
-
- release_scratch_register_on_entry (&sr);
- }
-
- gcc_assert (cfun->machine->fs.cfa_reg != stack_pointer_rtx);
-- cfun->machine->fs.sp_offset += size;
-+
-+ /* Even if the stack pointer isn't the CFA register, we need to correctly
-+ describe the adjustments made to it, in particular differentiate the
-+ frame-related ones from the frame-unrelated ones. */
-+ if (size > 0)
-+ {
-+ rtx expr = gen_rtx_SEQUENCE (VOIDmode, rtvec_alloc (2));
-+ XVECEXP (expr, 0, 0)
-+ = gen_rtx_SET (VOIDmode, stack_pointer_rtx,
-+ plus_constant (stack_pointer_rtx, -size));
-+ XVECEXP (expr, 0, 1)
-+ = gen_rtx_SET (VOIDmode, stack_pointer_rtx,
-+ plus_constant (stack_pointer_rtx,
-+ PROBE_INTERVAL + dope + size));
-+ add_reg_note (last, REG_FRAME_RELATED_EXPR, expr);
-+ RTX_FRAME_RELATED_P (last) = 1;
-+
-+ cfun->machine->fs.sp_offset += size;
-+ }
-
- /* Make sure nothing is scheduled before we are done. */
- emit_insn (gen_blockage ());
-new file mode 100644
-index 0000000..7964057
---- /dev/null
-+++ b/gcc/testsuite/g++.dg/other/i386-9.C
-@@ -0,0 +1,12 @@
-+// PR target/48142
-+// Testcase by Zdenek Sojka <zsojka@seznam.cz>
-+
-+// { dg-do run { target i?86-*-* x86_64-*-* } }
-+// { dg-options "-Os -mpreferred-stack-boundary=5 -fstack-check -fno-omit-frame-pointer" }
-+
-+int main()
-+{
-+ try { throw 0; }
-+ catch (...) {}
-+ return 0;
-+}
---
-1.7.0.4
-
OpenPOWER on IntegriCloud