================ @@ -4238,7 +4238,8 @@ static Value *emitPointerArithmetic(CodeGenFunction &CGF, else elemTy = CGF.ConvertTypeForMem(elementType); - if (CGF.getLangOpts().PointerOverflowDefined) + if (CGF.getLangOpts().PointerOverflowDefined || + CGF.isUnderlyingBasePointerConstantNull(pointerOperand)) ---------------- dtcxzyw wrote:
`BinaryOperator::isNullPointerArithmeticExtension` only allows the pointer operand to be a constant null. But `isUnderlyingBasePointerConstantNull` also catches `((struct S*)0)->field`. I think it is safe to remove this workaround and fall through to the `isUnderlyingBasePointerConstantNull` check. https://github.com/llvm/llvm-project/pull/137849 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits