vabridgers added a comment. I think I got it, looks like we're losing the width information at line 685, 686 below.
Looks like I need to adjust the bitwidth of V before returning. clang/lib/StaticAnalyzer/Core/SValBuilder.cpp 671 SVal SValBuilder::evalCastSubKind(loc::ConcreteInt V, QualType CastTy, 672 QualType OriginalTy) { 673 // Pointer to bool. 674 if (CastTy->isBooleanType()) 675 return makeTruthVal(V.getValue().getBoolValue(), CastTy); 676 677 // Pointer to integer. 678 if (CastTy->isIntegralOrEnumerationType()) { 679 llvm::APSInt Value = V.getValue(); 680 BasicVals.getAPSIntType(CastTy).apply(Value); 681 return makeIntVal(Value); 682 } 683 684 // Pointer to any pointer. 685 if (Loc::isLocType(CastTy)) 686 return V; 687 688 // Pointer to whatever else. 689 return UnknownVal(); 690 } Breakpoint 8, clang::ento::SValBuilder::evalCastSubKind (this=0xff34500, V=..., CastTy=..., OriginalTy=...) at <root>/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp:674 674 if (CastTy->isBooleanType()) (gdb) next 678 if (CastTy->isIntegralOrEnumerationType()) { (gdb) 685 if (Loc::isLocType(CastTy)) (gdb) p V $25 = {<clang::ento::Loc> = {<clang::ento::DefinedSVal> = {<clang::ento::DefinedOrUnknownSVal> = {<clang::ento::SVal> = {Data = 0xff37cf0, Kind = 2}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>} (gdb) p V.dump() 0 (Loc)$26 = void (gdb) p CastTy.dump() PointerType 0xfede460 '__attribute__((address_space(3))) int *' `-QualType 0xfede418 '__attribute__((address_space(3))) int' __attribute__((address_space(3))) `-BuiltinType 0xfedd640 'int' $27 = void Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D122513/new/ https://reviews.llvm.org/D122513 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits