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

    <tr>
        <th>Summary</th>
        <td>
            gcc and llvm operations about operator new inconsistent
        </td>
    </tr>

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

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

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

<pre>
    clang: https://godbolt.org/z/E9Pj5W7d9
gcc: https://godbolt.org/z/v83bbPE99

```
#include <cstddef>
#include <new>
#include <iostream>
bool success=false;

struct alignas(2*__STDCPP_DEFAULT_NEW_ALIGNMENT__) A {
} a;

/*
  Called by non-array new-expressions to allocate storage required for a single
 object whose alignment requirement exceeds __STDCPP_DEFAULT_NEW_ALIGNMENT__

 https://en.cppreference.com/w/cpp/memory/new/operator_new
*/

void* operator new(std::size_t, std::align_val_t) {
    success=true;
 return (void *) &a;
}

int test_it (void) {
    A *a=new A();
 return success;
}

int main()
{
    test_it();
    if (success == false) {
        std::cout << "fail" << std::endl;
 return 1;
    }
    std::cout << "success" <<std::endl;
 return 0;
}
```

I see the asm
```
operator new(unsigned long, std::align_val_t):                   // @operator new(unsigned long, std::align_val_t)
        adrp    x8, success
        adrp    x0, a
 add     x0, x0, :lo12:a
        mov     w9, #1
        strb w9, [x8, :lo12:success]
        ret
test_it(): // @test_it()
        adrp    x8, success
        ldrb    w0, [x8, :lo12:success]
        ret
```
checked the IR and asm, i think this error is cased by  EarlyCSEPass. Becase after this pass ,there is no operator new in test_it().
Anyone have idea to fix it?

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVl9v4jgQ_zTmZVSU2PzLAw8pkNNKu1V17WkfkWNPgrfG5mwHyn76k0OgkHZ7d4uQk3hmfvPzzHhs7r2qDeKcjO_JeDngTdhYN__avODT87dBaeVxLjQ3NWE5bELYecJyQgtCi9rK0uowtK4mtPhJaLHKHn-Mv09lRpIlSfJaiP9itZ-xsnxcZZ1VN06S7n_6pEwZoRuJQNhC-CAlVoStPpIaPPxCoqwPDvn2Ii6t1eAbIdB7wpYV1x4Ju78m4oNrRACuVW24J3RGCc3X66fn5eLxcb1cFflfX5_XD6vv6_zrlz8evq0entdrQjPIgUzPSNMl8B5uG43uHWDBtUYJ5RGMNXfcOX4Eg4c7fN059F5Z4yFY4FpbwQOCD9bxGsHh341yKKGyDjh4ZWqNHagtf6AIcNhYjyf-WzThbNK-46tAlB7-dT1XxHv5RDMUu53DCh0agUNht4QWB0ILsdsRWmxxa92R0CKmhRZ2h44H69bxswtEi3TlYW-VJDSHsy60pjMfZPTKcq9-4joQuoDLVLu89Z7rOJ-9RR4ArvIbXPOWXnAYGmeA0Fl0CC2PDAidXKVqurwmpkyAgD6sVTibvfOWRyBO2NLgAXJCZ4Rm73xeKP3az5Yr01l3KldOOhJ9dABQVWTW4QNhS8KWcKrrPtM2NucACtuEuEUIWwChtOJKE0rPMxc1NFK_W016w-Cyls_wzwG4uPjcQ_JBpHoNoh2_gEeEsEHgfvuhXq-mGtO2PwnamvqTiop97P3vtAOAjJLfhb1JBpduF5-vs9akC9HHKklU4Z2QSwlvs6eRsFzblEaXtxBbu2-fh6xVoyztl4Qrz8Lx_YnLG9iZ1Xh5a-UwnCZ6pZlfBelW9H-XrqUrW97J71LrlYLYoHhB2ZbLlz-BG9lWDV2AgrBR5iWOHtA560B5ENyfWjSsuNPHxdPqkXs_hHuMEuBVQHcy2fG49-gibNBhNDX2ppmBMrdbeHhilJujNQgbvkdQEnls-ZV6BRUI6zrkQM6ZzFjGBzhPJxlNk_FoNhls5mIyykSVIBvz0SytklE64qKkrERJxTSdDdScJpQls3ScsnSWTIaTjKU04VgJTMbJdExGCW650kOt99t4Pg-U9w3OJ6NpMh1oXqL27TWB0nYNUUgojbcGN482d2VTezJKtPLBv6EEFTTOayHaEMfpLhjtqcbL2Bl60RHWeOUDmjBonJ73bhAqbJqyO2giXPe42zkbTzxCi5abJ7Rouf8TAAD__wsTjwE">