ASDenysPetrov added inline comments.
================ Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:2801-2802 + // Get a root symbol in case of SymbolCast. + while (isa<SymbolCast>(Sym)) + Sym = cast<SymbolCast>(Sym)->getOperand(); + ---------------- vsavchenko wrote: > ASDenysPetrov wrote: > > vsavchenko wrote: > > > This looks like a pattern and we should probably make into a method of > > > `SymbolCast` > > I did it :) but refused. It will just turn into: > > ``` > > if (isa<SymbolCast>(Sym)) > > Sym = cast<SymbolCast>(Sym)->getRootOperand(); > > ``` > > It looks pretty the same and brings no benefit IMO, does it? > > Every time I used `getRootOperand` I also needed some additional traverse > > through the types te get some another information, so I couldn't avoid the > > `while` loop there. So I decided not to introduce a new method in > > `SymbolCast`. > Aha, I see your point. I guess we can take it into `SymExpr` and call it not > `getRootOperand`, which won't tell much to a person reading the name, but > something like `ignoreCasts`. It will fit well with `Expr::IgnoreCasts`, > `Expr::IgnoreParens`, etc. Nice idea! True, `getRootOperand` would only tell enough to user in scope of `SymbolCast`. I'll try to implement this in the next update. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103096/new/ https://reviews.llvm.org/D103096 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits