[PATCH] D128068: [analyzer] Do not emit redundant SymbolCasts
Balázs Benics via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sat Jun 18 11:15:52 PDT 2022
steakhal accepted this revision.
steakhal added a comment.
This revision is now accepted and ready to land.
> We can't just do that check in `evalCast` because there are many additonal logic before we'd end up in `makeNonLoc`.
I'm not exactly up to date. Could you please extend the summary with an example to underpin this statement prior to committing?
================
Comment at: clang/lib/StaticAnalyzer/Core/SValBuilder.cpp:116-117
assert(!Loc::isLocType(toTy));
+ if (fromTy == toTy)
+ return operand;
return nonloc::SymbolVal(SymMgr.getCastSymbol(operand, fromTy, toTy));
----------------
Should we account for qualified types?
If not, could we assert that?
================
Comment at: clang/test/Analysis/symbolcast-floatingpoint.cpp:12-24
+void test_no_redundant_floating_point_cast(int n) {
+
+ double D = n / 30;
+ clang_analyzer_dump(D); // expected-warning{{(double) ((reg_$0<int n>) / 30)}}
+
+ // There are two cast operations evaluated above:
+ // 1. (n / 30) is cast to a double during the store of `D`.
----------------
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D128068/new/
https://reviews.llvm.org/D128068
More information about the cfe-commits
mailing list