http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47056
Eric Botcazou <ebotcazou at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rguenth at gcc dot gnu.org --- Comment #5 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2011-01-02 19:14:22 UTC --- The problem is that CCP turns: pr47056___alignment.46_308 = pr47056___alignment; D.2264_309 = MEM[(struct *)pr47056___alignment.46_308].D.227; into D.2264_309 = MEM[(struct *)pr47056___alignment].D.227; (pr47056___alignment being a function) and while walk_stmt_load_store_addr_ops recognizes the former as an address-of pattern (the & is implicit for functions), it doesn't for the latter (unlike for TARGET_MEM_REF) so build_cgraph_edges is fooled and missed the reference to pr47056___alignment. Richard, I presume that the latter form must be deemed invalid GIMPLE?