------- Comment #2 from rguenth at gcc dot gnu dot org 2009-07-14 21:58 ------- Huh, we end up with a FUNCTION_DECL here, from
(gdb) call debug_rtx (mem) (mem/c/i:SI (const:SI (plus:SI (symbol_ref:SI ("ffi_closure_LINUX64") [flags 0x41] <function_decl 0xb7d4ec80 ffi_closure_LINUX64>) (const_int 12 [0xc]))) [0 ffi_closure_LINUX64+12 S4 A8]) that doesn't make much sense but is easy to fix. Index: alias.c =================================================================== --- alias.c (revision 149643) +++ alias.c (working copy) @@ -279,6 +279,11 @@ ao_ref_from_mem (ao_ref *ref, const_rtx && TREE_CODE (TREE_OPERAND (base, 0)) != SSA_NAME) return false; + /* The tree oracle doesn't like to have these. */ + if (TREE_CODE (base) == FUNCTION_DECL + || TREE_CODE (base) == LABEL_DECL) + return false; + /* If this is a reference based on a partitioned decl replace the base with an INDIRECT_REF of the pointer representative we created during stack slot partitioning. */ -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40753