<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/72843>72843</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Use __asm__ attribute to specify symbol name lead the function prototype  change? Is legal?
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          hstk30-hw
      </td>
    </tr>
</table>

<pre>
    https://godbolt.org/z/hr4z7Wbv3

Has follow code, fail with compile command `-O1 ` in arm32le.

```
typedef __attribute__((aligned (8))) int alignedint;

alignedint a = 11;

extern void abort (void);
extern int memcmp (const void *s1, const void *s2, unsigned int n);

__attribute__((naked))  void dumpregs () __asm__("myfunc");

__attribute__((naked))  void dumpregs ()
{
 asm(
      "mov      ip, sp\n\t"
      "stmfd    sp!, {r0-r3}\n\t"
      "mov      r0, sp\n\t"
      "stmfd    sp!, {ip, r14}\n\t"
      "bl       testfunc\n\t"
      "ldmfd sp!, {r0, r14}\n\t"
      "mov      sp, r0\n\t"
      "bx lr");
}

void testfunc(char* stack)
{
  alignedint __x = a;
  if (memcmp(&__x, stack+0, sizeof(alignedint)) != 0)
 abort();

  return;
}

void myfunc(alignedint) ;

int main()
{
  myfunc(a);
  return 0;
}
```

I see the arguments are removed in the pass `InstCombine` , 

https://github.com/llvm/llvm-project/blob/27c98958c067c341dd3f65b7218c376d333fbed5/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp#L3778C1-L3781C68

I gusee there are caused by two reasons:

1. `__asm` lead to `myfunc` function prototype  changed from `void myfunc(alignedint) ;` to `void myfunc();` , so `IC` opt it. 
2. I'm not sure there is a regular way to generate this IR?  https://godbolt.org/z/1efKn1bje 

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVl2P6yYT_jXkZrQRBsd2LnKxmyh6o_dIlapWvYywPY45B4MFeLM5v74CO1kn2rNbVY0iY2B4ZuaZDyyckyeNuCGrF7LaLcTgW2M3rfM_OH1qz4vS1JdN633vCH8mbE_Y_mTq0ii_NPZE2P4nYfvWpj_zv8pXTuiO0Ofx-T_hoDFKmTNUpkbCttAIqeAsfQuV6XqpMIyd0DWQjD79loQBpAZhO84ULudwJKPTP079pccaGzgehfdWloPH45GwgrBCqOBSDYQVBWHr8Q9Se5h2pPaEv8zB3zdAAOE7SJIHCXzzaDW8GlmDKI31AT7MAvxVdBIKMB12VdcHocpo58eDhD27JBDxsMbC2qDdaHc4ruew4_MDT7X4gfXk34hWD11v8eQgCqwDPa6bxFl3aQZdEcb-G_DpfD4BgXBd2Bgn8Rd0mtfxXfbBSdeT1VaT1dYHM-5Fne-aOry7nrBIE8lfLH2ynOS7Xx-7abD0X2kYDbNJ-qmWUo2v4NH5SOMvRVUdtNw78U9U3Bxxo0X0E2veQNnHQOa7eURjxG7GsqJqhSXsGZwX1Y8PojcrDjge32IViBs4gGxC2Me0jvHPjse3SPgI-DKyL3-iad6LMJTamEKBDb4DelM9ltGUSvfZCGDRD1Z_6ts1m-9VwQNUrEUh9ccpOwOZW3HVD_QDC-770Pg8gEME3yIIexo61N6BsAgWO_MaSzpu9sK50OMO2vmt6UqpMXS8mCUztId2K307lMvKdITtlXq9Dk-9Nd-x8oTtS2VKwvYsr9bFelVUNMsrniZ1zZtsVeYsKSqeZzXnvCmxXs1wZDj3hxXaNcZ2jrD93La72VYo5ZZV3xPGv_E8L7bJ0zeeF8k2K-65OA0TGxYjC5UYHNZQXsCfDVgUzujo3-xUsgzExHYVKFEoavAmrE0hyiiE0UujobfGm3ADAFSt0CesobGmC9JfpUZGJ9h7wSn6UzBclDhsw9z0HqRfTgFiSzgQlnegjQc32Kub0oEAi6dBCQtncQlKTqjRCh9EpIPD74TvAb66ShNs_q-T8jtOChf1htdrvhYL3CQ5pWnOk3S9aDcUi4ol2QpXVIhVJpIiz0WJaZkmRdMgX8gNo4wnCaN0zdd0vczWSSNYUdYFpgVPE5JS7IRUy5AMwYSFdG7ATc6KlC-UKFG5-F3AmMYzxM3Qc1a7hd3EDCyHkyMpVdJ5947ipVe4-dPh9faB290SaHE9VrK5gLt0pVGgRYdTuFv8JMSBvYMDhSehCN8vBqsev0u-LpToQ8jy6OPfAQAA___GuZir">