diff options
| author | bviyer <bviyer@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-10-30 22:51:29 +0000 |
|---|---|---|
| committer | bviyer <bviyer@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-10-30 22:51:29 +0000 |
| commit | 02c15cf3eeed878ff26307a175aef11b6feb183d (patch) | |
| tree | 5bc13973eb8a17b5f36bfb2e0458f2b38047ee49 /libcilkrts/runtime | |
| parent | 9cd65e0501466bd4f3678c36d87b1ec9492c5997 (diff) | |
| download | ppe42-gcc-02c15cf3eeed878ff26307a175aef11b6feb183d.tar.gz ppe42-gcc-02c15cf3eeed878ff26307a175aef11b6feb183d.zip | |
Fix for bug Bootstrap/58918.
+2013-10-30 Balaji V. Iyer <balaji.v.iyer@intel.com>
+
+ * configure: Reconfigured.
+ * configure.ac: Add AC_FUNC_ALLOCA.
+ * runtime/sysdep-unix.c: Added check for alloca.h before
+ including it.
+ * config/x86/cilk-abi-vla.c: Likewise.
+ * runtime/cilk_fiber-unix.cpp: Likewise.
+
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@204232 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libcilkrts/runtime')
| -rw-r--r-- | libcilkrts/runtime/cilk_fiber-unix.cpp | 19 | ||||
| -rw-r--r-- | libcilkrts/runtime/config/x86/cilk-abi-vla.c | 23 | ||||
| -rw-r--r-- | libcilkrts/runtime/sysdep-unix.c | 15 |
3 files changed, 52 insertions, 5 deletions
diff --git a/libcilkrts/runtime/cilk_fiber-unix.cpp b/libcilkrts/runtime/cilk_fiber-unix.cpp index b9b47e364a5..4895c9c5d71 100644 --- a/libcilkrts/runtime/cilk_fiber-unix.cpp +++ b/libcilkrts/runtime/cilk_fiber-unix.cpp @@ -44,7 +44,20 @@ #include <cstdio> #include <cstdlib> -#include <alloca.h> +#if defined HAVE_ALLOCA_H +# include <alloca.h> +#elif defined __GNUC__ +# define alloca __builtin_alloca +#elif defined _AIX +# define alloca __alloca +#else +# include <stddef.h> +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +#endif + #include <errno.h> #include <sys/mman.h> #include <unistd.h> @@ -150,7 +163,8 @@ NORETURN cilk_fiber_sysdep::jump_to_resume_other_sysdep(cilk_fiber_sysdep* other __cilkrts_bug("Should not get here"); } - +#pragma GCC push_options +#pragma GCC optimize ("-O0") NORETURN cilk_fiber_sysdep::run() { // Only fibers created from a pool have a proc method to run and execute. @@ -214,6 +228,7 @@ NORETURN cilk_fiber_sysdep::run() // User proc should never return. __cilkrts_bug("Should not get here"); } +#pragma GCC pop_options void cilk_fiber_sysdep::make_stack(size_t stack_size) { diff --git a/libcilkrts/runtime/config/x86/cilk-abi-vla.c b/libcilkrts/runtime/config/x86/cilk-abi-vla.c index 2d38e7f9a56..38c2630a1e6 100644 --- a/libcilkrts/runtime/config/x86/cilk-abi-vla.c +++ b/libcilkrts/runtime/config/x86/cilk-abi-vla.c @@ -58,15 +58,34 @@ #include <assert.h> #include <stdlib.h> #include <stdint.h> -#ifdef _WIN32 + +// Getting a definition for alloca appears to be a pain in the butt. Here's +// a variant on what's recommended in the autoconf doc +#if defined _MSC_VER +# include <malloc.h> # define alloca _alloca +#elif defined HAVE_ALLOCA_H +# include <alloca.h> +#elif defined __GNUC__ +# define alloca __builtin_alloca +#elif defined _AIX +# define alloca __alloca +#else +# include <stddef.h> +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +#endif + +#ifdef _WIN32 # define INLINE static __inline # pragma warning(disable:1025) // Don't whine about zero extending result of unary operation #else -# include <alloca.h> # define INLINE static inline #endif + #include "internal/abi.h" #include "cilk-abi-vla-internal.h" diff --git a/libcilkrts/runtime/sysdep-unix.c b/libcilkrts/runtime/sysdep-unix.c index 194681fffc5..1f82b6288a1 100644 --- a/libcilkrts/runtime/sysdep-unix.c +++ b/libcilkrts/runtime/sysdep-unix.c @@ -80,7 +80,20 @@ #include <string.h> #include <pthread.h> #include <unistd.h> -#include <alloca.h> + +#if defined HAVE_ALLOCA_H +# include <alloca.h> +#elif defined __GNUC__ +# define alloca __builtin_alloca +#elif defined _AIX +# define alloca __alloca +#else +# include <stddef.h> +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +#endif #ifdef __APPLE__ //# include <scheduler.h> // Angle brackets include Apple's scheduler.h, not ours. |

