diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 797fb126bc2d17a85d3c804aaa3c130941398dbc..47eb2c7979e1a33c8254d40f3639c63de2a8fc84 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2013-01-30  Richard Biener  <rguenther@suse.de>
+
+	PR lto/56147
+	* lto-symtab.c (lto_symtab_merge_decls_1): Guard DECL_BUILT_IN
+	check.
+
 2013-01-30  Georg-Johann Lay  <avr@gjlay.de>
 
 	PR tree-optimization/56064
diff --git a/gcc/lto-symtab.c b/gcc/lto-symtab.c
index 84168c3c3310e0f4e78c669dc2ce521ac36f61e5..546601d5ebad47244ff7391c4cd1570b346b6beb 100644
--- a/gcc/lto-symtab.c
+++ b/gcc/lto-symtab.c
@@ -443,7 +443,8 @@ lto_symtab_merge_decls_1 (symtab_node first)
       else if (TREE_CODE (prevailing->symbol.decl) == FUNCTION_DECL)
 	{
 	  for (e = first; e; e = e->symbol.next_sharing_asm_name)
-	    if (DECL_BUILT_IN (e->symbol.decl))
+	    if (TREE_CODE (e->symbol.decl) == FUNCTION_DECL
+		&& DECL_BUILT_IN (e->symbol.decl))
 	      {
 		prevailing = e;
 		break;