http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45878
--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-10-04 10:12:17 UTC --- Well, what happens is that ObjC (not necessarily incorrectly) assumes that an OBJ_TYPE_REF acts as a function type conversion. Folding OTOH simply replaces the called function with an indirect call (most probably due to my fix for the segfault - we might want to keep the obj-type-ref untouched instead) without re-instantiating the original type of the called function. It is still on my (long) TODO list to make the function type of the called function in a call explicit (and thus not rely on typing of pointers or decls that eventually get propagated from some weird place). Until then function type conversions are not useless and thus need to be preserved when doing obj-type-ref folding.