aaron.ballman added inline comments.
================ Comment at: clang/lib/Sema/SemaChecking.cpp:334-335 + const auto ResultTy = TheCall->getArg(2)->getType()->getPointeeType(); + // Input compination below will also emit integer value larger than + // 128 bits in backend, disallow same as above. + if (LeftTy->isSignedIntegerType() && ---------------- ================ Comment at: clang/lib/Sema/SemaChecking.cpp:340 + S.getASTContext().getIntWidth(RightTy) > 64 && + !ResultTy->isSignedIntegerType() && + S.getASTContext().getIntWidth(ResultTy) > 64) { ---------------- Isn't the result type a pointer type? ================ Comment at: clang/test/Sema/builtins-overflow.c:45 + unsigned _ExtInt(128) result; + _Bool status = __builtin_mul_overflow(x, y, &result); // expected-error {{__builtin_mul_overflow does not support special combination operands (signed, signed, unsigned*) of more than 64 bits}} + } ---------------- Yeah, this diagnostic really doesn't tell me what's going wrong with the code or how to fix it. Do we basically want to prevent using larger-than-64-bit argument types with mixed signs? Or are there other problematic circumstances? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D107420/new/ https://reviews.llvm.org/D107420 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits