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

    <tr>
        <th>Summary</th>
        <td>
            [Clang] Confuse an memory operand as immediate value.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

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

<pre>
    I discovered that the latest Clang transforms memory operands to immediate value.

This error has been identified in 23(24) opcodes when I tested x64(x86) assembly.


Buggy Code (x64)
```
.intel_syntax noprefix
Bug:
    ja QWORD PTR [1]         
    jae QWORD PTR [1] 
    jb QWORD PTR [1]                                                                  
 je QWORD PTR [1]                                 
    jecxz QWORD PTR [1] 
    jg QWORD PTR [1] 
    jl QWORD PTR [1]                                 
    jo QWORD PTR [1]                                 
    jp QWORD PTR [1] 
    js QWORD PTR [1] 
    jae QWORD PTR [1]                                   
    jbe QWORD PTR [1]                                  
    jge QWORD PTR [1] 
    jle QWORD PTR [1] 
    jne QWORD PTR [1]                                   
 jno QWORD PTR [1]                                   
    jnp QWORD PTR [1] 
    jnp QWORD PTR [1] 
    jns QWORD PTR [1]   
    loop QWORD PTR [1] 
    loope QWORD PTR [1] 
    loopne QWORD PTR [1]    
    xbegin QWORD PTR [1] 
```
Compiled code (x64)
```
Bug:
 ja     6 <Bug+0x6>
 jae    c <Bug+0xc>
 jb 12 <Bug+0x12>
 je     18 <Bug+0x18>
 jecxz  1b <Bug+0x1b>
 jg     21 <Bug+0x21>
 jl     27 <Bug+0x27>
 jo     2d <Bug+0x2d>
 jp     33 <Bug+0x33>
 js     39 <Bug+0x39>
 jae    3f <Bug+0x3f>
 jbe    45 <Bug+0x45>
 jge    4b <Bug+0x4b>
 jle    51 <Bug+0x51>
 jne    57 <Bug+0x57>
 jno    5d <Bug+0x5d>
 jnp    63 <Bug+0x63>
 jnp    69 <Bug+0x69>
 jns    6f <Bug+0x6f>
 loop   71 <Bug+0x71>
 loope  73 <Bug+0x73>
 loopne 75 <Bug+0x75>
 xbegin 7b <Bug+0x7b>
```

Buggy Code (x86)
```
.intel_syntax noprefix
Bug:
    ja QWORD PTR [1] 
    jb QWORD PTR [1]                                   
    jcxz QWORD PTR [1]                       
    je QWORD PTR [1] 
    jecxz QWORD PTR [1]                              
    jg QWORD PTR [1]                                    
    jl QWORD PTR [1] 
    jo QWORD PTR [1] 
    jp QWORD PTR [1]                                 
    js QWORD PTR [1]                                 
    jae QWORD PTR [1] 
    jbe QWORD PTR [1] 
    jge QWORD PTR [1]                                   
 jle QWORD PTR [1]                                
    jne QWORD PTR [1] 
    jno QWORD PTR [1] 
    jnp QWORD PTR [1]                                   
 jnp QWORD PTR [1]                                   
    jns QWORD PTR [1]   
    loop QWORD PTR [1]                                
    loope QWORD PTR [1]                                 
    loopne QWORD PTR [1] 
    xbegin QWORD PTR [1]     
```

Compiled Code (x86)
```
Bug:
 ja     3 <Bug+0x3>
 jb     9 <Bug+0x9>
 jcxz f <Bug+0xf>
 je     12 <Bug+0x12>
 jecxz  17 <Bug+0x17>
 jg     1a <Bug+0x1a>
 jl     20 <Bug+0x20>
 jo     26 <Bug+0x26>
 jp     2c <Bug+0x2c>
 js     32 <Bug+0x32>
 jae    38 <Bug+0x38>
 jbe    3e <Bug+0x3e>
 jge    44 <Bug+0x44>
 jle    4a <Bug+0x4a>
 jne    50 <Bug+0x50>
 jno    56 <Bug+0x56>
 jnp    5c <Bug+0x5c>
 jnp    62 <Bug+0x62>
 jns    68 <Bug+0x68>
 loop   6d <Bug+0x6d>
 loope  6f <Bug+0x6f>
 loopne 71 <Bug+0x71>
 xbegin 74 <Bug+0x74>
```

You can reproduce the bugs through godbolt site.
- x64: https://godbolt.org/z/jesbMqEsv
- x86: https://godbolt.org/z/8dTb3rvj4

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0WFFvozgQ_jXOy2gjsDGEBx627Ubah9PdrVY63dPJwAQcETuHTTbdX3-CZFu7kJA2OlRRVfPNePxRz_fJwhhZKcSM8AfCnxais7Vusx_S5q1U1SLX5XP2FUppCn3AFkuwtbBga4RGWDQWHhuhKrCtUGaj252BHe50-wx6j61QpQGrQe52WEphEQ6i6XBJgicSfD69v9fSALatbqEWBnJEBbJEZeVGYglSAWWErmhEaAp6X-gSDfyoUcFX6BvAEo5xROjquIp7iDAGd3nz7C1yej90VfUMj7pE6PF9VnqOx8H5Z_hzKZXF5h_zrKw4gtL7Fjfy-FKEsHNBAICtgD__-v3bE_zx_RsQ_hAS_gS_HheGEzgnnl8p8-HnXH87tfaNuX1vWBx_Xu--uh5u7ltf35e-v96cuR6e_HDzj_tpP1TBZXfmf6eZiau7trBVH-Hf24Ca-QSz8alv5K7QaH29RA-4zlKPuETUK-qYYyXVxUJvBsmj3u1lgyUU80PHGyxbMVAYA2GPfYA-BMeYsC8vYezDhRsunHAOIXVjIXWCQyqEKw-wcgH9cYcw9wC5A6iGCjR0ATR0AM0JkHiAxAHoE6D0AKUD2A8AxlwAYw7AnACpB0hHFLGNB9i4JA2AiLuAiLvbPAE8HiKXh2YAcI8H7vKgTgCPB-7yoAYiuMcDd3lQAxGxx0PMxgCPh9jlQQ1MxR4PscPDcHQAEm8XSegDECDxekiYD1AIicdk4jB5PjSJx2TyyuSbkzCp1oO6_z9qfbcKOwWmlXI2bWaAXxDgW5uaUuf3bWtKwGcEekaA37H49PC_OX3Wec3EJ9X3Zvamxfn27iclyY3PcD8prbd3f1_6Pdp98wqXpP19FWZ4vqj7r5Ump9iLA7hhkE05AF8APYnvH2_su1O_HxjeyN-MHcAVi3ByAJ5uhcnIAYTCA4ixAwg8gQ_GDsBzODQeOQDqeRxajB2AtwtGxw7AMzpsNXIADD0Ajh1A5DmAaOQAIo-HSIwdgMcDD8YOwOOBxyOB5x4PvBg7AI-HmI4dgMdDvBo5gNhzIXE5cgDXPUTvAC56iF8OwGMyia47gL91B4VQ0OK-1WVX4HDvkHeVAVu3uqtqqHSZ68aCkfbXtcKn4T6AfYba2r3pDxRdE7o-I5e6rQhd_yR0vUWT__bvF3N4yVvFt-Styu85aw_b6JS3KDNWpiwVC8zCJFyFaUw5X9RZkMQM-SbPi6BktMAwCDEt8oCVIsnzMFjIjAY0CuKQhjSKQr5kdIV5msYiYDxKUkqiAHdCNsumOez6DhbSmA6zlFOWLhqRY2OGmxtKi0aoilBK-NOizXr8p54oEgWNNNa8VrDSNsN1z3Bx00-wR602nUEQ6s3dDQgzurpZdG2TvWFI2rrLl4XeEbru1zn_-rRv9RYLS-h6aNsQuj51fsjofwEAAP__P4iCoQ">