diff --git a/gcc/cfgexpand.cc b/gcc/cfgexpand.cc
index 4f99f0404504976ad57f065719cb0ab83ddd8539..d3cc77d2ca98f620b29623fc5696410bad9bc184 100644
--- a/gcc/cfgexpand.cc
+++ b/gcc/cfgexpand.cc
@@ -3290,7 +3290,10 @@ expand_asm_stmt (gasm *stmt)
 
       generating_concat_p = 0;
 
-      if ((TREE_CODE (val) == INDIRECT_REF && allows_mem)
+      gcc_assert (TREE_CODE (val) != INDIRECT_REF);
+      if (((TREE_CODE (val) == MEM_REF
+	    && TREE_CODE (TREE_OPERAND (val, 0)) != ADDR_EXPR)
+	   && allows_mem)
 	  || (DECL_P (val)
 	      && (allows_mem || REG_P (DECL_RTL (val)))
 	      && ! (REG_P (DECL_RTL (val))