On Fri, Sep 12, 2014 at 3:27 PM, Andi Kleen <a...@firstfloor.org> wrote:
> From: Andi Kleen <a...@linux.intel.com>
>
> When compiling on opensuse 13.1, with a 4.8.1 based host compiler
> and --disable-bootstrap, the generated compiler always ICEs while
> compiling __builtin_cpu_supports in the cilk runtime library.
>
> The problem is fixed with later 4.8 releases, but at least still
> happens with the opensuse compiler.
>
> The cilk library already had a fallback path for this function
> for other compilers. Just use the fallback path when
> __SSE2_MATH__ is set. This makes it work on x86_64 systems
> with the buggy 4.8.1 at least, if multilib is forced to
> SSE.
>
> libcilkrts/:
>
> 2014-09-12  Andi Kleen  <a...@linux.intel.com>
>
>         PR bootstrap/63235
>         * runtime/config/x86/os-unix-sysdep.c (__builtin_cpu_supports):
>         Use fallback when __SSE2_MATH__ is set.
> ---
>  libcilkrts/runtime/config/x86/os-unix-sysdep.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libcilkrts/runtime/config/x86/os-unix-sysdep.c 
> b/libcilkrts/runtime/config/x86/os-unix-sysdep.c
> index b505ddf..344c31a 100644
> --- a/libcilkrts/runtime/config/x86/os-unix-sysdep.c
> +++ b/libcilkrts/runtime/config/x86/os-unix-sysdep.c
> @@ -96,7 +96,7 @@ COMMON_SYSDEP int __cilkrts_xchg(volatile int *ptr, int x)
>   * This declaration should generate an error when the Intel compiler adds
>   * supprt for the intrinsic.
>   */
> -#ifdef __INTEL_COMPILER
> +#if defined(__INTEL_COMPILER) || defined(__SSE2_MATH__)
>  static inline int __builtin_cpu_supports(const char *feature)
>  {
>      return 1;

So GCC 4.8.1 miscompiles GCC.  Can we trust such GCC?
Should we put a work around in GCC compiler to avoid the
bad GCC?

BTW,  I run into another miscompilation bug

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63252

It only shows up when GCC is compiled with -O2 using GCC 5
on x32.

-- 
H.J.

Reply via email to