[PATCH] D110670: [Sema] Allow comparisons between different ms ptr size address space types.

Aaron Ballman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Sep 30 04:58:06 PDT 2021


aaron.ballman added inline comments.


================
Comment at: clang/lib/Sema/SemaExprCXX.cpp:6682
+              isPtrSizeAddressSpace(Q2.getAddressSpace()))
+            MaybeQ1 = true;
+          else
----------------
akhuang wrote:
> aaron.ballman wrote:
> > I'm pretty sure this is correct based on my inspection of what code MSVC is generating. But it would be helpful to have some codegen tests in Clang for this functionality as well.
> ha, I apparently didn't check that the behavior actually matches.. apparently in MSVC a ptr32 isn't equivalent to a ptr64
Oh! I had tested this:
```
int test1(int * __ptr32 __uptr p32u, int * __ptr32 __sptr p32s,
                         int * __ptr64 p64) {
  return (p32u == p64);
}

int test2(int * __ptr32 __uptr p32u, int * __ptr32 __sptr p32s,
                         int * __ptr64 p64) {
  return (p64 == p32u);
}
```
to see whether the order of the operands mattered as to which conversion "won" and I thought I saw that your patch generates the same code that MSVC does. However, I could have messed my testing up somehow, so double-checking is a good idea.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D110670/new/

https://reviews.llvm.org/D110670



More information about the cfe-commits mailing list