shafik added inline comments.
================ Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:259 + + if (Op != BO_Add && Op != BO_Sub) + return false; ---------------- or neither left or right operand is a pointer type ================ Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:271 + + if (LHS->getType()->isPointerType() && RHS->getType()->isPointerType()) { + assert(E->getType()->isIntegerType()); ---------------- If it is two pointers then it must be a subtraction. ================ Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:280 + PrimType OffsetType; + if (LHS->getType()->isIntegerType() && RHS->getType()->isPointerType()) { + if (!visit(RHS) || !visit(LHS)) ---------------- ================ Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:284 + OffsetType = *LT; + } else { + if (!visit(LHS) || !visit(RHS)) ---------------- ================ Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:288 + OffsetType = *RT; + } + ---------------- ================ 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()) { ---------------- tbaeder wrote: > 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. You will also want to cover this case as well: https://eel.is/c++draft/expr.add#6 CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135858/new/ https://reviews.llvm.org/D135858 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits