[libcxx] Fix definition of regex_traits::__regex_word on big-endian glibc systems
authorDaniel Sanders <daniel.sanders@imgtec.com>
Wed, 17 Feb 2016 13:16:31 +0000 (13:16 +0000)
committerDaniel Sanders <daniel.sanders@imgtec.com>
Wed, 17 Feb 2016 13:16:31 +0000 (13:16 +0000)
commit4788179a2cbb8fceda25751b2bdfc4f3ae2d13d6
treebf10154aa22255637de4de34928e50d68448af6e
parent124be56bcc0d8e9c770fa70a392560bebea9478c
[libcxx] Fix definition of regex_traits::__regex_word on big-endian glibc systems

Summary:
On glibc, the bits used for the various character classes is endian dependant
(see _ISbit() in ctypes.h) but __regex_word does not account for this and uses
a spare bit that isn't spare on big-endian. On big-endian, it overlaps with the
bit for graphic characters which causes '-', '@', etc. to be considered a word
character.

Fixed this by defining the value using _ISbit(15) on MIPS glibc systems. We've
restricted this to MIPS for now to avoid the risk of introducing failures in
other targets.

Fixes PR26476.

Reviewers: hans, mclow.lists

Subscribers: dsanders, cfe-commits

Differential Revision: http://reviews.llvm.org/D17132

llvm-svn: 261088
libcxx/include/regex