https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86590
Pedro Alves <palves at redhat dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |palves at redhat dot com --- Comment #19 from Pedro Alves <palves at redhat dot com> --- > confuses us because of the stupid structure of __constant_string_p. Yes, a stupid workaround for a stupid __builtin_strlen, which is being punished by a stupid optimizer. ;-) I'll be the first to say "good riddance" when this disappears, but I'm honestly surprised the optimizers can't _always_ inline all of that, given it's basically just "do I know this at compile time" checks... I'd think that fixing that would help generate better code in other uses of __builtin_constant_p in other codebases. As I mentioned in <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80265#c32>, interestingly the trick made some cases optimize _better_, which kind of suggests to me that __builtin_foo functions are missing some comparing-known-constant-objects optimizations.