[PATCH] D130510: Missing tautological compare warnings due to unary operators
Aaron Ballman via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Aug 18 07:59:05 PDT 2022
aaron.ballman added a comment.
In D130510#3729864 <https://reviews.llvm.org/D130510#3729864>, @rtrieu wrote:
> In D130510#3728719 <https://reviews.llvm.org/D130510#3728719>, @aaron.ballman wrote:
>
>> In D130510#3727096 <https://reviews.llvm.org/D130510#3727096>, @rtrieu wrote:
>>
>>> This patch has been moving back and forth between `IsIntegerLiteralConstantExpr` and `getIntegerLiteralSubexpressionValue`. The first function is preexisting and the second one is a new function. The final patch seems to settle on using just `getIntegerLiteralSubexpressionValue`. Can you explain why the existing function does not meet your needs? It wasn't clear from the update messages why you went that way.
>>
>> The existing function returns whether the expression is an ICE (sort of), the replacement function calculates the actual value and returns an optional APInt so you can perform operations on it directly. That said, a future refactoring could probably remove `IsIntegerLiteralConstantExpr()` and replace it with `getIntegerLiteralSubexpressionValue()`, but the only caller of `IsIntegerLiteralConstantExpr()` doesn't actually need the value at that point.
>
> In that case, I suggest adding a comment to pointing to the other function. I expected that some day, someone will notice that the calculation for literals is slightly different between the two warnings and we should be helpful to them. I have no other concerns.
That's a good suggestion, I've added two suggested edits for the comment. Thanks for the extra set of eyes on this review @rtrieu!
================
Comment at: clang/lib/Analysis/CFG.cpp:74-75
/// Returns true on constant values based around a single IntegerLiteral.
/// Allow for use of parentheses, integer casts, and negative signs.
static bool IsIntegerLiteralConstantExpr(const Expr *E) {
// Allow parentheses
----------------
================
Comment at: clang/lib/Analysis/CFG.cpp:1015-1016
+ // which are an IntegerLiteral or a UnaryOperator and returns the value with
+ // all operations performed on it.
+ Optional<llvm::APInt> getIntegerLiteralSubexpressionValue(const Expr *E) {
+
----------------
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D130510/new/
https://reviews.llvm.org/D130510
More information about the cfe-commits
mailing list