Rodrigo Kumpera wrote:

Mono is not usually build with icc, so it might be the case that it doesn't support some gcc flags. Just hack your way by removing them from configure.in <http://configure.in> for now.

I've tried to compile the problematic module without any flags at all.
The result is the following:

2 utils]# icc -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -mmic -o hazard-pointer.lo hazard-pointer.c
/tmp/icciSatYwas_.s: Assembler messages:
/tmp/icciSatYwas_.s:139: Error: `sfence' is not supported on `k1om'
/tmp/icciSatYwas_.s:517: Error: `sfence' is not supported on `k1om'

The assembler output points out the problematic place inside hazard-pointer.c:

..B1.23:                        # Preds ..B1.22 Latency 1
movl %ebx, highest_small_id(%rip) #hazard-pointer.c:113.3 c1
# Begin ASM
        sfence
# End ASM #hazard-pointer.c:114.3

The corresponding line 114 in hazard-pointer.c is

 112          if (id > highest_small_id) {
   113                  highest_small_id = id;
   114                  mono_memory_write_barrier ();
   115          }

Finally we have

$ cat mono-membar.h
/*
 * mono-membar.h: Memory barrier inline functions
 *
 * Author:
 *      Mark Probst ([email protected])
 *
 * (C) 2007 Novell, Inc
 */

#ifndef _MONO_UTILS_MONO_MEMBAR_H_
#define _MONO_UTILS_MONO_MEMBAR_H_

                             .   .    .

static inline void mono_memory_write_barrier (void)
{
        __asm__ __volatile__ ("sfence" : : : "memory");
}

Yury

_______________________________________________
Mono-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to