https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123358

--- Comment #5 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
It's marked addressable in the front-end (finish_asm_stmt):

              /* If the operand is going to end up in memory,
                 mark it addressable.  */
              if (!allows_reg && allows_mem)
                {
                  /* Strip the nops as we allow this case.  FIXME, this really
                     should be rejected or made deprecated.  */
                  STRIP_NOPS (operand);

                  tree *op = &operand;
                  while (TREE_CODE (*op) == COMPOUND_EXPR)
                    op = &TREE_OPERAND (*op, 1);
                  switch (TREE_CODE (*op))
                    {
                    case PREINCREMENT_EXPR:
                    case PREDECREMENT_EXPR:
                    case MODIFY_EXPR:
                      *op = genericize_compound_lvalue (*op);
                      op = &TREE_OPERAND (*op, 1);
                      break;
                    default:
                      break;
                    }

                  if (!cxx_mark_addressable (*op))
                    operand = error_mark_node;
                }

Reply via email to