public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH][committed] two minor fixes in libcilkrts
@ 2014-02-19  0:57 Iyer, Balaji V
  0 siblings, 0 replies; only message in thread
From: Iyer, Balaji V @ 2014-02-19  0:57 UTC (permalink / raw)
  To: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 284 bytes --]

Hello Everyone,
	This patch will fix two minor issues in libcilkrts. First being that we default to ABI 0 and secondly, fix an issue to initialize the stack frame correctly. All the changes are in libcilkrts and does not cause any regression failures.

Thanks,

Balaji V. Iyer.

[-- Attachment #2: patch.txt --]
[-- Type: text/plain, Size: 2602 bytes --]

diff --git a/libcilkrts/ChangeLog b/libcilkrts/ChangeLog
index c340785..434b974 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 d2c84fa..97dd66e 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 4fa6dce..4cd04f5 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;
 

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2014-02-19  0:57 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-02-19  0:57 [PATCH][committed] two minor fixes in libcilkrts Iyer, Balaji V

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).