Blame SOURCES/gcc48-rh1469697-6.patch

5ed81e
commit dd9992d1b96b5811873c98a208c029bebb0c3577
5ed81e
Author: law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
5ed81e
Date:   Wed Sep 20 05:35:07 2017 +0000
5ed81e
5ed81e
            * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): New.
5ed81e
            (ix86_expand_prologue): Dump stack clash info as needed.
5ed81e
            Call ix86_adjust_stack_and_probe_stack_clash as needed.
5ed81e
    
5ed81e
            * gcc.dg/stack-check-4.c: New test.
5ed81e
            * gcc.dg/stack-check-5.c: New test.
5ed81e
            * gcc.dg/stack-check-6.c: New test.
5ed81e
            * gcc.dg/stack-check-6a.c: New test.
5ed81e
            * gcc.dg/stack-check-7.c: New test.
5ed81e
            * gcc.dg/stack-check-8.c: New test.
5ed81e
            * gcc.dg/stack-check-9.c: New test.
5ed81e
            * gcc.dg/stack-check-10.c: New test.
5ed81e
            * lib/target-supports.exp
5ed81e
            (check_effective_target_supports_stack_clash_protection): Enable for
5ed81e
            x86 and x86_64 targets.
5ed81e
    
5ed81e
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@252998 138bc75d-0d04-0410-961f-82ee72b054a4
5ed81e
5ed81e
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
5ed81e
index d996fd160e8..a555b0774c0 100644
5ed81e
--- a/gcc/config/i386/i386.c
5ed81e
+++ b/gcc/config/i386/i386.c
5ed81e
@@ -9839,6 +9839,147 @@ release_scratch_register_on_entry (struct scratch_reg *sr)
5ed81e
 
5ed81e
 #define PROBE_INTERVAL (1 << STACK_CHECK_PROBE_INTERVAL_EXP)
5ed81e
 
5ed81e
+/* Emit code to adjust the stack pointer by SIZE bytes while probing it.
5ed81e
+
5ed81e
+   This differs from the next routine in that it tries hard to prevent
5ed81e
+   attacks that jump the stack guard.  Thus it is never allowed to allocate
5ed81e
+   more than PROBE_INTERVAL bytes of stack space without a suitable
5ed81e
+   probe.  */
5ed81e
+
5ed81e
+static void
5ed81e
+ix86_adjust_stack_and_probe_stack_clash (const HOST_WIDE_INT size)
5ed81e
+{
5ed81e
+  struct machine_function *m = cfun->machine;
5ed81e
+
5ed81e
+  /* If this function does not statically allocate stack space, then
5ed81e
+     no probes are needed.  */
5ed81e
+  if (!size)
5ed81e
+    {
5ed81e
+      dump_stack_clash_frame_info (NO_PROBE_NO_FRAME, false);
5ed81e
+      return;
5ed81e
+    }
5ed81e
+
5ed81e
+  /* If we are a noreturn function, then we have to consider the
5ed81e
+     possibility that we're called via a jump rather than a call.
5ed81e
+
5ed81e
+     Thus we don't have the implicit probe generated by saving the
5ed81e
+     return address into the stack at the call.  Thus, the stack
5ed81e
+     pointer could be anywhere in the guard page.  The safe thing
5ed81e
+     to do is emit a probe now.
5ed81e
+
5ed81e
+     ?!? This should be revamped to work like aarch64 and s390 where
5ed81e
+     we track the offset from the most recent probe.  Normally that
5ed81e
+     offset would be zero.  For a non-return function we would reset
5ed81e
+     it to PROBE_INTERVAL - (STACK_BOUNDARY / BITS_PER_UNIT).   Then
5ed81e
+     we just probe when we cross PROBE_INTERVAL.  */
5ed81e
+  if (TREE_THIS_VOLATILE (cfun->decl))
5ed81e
+    {
5ed81e
+      emit_stack_probe (plus_constant (Pmode, stack_pointer_rtx,
5ed81e
+				       -GET_MODE_SIZE (word_mode)));
5ed81e
+      emit_insn (gen_blockage ());
5ed81e
+    }
5ed81e
+
5ed81e
+  /* If we allocate less than the size of the guard statically,
5ed81e
+     then no probing is necessary, but we do need to allocate
5ed81e
+     the stack.  */
5ed81e
+  if (size < (1 << PARAM_VALUE (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE)))
5ed81e
+    {
5ed81e
+      pro_epilogue_adjust_stack (stack_pointer_rtx, stack_pointer_rtx,
5ed81e
+			         GEN_INT (-size), -1,
5ed81e
+			         m->fs.cfa_reg == stack_pointer_rtx);
5ed81e
+      dump_stack_clash_frame_info (NO_PROBE_SMALL_FRAME, true);
5ed81e
+      return;
5ed81e
+    }
5ed81e
+
5ed81e
+  /* We're allocating a large enough stack frame that we need to
5ed81e
+     emit probes.  Either emit them inline or in a loop depending
5ed81e
+     on the size.  */
5ed81e
+  HOST_WIDE_INT probe_interval
5ed81e
+    = 1 << PARAM_VALUE (PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL);
5ed81e
+  if (size <= 4 * probe_interval)
5ed81e
+    {
5ed81e
+      HOST_WIDE_INT i;
5ed81e
+      for (i = probe_interval; i <= size; i += probe_interval)
5ed81e
+	{
5ed81e
+	  /* Allocate PROBE_INTERVAL bytes.  */
5ed81e
+	  pro_epilogue_adjust_stack (stack_pointer_rtx, stack_pointer_rtx,
5ed81e
+				     GEN_INT (-probe_interval), -1,
5ed81e
+				     m->fs.cfa_reg == stack_pointer_rtx);
5ed81e
+
5ed81e
+	  /* And probe at *sp.  */
5ed81e
+	  emit_stack_probe (stack_pointer_rtx);
5ed81e
+	  emit_insn (gen_blockage ());
5ed81e
+	}
5ed81e
+
5ed81e
+      /* We need to allocate space for the residual, but we do not need
5ed81e
+	 to probe the residual.  */
5ed81e
+      HOST_WIDE_INT residual = (i - probe_interval - size);
5ed81e
+      if (residual)
5ed81e
+	pro_epilogue_adjust_stack (stack_pointer_rtx, stack_pointer_rtx,
5ed81e
+				   GEN_INT (residual), -1,
5ed81e
+				   m->fs.cfa_reg == stack_pointer_rtx);
5ed81e
+      dump_stack_clash_frame_info (PROBE_INLINE, residual != 0);
5ed81e
+    }
5ed81e
+  else
5ed81e
+    {
5ed81e
+      struct scratch_reg sr;
5ed81e
+      get_scratch_register_on_entry (&sr);
5ed81e
+
5ed81e
+      /* Step 1: round SIZE down to a multiple of the interval.  */
5ed81e
+      HOST_WIDE_INT rounded_size = size & -probe_interval;
5ed81e
+
5ed81e
+      /* Step 2: compute final value of the loop counter.  Use lea if
5ed81e
+	 possible.  */
5ed81e
+      rtx addr = plus_constant (Pmode, stack_pointer_rtx, -rounded_size);
5ed81e
+      rtx insn;
5ed81e
+      if (address_operand (addr, Pmode))
5ed81e
+	insn = emit_insn (gen_rtx_SET (VOIDmode, sr.reg, addr));
5ed81e
+      else
5ed81e
+	{
5ed81e
+	  emit_move_insn (sr.reg, GEN_INT (-rounded_size));
5ed81e
+	  insn = emit_insn (gen_rtx_SET (VOIDmode, sr.reg,
5ed81e
+					 gen_rtx_PLUS (Pmode, sr.reg,
5ed81e
+						       stack_pointer_rtx)));
5ed81e
+	}
5ed81e
+      if (m->fs.cfa_reg == stack_pointer_rtx)
5ed81e
+	{
5ed81e
+	  add_reg_note (insn, REG_CFA_DEF_CFA,
5ed81e
+			plus_constant (Pmode, sr.reg,
5ed81e
+				       m->fs.cfa_offset + rounded_size));
5ed81e
+	  RTX_FRAME_RELATED_P (insn) = 1;
5ed81e
+        }
5ed81e
+
5ed81e
+      /* Step 3: the loop.  */
5ed81e
+      rtx size_rtx = GEN_INT (rounded_size);
5ed81e
+      insn = emit_insn (ix86_gen_adjust_stack_and_probe (sr.reg, sr.reg,
5ed81e
+							 size_rtx));
5ed81e
+      if (m->fs.cfa_reg == stack_pointer_rtx)
5ed81e
+	{
5ed81e
+	  m->fs.cfa_offset += rounded_size;
5ed81e
+	  add_reg_note (insn, REG_CFA_DEF_CFA,
5ed81e
+			plus_constant (Pmode, stack_pointer_rtx,
5ed81e
+				       m->fs.cfa_offset));
5ed81e
+	  RTX_FRAME_RELATED_P (insn) = 1;
5ed81e
+        }
5ed81e
+      m->fs.sp_offset += rounded_size;
5ed81e
+      emit_insn (gen_blockage ());
5ed81e
+
5ed81e
+      /* Step 4: adjust SP if we cannot assert at compile-time that SIZE
5ed81e
+	 is equal to ROUNDED_SIZE.  */
5ed81e
+
5ed81e
+      if (size != rounded_size)
5ed81e
+	pro_epilogue_adjust_stack (stack_pointer_rtx, stack_pointer_rtx,
5ed81e
+				   GEN_INT (rounded_size - size), -1,
5ed81e
+				   m->fs.cfa_reg == stack_pointer_rtx);
5ed81e
+      dump_stack_clash_frame_info (PROBE_LOOP, size != rounded_size);
5ed81e
+
5ed81e
+      release_scratch_register_on_entry (&sr);
5ed81e
+    }
5ed81e
+
5ed81e
+  /* Make sure nothing is scheduled before we are done.  */
5ed81e
+  emit_insn (gen_blockage ());
5ed81e
+}
5ed81e
+
5ed81e
 /* Emit code to adjust the stack pointer by SIZE bytes while probing it.  */
5ed81e
 
5ed81e
 static void
5ed81e
@@ -10529,12 +10670,19 @@ ix86_expand_prologue (void)
5ed81e
 
5ed81e
   /* The stack has already been decremented by the instruction calling us
5ed81e
      so probe if the size is non-negative to preserve the protection area.  */
5ed81e
-  if (allocate >= 0 && flag_stack_check == STATIC_BUILTIN_STACK_CHECK)
5ed81e
+  if (allocate >= 0
5ed81e
+      && (flag_stack_check == STATIC_BUILTIN_STACK_CHECK
5ed81e
+	  || flag_stack_clash_protection))
5ed81e
     {
5ed81e
       /* We expect the registers to be saved when probes are used.  */
5ed81e
       gcc_assert (int_registers_saved);
5ed81e
 
5ed81e
-      if (STACK_CHECK_MOVING_SP)
5ed81e
+      if (flag_stack_clash_protection)
5ed81e
+	{
5ed81e
+	  ix86_adjust_stack_and_probe_stack_clash (allocate);
5ed81e
+	  allocate = 0;
5ed81e
+	}
5ed81e
+      else if (STACK_CHECK_MOVING_SP)
5ed81e
 	{
5ed81e
 	  ix86_adjust_stack_and_probe (allocate);
5ed81e
 	  allocate = 0;
5ed81e
diff --git a/gcc/testsuite/gcc.dg/stack-check-10.c b/gcc/testsuite/gcc.dg/stack-check-10.c
5ed81e
new file mode 100644
5ed81e
index 00000000000..a86956ad692
5ed81e
--- /dev/null
5ed81e
+++ b/gcc/testsuite/gcc.dg/stack-check-10.c
5ed81e
@@ -0,0 +1,41 @@
5ed81e
+/* { dg-do compile } */
5ed81e
+/* { dg-options "-O2 -fstack-clash-protection -fdump-rtl-pro_and_epilogue -fno-optimize-sibling-calls --param stack-clash-protection-probe-interval=12 --param stack-clash-protection-guard-size=12" } */
5ed81e
+/* { dg-require-effective-target supports_stack_clash_protection } */
5ed81e
+
5ed81e
+int f (int *);
5ed81e
+
5ed81e
+int
5ed81e
+g (int a)
5ed81e
+{
5ed81e
+  return f (&a);
5ed81e
+}
5ed81e
+
5ed81e
+int f1 (void);
5ed81e
+int f2 (int);
5ed81e
+
5ed81e
+int
5ed81e
+f3 (void)
5ed81e
+{
5ed81e
+  return f2 (f1 ());
5ed81e
+}
5ed81e
+
5ed81e
+
5ed81e
+/* If we have caller implicit probes, then we should not need probes in either callee.
5ed81e
+   Else callees may need probes, particularly if non-leaf functions require a
5ed81e
+   frame/frame pointer.  */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash no probe" 2 "pro_and_epilogue" { target caller_implicit_probes } } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash inline probe" 1 "pro_and_epilogue" { target { ! caller_implicit_probes } } } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash no probe" 1 "pro_and_epilogue" { target { ! caller_implicit_probes } } } } */
5ed81e
+
5ed81e
+/* Neither of these functions are a nonreturn function.  */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash not noreturn" 2 "pro_and_epilogue" } } */
5ed81e
+
5ed81e
+/* If the callee realigns the stack or has a mandatory frame, then both functions
5ed81e
+   have a residual allocation.  Else just g() has a residual allocation.  */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash residual allocation in prologue" 2 "pro_and_epilogue" } } */
5ed81e
+
5ed81e
+
5ed81e
+/* If the target has frame pointers for non-leafs, then both functions will
5ed81e
+   need a frame pointer.  Otherwise neither should.  */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash no frame pointer needed" 2 "pro_and_epilogue" { target { ! frame_pointer_for_non_leaf } } } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash frame pointer needed" 2 "pro_and_epilogue" { target { frame_pointer_for_non_leaf } } } } */
5ed81e
diff --git a/gcc/testsuite/gcc.dg/stack-check-3.c b/gcc/testsuite/gcc.dg/stack-check-3.c
5ed81e
index 58fb65649ee..f0bf7c71a5b 100644
5ed81e
--- a/gcc/testsuite/gcc.dg/stack-check-3.c
5ed81e
+++ b/gcc/testsuite/gcc.dg/stack-check-3.c
5ed81e
@@ -7,7 +7,7 @@
5ed81e
    residual allocation + probe for f?.  */
5ed81e
 
5ed81e
 /* { dg-do compile } */
5ed81e
-/* { dg-options "-O2 -fstack-clash-protection -fdump-rtl-expand -fno-optimize-sibling-calls --param stack-clash-protection-probe-interval=4096 --param stack-clash-protection-guard-size=4096" } */
5ed81e
+/* { dg-options "-O2 -fstack-clash-protection -fdump-rtl-expand -fno-optimize-sibling-calls --param stack-clash-protection-probe-interval=12 --param stack-clash-protection-guard-size=12" } */
5ed81e
 /* { dg-require-effective-target supports_stack_clash_protection } */
5ed81e
 
5ed81e
 __attribute__((noinline, noclone)) void
5ed81e
diff --git a/gcc/testsuite/gcc.dg/stack-check-4.c b/gcc/testsuite/gcc.dg/stack-check-4.c
5ed81e
new file mode 100644
5ed81e
index 00000000000..b0c5c61972f
5ed81e
--- /dev/null
5ed81e
+++ b/gcc/testsuite/gcc.dg/stack-check-4.c
5ed81e
@@ -0,0 +1,42 @@
5ed81e
+/* On targets where the call instruction is an implicit probe of *sp, we
5ed81e
+   elide stack probes as long as the size of the local stack is less than
5ed81e
+   PROBE_INTERVAL.
5ed81e
+
5ed81e
+   But if the caller were to transform a tail call into a direct jump
5ed81e
+   we do not have that implicit probe.  This normally isn't a problem as
5ed81e
+   the caller must not have a local frame for that optimization to apply.
5ed81e
+
5ed81e
+   However, a sufficiently smart compiler could realize that the caller's
5ed81e
+   local stack need not be torn down and thus could transform a call into
5ed81e
+   a jump if the target is a noreturn function, even if the caller has
5ed81e
+   a local frame.
5ed81e
+
5ed81e
+   To guard against that, targets that depend on *sp being probed by the
5ed81e
+   call itself must emit a probe if the target function is a noreturn
5ed81e
+   function, even if they just allocate a small amount of stack space.
5ed81e
+
5ed81e
+   Rather than try to parse RTL or assembly code, we instead require the
5ed81e
+   prologue code to emit information into the dump file that we can
5ed81e
+   scan for.   We scan for both the positive and negative cases.  */
5ed81e
+
5ed81e
+/* { dg-do compile } */
5ed81e
+/* { dg-options "-O2 -fstack-clash-protection -fdump-rtl-pro_and_epilogue -fno-optimize-sibling-calls" } */
5ed81e
+/* { dg-require-effective-target supports_stack_clash_protection } */
5ed81e
+
5ed81e
+extern void arf (char *);
5ed81e
+
5ed81e
+__attribute__ ((noreturn)) void foo1 ()
5ed81e
+{
5ed81e
+  char x[10];
5ed81e
+  while (1)
5ed81e
+    arf (x);
5ed81e
+}
5ed81e
+
5ed81e
+void foo2 ()
5ed81e
+{
5ed81e
+  char x[10];
5ed81e
+  arf (x);
5ed81e
+}
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash noreturn" 1 "pro_and_epilogue" } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash not noreturn" 1 "pro_and_epilogue" } } */
5ed81e
+
5ed81e
diff --git a/gcc/testsuite/gcc.dg/stack-check-5.c b/gcc/testsuite/gcc.dg/stack-check-5.c
5ed81e
new file mode 100644
5ed81e
index 00000000000..2171d9b6c23
5ed81e
--- /dev/null
5ed81e
+++ b/gcc/testsuite/gcc.dg/stack-check-5.c
5ed81e
@@ -0,0 +1,74 @@
5ed81e
+/* { dg-do compile } */
5ed81e
+/* { dg-options "-O2 -fstack-clash-protection -fdump-rtl-pro_and_epilogue -fno-optimize-sibling-calls --param stack-clash-protection-probe-interval=12 --param stack-clash-protection-guard-size=12" } */
5ed81e
+/* { dg-require-effective-target supports_stack_clash_protection } */
5ed81e
+
5ed81e
+
5ed81e
+extern void foo (char *);
5ed81e
+extern void bar (void);
5ed81e
+
5ed81e
+/* This function allocates no local stack and is a leaf.  It should have no
5ed81e
+   probes on any target and should not require a frame pointer.  */
5ed81e
+int
5ed81e
+f0 (int x, int y)
5ed81e
+{
5ed81e
+  asm volatile ("" : : : "memory");  
5ed81e
+  return x + y;
5ed81e
+}
5ed81e
+
5ed81e
+/* This function allocates no local stack, but is not a leaf.  Ideally it
5ed81e
+   should not need probing and no frame pointer.  */
5ed81e
+int
5ed81e
+f1 (int x, int y)
5ed81e
+{
5ed81e
+  asm volatile ("" : : : "memory");  
5ed81e
+  bar ();
5ed81e
+}
5ed81e
+
5ed81e
+/* This is a leaf with a small frame.  On targets with implicit probes in
5ed81e
+   the caller, this should not need probing.  On targets with no implicit
5ed81e
+   probes in the caller, it may require probes.  Ideally it should need no
5ed81e
+   frame pointer.  */
5ed81e
+void
5ed81e
+f2 (void)
5ed81e
+{
5ed81e
+  char buf[512];
5ed81e
+  asm volatile ("" : : "g" (&buf) : "memory");
5ed81e
+}
5ed81e
+
5ed81e
+/* This is a non-leaf with a small frame.  On targets with implicit probes in
5ed81e
+   the caller, this should not need probing.  On targets with no implicit
5ed81e
+   probes in the caller, it may require probes.  It should need no frame
5ed81e
+   pointer.  */
5ed81e
+void
5ed81e
+f3 (void)
5ed81e
+{
5ed81e
+  char buf[512];
5ed81e
+  foo (buf);
5ed81e
+}
5ed81e
+
5ed81e
+/* If we have caller implicit probes, then we should not need probes.
5ed81e
+   Else callees may need probes, particularly if non-leaf functions require a
5ed81e
+   frame/frame pointer.  */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash no probe" 4 "pro_and_epilogue" { target caller_implicit_probes } } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash no probe" 2 "pro_and_epilogue" { target { ! caller_implicit_probes } } } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash inline probes " 2 "pro_and_epilogue" { target { ! caller_implicit_probes } } } } */
5ed81e
+
5ed81e
+/* None of these functions are marked with the noreturn attribute.  */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash not noreturn" 4 "pro_and_epilogue" } } */
5ed81e
+
5ed81e
+/* Two functions are leafs, two are not.  Verify the target identified them
5ed81e
+   appropriately.  */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash no frame pointer needed" 4 "pro_and_epilogue" { target { ! frame_pointer_for_non_leaf } } } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash no frame pointer needed" 2 "pro_and_epilogue" { target { frame_pointer_for_non_leaf } } } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash frame pointer needed" 2 "pro_and_epilogue" { target { frame_pointer_for_non_leaf } } } } */
5ed81e
+
5ed81e
+
5ed81e
+/* We have selected the size of the array in f2/f3 to be large enough
5ed81e
+   to not live in the red zone on targets that support it.
5ed81e
+
5ed81e
+   That allows simplification of this test considerably.
5ed81e
+   f1() should not require any allocations, thus no residuals.
5ed81e
+   All the rest of the functions require some kind of allocation,
5ed81e
+   either for the saved fp/rp or the array.  */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash no residual allocation in prologue" 1 "pro_and_epilogue" } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash residual allocation in prologue" 3 "pro_and_epilogue" } } */
5ed81e
diff --git a/gcc/testsuite/gcc.dg/stack-check-6.c b/gcc/testsuite/gcc.dg/stack-check-6.c
5ed81e
new file mode 100644
5ed81e
index 00000000000..ad2021c9037
5ed81e
--- /dev/null
5ed81e
+++ b/gcc/testsuite/gcc.dg/stack-check-6.c
5ed81e
@@ -0,0 +1,55 @@
5ed81e
+/* { dg-do compile } */
5ed81e
+/* { dg-options "-O2 -fstack-clash-protection -fdump-rtl-pro_and_epilogue -fno-optimize-sibling-calls --param stack-clash-protection-probe-interval=12 --param stack-clash-protection-guard-size=12" } */
5ed81e
+/* { dg-require-effective-target supports_stack_clash_protection } */
5ed81e
+
5ed81e
+
5ed81e
+extern void foo (char *);
5ed81e
+extern void bar (void);
5ed81e
+
5ed81e
+
5ed81e
+/* This is a leaf with a frame that is large enough to require probing with
5ed81e
+   a residual allocation, but small enough to probe inline.  */
5ed81e
+void
5ed81e
+f4 (void)
5ed81e
+{
5ed81e
+  char buf[4096 + 512];
5ed81e
+  asm volatile ("" : : "g" (&buf) : "memory");
5ed81e
+}
5ed81e
+
5ed81e
+
5ed81e
+/* This is a non-leaf with a frame large enough to require probing and
5ed81e
+   a residual allocation, but small enough to probe inline.  */
5ed81e
+void
5ed81e
+f5 (void)
5ed81e
+{
5ed81e
+  char buf[4096 + 512];
5ed81e
+  foo (buf);
5ed81e
+}
5ed81e
+
5ed81e
+/* This is a leaf with a frame that is large enough to require probing with
5ed81e
+   a loop plus a residual allocation.  */
5ed81e
+void
5ed81e
+f6 (void)
5ed81e
+{
5ed81e
+  char buf[4096 * 10 + 512];
5ed81e
+  asm volatile ("" : : "g" (&buf) : "memory");
5ed81e
+}
5ed81e
+
5ed81e
+
5ed81e
+/* This is a non-leaf with a frame large enough to require probing with
5ed81e
+   a loop plus a residual allocation.  */
5ed81e
+void
5ed81e
+f7 (void)
5ed81e
+{
5ed81e
+  char buf[4096 * 10 + 512];
5ed81e
+  foo (buf);
5ed81e
+}
5ed81e
+
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash inline probes" 2 "pro_and_epilogue" } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash probe loop" 2 "pro_and_epilogue" } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash residual allocation in prologue" 4 "pro_and_epilogue" } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash not noreturn" 4 "pro_and_epilogue" } } */
5ed81e
+
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash no frame pointer needed" 4 "pro_and_epilogue" { target { ! frame_pointer_for_non_leaf } } } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash no frame pointer needed" 2 "pro_and_epilogue" { target { frame_pointer_for_non_leaf } } } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash frame pointer needed" 2 "pro_and_epilogue" { target { frame_pointer_for_non_leaf } } } } */
5ed81e
diff --git a/gcc/testsuite/gcc.dg/stack-check-6a.c b/gcc/testsuite/gcc.dg/stack-check-6a.c
5ed81e
new file mode 100644
5ed81e
index 00000000000..6f8e7128921
5ed81e
--- /dev/null
5ed81e
+++ b/gcc/testsuite/gcc.dg/stack-check-6a.c
5ed81e
@@ -0,0 +1,17 @@
5ed81e
+/* The goal here is to verify that increasing the size of the guard allows
5ed81e
+   elimination of all probing on the relevant targets.  */
5ed81e
+   
5ed81e
+/* { dg-do compile  } */
5ed81e
+/* { dg-options "-O2 -fstack-clash-protection -fdump-rtl-pro_and_epilogue -fno-optimize-sibling-calls --param stack-clash-protection-probe-interval=12 --param stack-clash-protection-guard-size=16" } */
5ed81e
+/* { dg-require-effective-target supports_stack_clash_protection  } */
5ed81e
+
5ed81e
+#include "stack-check-6.c"
5ed81e
+
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash inline probes" 0 "pro_and_epilogue" } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash probe loop" 0 "pro_and_epilogue" } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash residual allocation in prologue" 4 "pro_and_epilogue" } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash not noreturn" 4 "pro_and_epilogue" } } */
5ed81e
+
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash no frame pointer needed" 4 "pro_and_epilogue" { target { ! frame_pointer_for_non_leaf } } } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash no frame pointer needed" 2 "pro_and_epilogue" { target { frame_pointer_for_non_leaf } } } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash frame pointer needed" 2 "pro_and_epilogue" { target { frame_pointer_for_non_leaf } } } } */
5ed81e
diff --git a/gcc/testsuite/gcc.dg/stack-check-7.c b/gcc/testsuite/gcc.dg/stack-check-7.c
5ed81e
new file mode 100644
5ed81e
index 00000000000..b963a2881dc
5ed81e
--- /dev/null
5ed81e
+++ b/gcc/testsuite/gcc.dg/stack-check-7.c
5ed81e
@@ -0,0 +1,36 @@
5ed81e
+/* { dg-do run } */
5ed81e
+/* { dg-options "-O2 -fstack-clash-protection -fno-optimize-sibling-calls --param stack-clash-protection-probe-interval=12 --param stack-clash-protection-guard-size=12" } */
5ed81e
+/* { dg-require-effective-target supports_stack_clash_protection } */
5ed81e
+
5ed81e
+/* For further testing, this can be run under valgrind where it's crashed
5ed81e
+   on aarch64 and ppc64le with -fstack-check=specific.  */
5ed81e
+
5ed81e
+
5ed81e
+__attribute__((noinline, noclone)) void
5ed81e
+foo (char *p)
5ed81e
+{
5ed81e
+  asm volatile ("" : : "r" (p) : "memory");
5ed81e
+}
5ed81e
+
5ed81e
+__attribute__((noinline, noclone)) void
5ed81e
+bar (void)
5ed81e
+{
5ed81e
+  char buf[131072];
5ed81e
+  foo (buf);
5ed81e
+}
5ed81e
+
5ed81e
+__attribute__((noinline, noclone)) void
5ed81e
+baz (void)
5ed81e
+{
5ed81e
+  char buf[12000];
5ed81e
+  foo (buf);
5ed81e
+}
5ed81e
+
5ed81e
+int
5ed81e
+main ()
5ed81e
+{
5ed81e
+  bar ();
5ed81e
+  baz ();
5ed81e
+  return 0;
5ed81e
+}
5ed81e
+
5ed81e
diff --git a/gcc/testsuite/gcc.dg/stack-check-8.c b/gcc/testsuite/gcc.dg/stack-check-8.c
5ed81e
new file mode 100644
5ed81e
index 00000000000..0ccec8b532a
5ed81e
--- /dev/null
5ed81e
+++ b/gcc/testsuite/gcc.dg/stack-check-8.c
5ed81e
@@ -0,0 +1,139 @@
5ed81e
+/* { dg-do run } */
5ed81e
+/* { dg-options "-O2 -w -fstack-clash-protection -Wno-psabi -fno-optimize-sibling-calls --param stack-clash-protection-probe-interval=12 --param stack-clash-protection-guard-size=12" } */
5ed81e
+/* { dg-require-effective-target supports_stack_clash_protection } */
5ed81e
+
5ed81e
+
5ed81e
+typedef float V __attribute__((vector_size (32)));
5ed81e
+
5ed81e
+__attribute__((noinline, noclone)) void
5ed81e
+foo (char *p)
5ed81e
+{
5ed81e
+  asm volatile ("" : : "r" (p) : "memory");
5ed81e
+}
5ed81e
+
5ed81e
+__attribute__((noinline, noclone)) int
5ed81e
+f0 (int x, int y)
5ed81e
+{
5ed81e
+  asm volatile ("" : : : "memory");  
5ed81e
+  return x + y;
5ed81e
+}
5ed81e
+
5ed81e
+__attribute__((noinline, noclone)) void
5ed81e
+f1 (void)
5ed81e
+{
5ed81e
+  char buf[64];
5ed81e
+  foo (buf);
5ed81e
+}
5ed81e
+
5ed81e
+__attribute__((noinline, noclone)) void
5ed81e
+f2 (void)
5ed81e
+{
5ed81e
+  char buf[12000];
5ed81e
+  foo (buf);
5ed81e
+}
5ed81e
+
5ed81e
+__attribute__((noinline, noclone)) void
5ed81e
+f3 (void)
5ed81e
+{
5ed81e
+  char buf[131072];
5ed81e
+  foo (buf);
5ed81e
+}
5ed81e
+
5ed81e
+__attribute__((noinline, noclone)) void
5ed81e
+f4 (int x)
5ed81e
+{
5ed81e
+  char vla[x];
5ed81e
+  foo (vla);
5ed81e
+}
5ed81e
+
5ed81e
+__attribute__((noinline, noclone)) void
5ed81e
+f5 (int x)
5ed81e
+{
5ed81e
+  char buf[12000];
5ed81e
+  foo (buf);
5ed81e
+  {
5ed81e
+    char vla[x];
5ed81e
+    foo (vla);
5ed81e
+  }
5ed81e
+  {
5ed81e
+    char vla[x];
5ed81e
+    foo (vla);
5ed81e
+  }
5ed81e
+}
5ed81e
+
5ed81e
+V v;
5ed81e
+
5ed81e
+__attribute__((noinline, noclone)) int
5ed81e
+f6 (int x, int y, V a, V b, V c)
5ed81e
+{
5ed81e
+  asm volatile ("" : : : "memory");  
5ed81e
+  v = a + b + c;
5ed81e
+  return x + y;
5ed81e
+}
5ed81e
+
5ed81e
+__attribute__((noinline, noclone)) void
5ed81e
+f7 (V a, V b, V c)
5ed81e
+{
5ed81e
+  char buf[64];
5ed81e
+  foo (buf);
5ed81e
+  v = a + b + c;
5ed81e
+}
5ed81e
+
5ed81e
+__attribute__((noinline, noclone)) void
5ed81e
+f8 (V a, V b, V c)
5ed81e
+{
5ed81e
+  char buf[12000];
5ed81e
+  foo (buf);
5ed81e
+  v = a + b + c;
5ed81e
+}
5ed81e
+
5ed81e
+__attribute__((noinline, noclone)) void
5ed81e
+f9 (V a, V b, V c)
5ed81e
+{
5ed81e
+  char buf[131072];
5ed81e
+  foo (buf);
5ed81e
+  v = a + b + c;
5ed81e
+}
5ed81e
+
5ed81e
+__attribute__((noinline, noclone)) void
5ed81e
+f10 (int x, V a, V b, V c)
5ed81e
+{
5ed81e
+  char vla[x];
5ed81e
+  foo (vla);
5ed81e
+  v = a + b + c;
5ed81e
+}
5ed81e
+
5ed81e
+__attribute__((noinline, noclone)) void
5ed81e
+f11 (int x, V a, V b, V c)
5ed81e
+{
5ed81e
+  char buf[12000];
5ed81e
+  foo (buf);
5ed81e
+  v = a + b + c;
5ed81e
+  {
5ed81e
+    char vla[x];
5ed81e
+    foo (vla);
5ed81e
+  }
5ed81e
+  {
5ed81e
+    char vla[x];
5ed81e
+    foo (vla);
5ed81e
+  }
5ed81e
+}
5ed81e
+
5ed81e
+int
5ed81e
+main ()
5ed81e
+{
5ed81e
+  f0 (2, 3);
5ed81e
+  f1 ();
5ed81e
+  f2 ();
5ed81e
+  f3 ();
5ed81e
+  f4 (12000);
5ed81e
+  f5 (12000);
5ed81e
+  f6 (2, 3, v, v, v);
5ed81e
+  f7 (v, v, v);
5ed81e
+  f8 (v, v, v);
5ed81e
+  f9 (v, v, v);
5ed81e
+  f10 (12000, v, v, v);
5ed81e
+  f11 (12000, v, v, v);
5ed81e
+  return 0;
5ed81e
+}
5ed81e
+
5ed81e
diff --git a/gcc/testsuite/gcc.dg/stack-check-9.c b/gcc/testsuite/gcc.dg/stack-check-9.c
5ed81e
new file mode 100644
5ed81e
index 00000000000..b84075b9b43
5ed81e
--- /dev/null
5ed81e
+++ b/gcc/testsuite/gcc.dg/stack-check-9.c
5ed81e
@@ -0,0 +1,2022 @@
5ed81e
+/* { dg-do compile } */
5ed81e
+/* { dg-options "-O2 -fstack-clash-protection -fdump-rtl-pro_and_epilogue -fno-optimize-sibling-calls --param stack-clash-protection-probe-interval=12 --param stack-clash-protection-guard-size=12" } */
5ed81e
+/* { dg-require-effective-target supports_stack_clash_protection } */
5ed81e
+
5ed81e
+double f1 (void);
5ed81e
+double f2 (double, double);
5ed81e
+
5ed81e
+double
5ed81e
+f3 (void)
5ed81e
+{
5ed81e
+  double d000 = f1 ();
5ed81e
+  double d001 = f1 ();
5ed81e
+  double d002 = f1 ();
5ed81e
+  double d003 = f1 ();
5ed81e
+  double d004 = f1 ();
5ed81e
+  double d005 = f1 ();
5ed81e
+  double d006 = f1 ();
5ed81e
+  double d007 = f1 ();
5ed81e
+  double d008 = f1 ();
5ed81e
+  double d009 = f1 ();
5ed81e
+  double d010 = f1 ();
5ed81e
+  double d011 = f1 ();
5ed81e
+  double d012 = f1 ();
5ed81e
+  double d013 = f1 ();
5ed81e
+  double d014 = f1 ();
5ed81e
+  double d015 = f1 ();
5ed81e
+  double d016 = f1 ();
5ed81e
+  double d017 = f1 ();
5ed81e
+  double d018 = f1 ();
5ed81e
+  double d019 = f1 ();
5ed81e
+  double d020 = f1 ();
5ed81e
+  double d021 = f1 ();
5ed81e
+  double d022 = f1 ();
5ed81e
+  double d023 = f1 ();
5ed81e
+  double d024 = f1 ();
5ed81e
+  double d025 = f1 ();
5ed81e
+  double d026 = f1 ();
5ed81e
+  double d027 = f1 ();
5ed81e
+  double d028 = f1 ();
5ed81e
+  double d029 = f1 ();
5ed81e
+  double d030 = f1 ();
5ed81e
+  double d031 = f1 ();
5ed81e
+  double d032 = f1 ();
5ed81e
+  double d033 = f1 ();
5ed81e
+  double d034 = f1 ();
5ed81e
+  double d035 = f1 ();
5ed81e
+  double d036 = f1 ();
5ed81e
+  double d037 = f1 ();
5ed81e
+  double d038 = f1 ();
5ed81e
+  double d039 = f1 ();
5ed81e
+  double d040 = f1 ();
5ed81e
+  double d041 = f1 ();
5ed81e
+  double d042 = f1 ();
5ed81e
+  double d043 = f1 ();
5ed81e
+  double d044 = f1 ();
5ed81e
+  double d045 = f1 ();
5ed81e
+  double d046 = f1 ();
5ed81e
+  double d047 = f1 ();
5ed81e
+  double d048 = f1 ();
5ed81e
+  double d049 = f1 ();
5ed81e
+  double d050 = f1 ();
5ed81e
+  double d051 = f1 ();
5ed81e
+  double d052 = f1 ();
5ed81e
+  double d053 = f1 ();
5ed81e
+  double d054 = f1 ();
5ed81e
+  double d055 = f1 ();
5ed81e
+  double d056 = f1 ();
5ed81e
+  double d057 = f1 ();
5ed81e
+  double d058 = f1 ();
5ed81e
+  double d059 = f1 ();
5ed81e
+  double d060 = f1 ();
5ed81e
+  double d061 = f1 ();
5ed81e
+  double d062 = f1 ();
5ed81e
+  double d063 = f1 ();
5ed81e
+  double d064 = f1 ();
5ed81e
+  double d065 = f1 ();
5ed81e
+  double d066 = f1 ();
5ed81e
+  double d067 = f1 ();
5ed81e
+  double d068 = f1 ();
5ed81e
+  double d069 = f1 ();
5ed81e
+  double d070 = f1 ();
5ed81e
+  double d071 = f1 ();
5ed81e
+  double d072 = f1 ();
5ed81e
+  double d073 = f1 ();
5ed81e
+  double d074 = f1 ();
5ed81e
+  double d075 = f1 ();
5ed81e
+  double d076 = f1 ();
5ed81e
+  double d077 = f1 ();
5ed81e
+  double d078 = f1 ();
5ed81e
+  double d079 = f1 ();
5ed81e
+  double d080 = f1 ();
5ed81e
+  double d081 = f1 ();
5ed81e
+  double d082 = f1 ();
5ed81e
+  double d083 = f1 ();
5ed81e
+  double d084 = f1 ();
5ed81e
+  double d085 = f1 ();
5ed81e
+  double d086 = f1 ();
5ed81e
+  double d087 = f1 ();
5ed81e
+  double d088 = f1 ();
5ed81e
+  double d089 = f1 ();
5ed81e
+  double d090 = f1 ();
5ed81e
+  double d091 = f1 ();
5ed81e
+  double d092 = f1 ();
5ed81e
+  double d093 = f1 ();
5ed81e
+  double d094 = f1 ();
5ed81e
+  double d095 = f1 ();
5ed81e
+  double d096 = f1 ();
5ed81e
+  double d097 = f1 ();
5ed81e
+  double d098 = f1 ();
5ed81e
+  double d099 = f1 ();
5ed81e
+  double d100 = f1 ();
5ed81e
+  double d101 = f1 ();
5ed81e
+  double d102 = f1 ();
5ed81e
+  double d103 = f1 ();
5ed81e
+  double d104 = f1 ();
5ed81e
+  double d105 = f1 ();
5ed81e
+  double d106 = f1 ();
5ed81e
+  double d107 = f1 ();
5ed81e
+  double d108 = f1 ();
5ed81e
+  double d109 = f1 ();
5ed81e
+  double d110 = f1 ();
5ed81e
+  double d111 = f1 ();
5ed81e
+  double d112 = f1 ();
5ed81e
+  double d113 = f1 ();
5ed81e
+  double d114 = f1 ();
5ed81e
+  double d115 = f1 ();
5ed81e
+  double d116 = f1 ();
5ed81e
+  double d117 = f1 ();
5ed81e
+  double d118 = f1 ();
5ed81e
+  double d119 = f1 ();
5ed81e
+  double d120 = f1 ();
5ed81e
+  double d121 = f1 ();
5ed81e
+  double d122 = f1 ();
5ed81e
+  double d123 = f1 ();
5ed81e
+  double d124 = f1 ();
5ed81e
+  double d125 = f1 ();
5ed81e
+  double d126 = f1 ();
5ed81e
+  double d127 = f1 ();
5ed81e
+  double d128 = f1 ();
5ed81e
+  double d129 = f1 ();
5ed81e
+  double d130 = f1 ();
5ed81e
+  double d131 = f1 ();
5ed81e
+  double d132 = f1 ();
5ed81e
+  double d133 = f1 ();
5ed81e
+  double d134 = f1 ();
5ed81e
+  double d135 = f1 ();
5ed81e
+  double d136 = f1 ();
5ed81e
+  double d137 = f1 ();
5ed81e
+  double d138 = f1 ();
5ed81e
+  double d139 = f1 ();
5ed81e
+  double d140 = f1 ();
5ed81e
+  double d141 = f1 ();
5ed81e
+  double d142 = f1 ();
5ed81e
+  double d143 = f1 ();
5ed81e
+  double d144 = f1 ();
5ed81e
+  double d145 = f1 ();
5ed81e
+  double d146 = f1 ();
5ed81e
+  double d147 = f1 ();
5ed81e
+  double d148 = f1 ();
5ed81e
+  double d149 = f1 ();
5ed81e
+  double d150 = f1 ();
5ed81e
+  double d151 = f1 ();
5ed81e
+  double d152 = f1 ();
5ed81e
+  double d153 = f1 ();
5ed81e
+  double d154 = f1 ();
5ed81e
+  double d155 = f1 ();
5ed81e
+  double d156 = f1 ();
5ed81e
+  double d157 = f1 ();
5ed81e
+  double d158 = f1 ();
5ed81e
+  double d159 = f1 ();
5ed81e
+  double d160 = f1 ();
5ed81e
+  double d161 = f1 ();
5ed81e
+  double d162 = f1 ();
5ed81e
+  double d163 = f1 ();
5ed81e
+  double d164 = f1 ();
5ed81e
+  double d165 = f1 ();
5ed81e
+  double d166 = f1 ();
5ed81e
+  double d167 = f1 ();
5ed81e
+  double d168 = f1 ();
5ed81e
+  double d169 = f1 ();
5ed81e
+  double d170 = f1 ();
5ed81e
+  double d171 = f1 ();
5ed81e
+  double d172 = f1 ();
5ed81e
+  double d173 = f1 ();
5ed81e
+  double d174 = f1 ();
5ed81e
+  double d175 = f1 ();
5ed81e
+  double d176 = f1 ();
5ed81e
+  double d177 = f1 ();
5ed81e
+  double d178 = f1 ();
5ed81e
+  double d179 = f1 ();
5ed81e
+  double d180 = f1 ();
5ed81e
+  double d181 = f1 ();
5ed81e
+  double d182 = f1 ();
5ed81e
+  double d183 = f1 ();
5ed81e
+  double d184 = f1 ();
5ed81e
+  double d185 = f1 ();
5ed81e
+  double d186 = f1 ();
5ed81e
+  double d187 = f1 ();
5ed81e
+  double d188 = f1 ();
5ed81e
+  double d189 = f1 ();
5ed81e
+  double d190 = f1 ();
5ed81e
+  double d191 = f1 ();
5ed81e
+  double d192 = f1 ();
5ed81e
+  double d193 = f1 ();
5ed81e
+  double d194 = f1 ();
5ed81e
+  double d195 = f1 ();
5ed81e
+  double d196 = f1 ();
5ed81e
+  double d197 = f1 ();
5ed81e
+  double d198 = f1 ();
5ed81e
+  double d199 = f1 ();
5ed81e
+  double d200 = f1 ();
5ed81e
+  double d201 = f1 ();
5ed81e
+  double d202 = f1 ();
5ed81e
+  double d203 = f1 ();
5ed81e
+  double d204 = f1 ();
5ed81e
+  double d205 = f1 ();
5ed81e
+  double d206 = f1 ();
5ed81e
+  double d207 = f1 ();
5ed81e
+  double d208 = f1 ();
5ed81e
+  double d209 = f1 ();
5ed81e
+  double d210 = f1 ();
5ed81e
+  double d211 = f1 ();
5ed81e
+  double d212 = f1 ();
5ed81e
+  double d213 = f1 ();
5ed81e
+  double d214 = f1 ();
5ed81e
+  double d215 = f1 ();
5ed81e
+  double d216 = f1 ();
5ed81e
+  double d217 = f1 ();
5ed81e
+  double d218 = f1 ();
5ed81e
+  double d219 = f1 ();
5ed81e
+  double d220 = f1 ();
5ed81e
+  double d221 = f1 ();
5ed81e
+  double d222 = f1 ();
5ed81e
+  double d223 = f1 ();
5ed81e
+  double d224 = f1 ();
5ed81e
+  double d225 = f1 ();
5ed81e
+  double d226 = f1 ();
5ed81e
+  double d227 = f1 ();
5ed81e
+  double d228 = f1 ();
5ed81e
+  double d229 = f1 ();
5ed81e
+  double d230 = f1 ();
5ed81e
+  double d231 = f1 ();
5ed81e
+  double d232 = f1 ();
5ed81e
+  double d233 = f1 ();
5ed81e
+  double d234 = f1 ();
5ed81e
+  double d235 = f1 ();
5ed81e
+  double d236 = f1 ();
5ed81e
+  double d237 = f1 ();
5ed81e
+  double d238 = f1 ();
5ed81e
+  double d239 = f1 ();
5ed81e
+  double d240 = f1 ();
5ed81e
+  double d241 = f1 ();
5ed81e
+  double d242 = f1 ();
5ed81e
+  double d243 = f1 ();
5ed81e
+  double d244 = f1 ();
5ed81e
+  double d245 = f1 ();
5ed81e
+  double d246 = f1 ();
5ed81e
+  double d247 = f1 ();
5ed81e
+  double d248 = f1 ();
5ed81e
+  double d249 = f1 ();
5ed81e
+  double d250 = f1 ();
5ed81e
+  double d251 = f1 ();
5ed81e
+  double d252 = f1 ();
5ed81e
+  double d253 = f1 ();
5ed81e
+  double d254 = f1 ();
5ed81e
+  double d255 = f1 ();
5ed81e
+  double d256 = f1 ();
5ed81e
+  double d257 = f1 ();
5ed81e
+  double d258 = f1 ();
5ed81e
+  double d259 = f1 ();
5ed81e
+  double d260 = f1 ();
5ed81e
+  double d261 = f1 ();
5ed81e
+  double d262 = f1 ();
5ed81e
+  double d263 = f1 ();
5ed81e
+  double d264 = f1 ();
5ed81e
+  double d265 = f1 ();
5ed81e
+  double d266 = f1 ();
5ed81e
+  double d267 = f1 ();
5ed81e
+  double d268 = f1 ();
5ed81e
+  double d269 = f1 ();
5ed81e
+  double d270 = f1 ();
5ed81e
+  double d271 = f1 ();
5ed81e
+  double d272 = f1 ();
5ed81e
+  double d273 = f1 ();
5ed81e
+  double d274 = f1 ();
5ed81e
+  double d275 = f1 ();
5ed81e
+  double d276 = f1 ();
5ed81e
+  double d277 = f1 ();
5ed81e
+  double d278 = f1 ();
5ed81e
+  double d279 = f1 ();
5ed81e
+  double d280 = f1 ();
5ed81e
+  double d281 = f1 ();
5ed81e
+  double d282 = f1 ();
5ed81e
+  double d283 = f1 ();
5ed81e
+  double d284 = f1 ();
5ed81e
+  double d285 = f1 ();
5ed81e
+  double d286 = f1 ();
5ed81e
+  double d287 = f1 ();
5ed81e
+  double d288 = f1 ();
5ed81e
+  double d289 = f1 ();
5ed81e
+  double d290 = f1 ();
5ed81e
+  double d291 = f1 ();
5ed81e
+  double d292 = f1 ();
5ed81e
+  double d293 = f1 ();
5ed81e
+  double d294 = f1 ();
5ed81e
+  double d295 = f1 ();
5ed81e
+  double d296 = f1 ();
5ed81e
+  double d297 = f1 ();
5ed81e
+  double d298 = f1 ();
5ed81e
+  double d299 = f1 ();
5ed81e
+  double d300 = f1 ();
5ed81e
+  double d301 = f1 ();
5ed81e
+  double d302 = f1 ();
5ed81e
+  double d303 = f1 ();
5ed81e
+  double d304 = f1 ();
5ed81e
+  double d305 = f1 ();
5ed81e
+  double d306 = f1 ();
5ed81e
+  double d307 = f1 ();
5ed81e
+  double d308 = f1 ();
5ed81e
+  double d309 = f1 ();
5ed81e
+  double d310 = f1 ();
5ed81e
+  double d311 = f1 ();
5ed81e
+  double d312 = f1 ();
5ed81e
+  double d313 = f1 ();
5ed81e
+  double d314 = f1 ();
5ed81e
+  double d315 = f1 ();
5ed81e
+  double d316 = f1 ();
5ed81e
+  double d317 = f1 ();
5ed81e
+  double d318 = f1 ();
5ed81e
+  double d319 = f1 ();
5ed81e
+  double d320 = f1 ();
5ed81e
+  double d321 = f1 ();
5ed81e
+  double d322 = f1 ();
5ed81e
+  double d323 = f1 ();
5ed81e
+  double d324 = f1 ();
5ed81e
+  double d325 = f1 ();
5ed81e
+  double d326 = f1 ();
5ed81e
+  double d327 = f1 ();
5ed81e
+  double d328 = f1 ();
5ed81e
+  double d329 = f1 ();
5ed81e
+  double d330 = f1 ();
5ed81e
+  double d331 = f1 ();
5ed81e
+  double d332 = f1 ();
5ed81e
+  double d333 = f1 ();
5ed81e
+  double d334 = f1 ();
5ed81e
+  double d335 = f1 ();
5ed81e
+  double d336 = f1 ();
5ed81e
+  double d337 = f1 ();
5ed81e
+  double d338 = f1 ();
5ed81e
+  double d339 = f1 ();
5ed81e
+  double d340 = f1 ();
5ed81e
+  double d341 = f1 ();
5ed81e
+  double d342 = f1 ();
5ed81e
+  double d343 = f1 ();
5ed81e
+  double d344 = f1 ();
5ed81e
+  double d345 = f1 ();
5ed81e
+  double d346 = f1 ();
5ed81e
+  double d347 = f1 ();
5ed81e
+  double d348 = f1 ();
5ed81e
+  double d349 = f1 ();
5ed81e
+  double d350 = f1 ();
5ed81e
+  double d351 = f1 ();
5ed81e
+  double d352 = f1 ();
5ed81e
+  double d353 = f1 ();
5ed81e
+  double d354 = f1 ();
5ed81e
+  double d355 = f1 ();
5ed81e
+  double d356 = f1 ();
5ed81e
+  double d357 = f1 ();
5ed81e
+  double d358 = f1 ();
5ed81e
+  double d359 = f1 ();
5ed81e
+  double d360 = f1 ();
5ed81e
+  double d361 = f1 ();
5ed81e
+  double d362 = f1 ();
5ed81e
+  double d363 = f1 ();
5ed81e
+  double d364 = f1 ();
5ed81e
+  double d365 = f1 ();
5ed81e
+  double d366 = f1 ();
5ed81e
+  double d367 = f1 ();
5ed81e
+  double d368 = f1 ();
5ed81e
+  double d369 = f1 ();
5ed81e
+  double d370 = f1 ();
5ed81e
+  double d371 = f1 ();
5ed81e
+  double d372 = f1 ();
5ed81e
+  double d373 = f1 ();
5ed81e
+  double d374 = f1 ();
5ed81e
+  double d375 = f1 ();
5ed81e
+  double d376 = f1 ();
5ed81e
+  double d377 = f1 ();
5ed81e
+  double d378 = f1 ();
5ed81e
+  double d379 = f1 ();
5ed81e
+  double d380 = f1 ();
5ed81e
+  double d381 = f1 ();
5ed81e
+  double d382 = f1 ();
5ed81e
+  double d383 = f1 ();
5ed81e
+  double d384 = f1 ();
5ed81e
+  double d385 = f1 ();
5ed81e
+  double d386 = f1 ();
5ed81e
+  double d387 = f1 ();
5ed81e
+  double d388 = f1 ();
5ed81e
+  double d389 = f1 ();
5ed81e
+  double d390 = f1 ();
5ed81e
+  double d391 = f1 ();
5ed81e
+  double d392 = f1 ();
5ed81e
+  double d393 = f1 ();
5ed81e
+  double d394 = f1 ();
5ed81e
+  double d395 = f1 ();
5ed81e
+  double d396 = f1 ();
5ed81e
+  double d397 = f1 ();
5ed81e
+  double d398 = f1 ();
5ed81e
+  double d399 = f1 ();
5ed81e
+  double d400 = f1 ();
5ed81e
+  double d401 = f1 ();
5ed81e
+  double d402 = f1 ();
5ed81e
+  double d403 = f1 ();
5ed81e
+  double d404 = f1 ();
5ed81e
+  double d405 = f1 ();
5ed81e
+  double d406 = f1 ();
5ed81e
+  double d407 = f1 ();
5ed81e
+  double d408 = f1 ();
5ed81e
+  double d409 = f1 ();
5ed81e
+  double d410 = f1 ();
5ed81e
+  double d411 = f1 ();
5ed81e
+  double d412 = f1 ();
5ed81e
+  double d413 = f1 ();
5ed81e
+  double d414 = f1 ();
5ed81e
+  double d415 = f1 ();
5ed81e
+  double d416 = f1 ();
5ed81e
+  double d417 = f1 ();
5ed81e
+  double d418 = f1 ();
5ed81e
+  double d419 = f1 ();
5ed81e
+  double d420 = f1 ();
5ed81e
+  double d421 = f1 ();
5ed81e
+  double d422 = f1 ();
5ed81e
+  double d423 = f1 ();
5ed81e
+  double d424 = f1 ();
5ed81e
+  double d425 = f1 ();
5ed81e
+  double d426 = f1 ();
5ed81e
+  double d427 = f1 ();
5ed81e
+  double d428 = f1 ();
5ed81e
+  double d429 = f1 ();
5ed81e
+  double d430 = f1 ();
5ed81e
+  double d431 = f1 ();
5ed81e
+  double d432 = f1 ();
5ed81e
+  double d433 = f1 ();
5ed81e
+  double d434 = f1 ();
5ed81e
+  double d435 = f1 ();
5ed81e
+  double d436 = f1 ();
5ed81e
+  double d437 = f1 ();
5ed81e
+  double d438 = f1 ();
5ed81e
+  double d439 = f1 ();
5ed81e
+  double d440 = f1 ();
5ed81e
+  double d441 = f1 ();
5ed81e
+  double d442 = f1 ();
5ed81e
+  double d443 = f1 ();
5ed81e
+  double d444 = f1 ();
5ed81e
+  double d445 = f1 ();
5ed81e
+  double d446 = f1 ();
5ed81e
+  double d447 = f1 ();
5ed81e
+  double d448 = f1 ();
5ed81e
+  double d449 = f1 ();
5ed81e
+  double d450 = f1 ();
5ed81e
+  double d451 = f1 ();
5ed81e
+  double d452 = f1 ();
5ed81e
+  double d453 = f1 ();
5ed81e
+  double d454 = f1 ();
5ed81e
+  double d455 = f1 ();
5ed81e
+  double d456 = f1 ();
5ed81e
+  double d457 = f1 ();
5ed81e
+  double d458 = f1 ();
5ed81e
+  double d459 = f1 ();
5ed81e
+  double d460 = f1 ();
5ed81e
+  double d461 = f1 ();
5ed81e
+  double d462 = f1 ();
5ed81e
+  double d463 = f1 ();
5ed81e
+  double d464 = f1 ();
5ed81e
+  double d465 = f1 ();
5ed81e
+  double d466 = f1 ();
5ed81e
+  double d467 = f1 ();
5ed81e
+  double d468 = f1 ();
5ed81e
+  double d469 = f1 ();
5ed81e
+  double d470 = f1 ();
5ed81e
+  double d471 = f1 ();
5ed81e
+  double d472 = f1 ();
5ed81e
+  double d473 = f1 ();
5ed81e
+  double d474 = f1 ();
5ed81e
+  double d475 = f1 ();
5ed81e
+  double d476 = f1 ();
5ed81e
+  double d477 = f1 ();
5ed81e
+  double d478 = f1 ();
5ed81e
+  double d479 = f1 ();
5ed81e
+  double d480 = f1 ();
5ed81e
+  double d481 = f1 ();
5ed81e
+  double d482 = f1 ();
5ed81e
+  double d483 = f1 ();
5ed81e
+  double d484 = f1 ();
5ed81e
+  double d485 = f1 ();
5ed81e
+  double d486 = f1 ();
5ed81e
+  double d487 = f1 ();
5ed81e
+  double d488 = f1 ();
5ed81e
+  double d489 = f1 ();
5ed81e
+  double d490 = f1 ();
5ed81e
+  double d491 = f1 ();
5ed81e
+  double d492 = f1 ();
5ed81e
+  double d493 = f1 ();
5ed81e
+  double d494 = f1 ();
5ed81e
+  double d495 = f1 ();
5ed81e
+  double d496 = f1 ();
5ed81e
+  double d497 = f1 ();
5ed81e
+  double d498 = f1 ();
5ed81e
+  double d499 = f1 ();
5ed81e
+  double d500 = f1 ();
5ed81e
+  double d501 = f1 ();
5ed81e
+  double d502 = f1 ();
5ed81e
+  double d503 = f1 ();
5ed81e
+  double d504 = f1 ();
5ed81e
+  double d505 = f1 ();
5ed81e
+  double d506 = f1 ();
5ed81e
+  double d507 = f1 ();
5ed81e
+  double d508 = f1 ();
5ed81e
+  double d509 = f1 ();
5ed81e
+  double d510 = f1 ();
5ed81e
+  double d511 = f1 ();
5ed81e
+  double d512 = f1 ();
5ed81e
+  double d513 = f1 ();
5ed81e
+  double d514 = f1 ();
5ed81e
+  double d515 = f1 ();
5ed81e
+  double d516 = f1 ();
5ed81e
+  double d517 = f1 ();
5ed81e
+  double d518 = f1 ();
5ed81e
+  double d519 = f1 ();
5ed81e
+  double d520 = f1 ();
5ed81e
+  double d521 = f1 ();
5ed81e
+  double d522 = f1 ();
5ed81e
+  double d523 = f1 ();
5ed81e
+  double d524 = f1 ();
5ed81e
+  double d525 = f1 ();
5ed81e
+  double d526 = f1 ();
5ed81e
+  double d527 = f1 ();
5ed81e
+  double d528 = f1 ();
5ed81e
+  double d529 = f1 ();
5ed81e
+  double d530 = f1 ();
5ed81e
+  double d531 = f1 ();
5ed81e
+  double d532 = f1 ();
5ed81e
+  double d533 = f1 ();
5ed81e
+  double d534 = f1 ();
5ed81e
+  double d535 = f1 ();
5ed81e
+  double d536 = f1 ();
5ed81e
+  double d537 = f1 ();
5ed81e
+  double d538 = f1 ();
5ed81e
+  double d539 = f1 ();
5ed81e
+  double d540 = f1 ();
5ed81e
+  double d541 = f1 ();
5ed81e
+  double d542 = f1 ();
5ed81e
+  double d543 = f1 ();
5ed81e
+  double d544 = f1 ();
5ed81e
+  double d545 = f1 ();
5ed81e
+  double d546 = f1 ();
5ed81e
+  double d547 = f1 ();
5ed81e
+  double d548 = f1 ();
5ed81e
+  double d549 = f1 ();
5ed81e
+  double d550 = f1 ();
5ed81e
+  double d551 = f1 ();
5ed81e
+  double d552 = f1 ();
5ed81e
+  double d553 = f1 ();
5ed81e
+  double d554 = f1 ();
5ed81e
+  double d555 = f1 ();
5ed81e
+  double d556 = f1 ();
5ed81e
+  double d557 = f1 ();
5ed81e
+  double d558 = f1 ();
5ed81e
+  double d559 = f1 ();
5ed81e
+  double d560 = f1 ();
5ed81e
+  double d561 = f1 ();
5ed81e
+  double d562 = f1 ();
5ed81e
+  double d563 = f1 ();
5ed81e
+  double d564 = f1 ();
5ed81e
+  double d565 = f1 ();
5ed81e
+  double d566 = f1 ();
5ed81e
+  double d567 = f1 ();
5ed81e
+  double d568 = f1 ();
5ed81e
+  double d569 = f1 ();
5ed81e
+  double d570 = f1 ();
5ed81e
+  double d571 = f1 ();
5ed81e
+  double d572 = f1 ();
5ed81e
+  double d573 = f1 ();
5ed81e
+  double d574 = f1 ();
5ed81e
+  double d575 = f1 ();
5ed81e
+  double d576 = f1 ();
5ed81e
+  double d577 = f1 ();
5ed81e
+  double d578 = f1 ();
5ed81e
+  double d579 = f1 ();
5ed81e
+  double d580 = f1 ();
5ed81e
+  double d581 = f1 ();
5ed81e
+  double d582 = f1 ();
5ed81e
+  double d583 = f1 ();
5ed81e
+  double d584 = f1 ();
5ed81e
+  double d585 = f1 ();
5ed81e
+  double d586 = f1 ();
5ed81e
+  double d587 = f1 ();
5ed81e
+  double d588 = f1 ();
5ed81e
+  double d589 = f1 ();
5ed81e
+  double d590 = f1 ();
5ed81e
+  double d591 = f1 ();
5ed81e
+  double d592 = f1 ();
5ed81e
+  double d593 = f1 ();
5ed81e
+  double d594 = f1 ();
5ed81e
+  double d595 = f1 ();
5ed81e
+  double d596 = f1 ();
5ed81e
+  double d597 = f1 ();
5ed81e
+  double d598 = f1 ();
5ed81e
+  double d599 = f1 ();
5ed81e
+  double d600 = f1 ();
5ed81e
+  double d601 = f1 ();
5ed81e
+  double d602 = f1 ();
5ed81e
+  double d603 = f1 ();
5ed81e
+  double d604 = f1 ();
5ed81e
+  double d605 = f1 ();
5ed81e
+  double d606 = f1 ();
5ed81e
+  double d607 = f1 ();
5ed81e
+  double d608 = f1 ();
5ed81e
+  double d609 = f1 ();
5ed81e
+  double d610 = f1 ();
5ed81e
+  double d611 = f1 ();
5ed81e
+  double d612 = f1 ();
5ed81e
+  double d613 = f1 ();
5ed81e
+  double d614 = f1 ();
5ed81e
+  double d615 = f1 ();
5ed81e
+  double d616 = f1 ();
5ed81e
+  double d617 = f1 ();
5ed81e
+  double d618 = f1 ();
5ed81e
+  double d619 = f1 ();
5ed81e
+  double d620 = f1 ();
5ed81e
+  double d621 = f1 ();
5ed81e
+  double d622 = f1 ();
5ed81e
+  double d623 = f1 ();
5ed81e
+  double d624 = f1 ();
5ed81e
+  double d625 = f1 ();
5ed81e
+  double d626 = f1 ();
5ed81e
+  double d627 = f1 ();
5ed81e
+  double d628 = f1 ();
5ed81e
+  double d629 = f1 ();
5ed81e
+  double d630 = f1 ();
5ed81e
+  double d631 = f1 ();
5ed81e
+  double d632 = f1 ();
5ed81e
+  double d633 = f1 ();
5ed81e
+  double d634 = f1 ();
5ed81e
+  double d635 = f1 ();
5ed81e
+  double d636 = f1 ();
5ed81e
+  double d637 = f1 ();
5ed81e
+  double d638 = f1 ();
5ed81e
+  double d639 = f1 ();
5ed81e
+  double d640 = f1 ();
5ed81e
+  double d641 = f1 ();
5ed81e
+  double d642 = f1 ();
5ed81e
+  double d643 = f1 ();
5ed81e
+  double d644 = f1 ();
5ed81e
+  double d645 = f1 ();
5ed81e
+  double d646 = f1 ();
5ed81e
+  double d647 = f1 ();
5ed81e
+  double d648 = f1 ();
5ed81e
+  double d649 = f1 ();
5ed81e
+  double d650 = f1 ();
5ed81e
+  double d651 = f1 ();
5ed81e
+  double d652 = f1 ();
5ed81e
+  double d653 = f1 ();
5ed81e
+  double d654 = f1 ();
5ed81e
+  double d655 = f1 ();
5ed81e
+  double d656 = f1 ();
5ed81e
+  double d657 = f1 ();
5ed81e
+  double d658 = f1 ();
5ed81e
+  double d659 = f1 ();
5ed81e
+  double d660 = f1 ();
5ed81e
+  double d661 = f1 ();
5ed81e
+  double d662 = f1 ();
5ed81e
+  double d663 = f1 ();
5ed81e
+  double d664 = f1 ();
5ed81e
+  double d665 = f1 ();
5ed81e
+  double d666 = f1 ();
5ed81e
+  double d667 = f1 ();
5ed81e
+  double d668 = f1 ();
5ed81e
+  double d669 = f1 ();
5ed81e
+  double d670 = f1 ();
5ed81e
+  double d671 = f1 ();
5ed81e
+  double d672 = f1 ();
5ed81e
+  double d673 = f1 ();
5ed81e
+  double d674 = f1 ();
5ed81e
+  double d675 = f1 ();
5ed81e
+  double d676 = f1 ();
5ed81e
+  double d677 = f1 ();
5ed81e
+  double d678 = f1 ();
5ed81e
+  double d679 = f1 ();
5ed81e
+  double d680 = f1 ();
5ed81e
+  double d681 = f1 ();
5ed81e
+  double d682 = f1 ();
5ed81e
+  double d683 = f1 ();
5ed81e
+  double d684 = f1 ();
5ed81e
+  double d685 = f1 ();
5ed81e
+  double d686 = f1 ();
5ed81e
+  double d687 = f1 ();
5ed81e
+  double d688 = f1 ();
5ed81e
+  double d689 = f1 ();
5ed81e
+  double d690 = f1 ();
5ed81e
+  double d691 = f1 ();
5ed81e
+  double d692 = f1 ();
5ed81e
+  double d693 = f1 ();
5ed81e
+  double d694 = f1 ();
5ed81e
+  double d695 = f1 ();
5ed81e
+  double d696 = f1 ();
5ed81e
+  double d697 = f1 ();
5ed81e
+  double d698 = f1 ();
5ed81e
+  double d699 = f1 ();
5ed81e
+  double d700 = f1 ();
5ed81e
+  double d701 = f1 ();
5ed81e
+  double d702 = f1 ();
5ed81e
+  double d703 = f1 ();
5ed81e
+  double d704 = f1 ();
5ed81e
+  double d705 = f1 ();
5ed81e
+  double d706 = f1 ();
5ed81e
+  double d707 = f1 ();
5ed81e
+  double d708 = f1 ();
5ed81e
+  double d709 = f1 ();
5ed81e
+  double d710 = f1 ();
5ed81e
+  double d711 = f1 ();
5ed81e
+  double d712 = f1 ();
5ed81e
+  double d713 = f1 ();
5ed81e
+  double d714 = f1 ();
5ed81e
+  double d715 = f1 ();
5ed81e
+  double d716 = f1 ();
5ed81e
+  double d717 = f1 ();
5ed81e
+  double d718 = f1 ();
5ed81e
+  double d719 = f1 ();
5ed81e
+  double d720 = f1 ();
5ed81e
+  double d721 = f1 ();
5ed81e
+  double d722 = f1 ();
5ed81e
+  double d723 = f1 ();
5ed81e
+  double d724 = f1 ();
5ed81e
+  double d725 = f1 ();
5ed81e
+  double d726 = f1 ();
5ed81e
+  double d727 = f1 ();
5ed81e
+  double d728 = f1 ();
5ed81e
+  double d729 = f1 ();
5ed81e
+  double d730 = f1 ();
5ed81e
+  double d731 = f1 ();
5ed81e
+  double d732 = f1 ();
5ed81e
+  double d733 = f1 ();
5ed81e
+  double d734 = f1 ();
5ed81e
+  double d735 = f1 ();
5ed81e
+  double d736 = f1 ();
5ed81e
+  double d737 = f1 ();
5ed81e
+  double d738 = f1 ();
5ed81e
+  double d739 = f1 ();
5ed81e
+  double d740 = f1 ();
5ed81e
+  double d741 = f1 ();
5ed81e
+  double d742 = f1 ();
5ed81e
+  double d743 = f1 ();
5ed81e
+  double d744 = f1 ();
5ed81e
+  double d745 = f1 ();
5ed81e
+  double d746 = f1 ();
5ed81e
+  double d747 = f1 ();
5ed81e
+  double d748 = f1 ();
5ed81e
+  double d749 = f1 ();
5ed81e
+  double d750 = f1 ();
5ed81e
+  double d751 = f1 ();
5ed81e
+  double d752 = f1 ();
5ed81e
+  double d753 = f1 ();
5ed81e
+  double d754 = f1 ();
5ed81e
+  double d755 = f1 ();
5ed81e
+  double d756 = f1 ();
5ed81e
+  double d757 = f1 ();
5ed81e
+  double d758 = f1 ();
5ed81e
+  double d759 = f1 ();
5ed81e
+  double d760 = f1 ();
5ed81e
+  double d761 = f1 ();
5ed81e
+  double d762 = f1 ();
5ed81e
+  double d763 = f1 ();
5ed81e
+  double d764 = f1 ();
5ed81e
+  double d765 = f1 ();
5ed81e
+  double d766 = f1 ();
5ed81e
+  double d767 = f1 ();
5ed81e
+  double d768 = f1 ();
5ed81e
+  double d769 = f1 ();
5ed81e
+  double d770 = f1 ();
5ed81e
+  double d771 = f1 ();
5ed81e
+  double d772 = f1 ();
5ed81e
+  double d773 = f1 ();
5ed81e
+  double d774 = f1 ();
5ed81e
+  double d775 = f1 ();
5ed81e
+  double d776 = f1 ();
5ed81e
+  double d777 = f1 ();
5ed81e
+  double d778 = f1 ();
5ed81e
+  double d779 = f1 ();
5ed81e
+  double d780 = f1 ();
5ed81e
+  double d781 = f1 ();
5ed81e
+  double d782 = f1 ();
5ed81e
+  double d783 = f1 ();
5ed81e
+  double d784 = f1 ();
5ed81e
+  double d785 = f1 ();
5ed81e
+  double d786 = f1 ();
5ed81e
+  double d787 = f1 ();
5ed81e
+  double d788 = f1 ();
5ed81e
+  double d789 = f1 ();
5ed81e
+  double d790 = f1 ();
5ed81e
+  double d791 = f1 ();
5ed81e
+  double d792 = f1 ();
5ed81e
+  double d793 = f1 ();
5ed81e
+  double d794 = f1 ();
5ed81e
+  double d795 = f1 ();
5ed81e
+  double d796 = f1 ();
5ed81e
+  double d797 = f1 ();
5ed81e
+  double d798 = f1 ();
5ed81e
+  double d799 = f1 ();
5ed81e
+  double d800 = f1 ();
5ed81e
+  double d801 = f1 ();
5ed81e
+  double d802 = f1 ();
5ed81e
+  double d803 = f1 ();
5ed81e
+  double d804 = f1 ();
5ed81e
+  double d805 = f1 ();
5ed81e
+  double d806 = f1 ();
5ed81e
+  double d807 = f1 ();
5ed81e
+  double d808 = f1 ();
5ed81e
+  double d809 = f1 ();
5ed81e
+  double d810 = f1 ();
5ed81e
+  double d811 = f1 ();
5ed81e
+  double d812 = f1 ();
5ed81e
+  double d813 = f1 ();
5ed81e
+  double d814 = f1 ();
5ed81e
+  double d815 = f1 ();
5ed81e
+  double d816 = f1 ();
5ed81e
+  double d817 = f1 ();
5ed81e
+  double d818 = f1 ();
5ed81e
+  double d819 = f1 ();
5ed81e
+  double d820 = f1 ();
5ed81e
+  double d821 = f1 ();
5ed81e
+  double d822 = f1 ();
5ed81e
+  double d823 = f1 ();
5ed81e
+  double d824 = f1 ();
5ed81e
+  double d825 = f1 ();
5ed81e
+  double d826 = f1 ();
5ed81e
+  double d827 = f1 ();
5ed81e
+  double d828 = f1 ();
5ed81e
+  double d829 = f1 ();
5ed81e
+  double d830 = f1 ();
5ed81e
+  double d831 = f1 ();
5ed81e
+  double d832 = f1 ();
5ed81e
+  double d833 = f1 ();
5ed81e
+  double d834 = f1 ();
5ed81e
+  double d835 = f1 ();
5ed81e
+  double d836 = f1 ();
5ed81e
+  double d837 = f1 ();
5ed81e
+  double d838 = f1 ();
5ed81e
+  double d839 = f1 ();
5ed81e
+  double d840 = f1 ();
5ed81e
+  double d841 = f1 ();
5ed81e
+  double d842 = f1 ();
5ed81e
+  double d843 = f1 ();
5ed81e
+  double d844 = f1 ();
5ed81e
+  double d845 = f1 ();
5ed81e
+  double d846 = f1 ();
5ed81e
+  double d847 = f1 ();
5ed81e
+  double d848 = f1 ();
5ed81e
+  double d849 = f1 ();
5ed81e
+  double d850 = f1 ();
5ed81e
+  double d851 = f1 ();
5ed81e
+  double d852 = f1 ();
5ed81e
+  double d853 = f1 ();
5ed81e
+  double d854 = f1 ();
5ed81e
+  double d855 = f1 ();
5ed81e
+  double d856 = f1 ();
5ed81e
+  double d857 = f1 ();
5ed81e
+  double d858 = f1 ();
5ed81e
+  double d859 = f1 ();
5ed81e
+  double d860 = f1 ();
5ed81e
+  double d861 = f1 ();
5ed81e
+  double d862 = f1 ();
5ed81e
+  double d863 = f1 ();
5ed81e
+  double d864 = f1 ();
5ed81e
+  double d865 = f1 ();
5ed81e
+  double d866 = f1 ();
5ed81e
+  double d867 = f1 ();
5ed81e
+  double d868 = f1 ();
5ed81e
+  double d869 = f1 ();
5ed81e
+  double d870 = f1 ();
5ed81e
+  double d871 = f1 ();
5ed81e
+  double d872 = f1 ();
5ed81e
+  double d873 = f1 ();
5ed81e
+  double d874 = f1 ();
5ed81e
+  double d875 = f1 ();
5ed81e
+  double d876 = f1 ();
5ed81e
+  double d877 = f1 ();
5ed81e
+  double d878 = f1 ();
5ed81e
+  double d879 = f1 ();
5ed81e
+  double d880 = f1 ();
5ed81e
+  double d881 = f1 ();
5ed81e
+  double d882 = f1 ();
5ed81e
+  double d883 = f1 ();
5ed81e
+  double d884 = f1 ();
5ed81e
+  double d885 = f1 ();
5ed81e
+  double d886 = f1 ();
5ed81e
+  double d887 = f1 ();
5ed81e
+  double d888 = f1 ();
5ed81e
+  double d889 = f1 ();
5ed81e
+  double d890 = f1 ();
5ed81e
+  double d891 = f1 ();
5ed81e
+  double d892 = f1 ();
5ed81e
+  double d893 = f1 ();
5ed81e
+  double d894 = f1 ();
5ed81e
+  double d895 = f1 ();
5ed81e
+  double d896 = f1 ();
5ed81e
+  double d897 = f1 ();
5ed81e
+  double d898 = f1 ();
5ed81e
+  double d899 = f1 ();
5ed81e
+  double d900 = f1 ();
5ed81e
+  double d901 = f1 ();
5ed81e
+  double d902 = f1 ();
5ed81e
+  double d903 = f1 ();
5ed81e
+  double d904 = f1 ();
5ed81e
+  double d905 = f1 ();
5ed81e
+  double d906 = f1 ();
5ed81e
+  double d907 = f1 ();
5ed81e
+  double d908 = f1 ();
5ed81e
+  double d909 = f1 ();
5ed81e
+  double d910 = f1 ();
5ed81e
+  double d911 = f1 ();
5ed81e
+  double d912 = f1 ();
5ed81e
+  double d913 = f1 ();
5ed81e
+  double d914 = f1 ();
5ed81e
+  double d915 = f1 ();
5ed81e
+  double d916 = f1 ();
5ed81e
+  double d917 = f1 ();
5ed81e
+  double d918 = f1 ();
5ed81e
+  double d919 = f1 ();
5ed81e
+  double d920 = f1 ();
5ed81e
+  double d921 = f1 ();
5ed81e
+  double d922 = f1 ();
5ed81e
+  double d923 = f1 ();
5ed81e
+  double d924 = f1 ();
5ed81e
+  double d925 = f1 ();
5ed81e
+  double d926 = f1 ();
5ed81e
+  double d927 = f1 ();
5ed81e
+  double d928 = f1 ();
5ed81e
+  double d929 = f1 ();
5ed81e
+  double d930 = f1 ();
5ed81e
+  double d931 = f1 ();
5ed81e
+  double d932 = f1 ();
5ed81e
+  double d933 = f1 ();
5ed81e
+  double d934 = f1 ();
5ed81e
+  double d935 = f1 ();
5ed81e
+  double d936 = f1 ();
5ed81e
+  double d937 = f1 ();
5ed81e
+  double d938 = f1 ();
5ed81e
+  double d939 = f1 ();
5ed81e
+  double d940 = f1 ();
5ed81e
+  double d941 = f1 ();
5ed81e
+  double d942 = f1 ();
5ed81e
+  double d943 = f1 ();
5ed81e
+  double d944 = f1 ();
5ed81e
+  double d945 = f1 ();
5ed81e
+  double d946 = f1 ();
5ed81e
+  double d947 = f1 ();
5ed81e
+  double d948 = f1 ();
5ed81e
+  double d949 = f1 ();
5ed81e
+  double d950 = f1 ();
5ed81e
+  double d951 = f1 ();
5ed81e
+  double d952 = f1 ();
5ed81e
+  double d953 = f1 ();
5ed81e
+  double d954 = f1 ();
5ed81e
+  double d955 = f1 ();
5ed81e
+  double d956 = f1 ();
5ed81e
+  double d957 = f1 ();
5ed81e
+  double d958 = f1 ();
5ed81e
+  double d959 = f1 ();
5ed81e
+  double d960 = f1 ();
5ed81e
+  double d961 = f1 ();
5ed81e
+  double d962 = f1 ();
5ed81e
+  double d963 = f1 ();
5ed81e
+  double d964 = f1 ();
5ed81e
+  double d965 = f1 ();
5ed81e
+  double d966 = f1 ();
5ed81e
+  double d967 = f1 ();
5ed81e
+  double d968 = f1 ();
5ed81e
+  double d969 = f1 ();
5ed81e
+  double d970 = f1 ();
5ed81e
+  double d971 = f1 ();
5ed81e
+  double d972 = f1 ();
5ed81e
+  double d973 = f1 ();
5ed81e
+  double d974 = f1 ();
5ed81e
+  double d975 = f1 ();
5ed81e
+  double d976 = f1 ();
5ed81e
+  double d977 = f1 ();
5ed81e
+  double d978 = f1 ();
5ed81e
+  double d979 = f1 ();
5ed81e
+  double d980 = f1 ();
5ed81e
+  double d981 = f1 ();
5ed81e
+  double d982 = f1 ();
5ed81e
+  double d983 = f1 ();
5ed81e
+  double d984 = f1 ();
5ed81e
+  double d985 = f1 ();
5ed81e
+  double d986 = f1 ();
5ed81e
+  double d987 = f1 ();
5ed81e
+  double d988 = f1 ();
5ed81e
+  double d989 = f1 ();
5ed81e
+  double d990 = f1 ();
5ed81e
+  double d991 = f1 ();
5ed81e
+  double d992 = f1 ();
5ed81e
+  double d993 = f1 ();
5ed81e
+  double d994 = f1 ();
5ed81e
+  double d995 = f1 ();
5ed81e
+  double d996 = f1 ();
5ed81e
+  double d997 = f1 ();
5ed81e
+  double d998 = f1 ();
5ed81e
+  double d999 = f1 ();
5ed81e
+
5ed81e
+  double x = 0;
5ed81e
+  x = f2 (x, d000);
5ed81e
+  x = f2 (x, d001);
5ed81e
+  x = f2 (x, d002);
5ed81e
+  x = f2 (x, d003);
5ed81e
+  x = f2 (x, d004);
5ed81e
+  x = f2 (x, d005);
5ed81e
+  x = f2 (x, d006);
5ed81e
+  x = f2 (x, d007);
5ed81e
+  x = f2 (x, d008);
5ed81e
+  x = f2 (x, d009);
5ed81e
+  x = f2 (x, d010);
5ed81e
+  x = f2 (x, d011);
5ed81e
+  x = f2 (x, d012);
5ed81e
+  x = f2 (x, d013);
5ed81e
+  x = f2 (x, d014);
5ed81e
+  x = f2 (x, d015);
5ed81e
+  x = f2 (x, d016);
5ed81e
+  x = f2 (x, d017);
5ed81e
+  x = f2 (x, d018);
5ed81e
+  x = f2 (x, d019);
5ed81e
+  x = f2 (x, d020);
5ed81e
+  x = f2 (x, d021);
5ed81e
+  x = f2 (x, d022);
5ed81e
+  x = f2 (x, d023);
5ed81e
+  x = f2 (x, d024);
5ed81e
+  x = f2 (x, d025);
5ed81e
+  x = f2 (x, d026);
5ed81e
+  x = f2 (x, d027);
5ed81e
+  x = f2 (x, d028);
5ed81e
+  x = f2 (x, d029);
5ed81e
+  x = f2 (x, d030);
5ed81e
+  x = f2 (x, d031);
5ed81e
+  x = f2 (x, d032);
5ed81e
+  x = f2 (x, d033);
5ed81e
+  x = f2 (x, d034);
5ed81e
+  x = f2 (x, d035);
5ed81e
+  x = f2 (x, d036);
5ed81e
+  x = f2 (x, d037);
5ed81e
+  x = f2 (x, d038);
5ed81e
+  x = f2 (x, d039);
5ed81e
+  x = f2 (x, d040);
5ed81e
+  x = f2 (x, d041);
5ed81e
+  x = f2 (x, d042);
5ed81e
+  x = f2 (x, d043);
5ed81e
+  x = f2 (x, d044);
5ed81e
+  x = f2 (x, d045);
5ed81e
+  x = f2 (x, d046);
5ed81e
+  x = f2 (x, d047);
5ed81e
+  x = f2 (x, d048);
5ed81e
+  x = f2 (x, d049);
5ed81e
+  x = f2 (x, d050);
5ed81e
+  x = f2 (x, d051);
5ed81e
+  x = f2 (x, d052);
5ed81e
+  x = f2 (x, d053);
5ed81e
+  x = f2 (x, d054);
5ed81e
+  x = f2 (x, d055);
5ed81e
+  x = f2 (x, d056);
5ed81e
+  x = f2 (x, d057);
5ed81e
+  x = f2 (x, d058);
5ed81e
+  x = f2 (x, d059);
5ed81e
+  x = f2 (x, d060);
5ed81e
+  x = f2 (x, d061);
5ed81e
+  x = f2 (x, d062);
5ed81e
+  x = f2 (x, d063);
5ed81e
+  x = f2 (x, d064);
5ed81e
+  x = f2 (x, d065);
5ed81e
+  x = f2 (x, d066);
5ed81e
+  x = f2 (x, d067);
5ed81e
+  x = f2 (x, d068);
5ed81e
+  x = f2 (x, d069);
5ed81e
+  x = f2 (x, d070);
5ed81e
+  x = f2 (x, d071);
5ed81e
+  x = f2 (x, d072);
5ed81e
+  x = f2 (x, d073);
5ed81e
+  x = f2 (x, d074);
5ed81e
+  x = f2 (x, d075);
5ed81e
+  x = f2 (x, d076);
5ed81e
+  x = f2 (x, d077);
5ed81e
+  x = f2 (x, d078);
5ed81e
+  x = f2 (x, d079);
5ed81e
+  x = f2 (x, d080);
5ed81e
+  x = f2 (x, d081);
5ed81e
+  x = f2 (x, d082);
5ed81e
+  x = f2 (x, d083);
5ed81e
+  x = f2 (x, d084);
5ed81e
+  x = f2 (x, d085);
5ed81e
+  x = f2 (x, d086);
5ed81e
+  x = f2 (x, d087);
5ed81e
+  x = f2 (x, d088);
5ed81e
+  x = f2 (x, d089);
5ed81e
+  x = f2 (x, d090);
5ed81e
+  x = f2 (x, d091);
5ed81e
+  x = f2 (x, d092);
5ed81e
+  x = f2 (x, d093);
5ed81e
+  x = f2 (x, d094);
5ed81e
+  x = f2 (x, d095);
5ed81e
+  x = f2 (x, d096);
5ed81e
+  x = f2 (x, d097);
5ed81e
+  x = f2 (x, d098);
5ed81e
+  x = f2 (x, d099);
5ed81e
+  x = f2 (x, d100);
5ed81e
+  x = f2 (x, d101);
5ed81e
+  x = f2 (x, d102);
5ed81e
+  x = f2 (x, d103);
5ed81e
+  x = f2 (x, d104);
5ed81e
+  x = f2 (x, d105);
5ed81e
+  x = f2 (x, d106);
5ed81e
+  x = f2 (x, d107);
5ed81e
+  x = f2 (x, d108);
5ed81e
+  x = f2 (x, d109);
5ed81e
+  x = f2 (x, d110);
5ed81e
+  x = f2 (x, d111);
5ed81e
+  x = f2 (x, d112);
5ed81e
+  x = f2 (x, d113);
5ed81e
+  x = f2 (x, d114);
5ed81e
+  x = f2 (x, d115);
5ed81e
+  x = f2 (x, d116);
5ed81e
+  x = f2 (x, d117);
5ed81e
+  x = f2 (x, d118);
5ed81e
+  x = f2 (x, d119);
5ed81e
+  x = f2 (x, d120);
5ed81e
+  x = f2 (x, d121);
5ed81e
+  x = f2 (x, d122);
5ed81e
+  x = f2 (x, d123);
5ed81e
+  x = f2 (x, d124);
5ed81e
+  x = f2 (x, d125);
5ed81e
+  x = f2 (x, d126);
5ed81e
+  x = f2 (x, d127);
5ed81e
+  x = f2 (x, d128);
5ed81e
+  x = f2 (x, d129);
5ed81e
+  x = f2 (x, d130);
5ed81e
+  x = f2 (x, d131);
5ed81e
+  x = f2 (x, d132);
5ed81e
+  x = f2 (x, d133);
5ed81e
+  x = f2 (x, d134);
5ed81e
+  x = f2 (x, d135);
5ed81e
+  x = f2 (x, d136);
5ed81e
+  x = f2 (x, d137);
5ed81e
+  x = f2 (x, d138);
5ed81e
+  x = f2 (x, d139);
5ed81e
+  x = f2 (x, d140);
5ed81e
+  x = f2 (x, d141);
5ed81e
+  x = f2 (x, d142);
5ed81e
+  x = f2 (x, d143);
5ed81e
+  x = f2 (x, d144);
5ed81e
+  x = f2 (x, d145);
5ed81e
+  x = f2 (x, d146);
5ed81e
+  x = f2 (x, d147);
5ed81e
+  x = f2 (x, d148);
5ed81e
+  x = f2 (x, d149);
5ed81e
+  x = f2 (x, d150);
5ed81e
+  x = f2 (x, d151);
5ed81e
+  x = f2 (x, d152);
5ed81e
+  x = f2 (x, d153);
5ed81e
+  x = f2 (x, d154);
5ed81e
+  x = f2 (x, d155);
5ed81e
+  x = f2 (x, d156);
5ed81e
+  x = f2 (x, d157);
5ed81e
+  x = f2 (x, d158);
5ed81e
+  x = f2 (x, d159);
5ed81e
+  x = f2 (x, d160);
5ed81e
+  x = f2 (x, d161);
5ed81e
+  x = f2 (x, d162);
5ed81e
+  x = f2 (x, d163);
5ed81e
+  x = f2 (x, d164);
5ed81e
+  x = f2 (x, d165);
5ed81e
+  x = f2 (x, d166);
5ed81e
+  x = f2 (x, d167);
5ed81e
+  x = f2 (x, d168);
5ed81e
+  x = f2 (x, d169);
5ed81e
+  x = f2 (x, d170);
5ed81e
+  x = f2 (x, d171);
5ed81e
+  x = f2 (x, d172);
5ed81e
+  x = f2 (x, d173);
5ed81e
+  x = f2 (x, d174);
5ed81e
+  x = f2 (x, d175);
5ed81e
+  x = f2 (x, d176);
5ed81e
+  x = f2 (x, d177);
5ed81e
+  x = f2 (x, d178);
5ed81e
+  x = f2 (x, d179);
5ed81e
+  x = f2 (x, d180);
5ed81e
+  x = f2 (x, d181);
5ed81e
+  x = f2 (x, d182);
5ed81e
+  x = f2 (x, d183);
5ed81e
+  x = f2 (x, d184);
5ed81e
+  x = f2 (x, d185);
5ed81e
+  x = f2 (x, d186);
5ed81e
+  x = f2 (x, d187);
5ed81e
+  x = f2 (x, d188);
5ed81e
+  x = f2 (x, d189);
5ed81e
+  x = f2 (x, d190);
5ed81e
+  x = f2 (x, d191);
5ed81e
+  x = f2 (x, d192);
5ed81e
+  x = f2 (x, d193);
5ed81e
+  x = f2 (x, d194);
5ed81e
+  x = f2 (x, d195);
5ed81e
+  x = f2 (x, d196);
5ed81e
+  x = f2 (x, d197);
5ed81e
+  x = f2 (x, d198);
5ed81e
+  x = f2 (x, d199);
5ed81e
+  x = f2 (x, d200);
5ed81e
+  x = f2 (x, d201);
5ed81e
+  x = f2 (x, d202);
5ed81e
+  x = f2 (x, d203);
5ed81e
+  x = f2 (x, d204);
5ed81e
+  x = f2 (x, d205);
5ed81e
+  x = f2 (x, d206);
5ed81e
+  x = f2 (x, d207);
5ed81e
+  x = f2 (x, d208);
5ed81e
+  x = f2 (x, d209);
5ed81e
+  x = f2 (x, d210);
5ed81e
+  x = f2 (x, d211);
5ed81e
+  x = f2 (x, d212);
5ed81e
+  x = f2 (x, d213);
5ed81e
+  x = f2 (x, d214);
5ed81e
+  x = f2 (x, d215);
5ed81e
+  x = f2 (x, d216);
5ed81e
+  x = f2 (x, d217);
5ed81e
+  x = f2 (x, d218);
5ed81e
+  x = f2 (x, d219);
5ed81e
+  x = f2 (x, d220);
5ed81e
+  x = f2 (x, d221);
5ed81e
+  x = f2 (x, d222);
5ed81e
+  x = f2 (x, d223);
5ed81e
+  x = f2 (x, d224);
5ed81e
+  x = f2 (x, d225);
5ed81e
+  x = f2 (x, d226);
5ed81e
+  x = f2 (x, d227);
5ed81e
+  x = f2 (x, d228);
5ed81e
+  x = f2 (x, d229);
5ed81e
+  x = f2 (x, d230);
5ed81e
+  x = f2 (x, d231);
5ed81e
+  x = f2 (x, d232);
5ed81e
+  x = f2 (x, d233);
5ed81e
+  x = f2 (x, d234);
5ed81e
+  x = f2 (x, d235);
5ed81e
+  x = f2 (x, d236);
5ed81e
+  x = f2 (x, d237);
5ed81e
+  x = f2 (x, d238);
5ed81e
+  x = f2 (x, d239);
5ed81e
+  x = f2 (x, d240);
5ed81e
+  x = f2 (x, d241);
5ed81e
+  x = f2 (x, d242);
5ed81e
+  x = f2 (x, d243);
5ed81e
+  x = f2 (x, d244);
5ed81e
+  x = f2 (x, d245);
5ed81e
+  x = f2 (x, d246);
5ed81e
+  x = f2 (x, d247);
5ed81e
+  x = f2 (x, d248);
5ed81e
+  x = f2 (x, d249);
5ed81e
+  x = f2 (x, d250);
5ed81e
+  x = f2 (x, d251);
5ed81e
+  x = f2 (x, d252);
5ed81e
+  x = f2 (x, d253);
5ed81e
+  x = f2 (x, d254);
5ed81e
+  x = f2 (x, d255);
5ed81e
+  x = f2 (x, d256);
5ed81e
+  x = f2 (x, d257);
5ed81e
+  x = f2 (x, d258);
5ed81e
+  x = f2 (x, d259);
5ed81e
+  x = f2 (x, d260);
5ed81e
+  x = f2 (x, d261);
5ed81e
+  x = f2 (x, d262);
5ed81e
+  x = f2 (x, d263);
5ed81e
+  x = f2 (x, d264);
5ed81e
+  x = f2 (x, d265);
5ed81e
+  x = f2 (x, d266);
5ed81e
+  x = f2 (x, d267);
5ed81e
+  x = f2 (x, d268);
5ed81e
+  x = f2 (x, d269);
5ed81e
+  x = f2 (x, d270);
5ed81e
+  x = f2 (x, d271);
5ed81e
+  x = f2 (x, d272);
5ed81e
+  x = f2 (x, d273);
5ed81e
+  x = f2 (x, d274);
5ed81e
+  x = f2 (x, d275);
5ed81e
+  x = f2 (x, d276);
5ed81e
+  x = f2 (x, d277);
5ed81e
+  x = f2 (x, d278);
5ed81e
+  x = f2 (x, d279);
5ed81e
+  x = f2 (x, d280);
5ed81e
+  x = f2 (x, d281);
5ed81e
+  x = f2 (x, d282);
5ed81e
+  x = f2 (x, d283);
5ed81e
+  x = f2 (x, d284);
5ed81e
+  x = f2 (x, d285);
5ed81e
+  x = f2 (x, d286);
5ed81e
+  x = f2 (x, d287);
5ed81e
+  x = f2 (x, d288);
5ed81e
+  x = f2 (x, d289);
5ed81e
+  x = f2 (x, d290);
5ed81e
+  x = f2 (x, d291);
5ed81e
+  x = f2 (x, d292);
5ed81e
+  x = f2 (x, d293);
5ed81e
+  x = f2 (x, d294);
5ed81e
+  x = f2 (x, d295);
5ed81e
+  x = f2 (x, d296);
5ed81e
+  x = f2 (x, d297);
5ed81e
+  x = f2 (x, d298);
5ed81e
+  x = f2 (x, d299);
5ed81e
+  x = f2 (x, d300);
5ed81e
+  x = f2 (x, d301);
5ed81e
+  x = f2 (x, d302);
5ed81e
+  x = f2 (x, d303);
5ed81e
+  x = f2 (x, d304);
5ed81e
+  x = f2 (x, d305);
5ed81e
+  x = f2 (x, d306);
5ed81e
+  x = f2 (x, d307);
5ed81e
+  x = f2 (x, d308);
5ed81e
+  x = f2 (x, d309);
5ed81e
+  x = f2 (x, d310);
5ed81e
+  x = f2 (x, d311);
5ed81e
+  x = f2 (x, d312);
5ed81e
+  x = f2 (x, d313);
5ed81e
+  x = f2 (x, d314);
5ed81e
+  x = f2 (x, d315);
5ed81e
+  x = f2 (x, d316);
5ed81e
+  x = f2 (x, d317);
5ed81e
+  x = f2 (x, d318);
5ed81e
+  x = f2 (x, d319);
5ed81e
+  x = f2 (x, d320);
5ed81e
+  x = f2 (x, d321);
5ed81e
+  x = f2 (x, d322);
5ed81e
+  x = f2 (x, d323);
5ed81e
+  x = f2 (x, d324);
5ed81e
+  x = f2 (x, d325);
5ed81e
+  x = f2 (x, d326);
5ed81e
+  x = f2 (x, d327);
5ed81e
+  x = f2 (x, d328);
5ed81e
+  x = f2 (x, d329);
5ed81e
+  x = f2 (x, d330);
5ed81e
+  x = f2 (x, d331);
5ed81e
+  x = f2 (x, d332);
5ed81e
+  x = f2 (x, d333);
5ed81e
+  x = f2 (x, d334);
5ed81e
+  x = f2 (x, d335);
5ed81e
+  x = f2 (x, d336);
5ed81e
+  x = f2 (x, d337);
5ed81e
+  x = f2 (x, d338);
5ed81e
+  x = f2 (x, d339);
5ed81e
+  x = f2 (x, d340);
5ed81e
+  x = f2 (x, d341);
5ed81e
+  x = f2 (x, d342);
5ed81e
+  x = f2 (x, d343);
5ed81e
+  x = f2 (x, d344);
5ed81e
+  x = f2 (x, d345);
5ed81e
+  x = f2 (x, d346);
5ed81e
+  x = f2 (x, d347);
5ed81e
+  x = f2 (x, d348);
5ed81e
+  x = f2 (x, d349);
5ed81e
+  x = f2 (x, d350);
5ed81e
+  x = f2 (x, d351);
5ed81e
+  x = f2 (x, d352);
5ed81e
+  x = f2 (x, d353);
5ed81e
+  x = f2 (x, d354);
5ed81e
+  x = f2 (x, d355);
5ed81e
+  x = f2 (x, d356);
5ed81e
+  x = f2 (x, d357);
5ed81e
+  x = f2 (x, d358);
5ed81e
+  x = f2 (x, d359);
5ed81e
+  x = f2 (x, d360);
5ed81e
+  x = f2 (x, d361);
5ed81e
+  x = f2 (x, d362);
5ed81e
+  x = f2 (x, d363);
5ed81e
+  x = f2 (x, d364);
5ed81e
+  x = f2 (x, d365);
5ed81e
+  x = f2 (x, d366);
5ed81e
+  x = f2 (x, d367);
5ed81e
+  x = f2 (x, d368);
5ed81e
+  x = f2 (x, d369);
5ed81e
+  x = f2 (x, d370);
5ed81e
+  x = f2 (x, d371);
5ed81e
+  x = f2 (x, d372);
5ed81e
+  x = f2 (x, d373);
5ed81e
+  x = f2 (x, d374);
5ed81e
+  x = f2 (x, d375);
5ed81e
+  x = f2 (x, d376);
5ed81e
+  x = f2 (x, d377);
5ed81e
+  x = f2 (x, d378);
5ed81e
+  x = f2 (x, d379);
5ed81e
+  x = f2 (x, d380);
5ed81e
+  x = f2 (x, d381);
5ed81e
+  x = f2 (x, d382);
5ed81e
+  x = f2 (x, d383);
5ed81e
+  x = f2 (x, d384);
5ed81e
+  x = f2 (x, d385);
5ed81e
+  x = f2 (x, d386);
5ed81e
+  x = f2 (x, d387);
5ed81e
+  x = f2 (x, d388);
5ed81e
+  x = f2 (x, d389);
5ed81e
+  x = f2 (x, d390);
5ed81e
+  x = f2 (x, d391);
5ed81e
+  x = f2 (x, d392);
5ed81e
+  x = f2 (x, d393);
5ed81e
+  x = f2 (x, d394);
5ed81e
+  x = f2 (x, d395);
5ed81e
+  x = f2 (x, d396);
5ed81e
+  x = f2 (x, d397);
5ed81e
+  x = f2 (x, d398);
5ed81e
+  x = f2 (x, d399);
5ed81e
+  x = f2 (x, d400);
5ed81e
+  x = f2 (x, d401);
5ed81e
+  x = f2 (x, d402);
5ed81e
+  x = f2 (x, d403);
5ed81e
+  x = f2 (x, d404);
5ed81e
+  x = f2 (x, d405);
5ed81e
+  x = f2 (x, d406);
5ed81e
+  x = f2 (x, d407);
5ed81e
+  x = f2 (x, d408);
5ed81e
+  x = f2 (x, d409);
5ed81e
+  x = f2 (x, d410);
5ed81e
+  x = f2 (x, d411);
5ed81e
+  x = f2 (x, d412);
5ed81e
+  x = f2 (x, d413);
5ed81e
+  x = f2 (x, d414);
5ed81e
+  x = f2 (x, d415);
5ed81e
+  x = f2 (x, d416);
5ed81e
+  x = f2 (x, d417);
5ed81e
+  x = f2 (x, d418);
5ed81e
+  x = f2 (x, d419);
5ed81e
+  x = f2 (x, d420);
5ed81e
+  x = f2 (x, d421);
5ed81e
+  x = f2 (x, d422);
5ed81e
+  x = f2 (x, d423);
5ed81e
+  x = f2 (x, d424);
5ed81e
+  x = f2 (x, d425);
5ed81e
+  x = f2 (x, d426);
5ed81e
+  x = f2 (x, d427);
5ed81e
+  x = f2 (x, d428);
5ed81e
+  x = f2 (x, d429);
5ed81e
+  x = f2 (x, d430);
5ed81e
+  x = f2 (x, d431);
5ed81e
+  x = f2 (x, d432);
5ed81e
+  x = f2 (x, d433);
5ed81e
+  x = f2 (x, d434);
5ed81e
+  x = f2 (x, d435);
5ed81e
+  x = f2 (x, d436);
5ed81e
+  x = f2 (x, d437);
5ed81e
+  x = f2 (x, d438);
5ed81e
+  x = f2 (x, d439);
5ed81e
+  x = f2 (x, d440);
5ed81e
+  x = f2 (x, d441);
5ed81e
+  x = f2 (x, d442);
5ed81e
+  x = f2 (x, d443);
5ed81e
+  x = f2 (x, d444);
5ed81e
+  x = f2 (x, d445);
5ed81e
+  x = f2 (x, d446);
5ed81e
+  x = f2 (x, d447);
5ed81e
+  x = f2 (x, d448);
5ed81e
+  x = f2 (x, d449);
5ed81e
+  x = f2 (x, d450);
5ed81e
+  x = f2 (x, d451);
5ed81e
+  x = f2 (x, d452);
5ed81e
+  x = f2 (x, d453);
5ed81e
+  x = f2 (x, d454);
5ed81e
+  x = f2 (x, d455);
5ed81e
+  x = f2 (x, d456);
5ed81e
+  x = f2 (x, d457);
5ed81e
+  x = f2 (x, d458);
5ed81e
+  x = f2 (x, d459);
5ed81e
+  x = f2 (x, d460);
5ed81e
+  x = f2 (x, d461);
5ed81e
+  x = f2 (x, d462);
5ed81e
+  x = f2 (x, d463);
5ed81e
+  x = f2 (x, d464);
5ed81e
+  x = f2 (x, d465);
5ed81e
+  x = f2 (x, d466);
5ed81e
+  x = f2 (x, d467);
5ed81e
+  x = f2 (x, d468);
5ed81e
+  x = f2 (x, d469);
5ed81e
+  x = f2 (x, d470);
5ed81e
+  x = f2 (x, d471);
5ed81e
+  x = f2 (x, d472);
5ed81e
+  x = f2 (x, d473);
5ed81e
+  x = f2 (x, d474);
5ed81e
+  x = f2 (x, d475);
5ed81e
+  x = f2 (x, d476);
5ed81e
+  x = f2 (x, d477);
5ed81e
+  x = f2 (x, d478);
5ed81e
+  x = f2 (x, d479);
5ed81e
+  x = f2 (x, d480);
5ed81e
+  x = f2 (x, d481);
5ed81e
+  x = f2 (x, d482);
5ed81e
+  x = f2 (x, d483);
5ed81e
+  x = f2 (x, d484);
5ed81e
+  x = f2 (x, d485);
5ed81e
+  x = f2 (x, d486);
5ed81e
+  x = f2 (x, d487);
5ed81e
+  x = f2 (x, d488);
5ed81e
+  x = f2 (x, d489);
5ed81e
+  x = f2 (x, d490);
5ed81e
+  x = f2 (x, d491);
5ed81e
+  x = f2 (x, d492);
5ed81e
+  x = f2 (x, d493);
5ed81e
+  x = f2 (x, d494);
5ed81e
+  x = f2 (x, d495);
5ed81e
+  x = f2 (x, d496);
5ed81e
+  x = f2 (x, d497);
5ed81e
+  x = f2 (x, d498);
5ed81e
+  x = f2 (x, d499);
5ed81e
+  x = f2 (x, d500);
5ed81e
+  x = f2 (x, d501);
5ed81e
+  x = f2 (x, d502);
5ed81e
+  x = f2 (x, d503);
5ed81e
+  x = f2 (x, d504);
5ed81e
+  x = f2 (x, d505);
5ed81e
+  x = f2 (x, d506);
5ed81e
+  x = f2 (x, d507);
5ed81e
+  x = f2 (x, d508);
5ed81e
+  x = f2 (x, d509);
5ed81e
+  x = f2 (x, d510);
5ed81e
+  x = f2 (x, d511);
5ed81e
+  x = f2 (x, d512);
5ed81e
+  x = f2 (x, d513);
5ed81e
+  x = f2 (x, d514);
5ed81e
+  x = f2 (x, d515);
5ed81e
+  x = f2 (x, d516);
5ed81e
+  x = f2 (x, d517);
5ed81e
+  x = f2 (x, d518);
5ed81e
+  x = f2 (x, d519);
5ed81e
+  x = f2 (x, d520);
5ed81e
+  x = f2 (x, d521);
5ed81e
+  x = f2 (x, d522);
5ed81e
+  x = f2 (x, d523);
5ed81e
+  x = f2 (x, d524);
5ed81e
+  x = f2 (x, d525);
5ed81e
+  x = f2 (x, d526);
5ed81e
+  x = f2 (x, d527);
5ed81e
+  x = f2 (x, d528);
5ed81e
+  x = f2 (x, d529);
5ed81e
+  x = f2 (x, d530);
5ed81e
+  x = f2 (x, d531);
5ed81e
+  x = f2 (x, d532);
5ed81e
+  x = f2 (x, d533);
5ed81e
+  x = f2 (x, d534);
5ed81e
+  x = f2 (x, d535);
5ed81e
+  x = f2 (x, d536);
5ed81e
+  x = f2 (x, d537);
5ed81e
+  x = f2 (x, d538);
5ed81e
+  x = f2 (x, d539);
5ed81e
+  x = f2 (x, d540);
5ed81e
+  x = f2 (x, d541);
5ed81e
+  x = f2 (x, d542);
5ed81e
+  x = f2 (x, d543);
5ed81e
+  x = f2 (x, d544);
5ed81e
+  x = f2 (x, d545);
5ed81e
+  x = f2 (x, d546);
5ed81e
+  x = f2 (x, d547);
5ed81e
+  x = f2 (x, d548);
5ed81e
+  x = f2 (x, d549);
5ed81e
+  x = f2 (x, d550);
5ed81e
+  x = f2 (x, d551);
5ed81e
+  x = f2 (x, d552);
5ed81e
+  x = f2 (x, d553);
5ed81e
+  x = f2 (x, d554);
5ed81e
+  x = f2 (x, d555);
5ed81e
+  x = f2 (x, d556);
5ed81e
+  x = f2 (x, d557);
5ed81e
+  x = f2 (x, d558);
5ed81e
+  x = f2 (x, d559);
5ed81e
+  x = f2 (x, d560);
5ed81e
+  x = f2 (x, d561);
5ed81e
+  x = f2 (x, d562);
5ed81e
+  x = f2 (x, d563);
5ed81e
+  x = f2 (x, d564);
5ed81e
+  x = f2 (x, d565);
5ed81e
+  x = f2 (x, d566);
5ed81e
+  x = f2 (x, d567);
5ed81e
+  x = f2 (x, d568);
5ed81e
+  x = f2 (x, d569);
5ed81e
+  x = f2 (x, d570);
5ed81e
+  x = f2 (x, d571);
5ed81e
+  x = f2 (x, d572);
5ed81e
+  x = f2 (x, d573);
5ed81e
+  x = f2 (x, d574);
5ed81e
+  x = f2 (x, d575);
5ed81e
+  x = f2 (x, d576);
5ed81e
+  x = f2 (x, d577);
5ed81e
+  x = f2 (x, d578);
5ed81e
+  x = f2 (x, d579);
5ed81e
+  x = f2 (x, d580);
5ed81e
+  x = f2 (x, d581);
5ed81e
+  x = f2 (x, d582);
5ed81e
+  x = f2 (x, d583);
5ed81e
+  x = f2 (x, d584);
5ed81e
+  x = f2 (x, d585);
5ed81e
+  x = f2 (x, d586);
5ed81e
+  x = f2 (x, d587);
5ed81e
+  x = f2 (x, d588);
5ed81e
+  x = f2 (x, d589);
5ed81e
+  x = f2 (x, d590);
5ed81e
+  x = f2 (x, d591);
5ed81e
+  x = f2 (x, d592);
5ed81e
+  x = f2 (x, d593);
5ed81e
+  x = f2 (x, d594);
5ed81e
+  x = f2 (x, d595);
5ed81e
+  x = f2 (x, d596);
5ed81e
+  x = f2 (x, d597);
5ed81e
+  x = f2 (x, d598);
5ed81e
+  x = f2 (x, d599);
5ed81e
+  x = f2 (x, d600);
5ed81e
+  x = f2 (x, d601);
5ed81e
+  x = f2 (x, d602);
5ed81e
+  x = f2 (x, d603);
5ed81e
+  x = f2 (x, d604);
5ed81e
+  x = f2 (x, d605);
5ed81e
+  x = f2 (x, d606);
5ed81e
+  x = f2 (x, d607);
5ed81e
+  x = f2 (x, d608);
5ed81e
+  x = f2 (x, d609);
5ed81e
+  x = f2 (x, d610);
5ed81e
+  x = f2 (x, d611);
5ed81e
+  x = f2 (x, d612);
5ed81e
+  x = f2 (x, d613);
5ed81e
+  x = f2 (x, d614);
5ed81e
+  x = f2 (x, d615);
5ed81e
+  x = f2 (x, d616);
5ed81e
+  x = f2 (x, d617);
5ed81e
+  x = f2 (x, d618);
5ed81e
+  x = f2 (x, d619);
5ed81e
+  x = f2 (x, d620);
5ed81e
+  x = f2 (x, d621);
5ed81e
+  x = f2 (x, d622);
5ed81e
+  x = f2 (x, d623);
5ed81e
+  x = f2 (x, d624);
5ed81e
+  x = f2 (x, d625);
5ed81e
+  x = f2 (x, d626);
5ed81e
+  x = f2 (x, d627);
5ed81e
+  x = f2 (x, d628);
5ed81e
+  x = f2 (x, d629);
5ed81e
+  x = f2 (x, d630);
5ed81e
+  x = f2 (x, d631);
5ed81e
+  x = f2 (x, d632);
5ed81e
+  x = f2 (x, d633);
5ed81e
+  x = f2 (x, d634);
5ed81e
+  x = f2 (x, d635);
5ed81e
+  x = f2 (x, d636);
5ed81e
+  x = f2 (x, d637);
5ed81e
+  x = f2 (x, d638);
5ed81e
+  x = f2 (x, d639);
5ed81e
+  x = f2 (x, d640);
5ed81e
+  x = f2 (x, d641);
5ed81e
+  x = f2 (x, d642);
5ed81e
+  x = f2 (x, d643);
5ed81e
+  x = f2 (x, d644);
5ed81e
+  x = f2 (x, d645);
5ed81e
+  x = f2 (x, d646);
5ed81e
+  x = f2 (x, d647);
5ed81e
+  x = f2 (x, d648);
5ed81e
+  x = f2 (x, d649);
5ed81e
+  x = f2 (x, d650);
5ed81e
+  x = f2 (x, d651);
5ed81e
+  x = f2 (x, d652);
5ed81e
+  x = f2 (x, d653);
5ed81e
+  x = f2 (x, d654);
5ed81e
+  x = f2 (x, d655);
5ed81e
+  x = f2 (x, d656);
5ed81e
+  x = f2 (x, d657);
5ed81e
+  x = f2 (x, d658);
5ed81e
+  x = f2 (x, d659);
5ed81e
+  x = f2 (x, d660);
5ed81e
+  x = f2 (x, d661);
5ed81e
+  x = f2 (x, d662);
5ed81e
+  x = f2 (x, d663);
5ed81e
+  x = f2 (x, d664);
5ed81e
+  x = f2 (x, d665);
5ed81e
+  x = f2 (x, d666);
5ed81e
+  x = f2 (x, d667);
5ed81e
+  x = f2 (x, d668);
5ed81e
+  x = f2 (x, d669);
5ed81e
+  x = f2 (x, d670);
5ed81e
+  x = f2 (x, d671);
5ed81e
+  x = f2 (x, d672);
5ed81e
+  x = f2 (x, d673);
5ed81e
+  x = f2 (x, d674);
5ed81e
+  x = f2 (x, d675);
5ed81e
+  x = f2 (x, d676);
5ed81e
+  x = f2 (x, d677);
5ed81e
+  x = f2 (x, d678);
5ed81e
+  x = f2 (x, d679);
5ed81e
+  x = f2 (x, d680);
5ed81e
+  x = f2 (x, d681);
5ed81e
+  x = f2 (x, d682);
5ed81e
+  x = f2 (x, d683);
5ed81e
+  x = f2 (x, d684);
5ed81e
+  x = f2 (x, d685);
5ed81e
+  x = f2 (x, d686);
5ed81e
+  x = f2 (x, d687);
5ed81e
+  x = f2 (x, d688);
5ed81e
+  x = f2 (x, d689);
5ed81e
+  x = f2 (x, d690);
5ed81e
+  x = f2 (x, d691);
5ed81e
+  x = f2 (x, d692);
5ed81e
+  x = f2 (x, d693);
5ed81e
+  x = f2 (x, d694);
5ed81e
+  x = f2 (x, d695);
5ed81e
+  x = f2 (x, d696);
5ed81e
+  x = f2 (x, d697);
5ed81e
+  x = f2 (x, d698);
5ed81e
+  x = f2 (x, d699);
5ed81e
+  x = f2 (x, d700);
5ed81e
+  x = f2 (x, d701);
5ed81e
+  x = f2 (x, d702);
5ed81e
+  x = f2 (x, d703);
5ed81e
+  x = f2 (x, d704);
5ed81e
+  x = f2 (x, d705);
5ed81e
+  x = f2 (x, d706);
5ed81e
+  x = f2 (x, d707);
5ed81e
+  x = f2 (x, d708);
5ed81e
+  x = f2 (x, d709);
5ed81e
+  x = f2 (x, d710);
5ed81e
+  x = f2 (x, d711);
5ed81e
+  x = f2 (x, d712);
5ed81e
+  x = f2 (x, d713);
5ed81e
+  x = f2 (x, d714);
5ed81e
+  x = f2 (x, d715);
5ed81e
+  x = f2 (x, d716);
5ed81e
+  x = f2 (x, d717);
5ed81e
+  x = f2 (x, d718);
5ed81e
+  x = f2 (x, d719);
5ed81e
+  x = f2 (x, d720);
5ed81e
+  x = f2 (x, d721);
5ed81e
+  x = f2 (x, d722);
5ed81e
+  x = f2 (x, d723);
5ed81e
+  x = f2 (x, d724);
5ed81e
+  x = f2 (x, d725);
5ed81e
+  x = f2 (x, d726);
5ed81e
+  x = f2 (x, d727);
5ed81e
+  x = f2 (x, d728);
5ed81e
+  x = f2 (x, d729);
5ed81e
+  x = f2 (x, d730);
5ed81e
+  x = f2 (x, d731);
5ed81e
+  x = f2 (x, d732);
5ed81e
+  x = f2 (x, d733);
5ed81e
+  x = f2 (x, d734);
5ed81e
+  x = f2 (x, d735);
5ed81e
+  x = f2 (x, d736);
5ed81e
+  x = f2 (x, d737);
5ed81e
+  x = f2 (x, d738);
5ed81e
+  x = f2 (x, d739);
5ed81e
+  x = f2 (x, d740);
5ed81e
+  x = f2 (x, d741);
5ed81e
+  x = f2 (x, d742);
5ed81e
+  x = f2 (x, d743);
5ed81e
+  x = f2 (x, d744);
5ed81e
+  x = f2 (x, d745);
5ed81e
+  x = f2 (x, d746);
5ed81e
+  x = f2 (x, d747);
5ed81e
+  x = f2 (x, d748);
5ed81e
+  x = f2 (x, d749);
5ed81e
+  x = f2 (x, d750);
5ed81e
+  x = f2 (x, d751);
5ed81e
+  x = f2 (x, d752);
5ed81e
+  x = f2 (x, d753);
5ed81e
+  x = f2 (x, d754);
5ed81e
+  x = f2 (x, d755);
5ed81e
+  x = f2 (x, d756);
5ed81e
+  x = f2 (x, d757);
5ed81e
+  x = f2 (x, d758);
5ed81e
+  x = f2 (x, d759);
5ed81e
+  x = f2 (x, d760);
5ed81e
+  x = f2 (x, d761);
5ed81e
+  x = f2 (x, d762);
5ed81e
+  x = f2 (x, d763);
5ed81e
+  x = f2 (x, d764);
5ed81e
+  x = f2 (x, d765);
5ed81e
+  x = f2 (x, d766);
5ed81e
+  x = f2 (x, d767);
5ed81e
+  x = f2 (x, d768);
5ed81e
+  x = f2 (x, d769);
5ed81e
+  x = f2 (x, d770);
5ed81e
+  x = f2 (x, d771);
5ed81e
+  x = f2 (x, d772);
5ed81e
+  x = f2 (x, d773);
5ed81e
+  x = f2 (x, d774);
5ed81e
+  x = f2 (x, d775);
5ed81e
+  x = f2 (x, d776);
5ed81e
+  x = f2 (x, d777);
5ed81e
+  x = f2 (x, d778);
5ed81e
+  x = f2 (x, d779);
5ed81e
+  x = f2 (x, d780);
5ed81e
+  x = f2 (x, d781);
5ed81e
+  x = f2 (x, d782);
5ed81e
+  x = f2 (x, d783);
5ed81e
+  x = f2 (x, d784);
5ed81e
+  x = f2 (x, d785);
5ed81e
+  x = f2 (x, d786);
5ed81e
+  x = f2 (x, d787);
5ed81e
+  x = f2 (x, d788);
5ed81e
+  x = f2 (x, d789);
5ed81e
+  x = f2 (x, d790);
5ed81e
+  x = f2 (x, d791);
5ed81e
+  x = f2 (x, d792);
5ed81e
+  x = f2 (x, d793);
5ed81e
+  x = f2 (x, d794);
5ed81e
+  x = f2 (x, d795);
5ed81e
+  x = f2 (x, d796);
5ed81e
+  x = f2 (x, d797);
5ed81e
+  x = f2 (x, d798);
5ed81e
+  x = f2 (x, d799);
5ed81e
+  x = f2 (x, d800);
5ed81e
+  x = f2 (x, d801);
5ed81e
+  x = f2 (x, d802);
5ed81e
+  x = f2 (x, d803);
5ed81e
+  x = f2 (x, d804);
5ed81e
+  x = f2 (x, d805);
5ed81e
+  x = f2 (x, d806);
5ed81e
+  x = f2 (x, d807);
5ed81e
+  x = f2 (x, d808);
5ed81e
+  x = f2 (x, d809);
5ed81e
+  x = f2 (x, d810);
5ed81e
+  x = f2 (x, d811);
5ed81e
+  x = f2 (x, d812);
5ed81e
+  x = f2 (x, d813);
5ed81e
+  x = f2 (x, d814);
5ed81e
+  x = f2 (x, d815);
5ed81e
+  x = f2 (x, d816);
5ed81e
+  x = f2 (x, d817);
5ed81e
+  x = f2 (x, d818);
5ed81e
+  x = f2 (x, d819);
5ed81e
+  x = f2 (x, d820);
5ed81e
+  x = f2 (x, d821);
5ed81e
+  x = f2 (x, d822);
5ed81e
+  x = f2 (x, d823);
5ed81e
+  x = f2 (x, d824);
5ed81e
+  x = f2 (x, d825);
5ed81e
+  x = f2 (x, d826);
5ed81e
+  x = f2 (x, d827);
5ed81e
+  x = f2 (x, d828);
5ed81e
+  x = f2 (x, d829);
5ed81e
+  x = f2 (x, d830);
5ed81e
+  x = f2 (x, d831);
5ed81e
+  x = f2 (x, d832);
5ed81e
+  x = f2 (x, d833);
5ed81e
+  x = f2 (x, d834);
5ed81e
+  x = f2 (x, d835);
5ed81e
+  x = f2 (x, d836);
5ed81e
+  x = f2 (x, d837);
5ed81e
+  x = f2 (x, d838);
5ed81e
+  x = f2 (x, d839);
5ed81e
+  x = f2 (x, d840);
5ed81e
+  x = f2 (x, d841);
5ed81e
+  x = f2 (x, d842);
5ed81e
+  x = f2 (x, d843);
5ed81e
+  x = f2 (x, d844);
5ed81e
+  x = f2 (x, d845);
5ed81e
+  x = f2 (x, d846);
5ed81e
+  x = f2 (x, d847);
5ed81e
+  x = f2 (x, d848);
5ed81e
+  x = f2 (x, d849);
5ed81e
+  x = f2 (x, d850);
5ed81e
+  x = f2 (x, d851);
5ed81e
+  x = f2 (x, d852);
5ed81e
+  x = f2 (x, d853);
5ed81e
+  x = f2 (x, d854);
5ed81e
+  x = f2 (x, d855);
5ed81e
+  x = f2 (x, d856);
5ed81e
+  x = f2 (x, d857);
5ed81e
+  x = f2 (x, d858);
5ed81e
+  x = f2 (x, d859);
5ed81e
+  x = f2 (x, d860);
5ed81e
+  x = f2 (x, d861);
5ed81e
+  x = f2 (x, d862);
5ed81e
+  x = f2 (x, d863);
5ed81e
+  x = f2 (x, d864);
5ed81e
+  x = f2 (x, d865);
5ed81e
+  x = f2 (x, d866);
5ed81e
+  x = f2 (x, d867);
5ed81e
+  x = f2 (x, d868);
5ed81e
+  x = f2 (x, d869);
5ed81e
+  x = f2 (x, d870);
5ed81e
+  x = f2 (x, d871);
5ed81e
+  x = f2 (x, d872);
5ed81e
+  x = f2 (x, d873);
5ed81e
+  x = f2 (x, d874);
5ed81e
+  x = f2 (x, d875);
5ed81e
+  x = f2 (x, d876);
5ed81e
+  x = f2 (x, d877);
5ed81e
+  x = f2 (x, d878);
5ed81e
+  x = f2 (x, d879);
5ed81e
+  x = f2 (x, d880);
5ed81e
+  x = f2 (x, d881);
5ed81e
+  x = f2 (x, d882);
5ed81e
+  x = f2 (x, d883);
5ed81e
+  x = f2 (x, d884);
5ed81e
+  x = f2 (x, d885);
5ed81e
+  x = f2 (x, d886);
5ed81e
+  x = f2 (x, d887);
5ed81e
+  x = f2 (x, d888);
5ed81e
+  x = f2 (x, d889);
5ed81e
+  x = f2 (x, d890);
5ed81e
+  x = f2 (x, d891);
5ed81e
+  x = f2 (x, d892);
5ed81e
+  x = f2 (x, d893);
5ed81e
+  x = f2 (x, d894);
5ed81e
+  x = f2 (x, d895);
5ed81e
+  x = f2 (x, d896);
5ed81e
+  x = f2 (x, d897);
5ed81e
+  x = f2 (x, d898);
5ed81e
+  x = f2 (x, d899);
5ed81e
+  x = f2 (x, d900);
5ed81e
+  x = f2 (x, d901);
5ed81e
+  x = f2 (x, d902);
5ed81e
+  x = f2 (x, d903);
5ed81e
+  x = f2 (x, d904);
5ed81e
+  x = f2 (x, d905);
5ed81e
+  x = f2 (x, d906);
5ed81e
+  x = f2 (x, d907);
5ed81e
+  x = f2 (x, d908);
5ed81e
+  x = f2 (x, d909);
5ed81e
+  x = f2 (x, d910);
5ed81e
+  x = f2 (x, d911);
5ed81e
+  x = f2 (x, d912);
5ed81e
+  x = f2 (x, d913);
5ed81e
+  x = f2 (x, d914);
5ed81e
+  x = f2 (x, d915);
5ed81e
+  x = f2 (x, d916);
5ed81e
+  x = f2 (x, d917);
5ed81e
+  x = f2 (x, d918);
5ed81e
+  x = f2 (x, d919);
5ed81e
+  x = f2 (x, d920);
5ed81e
+  x = f2 (x, d921);
5ed81e
+  x = f2 (x, d922);
5ed81e
+  x = f2 (x, d923);
5ed81e
+  x = f2 (x, d924);
5ed81e
+  x = f2 (x, d925);
5ed81e
+  x = f2 (x, d926);
5ed81e
+  x = f2 (x, d927);
5ed81e
+  x = f2 (x, d928);
5ed81e
+  x = f2 (x, d929);
5ed81e
+  x = f2 (x, d930);
5ed81e
+  x = f2 (x, d931);
5ed81e
+  x = f2 (x, d932);
5ed81e
+  x = f2 (x, d933);
5ed81e
+  x = f2 (x, d934);
5ed81e
+  x = f2 (x, d935);
5ed81e
+  x = f2 (x, d936);
5ed81e
+  x = f2 (x, d937);
5ed81e
+  x = f2 (x, d938);
5ed81e
+  x = f2 (x, d939);
5ed81e
+  x = f2 (x, d940);
5ed81e
+  x = f2 (x, d941);
5ed81e
+  x = f2 (x, d942);
5ed81e
+  x = f2 (x, d943);
5ed81e
+  x = f2 (x, d944);
5ed81e
+  x = f2 (x, d945);
5ed81e
+  x = f2 (x, d946);
5ed81e
+  x = f2 (x, d947);
5ed81e
+  x = f2 (x, d948);
5ed81e
+  x = f2 (x, d949);
5ed81e
+  x = f2 (x, d950);
5ed81e
+  x = f2 (x, d951);
5ed81e
+  x = f2 (x, d952);
5ed81e
+  x = f2 (x, d953);
5ed81e
+  x = f2 (x, d954);
5ed81e
+  x = f2 (x, d955);
5ed81e
+  x = f2 (x, d956);
5ed81e
+  x = f2 (x, d957);
5ed81e
+  x = f2 (x, d958);
5ed81e
+  x = f2 (x, d959);
5ed81e
+  x = f2 (x, d960);
5ed81e
+  x = f2 (x, d961);
5ed81e
+  x = f2 (x, d962);
5ed81e
+  x = f2 (x, d963);
5ed81e
+  x = f2 (x, d964);
5ed81e
+  x = f2 (x, d965);
5ed81e
+  x = f2 (x, d966);
5ed81e
+  x = f2 (x, d967);
5ed81e
+  x = f2 (x, d968);
5ed81e
+  x = f2 (x, d969);
5ed81e
+  x = f2 (x, d970);
5ed81e
+  x = f2 (x, d971);
5ed81e
+  x = f2 (x, d972);
5ed81e
+  x = f2 (x, d973);
5ed81e
+  x = f2 (x, d974);
5ed81e
+  x = f2 (x, d975);
5ed81e
+  x = f2 (x, d976);
5ed81e
+  x = f2 (x, d977);
5ed81e
+  x = f2 (x, d978);
5ed81e
+  x = f2 (x, d979);
5ed81e
+  x = f2 (x, d980);
5ed81e
+  x = f2 (x, d981);
5ed81e
+  x = f2 (x, d982);
5ed81e
+  x = f2 (x, d983);
5ed81e
+  x = f2 (x, d984);
5ed81e
+  x = f2 (x, d985);
5ed81e
+  x = f2 (x, d986);
5ed81e
+  x = f2 (x, d987);
5ed81e
+  x = f2 (x, d988);
5ed81e
+  x = f2 (x, d989);
5ed81e
+  x = f2 (x, d990);
5ed81e
+  x = f2 (x, d991);
5ed81e
+  x = f2 (x, d992);
5ed81e
+  x = f2 (x, d993);
5ed81e
+  x = f2 (x, d994);
5ed81e
+  x = f2 (x, d995);
5ed81e
+  x = f2 (x, d996);
5ed81e
+  x = f2 (x, d997);
5ed81e
+  x = f2 (x, d998);
5ed81e
+  x = f2 (x, d999);
5ed81e
+  return x;
5ed81e
+}
5ed81e
+
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash inline probes" 1 "pro_and_epilogue" } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash residual allocation in prologue" 1 "pro_and_epilogue" } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash not noreturn" 1 "pro_and_epilogue" } } */
5ed81e
+
5ed81e
+/* f3 is not a leaf
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash no frame pointer needed" 1 "pro_and_epilogue" { target { ! frame_pointer_for_non_leaf } } } } */
5ed81e
+/* { dg-final { scan-rtl-dump-times "Stack clash frame pointer needed" 1 "pro_and_epilogue" { target { frame_pointer_for_non_leaf } } } } */
5ed81e
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
5ed81e
index 821cea9cb33..2c669a9822f 100644
5ed81e
--- a/gcc/testsuite/lib/target-supports.exp
5ed81e
+++ b/gcc/testsuite/lib/target-supports.exp
5ed81e
@@ -5421,11 +5421,15 @@ proc check_effective_target_autoincdec { } {
5ed81e
 proc check_effective_target_supports_stack_clash_protection { } {
5ed81e
 
5ed81e
    # Temporary until the target bits are fully ACK'd.
5ed81e
-#  if { [istarget aarch*-*-*] || [istarget x86_64-*-*]
5ed81e
-#       || [istarget i?86-*-*] || [istarget s390*-*-*]
5ed81e
+#  if { [istarget aarch*-*-*]
5ed81e
+#       || [istarget s390*-*-*]
5ed81e
 #       || [istarget powerpc*-*-*] || [istarget rs6000*-*-*] } {
5ed81e
 #	return 1
5ed81e
 #  }
5ed81e
+
5ed81e
+    if { [istarget x86_64-*-*] || [istarget i?86-*-*] } {
5ed81e
+	return 1
5ed81e
+    }
5ed81e
   return 0
5ed81e
 }
5ed81e