+ * include/cilk/common.h (__CILKRTS_ABI_VERSION): Set the ABI version + to 1 instead of 0.

2014-02-18  Balaji V. Iyer  <balaji.v.iyer@intel.com>
+
+	* include/cilk/common.h (__CILKRTS_ABI_VERSION): Set the ABI version
+	to 1 instead of 0.
+	* runtime/cilk-abi-cilk-for.cpp (cilk_for_recursive): Added a fix to
+	initialize stack frame correctly.
+

From-SVN: r207870
This commit is contained in:
Balaji V. Iyer 2014-02-19 03:43:21 +00:00 committed by Balaji V. Iyer
parent b9809dc4cf
commit 0cfe1b4698
3 changed files with 22 additions and 6 deletions

View File

@ -1,3 +1,10 @@
2014-02-18 Balaji V. Iyer <balaji.v.iyer@intel.com>
* include/cilk/common.h (__CILKRTS_ABI_VERSION): Set the ABI version
to 1 instead of 0.
* runtime/cilk-abi-cilk-for.cpp (cilk_for_recursive): Added a fix to
initialize stack frame correctly.
2014-02-10 Balaji V. Iyer <balaji.v.iyer@intel.com>
PR target/59691

View File

@ -317,13 +317,12 @@ namespace cilk {
#ifndef __CILKRTS_ABI_VERSION
# ifdef IN_CILK_RUNTIME
# define __CILKRTS_ABI_VERSION 1
# elif __INTEL_COMPILER > 1200
// Intel compiler version >= 12.1
# define __CILKRTS_ABI_VERSION 1
# else
// Compiler does not support ABI version 1
// (Non-Intel compiler or Intel compiler prior to version 12.1).
# elif defined(__INTEL_COMPILER) && (__INTEL_COMPILER <= 1200)
// Intel compilers prior to version 12.1 support only ABI 0
# define __CILKRTS_ABI_VERSION 0
# else
// Non-Intel compiler or Intel compiler after version 12.0.
# define __CILKRTS_ABI_VERSION 1
# endif
#endif

View File

@ -256,9 +256,19 @@ tail_recurse:
// argument list of the spawned function, hence the call to
// capture_spawn_arg_stack_frame().
__cilkrts_stack_frame *sf;
#if defined(__GNUC__) && ! defined(__INTEL_COMPILER) && ! defined(__clang__)
// The current version of gcc initializes the sf structure eagerly.
// We can take advantage of this fact to avoid calling
// `capture_spawn_arg_stack_frame` when compiling with gcc.
// Remove this if the "shrink-wrap" optimization is implemented.
sf = w->current_stack_frame;
_Cilk_spawn cilk_for_recursive(low, mid, body, data, grain, w,
loop_root_pedigree);
#else
_Cilk_spawn cilk_for_recursive(low, mid, body, data, grain,
capture_spawn_arg_stack_frame(sf, w),
loop_root_pedigree);
#endif
w = sf->worker;
low = mid;