[PATCH] D135858: [clang][Interp] Support pointer arithmethic in binary operators

Timm Bäder via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 14 01:01:46 PDT 2022


tbaeder added inline comments.


================
Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:241
+  // Pointer arithmethic special case. This is supported for one of
+  // LHS and RHS being a pointer type and the other being an integer type.
+  if (BO->getType()->isPointerType()) {
----------------
shafik wrote:
> I am not sure if this is the right place to handle this but there are a bunch of other cases.
> 
> - `nullptr` can have `0` added or subtracted
> - You can only do addition/subtraction from a pointer if the result in within bounds or one after the end
> - You can subtract two pointers if they point to the same object.
> 
> godbolt: https://godbolt.org/z/5YTY93z8M
I will probably move this special case out of the function and into its own.
Thanks for the tests, I think this should all already work except for adding two pointers. I'll update the diff once I checked that out.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D135858



More information about the cfe-commits mailing list