From: | "A(dot)M(dot)" <agentm(at)themactionfaction(dot)com> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Has anyone used CLANG yet? |
Date: | 2009-12-09 22:17:14 |
Message-ID: | F6D8F5F8-B57B-4A4D-ABC8-C2719B9B83AD@themactionfaction.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Dec 9, 2009, at 4:23 PM, Chris Browne wrote:
> This is a C front end for the LLVM compiler... I noticed that it
> entered Debian/Unstable today:
>
> http://packages.debian.org/sid/main/clang
>
> I thought it would be interesting to see if PostgreSQL compiles with
> this, as an alternative compiler that should presumably become more and
> more available on Linux et al. (And I suppose that the randomly
> selected .sig is supremely apropos!)
>
> configure blows up here at the following:
>
> conftest.c:75:28: error: invalid token after top level declarator
> extern unsigned int PASCAL accept (unsigned int, void *, void *);
>
> I suspect there's something about PASCAL that's a problem, as clang is
> nominally supposed to be a C compiler ;-).
>
> I haven't looked deeper, so haven't the remotest idea how deep the issue
> lies.
>
> At any rate, I should poke at this further soon, but if it seems
> interesting to others, well, CLANG is now an easy install on some number
> of systems!
Clang works for me on MacOS 10.6.2:
/Developer/usr/bin/clang --version
clang version 1.0.1 (http://llvm.org/svn/llvm-project/cfe/tags/Apple/clang-24 exported)
Target: x86_64-apple-darwin10
CC="/Developer/usr/bin/clang" ./configure --prefix=/Users/agentm/pgsql841/
make -j 8
/Users/agentm/pgsql841/initdb -E UTF8 ../data
./pg_ctl -D ../data/ start
server starting
RD07:bin agentm$ LOG: database system was shut down at 2009-12-09 17:01:51 EST
LOG: database system is ready to accept connections
LOG: autovacuum launcher started
/Users/agentm/pgsql841/psql postgres
psql (8.4.1)
Type "help" for help.
postgres=# select 1;
?column?
----------
1
(1 row)
I do see lots of warnings regarding unsupported compiler flags:
clang: warning: argument unused during compilation: '-no-cpp-precomp'
clang: warning: argument unused during compilation: '-O2'
clang: warning: argument unused during compilation: '-Wall'
clang: warning: argument unused during compilation: '-Wmissing-prototypes'
clang: warning: argument unused during compilation: '-Wpointer-arith'
clang: warning: argument unused during compilation: '-Wdeclaration-after-statement'
clang: warning: argument unused during compilation: '-Wendif-labels'
clang: warning: argument unused during compilation: '-fno-strict-aliasing'
clang: warning: argument unused during compilation: '-fwrapv'
and some code-based warnings:
print.c:1105:24: warning: field width should have type 'int', but argument has type 'unsigned int' [-Wformat]
fprintf(fout, "%-s%*s", hlineptr[line_count].ptr,
^
pl_exec.c:3529:6: warning: expression result unused [-Wunused-value]
ItemPointerSetInvalid(&(tmptup.t_self));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../src/include/storage/itemptr.h:134:2: note: instantiated from:
BlockIdSet(&((pointer)->ip_blkid), InvalidBlockNumber), \
^
../../../../src/include/storage/block.h:86:2: note: instantiated from:
AssertMacro(PointerIsValid(blockId)), \
^
../../../../src/include/postgres.h:675:39: note: instantiated from:
#define AssertMacro(condition) ((void)true)
^
../../../../src/include/c.h:185:15: note: instantiated from:
#define true ((bool) 1)
You are probably running configure with gcc, no?
FYI:
with clang: time make (not -j 8)
real 1m46.511s
user 1m26.295s
sys 0m14.639s
with gcc: time make
real 2m41.934s
user 2m20.778s
sys 0m17.441s
du -h pgsql841gcc/bin/*
52K pgsql841gcc/bin/clusterdb
52K pgsql841gcc/bin/createdb
60K pgsql841gcc/bin/createlang
52K pgsql841gcc/bin/createuser
52K pgsql841gcc/bin/dropdb
60K pgsql841gcc/bin/droplang
52K pgsql841gcc/bin/dropuser
616K pgsql841gcc/bin/ecpg
72K pgsql841gcc/bin/initdb
32K pgsql841gcc/bin/pg_config
28K pgsql841gcc/bin/pg_controldata
36K pgsql841gcc/bin/pg_ctl
280K pgsql841gcc/bin/pg_dump
68K pgsql841gcc/bin/pg_dumpall
36K pgsql841gcc/bin/pg_resetxlog
128K pgsql841gcc/bin/pg_restore
4.6M pgsql841gcc/bin/postgres
4.0K pgsql841gcc/bin/postmaster
340K pgsql841gcc/bin/psql
52K pgsql841gcc/bin/reindexdb
32K pgsql841gcc/bin/vacuumdb
du -h pgsql841/bin/* (clang build)
52K pgsql841/bin/clusterdb
52K pgsql841/bin/createdb
60K pgsql841/bin/createlang
52K pgsql841/bin/createuser
48K pgsql841/bin/dropdb
60K pgsql841/bin/droplang
48K pgsql841/bin/dropuser
612K pgsql841/bin/ecpg
72K pgsql841/bin/initdb
28K pgsql841/bin/pg_config
28K pgsql841/bin/pg_controldata
36K pgsql841/bin/pg_ctl
272K pgsql841/bin/pg_dump
68K pgsql841/bin/pg_dumpall
36K pgsql841/bin/pg_resetxlog
124K pgsql841/bin/pg_restore
4.5M pgsql841/bin/postgres
4.0K pgsql841/bin/postmaster
344K pgsql841/bin/psql
52K pgsql841/bin/reindexdb
32K pgsql841/bin/vacuumdb
Cheers,
M
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2009-12-09 22:38:38 | Re: Adding support for SE-Linux security |
Previous Message | Greg Smith | 2009-12-09 21:59:01 | Re: Has anyone used CLANG yet? |