<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJztV0tv2zgQ_jXyhbCgh2XLBx_k2G0DOMmiTRZFLwJFUTYTWvSSVNzk13eGsvxI4m6LYNHLGrIkkjPDeX4cFap8mmSGaL5R2vKSiJqsrN0YL8686ANcRbM0fqU5L0zpK71sp56FlBRezUptcxj7bCm8-IMovXgWDcPRIPKimI296IJshV0RJmm9JOGAbFabvtowylacVFRIQ6wiTK03QsKE0iSO-oWw5Hs63DNbpFVSqq0AIZrCWANPXTUGJ7jWSqO-wcwLuvsw2F1ueFmTCjcQNZNNCWZWWq0J6L_VD6XQBt4ao-GOXsDRdrvF0WqTBp26OKv0QzvdT_3ADxMY8O8W7geae4HjZ16XObz6DBQLx3vtzirSbi8VoxKeu-V2L7ivqajbgb8CWXH4XoHfQL-dmq3EZHTw4G8w52rDISBKGycmcZrF8N9HBTR7pFKUxFHWpQuyqKWoOaFmjXE0VoN9FrQeCfi3WpAXPy-KaFlKeA5CyAwvSr0oCbxo7CUXNfzB69EZzmT-fsPGg__QMNMUf8yw_yP2JyI2aJUyZMlr1JqX_pvA1d4_qS1_5BoBEbGQqRILnvzTcGOFqkGR9BS0lwCbTeEDru49haBlNEP4lqpwmGIsyjzrwyheJAGaRUrFDamVJY3hnWuOvGUItYRKeQ6DWTs2llrBiNuHyi19MvnO-Y8KglKBPrlU9RJmmeZrXtu8amqGFoKBzxA62DtTmxA93e4wmnZ5EouKfJtfz_K7L_M8-3KVZ58vbz9dzW8vL4ALzpIhKXkFm4GpaZ6LOB3mOdq2W_QiEJsOCJxfcJE8_3h9d5Hn3XL6YuHq8vrmsxPQWTzOc8gh4FgqqzAlunm8frkS9vT3CvMskaEjebF88PNuiCmpkQolD8FFfS-eg8MafqzhgZYxR4yuidZ8rfTT6y2IgpSr4NBFEfF0v6q5bXS9n9lTAYcLQHZ7-_lyenc7zy9uFrN8kU3niz3zt7-zRT67uZsu5qCriyUqkZYKCgqVdSIWN9cf86vsK6xMSegHJxq8VSC3K2G6LgIyCXPquO2IcRcseGgsDOdr13Ss6COHvmepuTHA5OgHvCzG4zRmRcrSIoX0T2POAUrCwTCtkjLg1bDiEUOVN9h7eIOgFuyh5IY2shYcKhr3cdMPkOxrsVxhbRhFthRwBfZ9qNWW0EI1MAK1wTb_2JQrUYs1pLqF2iaMGu6q_tAjOT2xqJxp_XUckX71F2R5vy0taFf6a1FD4zEMUE0EDFxWGwcV4Ce0t7YC8bTNh_N9k33acCgb0tQOZrpyIwTrlEjIsH1cCGljSMrTWVfbWLfF_SGGo1kLA22KHpLreE8Al4bZ400PLOSUkbxWEKeMWEK9ExQImFKpI3ryhvgTJrai2nGeML1FkFeSLs0rslf6nHBD36wtgd5R0xec6JvmaA7Hj4exWw5PPXns8Pb-bkAl5E04-_1j_SyUucUOyHaDX4CxI8qfgFhH9RaEEXIewQ6pfBq7zld5_owHAemwa3wSPKd25s6XZ1yDynbK-6Vjb_n2SBd8H1Xtbw9z_yKsCf19LjtxyYs82a4QIYDnFDFHszeLu1dO4nIcj2mPNhbycTITa2H1U1aXWrBeo-XkJ12FlI_do7_R6p4z_O4RxkBTAi8JHLBpbzVJeJUMaZAO4vEwiII4pEk4GMPqYMDZMI16khZcmomXTCF6BWUP2I3E2Vf8_uui6_aKM-x7oF86zO_Q2-Vz5CWz3vs1FpMoiOAKkwj0DBKfR0UaDEo4EUoKLxVAO4fPMemjHPwg7umJE4kfyrAohbHmsEiNq3juDAQNrbDSDfADN5mRrIIm7PjcQdN-u0_tOSsmzoQfeXCKtg>53868</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [x86] After 4edb9983cb8, invalid operand for inline asm constraint 'i'
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:X86,
            llvm:codegen,
            regression
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          DimitryAndric
      </td>
    </tr>
</table>

<pre>
    As reported in https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=261742#c9, with clang 14 php-opcache fails to compile for 32-bit x86, with the following rather confusing error:

```
In file included from /wrkdirs/usr/ports/www/php80-opcache/work/php-8.0.15/ext/opcache/jit/zend_jit.c:19:
In file included from /usr/local/include/php/main/php.h:31:
In file included from /usr/local/include/php/Zend/zend.h:357:
/usr/local/include/php/Zend/zend_operators.h:531:3: error: invalid operand for inline asm constraint 'i'
                "addl $1,(%0)\n\t"
                ^
/usr/local/include/php/Zend/zend_operators.h:594:3: error: invalid operand for inline asm constraint 'i'
                "subl $1,(%0)\n\t"
                ^
/usr/local/include/php/Zend/zend_operators.h:531:3: error: invalid operand for inline asm constraint 'i'
                "addl $1,(%0)\n\t"
                ^
/usr/local/include/php/Zend/zend_operators.h:594:3: error: invalid operand for inline asm constraint 'i'
                "subl $1,(%0)\n\t"
                ^
4 errors generated.
```

However, the code in question (https://github.com/php/php-src/blob/master/Zend/zend_operators.h#L500) does not use 'i' constraints at all:

```c
static zend_always_inline void fast_long_increment_function(zval *op1)
{
#if ZEND_USE_ASM_ARITHMETIC && defined(__i386__) && !(4 == __GNUC__ && 8 == __GNUC_MINOR__)
        __asm__ goto(
                "addl $1,(%0)\n\t"
                "jo  %l1\n"
                :
                : "r"(&op1->value)
                : "cc", "memory"
                : overflow);
        return;
overflow: ZEND_ATTRIBUTE_COLD_LABEL
        ZVAL_DOUBLE(op1, (double)ZEND_LONG_MAX + 1.0);
```

This compiled fine with clang 13, and it seems to have regressed with 4edb9983cb8c8b850083ee5941468f5d0ef6fe2c (ping @nickdesaulniers and @nikic might also want to know about this).

Minimal test case, to compile with `clang -m32 -fPIC -c zend-op-min.c` (the PIC option is essential): 

```
typedef union {
  long lval;
  double dval;
  void *obj;
} zend_value;

typedef struct {
  zend_value value;
  union {
    unsigned type_info;
    struct {
      unsigned char type;
      unsigned char type_flags;
      union {
        unsigned short extra;
      } u;
  } v;
 } u1;
} zval;

void fast_long_increment_function(zval *op1)
{
  __asm__ goto(
    "addl $1,(%0)\n\t"
    "jo  %l1\n"
    :
    : "r"(&op1->value)
    : "cc", "memory"
    : overflow);
  return;
overflow:
  do {
    zval *__z = (op1);
    (*(__z)).value.dval = (double)0x7fffffff + 1.0;
    (*(__z)).u1.type_info = 5;
  } while (0);
}
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztV0tv2zgQ_jXyhbCgh2XLBx_k2O0GcJJFmyyKXgSKomwmtOglqbjJr98ZyvIjsbstikUva8iSSM4M5_lxVKjyZZIZovlGactLImqysnZjvDjzog9wFc3S-JXmvDClr_SynXoVUlJ4NSu1zWHss6Xw4g-i9OJZNAxHg8iLYjb2oiuyFXZFmKT1koQDsllt-mrDKFtxUlEhDbGKMLXeCAkTSpM46hfCkm_pcM9skVZJqbYChGgKYw08ddUYnOBaK436BjMv6O7DYHe54XVNKtxA1Ew2JZhZabUmoP9WP5VCG3hrjIY7egFH2-0WR6tNGnTq4qzST-10P_UDP0xgwL9ZuB9oHgWOX3ld5vDqM1AsHO-1u6hIu71UjEp47pbbveC-pqJuB_4KZMXhrwr8Cvrt1GwlJqODB3-COVcbDgFR2jgxidMshv8-KqDZM5WiJI6yLl2QRS1FzQk1a4yjsRrss6D1SMC_1YK8-XlRRMtSwnMQQmZ4UepFSeBFYy-5quEPXo8ucCbzXzdsPPgPDTNN8dsM-z9ivyNig1YpQ5a8Rq156Z8Frvb-h9ryZ64REBELmSqx4MnfDTdWqBoUSU9Bewmw2RQ-4OreUwhaRjOEb6kKhynGosyLPoziRRKgWaRU3JBaWdIY3rnmyFuGUEuolJcwmLVjY6kVjLh9qNzSF5PvnP-sICgV6JNLVS9hlmm-5rXNq6ZmaCEY-Aqhg70ztQnR0-0Oo2mXJ7GoyNf57Sx_-DzPs883efbp-v6Pm_n99RVwwVkyJCWvYDMwNc1zEafDPEfbdoteBGLTAYHzCy6S5x9vH67yvFtO3yzcXN_efXICOovHeQ45BBxLZRWmRDeP1w9Xwp7-UWGeJTJ0JG-WD37eDTElNVKh5CG4qO_Fc3BYw481PNAy5ojRNdGar5V-eb8FUZByFRy6KCKe7lc1t42u9zN7KuBwAcju7z9dTx_u5_nV3WKWL7LpfLFn_vpXtshndw_TxRx0dbFEJdJSQUGhsk7E4u72Y36TfYGVKQn94ESDcwVyvxKm6yIgkzCnjtuOGHfBgofGwnC-dk3Hij5z6HuWmhsDTI5-wMtiPE5jVqQsLVJI_zTmHKAkHAzTKikDXg0rHjFUeYO9hzcIasGeSm5oI2vBoaJxHzf9BMm-FssV1oZRZEsBV2Dfp1ptCS1UAyNQG2zzj025EbVYQ6pbqG3CqOGu6g89ktMTi8qZ1l_HEelXf0KW99vSgnalvxY1NB7DANVEwMBltXFQAX5Ce2srEE_bfLjcN9mXDYeyIU3tYKYrN0KwTomEDNvHhZA2hqQ8nXW1jXVbPB5iOJq1MNCm6CG5jvcEcGmYPd70wEJOGcl7BXHKiCXUO0GBgCmVOqInZ8SfMLEV1Y7zhOkcQV5JujTvyN7pc8INfbO2BHpHTd9wom-aozkcPx_Gbjk89eSxw9v7LwMqIWfh7OeP9YtQ5hY7INsNfgDGjii_A2Id1TkII-Qygh1S-TR2na_y_BUPAtJh1_gkeE7tzJ0vr7gGle2U90vH3vLtkS74Nqra3x7m_kVYE_r7XHbikjd5sl0hQgDPKWKOZmeLu1dO4nIcj2nPCiv5xEum-NWVzEhWQWdwDIbo5Z9unnqNlpPv9CVSPneP_karR87wy0kYA20NvCRwRKe91YSP4tEojsasKspRRUeU8TiOyyoKRlU0jMKepAWXBtWH-BeUPWE_E2df8Auyyw-3V5xh5wQd12F-h_-uIiIwvScmURDBFSZROBgHic-jIg0GJTihpPBSAbRz-ByTPorED-KenjgT8EMZFqUw1hwWqXEV77yL8mljofQnM7EWVr9kdakF6zmbJ87gfwBU4naK">