r215290 - Fix six tests are failing on Windows after r215241-r215243.

Yaron Keren yaron.keren at gmail.com
Mon Aug 11 10:14:49 PDT 2014


Lexer/cross-windows-on-linux-default.cpp is marked

 REQUIRES: disabled

doesn't it means the test is disabled?

I had not debugged the six tests to see what exactly broke, only restored
pre-patch behaviour to make the tests pass.

On Windows both / and \ are accepted.  From past experience ( and
http://reviews.llvm.org/D3686 )
such problems are usually caused by StringMap caches in which /  and \ are
considered different when searching. Prime suspects would be:

 HeaderSearch::LookupFileCache
 HeaderSearch::FrameworkMap
 FileManager::SeenFileEntries

but these would also need fixing:

 HeaderSearch::IncludeAliases
 FileManager::SeenDirEntries

and probably other StringMaps.

To solve these we could create a PathStringMap derived from StringMap in
which the search is  / \ tolerant and use it instead of the StringMap when
paths are stored.

Yaron



2014-08-11 18:46 GMT+03:00 Rafael EspĂ­ndola <rafael.espindola at gmail.com>:

> > +#ifndef LLVM_ON_WIN32
> >      llvm::sys::path::native(NormalizedPath);
> > +#endif
>
> This call is used on linux to make
> Lexer/cross-windows-on-linux-default.cpp pass. Since on windows both /
> and \ are supposed to work, it seems that LookupFile should succeed
> even with the call to llvm::sys::path::native, no? Do you know why it
> is failing?
>
> Cheers,
> Rafael
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140811/8e76c92a/attachment.html>


More information about the cfe-commits mailing list