On Sun Mar 18 12:21:18 2007, ptc wrote: > I don't know if this is a BUG or what so I'm just sending it plain. > I've just tried to build parrot with icc (not 100% sure if my build > flags are correct either), and I'm getting this build error: > > icc -o miniparrot compilers/imcc/main.o \ > -Wl,-rpath=/home/cochrane/sourceforge/parrot_svn/blib/lib > -L/home/cochrane/sourceforge/parrot_svn/blib/lib -lparrot -lpthread > -lm -L/usr/lib -licuuc -licudata -lpthread -lm -lpthread -lnsl -ldl > -lm -lcrypt -lutil -lrt -lgmp -lreadline -lncurses -L/usr/local/lib > src/null_config.o > Invoking Parrot to generate runtime/parrot/include/config.fpmc --cross > your fingers > ./miniparrot config_lib.pasm > runtime/parrot/include/config.fpmc > miniparrot: src/mmd.c:1707: Assertion > `((UINTVAL)(mmd_table[i].func_ptr) & 3) == 0' failed. > /bin/sh: line 1: 30223 Aborted ./miniparrot > config_lib.pasm > runtime/parrot/include/config.fpmc > make: *** [runtime/parrot/include/config.fpmc] Error 134 > > Naive configure settings were (comments welcome as to what I might > have done wrong here): > > perl Configure.pl --cc=icc --cxx=icc --ld=icc > > Any ideas as to what is going wrong here?
There appear to be a couple of problems. First, it appears that icc is optimizing something that causes that assertion to fail. ifdef'ing the assertion seems to cause no problems. Second, there appears to be something hateful about the __LINE__ macro in icc. I've had to adjust the location of a few CONST_STRING() macros. In the meantime, RT #42768 contains patches necessary to get Intel C++ compiling and passing tests on Linux.