diff --git a/gcc/recog.c b/gcc/recog.c index 3b7dab35ff2..a8d06bb5981 100644 --- a/gcc/recog.c +++ b/gcc/recog.c @@ -934,10 +934,13 @@ general_operand (op, mode) if (code == MEM) { register rtx y = XEXP (op, 0); + if (! volatile_ok && MEM_VOLATILE_P (op)) return 0; + if (GET_CODE (y) == ADDRESSOF) return 1; + /* Use the mem's mode, since it will be reloaded thus. */ mode = GET_MODE (op); GO_IF_LEGITIMATE_ADDRESS (mode, y, win);