http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56434
--- Comment #2 from Chip Salzenberg <chip at pobox dot com> 2013-02-25 17:51:36 UTC --- I detected this by observing inlined strlen() on a malloc'd pointer did not first do an unaligned prologue. I expected it to first advance by bytes until it detected alignment, but it didn't do any of that; it leapt right into the word-sized optimized loop. This suggests that the compiler knows than an 8-byte-aligned (say) pointer has its low seven bits off and will evaporate away any code that depends on them being nonzero. Or is the strlen inlining special-cased?