https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67014
Martin Liška <marxin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |NEW
--- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> ---
So the macro definition comes from glibc:
ctype/ctype.h
# if __GNUC__ >= 2 && defined __OPTIMIZE__ && !defined __cplusplus
# define tolower(c) __tobody (c, tolower, *__ctype_tolower_loc (), (c))
# define toupper(c) __tobody (c, toupper, *__ctype_toupper_loc (), (c))
# endif /* Optimizing gcc */
That's why the GCC compiler can't map it to a builtin. On the other hand, I
don't see why would it be beneficial in this case?