[cfe-dev] Building LLVM and Clang with EKOPath 4

James Dennett james.dennett at gmail.com
Wed May 30 11:28:49 PDT 2012

On Wed, May 30, 2012 at 11:20 AM, Matthieu Monrocq
<matthieu.monrocq at gmail.com> wrote:
> On Wed, May 30, 2012 at 9:56 AM, Konstantin Tokarev <annulen at yandex.ru>
> wrote:
>> Hi all,
>> I've managed to build LLVM and Clang with EKOPath compiler. Here
>> are patches I had to introcduce
>> to make it compiling.
>> Patch for clang moves some classes from anonymous namespaces which
>> otherwise caused linker
>> errors. Probably it's a bug in compiler producing symbols with incorrect
>> visibility.
>> --
>> Regards,
>> Konstantin
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
> I must admit it seems weird to be tweaking the code just to get it to
> compile with an exotic compiler.
> Adding includes occurs regularly because the standard does not define which
> standard includes include which others, so you often miss one or two.
> On the other hand, it seems strange that you had to add the "std::"
> qualifiers, remove the anonymous namespace in some places (all ?) and change
> *--S.end() into S[S.size()-1].

--S.end() isn't portable if S is a std::string (or a std::vector, come
to that) -- if the iterator type is a pointer type then decrementing
an rvalue is ill-formed.  This is where's C++11's std::prev is handy,
but of course we can't use it here, and we can't use C++11's
string::back() either, so the C++98 options are either S[S.size() - 1]
or *S.rbegin().

-- James

More information about the cfe-dev mailing list