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

    <tr>
        <th>Summary</th>
        <td>
            Compile error for void* return type with 32-bit pointer address space
        </td>
    </tr>

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

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

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

<pre>
    Clang emits a compile error void * return type and void * parameter, when 32-bit pointer attribute is specified. 

Steps to reproduce:
1. test.cpp

```
extern "C" void *malloc(size_t);

void * __ptr32 operator new[](size_t t, int foo) {
    return malloc(t);
}

void operator delete[](void * __ptr32, int) {}

class node {
    public:
        node() {};
};


int main()
{
    node* __ptr32 n3;
    n3 = new(3) node[3];
}

```

2. running command
clang test.cpp -S -target x86_64-windows-msvc -fms-extensions

Output:
```
test.cpp:7:16: error: 'operator new[]' must return type 'void *'
void * __ptr32 operator new[](size_t t, int foo) {
               ^
test.cpp:11:6: error: first parameter of 'operator delete[]' must have type 'void *'
void operator delete[](void * __ptr32, int) {}
```
clang version - 14.0.0
Test case is compiled successfully with x86-64 msvc v.19.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJytVMGSmzAM_Rq4aGDAJpAcOOwm3WsP2_uOAZG4Y2zGNsluv76CEDak7fTQMmCMhfSe5GdVpvko90roI2AnvQMBtel6qRDQWmPhbGQDAXsCi36wGvxHjyB082nohRUderQB28PlhBo4iyrpoTdS0zII762sBo8gHbgea9lKbGIIkkOQPF3HV4-9A28IpremGWoM-GxKY_DofFz3_b1HkCfzPX3iO0FpIsT29CzsOqGUqQO2dfIHvvmA7QL-fB9mSePtrfeWMzA9WuEpc42XYPMcbA6LN_gxRUoKWmMoFATFHAvomgu0IK7BisMvqAtSg4rqt4A9UppBb4DrSLUSzoE2Da7Z9EOlZL0UEeZr_JEg7mLdM1yX5jqO6XZC6qvX7d87pGvIzwJqvsSZzBwCfpiqybZ8BJ4cNs98zPYP9XnY3OvIYrCD1pK0ShrtSIRLCWjpphGIXiHywh7Rw_s2f8uz6CJ1Yy4u6ty5hqjtXDSqRTtptLsH-Dr4fvBLzR5ILCLkTwU9aU7D9ZCMk4AVv1NOAd3g_Orw0OJth2n6v1V4dwWbL78wT1Ma1sxbaYnhcorBtKtk1uKc8zmJM_4lm39V97r41z0-ox03DSJIsziJZ9s3Sg9q4ab-MnevBtxQ1-hcOyj1ARfpT6MaojyDSQXnON3FYVPyZsd3IvTSKyz3q87Xzt3vsflNsR5bXNNYAqPuJmoMB6vKk_e9G6XEXug-ks9QxUSOPpQ6314RNbvvWFP2L9K5AR1NNnnCivBUCpa1Na8zXqQNS_K0aotiV2Q17jZJnm2bUIkKlSvHyjJGOoEpBM2p0KEsWcJGtyzZ8pSncZNs2irlhaiE2FVJGmQJ0rlW8cgjNvYY2nKiVA1HR0YlnXefRuoy8qgRy-tGhmLwJ2NLUo3tpMZwwi4n7j8Bqc3e4A">