------- 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

Reply via email to