[LLVMdev] Building 176.gcc

Evzen Muller evzen.muller at arm.com
Wed Jan 19 01:46:22 PST 2011


SPECCPU2000 include a lot of GCC specific & non-standard code, fortunately
it is easy to
specify CPORTABILITY flags for individual tests in a config file.

For latest clang I had to use:

252.eon: -fpermissive
300.twolf: -std=gnu89 -Wreturn-type

Evzen

> -----Original Message-----
> From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu]
> On Behalf Of Nick Lewycky
> Sent: 19 January 2011 04:02
> To: Bin Zeng
> Cc: llvmdev at cs.uiuc.edu
> Subject: Re: [LLVMdev] Building 176.gcc
> 
> On 01/18/2011 06:38 PM, Bin Zeng wrote:
> > 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'
> 
> Try -std=gnu89 instead of -std=c89. "inline" in C89 is a GNU extension,
> and -std=c89 runs with gnu extensions disabled but __GNUC__ is still
> defined.
> 
> Nick
> 
> > 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
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> >
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev








More information about the llvm-dev mailing list