Description of problem: Instead of working as it used to, clang++ fails to compile anything that includes almost any headers from the C++ standard library. At least these headers have triggered the problem for me: iostream list string vector Headers which do not seem to trigger the problem: cmath cstdlib Version-Release number of selected component (if applicable): clang-2.8-11.fc15.x86_64 How reproducible: Easily by trying to compile a sample program that #includes something from the C++ standard library. Steps to Reproduce: 1. Write a program.cpp where you #include <vector> or some other common header from the standard library. 2. clang++ -c program.cpp Actual results: Lots of errors, sample output should be in the attachments. Expected results: Succesfully compiled program.o file in current working directory. Additional info: Found some discussion probably relevant to the bug here: http://www.mail-archive.com/llvmbugs@cs.uiuc.edu/msg12529.html
Created attachment 497005 [details] output from running the compiler on a simple program
Clang 2.8 can't handle the GNU extensions we use in recent versions of libstdc++, I think 3.0 fares a little better, but for clang++ to be at all useful Fedora needs to ship an old set of libstdc++ headers for Clang to use (or ship libc++ but I don't know if that is usable on GNU/Linux) It would be good to upgrade to Clang 3.0 anyway, it has a number of bugfixes for C++ and at least one new warning that's found a real bug for me
Unfortunately we can't update the LLVM/clang stack on existing Fedora versions -- LLVM is used by some key components (e.g. mesa). Fedora 16 will get clang 2.9.
Upgrading to 3.0 was only a suggestion, but IIUC would still not allow clang++ to use the libstdc++ 4.6 headers shipped with Fedora, which is what this bug is actually about. Does clang 2.9 work for trivial C++ code? If not, what about using an alternative set of libstdc++ headers from an older GCC?
clang-3.0-0.1.rc3.fc17.i686 in current Rawhide seems to work much just fine when used with libstdc++. Hopefully Fedora 17 will end up with a working combination of clang and libstdc++.