On Thu, 9 Jul 2015, Richard Biener wrote:

> On Thu, 9 Jul 2015, Bernhard Reutner-Fischer wrote:
> 
> > gcc/ChangeLog
> > 
> > 2015-07-09  Bernhard Reutner-Fischer  <al...@gcc.gnu.org>
> > 
> >     * builtins.c (fold_builtin_tolower, fold_builtin_toupper): New
> >     static functions.
> >     (fold_builtin_1): Handle BUILT_IN_TOLOWER, BUILT_IN_TOUPPER.
> 
> As I read it you fold tolower (X) to (X) >= target_char_set ('A')
> && (X) <= target_char_set ('Z') ? (X) - target_char_set ('A') + 
> target_char_set ('a');
> 
> I don't think this can be correct for all locales which need not
> have a lower-case character for all upper-case ones nor do
> all letters having one need to be in the range of 'A' to 'Z'.

And even if the locale contains the ASCII letters, the tolower / toupper 
mapping for them may not be the ASCII one (consider tolower ('I') and 
toupper ('i') in a Turkish locale tr_TR.ISO-8859-9 - the results are 'ı' 
and 'İ' which are single-byte characters in that locale).

-- 
Joseph S. Myers
jos...@codesourcery.com

Reply via email to