[LLVMdev] Building 176.gcc

Bin Zeng ezengbin at gmail.com
Tue Jan 18 18:38:57 PST 2011


Hi folks,

I have been stumped on a compilation problem when I tried to build 
176.gcc of SPEC CPU2000 with clang v 2.8 (trunk 427) on Linux and intel. 
First, I tried to compile with 'clang -std=c89 *.c -o gcc.clang' since 
the default C standard of Clang is c99 while that of gcc is c89. It 
reported this error:
./c-gperf.h:14:1: error: unknown type name 'inline'
inline
^
./c-gperf.h:16:1: error: expected identifier or '('
static unsigned int
...

This is the part of the source code:
#ifdef __GNUC__
inline
#endif
static unsigned int
hash (str, len)
...
Definitely, the error existed because clang has different support for 
inline. Then I tried to compile with 'clang *.c -std=c99 -o gcc.clang' 
because c99 supports inline. It reported this error:
/tmp/cc-tJBugS.o: In function `stat':
toplev.c:(.text+0x0): multiple definition of `stat'
/tmp/cc-aQKHyN.o:getpwd.c:(.text+0x0): first defined here
/tmp/cc-tJBugS.o: In function `fstat':
toplev.c:(.text+0x30): multiple definition of `fstat'
/tmp/cc-aQKHyN.o:getpwd.c:(.text+0x30): first defined here
/tmp/cc-GZ5yz3.o: In function `init_lex':
c-lex.c:(.text+0x417): undefined reference to `is_reserved_word'
c-lex.c:(.text+0x463): undefined reference to `is_reserved_word'
c-lex.c:(.text+0x4a1): undefined reference to `is_reserved_word'
c-lex.c:(.text+0x4df): undefined reference to `is_reserved_word'
c-lex.c:(.text+0x51d): undefined reference to `is_reserved_word'

function stat and fstat are included from header files <sys/stat.h>. I 
suppose this has something to do with the c89 C preprocessor standard.

Also, I looked at the configuration files of SPEC CPU2000. There is no 
special command line options for building 176.gcc. The base tune command 
line is this: 'gcc -c  -O3 -fomit-frame-pointer   *.c'.   Is there any 
way to walk around this without changing the source code of 176.gcc? I 
do not intend to do change it since it is standard benchmark program. 
Definitely, someone has built SPEC CPU2000 with clang successfully 
before. Does anyone have any suggestion?

Thanks a lot!
Bin



More information about the llvm-dev mailing list