diff options
author | bviyer <bviyer@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-02-19 03:43:21 +0000 |
---|---|---|
committer | bviyer <bviyer@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-02-19 03:43:21 +0000 |
commit | 76a2f4fff059dc28d4e481fbef538828478ff22e (patch) | |
tree | 122619ab8476ac382844c8e13cb6a27127b78948 /libcilkrts | |
parent | 70d26ff65e921d9a00d5b7b7ba8b4c693953527c (diff) | |
download | gcc-76a2f4fff059dc28d4e481fbef538828478ff22e.tar.gz |
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.
+
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@207870 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libcilkrts')
-rw-r--r-- | libcilkrts/ChangeLog | 7 | ||||
-rw-r--r-- | libcilkrts/include/cilk/common.h | 11 | ||||
-rw-r--r-- | libcilkrts/runtime/cilk-abi-cilk-for.cpp | 10 |
3 files changed, 22 insertions, 6 deletions
diff --git a/libcilkrts/ChangeLog b/libcilkrts/ChangeLog index c340785992d..434b974d635 100644 --- a/libcilkrts/ChangeLog +++ b/libcilkrts/ChangeLog @@ -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 diff --git a/libcilkrts/include/cilk/common.h b/libcilkrts/include/cilk/common.h index d2c84fa95a2..97dd66e0639 100644 --- a/libcilkrts/include/cilk/common.h +++ b/libcilkrts/include/cilk/common.h @@ -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 diff --git a/libcilkrts/runtime/cilk-abi-cilk-for.cpp b/libcilkrts/runtime/cilk-abi-cilk-for.cpp index 4fa6dcec82a..4cd04f521cf 100644 --- a/libcilkrts/runtime/cilk-abi-cilk-for.cpp +++ b/libcilkrts/runtime/cilk-abi-cilk-for.cpp @@ -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; |