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

    <tr>
        <th>Summary</th>
        <td>
            Label differences not treated as absolute expressions in C __asm blocks even though they are in .s files
        </td>
    </tr>

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

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

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

<pre>
    ```
.text
start:
  nop
end:
.if (end - start) == 0
.err
.endif

```

compiles when saved as a .s file. But when the same is put into a .c file as:

__asm(
".text\n"
"start:\n"
" nop\n"
"end:\n"
".if (end - start) == 0\n"
".err\n"
".endif\n"
);

it fails with `error: expected absolute expression`.  Gcc succeeds with both examples. https://github.com/llvm/llvm-project/issues/53728 is probably related.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyck9tuozAQhp_G3IyKHDskcMFF2yh7s-9Q-TAEb42NPKaHt19xSHabXqy0EjLD7xkz8_GjiNwlILasemLVqVBT7mNqR3qNxr0WOtrPlh34dvET449lxo-8hpRVykw-rk8AIY5riMHe5NJ1wESNwcIDrBWiASZPTJ7geiamdI2Cdd0ab-vX16-ricPoPBK89xiA1BtaUAQKSoLOeSzhacrrZu4RSA0IjmCcMriQ45xolkRQdOt0XV9eFA1M1JsmxDpw9RyYEDfxNvqdvjC40zYad-o_uNxnz4S-aQurr2rD5NPf47gMnXKe4N3lHtiBY0oxMfkI-DGiyTM4TdFPGWclIZGLgR14CfDDGKDJGES71euYe8APNYweqYQ-53HhJ85MnC8u95MuTRyYOHv_dr09jCn-QpOZODuiCYmJcyWPol4-SYpaaf8JCb3KaMvCttI2slEFtrtDLXe7_f5YF32rKqEaNPvG1lijkiiw5lahMIej0p0tXCu4kLzic82xqstG6uNO17qqreVSKrbnOCjny7mrMqZLsfTTHkQleOGVRk_LnyBEwHdYNme01alI7TKJni7E9tw7yvTnlOyyx_bnXA_WdR0mDAYJQsyQE6q8ufM7ZwIX4BkWz4H20bwS4Nvi2jhd-tm8n6ASzmmbtamYkm__n_wy7O8AAAD__4O_Mn4">