http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49367
--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-06-14 12:44:35 UTC --- The last example is because with a restrict qualified loaded pointer the later conversion to a restrict qualified pointer is thrown away. As for the first example the only case that would work is by passing the argument in a way that the FE sets DECL_BY_REFERENCE and uses a restrict qualified pointer for it. Which it does when the source passes it by value I think. That's the only case where we can assume something about the pointed-to type.