เดเดเตเดเดณเตเดเต PVS-Studio เด
เดจเดฒเตเดธเตผ เดเดชเดฏเตเดเดฟเดเตเดเต LLVM เดชเตเดฐเตเดเดเตโเดฑเตเดฑเดฟเดจเตเดฑเต เด
เดตเดธเดพเดจ เดเตเดกเต เดชเดฐเดฟเดถเตเดงเดจ เดเดดเดฟเดเตเดเต เดฐเดฃเตเดเต เดตเตผเดทเดคเตเดคเดฟเดฒเตเดฑเตเดฏเดพเดฏเดฟ. เดชเดฟเดตเดฟเดเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เด
เดจเดฒเตเดธเตผ เดเดชเตเดชเตเดดเตเด เดชเดฟเดถเดเตเดเดณเตเด เดธเดพเดงเตเดฏเดคเดฏเตเดณเตเดณ เดเตเดเตเดชเดพเดเตเดเดณเตเด เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดชเตเดฐเดงเดพเดจ เดเดชเดเดฐเดฃเดฎเดพเดฃเตเดจเตเดจเต เดเดฑเดชเตเดชเดพเดเตเดเดพเด. เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, LLVM 8.0.0 เดชเดคเดฟเดชเตเดชเดฟเตฝ เดเดเตเดเตพ เดชเตเดคเดฟเดฏ เดชเดฟเดถเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดเดฏเตเด เดเดฃเตเดเตเดคเตเดคเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด.
เดเดดเตเดคเตเดฃเตเด เดฒเตเดเดจเด
เดธเดคเตเดฏเด เดชเดฑเดเตเดเดพเตฝ, เด เดฒเตเดเดจเด เดเดดเตเดคเดพเตป เดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเดฟเดฒเตเดฒ. เดเดเตเดเตพ เดเดคเดฟเดจเดเด เดจเดฟเดฐเดตเดงเดฟ เดคเดตเดฃ เดชเดฐเดฟเดถเตเดงเดฟเดเตเด เดเดฐเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดดเตเดคเตเดจเตเดจเดคเต เดฐเดธเดเดฐเดฎเดฒเตเดฒ (
เดเดฐเต เดคเดตเดฃเดฏเตเด LLVM-เดจเตเดฑเต เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดชเตเดฑเดคเตเดคเดฟเดฑเดเตเดเตเดเดฏเต เด
เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดเดฏเต เดเตเดฏเตเดฏเตเดจเตเดจเต
เดจเตเดเตเดเต, Clang เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เด เดจเดฒเตเดธเดฑเดฟเดจเตเดฑเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดชเตเดคเดฟเดฏ เดชเดฟเดถเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเดพเตป เดชเด เดฟเดเตเดเต! PVS-Studio เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฑเต เดชเตเดฐเดธเดเตเดคเดฟ เดเตเดฑเดฏเตเดจเตเดจเดคเดพเดฏเดฟ เดเดจเดฟเดเตเดเต เดคเตเดจเตเดจเตเดจเตเดจเต. เดเตเดฒเดพเดเต เดฎเตเดฎเตเดชเดคเตเดคเตเดคเดฟเดจเตเดเตเดเดพเตพ เดเตเดเตเดคเตฝ เดชเดฟเดถเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเตเดเดฏเตเด เดชเดฟเดตเดฟเดเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเตเดฏเตเดเต เดเดดเดฟเดตเตเดเตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดเดคเดฟเดจเต เดเตเดฑเดฟเดเตเดเต เดคเดพเดเตเดเตพ เดเดจเตเดคเต เดเดฐเตเดคเตเดจเตเดจเต?
เดเดคเดฟเดจเต เดเดพเตป เดเดชเตเดชเตเดดเตเด เดเดคเตเดชเตเดฒเต เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดเดคเตเดคเดฐเด เดจเตฝเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเต:
เดเดเตเดเดณเตเด เดตเตเดฑเตเดคเต เดเดฐเดฟเดเตเดเดพเดฑเดฟเดฒเตเดฒ! เดชเดฟเดตเดฟเดเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เด เดจเดฒเตเดธเดฑเดฟเดจเตเดฑเต เดเดดเดฟเดตเตเดเตพ เดเดเตเดเตพ เดเดฃเตเดฏเดฎเดพเดฏเดฟ เดฎเตเดเตเดเดชเตเดชเตเดเตเดคเตเดคเดฟ. เด เดคเดฟเดจเดพเตฝ เดตเดฟเดทเดฎเดฟเดเตเดเตเดฃเตเด, เดเดเตเดเตพ เดฎเตเดฎเตเดชเดคเตเดคเตเดชเตเดชเตเดฒเต เดฒเตเดกเต เดคเตเดเดฐเตเดจเตเดจเต.
เดจเดฟเตผเดญเดพเดเตเดฏเดตเดถเดพเตฝ, เดเดคเตเดฐเต เดฎเตเดถเด เดเดคเตเดคเดฐเดฎเดพเดฃเต. เด เดคเดฟเตฝ เดคเตเดณเดฟเดตเตเดเดณเตเดจเตเดจเตเดฎเดฟเดฒเตเดฒ. เด เดคเตเดเตเดฃเตเดเดพเดฃเต เดเดพเตป เดเดชเตเดชเตเตพ เด เดฒเตเดเดจเด เดเดดเตเดคเตเดจเตเดจเดคเต. เด เดคเดฟเดจเดพเตฝ, LLVM เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดเดฐเดฟเดเตเดเตฝ เดเตเดเดฟ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดเดฏเตเด เด เดคเดฟเตฝ เดชเดฒเดคเดฐเด เดชเดฟเดถเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเตเดเดฏเตเด เดเตเดฏเตเดคเต. เดเดจเดฟเดเตเดเต เดฐเดธเดเดฐเดฎเดพเดฏเดฟ เดคเตเดจเตเดจเดฟเดฏเดต เดเดพเตป เดเดชเตเดชเตเตพ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเตเด. เดเตเดฒเดพเดเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เด เดจเดฒเตเดธเดฑเดฟเดจเต เด เดชเดฟเดถเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ (เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เด เดคเดฟเดจเตเดฑเต เดธเดนเดพเดฏเดคเตเดคเตเดเต เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดตเดณเดฐเต เด เดธเตเดเดฐเตเดฏเดฎเดพเดฃเต). เดชเดเตเดทเต เดจเดฎเตเดเตเดเต เดเดดเดฟเดฏเตเด. เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เด เดชเดฟเดถเดเตเดเดณเตเดฒเตเดฒเดพเด เดเดพเตป เดเดฐเต เดตเตเดเตเดจเตเดจเตเดฐเด เดเดฃเตเดเตเดคเตเดคเดฟ เดเดดเตเดคเดฟ.
เดเดจเตเดจเดพเตฝ เดฒเตเดเดจเด เดเดดเตเดคเดพเตป เดเดคเดพเดจเตเด เดเดดเตเดเดเตพ เดเดเตเดคเตเดคเต. เดเดคเตเดฒเตเดฒเดพเด เดเตเดเตโเดธเตโเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดฎเดพเดฑเตเดฑเดพเตป เดเดจเดฟเดเตเดเต เดเดจเตเดจเตเดคเตเดคเดจเตเดจเต เดงเตเดฐเตเดฏเดชเตเดชเตเดเตเดคเตเดคเดพเตป เดเดดเดฟเดเตเดเดฟเดฒเตเดฒ :).
เดตเดดเดฟเดฏเดฟเตฝ, เดชเดฟเดถเดเตเดเดณเตเด เดธเดพเดงเตเดฏเดคเดฏเตเดณเตเดณ เดเตเดเตเดชเดพเดเตเดเดณเตเด เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดฏเดพเตป เดชเดฟเดตเดฟเดเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เด
เดจเดฒเตเดธเดฑเดฟเตฝ เดเดจเตเดคเต เดธเดพเดเตเดเตเดคเดฟเดเดตเดฟเดฆเตเดฏเดเดณเดพเดฃเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเตเดจเตเดจเต เดจเดฟเดเตเดเตพเดเตเดเต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดเตเดเตเดเดฟเตฝ, เดเดคเต เดชเดฐเดฟเดเดฏเดชเตเดชเตเดเดพเตป เดเดพเตป เดจเดฟเตผเดฆเตเดฆเตเดถเดฟเดเตเดเตเดจเตเดจเต.
เดชเตเดคเดฟเดฏเดคเตเด เดชเดดเดฏเดคเตเดฎเดพเดฏ เดกเดฏเดเตเดจเตเดธเตเดฑเตเดฑเดฟเดเตเดธเต
เดเดคเดฟเดจเดเด เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเดคเตเดชเตเดฒเต, เดเดเดฆเตเดถเด เดฐเดฃเตเดเต เดตเตผเดทเด เดฎเตเดฎเตเดชเต LLVM เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดตเตเดฃเตเดเตเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดเดฏเตเด เดเดฃเตเดเตเดคเตเดคเดฟเดฏ เดชเดฟเดถเดเตเดเตพ เดถเดฐเดฟเดฏเดพเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดคเต. เดเดชเตเดชเตเตพ เด เดฒเตเดเดจเด เดชเดฟเดถเดเตเดเดณเตเดเต เดเดฐเต เดชเตเดคเดฟเดฏ เดฌเดพเดเตเดเต เด เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเตเด. เดเดจเตเดคเตเดเตเดฃเตเดเดพเดฃเต เดชเตเดคเดฟเดฏ เดฌเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเดฟเดฏเดคเต? เดเดคเดฟเดจเต 3 เดเดพเดฐเดฃเดเตเดเดณเตเดฃเตเดเต:
- LLVM เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดตเดฟเดเดธเดฟเดเตเดเตเดเตเดฃเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดชเดดเดฏ เดเตเดกเต เดฎเดพเดฑเตเดฑเตเดเดฏเตเด เดชเตเดคเดฟเดฏ เดเตเดกเต เดเตเตผเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดธเตเดตเดพเดญเดพเดตเดฟเดเดฎเดพเดฏเตเด, เดชเดฐเดฟเดทเตเดเดฐเดฟเดเตเดเดคเตเด เดเดดเตเดคเดฟเดฏเดคเตเดฎเดพเดฏ เดเตเดกเดฟเตฝ เดชเตเดคเดฟเดฏ เดชเดฟเดถเดเตเดเตพ เดเดฃเตเดเต. เดธเตเดฅเดฟเดฐเดฎเดพเดฏ เดตเดฟเดถเดเดฒเดจเด เดชเดคเดฟเดตเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเดฃเดฎเตเดจเตเดจเต เดเดคเต เดตเตเดฏเดเตเดคเดฎเดพเดฏเดฟ เดคเตเดณเดฟเดฏเดฟเดเตเดเตเดจเตเดจเต, เดเดเดฏเตเดเตเดเดฟเดเตเดฏเดฒเตเดฒ. เดเดเตเดเดณเตเดเต เดฒเตเดเดจเดเตเดเตพ เดชเดฟเดตเดฟเดเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เด เดจเดฒเตเดธเดฑเดฟเดจเตเดฑเต เดเดดเดฟเดตเตเดเตพ เดจเดจเตเดจเดพเดฏเดฟ เดเดพเดฃเดฟเดเตเดเตเดจเตเดจเต, เดเดจเตเดจเดพเตฝ เดเตเดกเต เดเตเดฃเดจเดฟเดฒเดตเดพเดฐเด เดฎเตเดเตเดเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเด เดชเดฟเดถเดเตเดเตพ เดชเดฐเดฟเดนเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเตเดฒเดตเต เดเตเดฑเดฏเตเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฎเดพเดฏเดฟ เดเดคเดฟเดจเต เดฏเดพเดคเตเดฐเต เดฌเดจเตเดงเดตเตเดฎเดฟเดฒเตเดฒ. เดธเตเดฅเดฟเดฐเดฎเดพเดฏเดฟ เดเดฐเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เดเตเดกเต เด เดจเดฒเตเดธเตผ เดเดชเดฏเตเดเดฟเดเตเดเตเด!
- เดเดเตเดเตพ เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดกเดฏเดเตเดจเตเดธเตเดฑเตเดฑเดฟเดเตเดธเต เด เดจเตเดคเดฟเดฎเดฎเดพเดเตเดเตเดเดฏเตเด เดฎเตเดเตเดเดชเตเดชเตเดเตเดคเตเดคเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เด เดคเดฟเดจเดพเตฝ, เด เดจเดฒเตเดธเตผ เดฎเตเดฎเตเดชเดคเตเดคเต เดธเตเดเดพเดจเตเดเดณเดฟเตฝ เดถเตเดฐเดฆเตเดงเดฟเดเตเดเดพเดคเตเดค เดชเดฟเดถเดเตเดเตพ เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดฏเดพเตป เดเดดเดฟเดฏเตเด.
- 2 เดตเตผเดทเด เดฎเตเดฎเตเดชเต เดจเดฟเดฒเดตเดฟเดฒเดฟเดฒเตเดฒเดพเดคเตเดค เดชเตเดคเดฟเดฏ เดกเดฏเดเตเดจเตเดธเตเดฑเตเดฑเดฟเดเตเดธเต เดชเดฟเดตเดฟเดเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเตเดฏเดฟเตฝ เดชเตเดฐเดคเตเดฏเดเตเดทเดชเตเดชเตเดเตเดเต. เดชเดฟเดตเดฟเดเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเตเดฏเตเดเต เดตเดฟเดเดธเดจเด เดตเตเดฏเดเตเดคเดฎเดพเดฏเดฟ เดเดพเดฃเดฟเดเตเดเดพเตป เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดตเดฟเดญเดพเดเดคเตเดคเดฟเตฝ เด เดตเดฐเต เดนเตเดฒเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเตป เดเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต.
2 เดตเตผเดทเด เดฎเตเดฎเตเดชเต เดจเดฟเดฒเดจเดฟเดจเตเดจเดฟเดฐเตเดจเตเดจ เดกเดฏเดเตเดจเตเดธเตเดฑเตเดฑเดฟเดเตเดธเต เดตเดดเดฟ เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดเตเด เดตเตเดเดฒเตเดฏเดเตเดเตพ
เดถเดเดฒเด N1: เดชเดเตผเดคเตเดคเตเด-เดเดเตเดเดฟเดเตเดเตเด
static bool ShouldUpgradeX86Intrinsic(Function *F, StringRef Name) {
if (Name == "addcarryx.u32" || // Added in 8.0
....
Name == "avx512.mask.cvtps2pd.128" || // Added in 7.0
Name == "avx512.mask.cvtps2pd.256" || // Added in 7.0
Name == "avx512.cvtusi2sd" || // Added in 7.0
Name.startswith("avx512.mask.permvar.") || // Added in 7.0 // <=
Name.startswith("avx512.mask.permvar.") || // Added in 7.0 // <=
Name == "sse2.pmulu.dq" || // Added in 7.0
Name == "sse41.pmuldq" || // Added in 7.0
Name == "avx2.pmulu.dq" || // Added in 7.0
....
}
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
"avx512.mask.permvar" เดเดจเตเดจ เดเดชเดธเตโเดเตเดฐเดฟเดเดเดฟเดฒเดพเดฃเต เดชเตเดฐเต เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดคเตเดจเตเดจเต เดฐเดฃเตเดเตเดคเดตเดฃ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเต. เดฐเดฃเตเดเดพเดฎเดคเตเดคเต เดชเดฐเดฟเดถเตเดงเดจเดฏเดฟเตฝ, เด เดตเตผ เดฎเดฑเตเดฑเตเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดเดดเตเดคเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเต, เดชเดเตเดทเต เดชเดเตผเดคเตเดคเดฟเดฏ เดตเดพเดเดเด เดถเดฐเดฟเดฏเดพเดเตเดเดพเตป เด เดตเตผ เดฎเดฑเดจเตเดจเต.
เดถเดเดฒเด N2: เด เดเตเดทเดฐเดคเตเดคเตเดฑเตเดฑเต
enum CXNameRefFlags {
CXNameRange_WantQualifier = 0x1,
CXNameRange_WantTemplateArgs = 0x2,
CXNameRange_WantSinglePiece = 0x4
};
void AnnotateTokensWorker::HandlePostPonedChildCursor(
CXCursor Cursor, unsigned StartTokenIndex) {
const auto flags = CXNameRange_WantQualifier | CXNameRange_WantQualifier;
....
}
เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต PVS-Studio: V501 '|' เดจเตเดฑเต เดเดเดคเตเดคเตเดเตเดเตเด เดตเดฒเดคเตเดคเตเดเตเดเตเด 'CXNameRange_WantQualifier' เดเดจเตเดจเดคเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฏ เดเดช เดชเดฆเดชเตเดฐเดฏเตเดเดเตเดเดณเตเดฃเตเดเต. เดเดชเตเดชเดฑเตเดฑเตเดฑเตผ. CIndex.cpp 7245
เด เดเตเดทเดฐเดคเตเดคเตเดฑเตเดฑเต เดเดพเดฐเดฃเด, เดเดฐเต เดชเตเดฐเตเดณเตเดณ เดธเตเดฅเดฟเดฐเดพเดเตเดเด เดฐเดฃเตเดเตเดคเดตเดฃ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต CXNameRange_WantQualifier.
เดถเดเดฒเด N3: เดเดชเตเดชเดฑเตเดฑเตเดฑเตผ เดฎเตเตปเดเดฃเดจเดฏเตเดฎเดพเดฏเดฟ เดเดถเดฏเดเตเดเตเดดเดชเตเดชเด
int PPCTTIImpl::getVectorInstrCost(unsigned Opcode, Type *Val, unsigned Index) {
....
if (ISD == ISD::EXTRACT_VECTOR_ELT && Index == ST->isLittleEndian() ? 1 : 0)
return 0;
....
}
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เดเดจเตเดฑเต เด เดญเดฟเดชเตเดฐเดพเดฏเดคเตเดคเดฟเตฝ, เดเดคเต เดตเดณเดฐเต เดฎเดจเตเดนเดฐเดฎเดพเดฏ เดคเตเดฑเตเดฑเดพเดฃเต. เด เดคเต, เดเดจเดฟเดเตเดเต เดธเตเดจเตเดฆเดฐเตเดฏเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเต เดตเดฟเดเดฟเดคเตเดฐเดฎเดพเดฏ เดเดถเดฏเดเตเดเดณเตเดฃเตเดเตเดจเตเดจเต เดเดจเดฟเดเตเดเดฑเดฟเดฏเดพเด :).
เดเดชเตเดชเตเตพ, เด
เดจเตเดธเดฐเดฟเดเตเดเต
(ISD == ISD::EXTRACT_VECTOR_ELT && (Index == ST->isLittleEndian())) ? 1 : 0
เดเดฐเต เดชเตเดฐเดพเดฏเตเดเดฟเด เดตเตเดเตเดทเดฃเดเตเดฃเดฟเตฝ, เด เดคเตเดคเดฐเดฎเตเดฐเต เด เดตเดธเตเดฅเดฏเตเดเตเดเต เด เตผเดคเตเดฅเดฎเดฟเดฒเตเดฒ, เดเดพเดฐเดฃเด เดเดคเต เดเตเดฐเตเดเตเดเดพเด:
(ISD == ISD::EXTRACT_VECTOR_ELT && Index == ST->isLittleEndian())
เดเดคเต เดตเตเดฏเดเตเดคเดฎเดพเดฏ เดคเตเดฑเตเดฑเดพเดฃเต. เดฎเดฟเดเตเดเดตเดพเดฑเตเด, เดเดฐเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดฎเดพเดฏเดฟ 0/1 เดคเดพเดฐเดคเดฎเตเดฏเด เดเตเดฏเตเดฏเดพเตป เด เดตเตผ เดเดเตเดฐเดนเดฟเดเตเดเต เดธเตเดเดฟเด. เดเตเดกเต เดถเดฐเดฟเดฏเดพเดเตเดเดพเตป เดจเดฟเดเตเดเตพ เดคเตเดฐเดฟเดฎเดพเดจ เดเดชเตเดชเดฑเตเดฑเตเดฑเดฑเดฟเดจเต เดเตเดฑเตเดฑเตเด เดชเดฐเดพเตปเดคเตเดธเดฟเดธเตเดเตพ เดเตเตผเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต:
if (ISD == ISD::EXTRACT_VECTOR_ELT && Index == (ST->isLittleEndian() ? 1 : 0))
เดตเดดเดฟเดฏเดฟเตฝ, เดเตเตผเดจเดฑเดฟ เดเดชเตเดชเดฑเตเดฑเตเดฑเตผ เดตเดณเดฐเต เด
เดชเดเดเดเดฐเดตเตเด เดฒเตเดเดฟเดเตเดเตฝ เดชเดฟเดถเดเตเดเตพ เดเดฃเตผเดคเตเดคเตเดจเตเดจเดคเตเดฎเดพเดฃเต. เด
เดคเดฟเตฝ เดตเดณเดฐเต เดถเตเดฐเดฆเตเดงเดพเดฒเตเดตเดพเดฏเดฟเดฐเดฟเดเตเดเตเด, เดชเดฐเดพเตปเดคเตเดธเดฟเดธเตเดเดณเดฟเตฝ เด
เดคเตเดฏเดพเดเตเดฐเดนเด เดเดพเดฃเดฟเดเตเดเดฐเตเดคเต. เดเดพเตป เด เดตเดฟเดทเดฏเด เดเตเดเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดจเตเดเตเดเดฟ
เดถเดเดฒเด N4, N5: เดจเตพ เดชเตเดฏเดฟเดจเตเดฑเตผ
Init *TGParser::ParseValue(Record *CurRec, RecTy *ItemType, IDParseMode Mode) {
....
TypedInit *LHS = dyn_cast<TypedInit>(Result);
....
LHS = dyn_cast<TypedInit>(
UnOpInit::get(UnOpInit::CAST, LHS, StringRecTy::get())
->Fold(CurRec));
if (!LHS) {
Error(PasteLoc, Twine("can't cast '") + LHS->getAsString() +
"' to string");
return nullptr;
}
....
}
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เดชเตเดฏเดฟเดจเตเดฑเตผ เดเดฃเตเดเตเดเดฟเตฝ LHS เด เดธเดพเดงเตเดตเดพเดฃเต, เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต เดจเตฝเดเดฃเด. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดชเดเดฐเด, เดเดคเต เดจเตพ เดชเตเดฏเดฟเดจเตเดฑเตผ เดเดดเดฟเดตเดพเดเตเดเดชเตเดชเตเดเตเด: LHS->getAsString().
เดเดฐเต เดชเดฟเดถเดเต เดนเดพเตปเดกเตโเดฒเดฑเดฟเตฝ เดเดฐเต เดชเดฟเดถเดเต เดฎเดฑเดเตเดเดฟเดฐเดฟเดเตเดเตเดฎเตเดชเตเตพ เดเดคเต เดตเดณเดฐเต เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฏ เดเดฐเต เดธเดพเดนเดเดฐเตเดฏเดฎเดพเดฃเต, เดเดพเดฐเดฃเด เดเดฐเตเด เด เดต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. เดเดคเตเดฐ เดคเดตเดฃ เดเดชเดฏเตเดเดฟเดเตเดเดพเดฒเตเด, เดเดคเตเดคเดฟเดเตเดเตเดฐเดพเดตเตเดจเตเดจ เดเดฒเตเดฒเดพ เดเตเดกเตเดเดณเตเด เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เด เดจเดฒเตเดธเดฑเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต. เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เดตเดฟเดถเดเดฒเดจเด เดฎเดฑเตเดฑเต เดเตเดธเตเดฑเตเดฑเดฟเดเดเตเด เดชเดฟเดถเดเต เดชเดฐเดฟเดฐเดเตเดทเดฃ เดธเดพเดเตเดเตเดคเดฟเดเดคเดเดณเตเด เดเดเตเดเดจเต เดชเตเตผเดคเตเดคเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต เดเดจเตเดจเดคเดฟเดจเตเดฑเต เดฎเดฟเดเดเตเด เดเดฆเดพเดนเดฐเดฃเดฎเดพเดฃเดฟเดคเต.
เดธเดฎเดพเดจเดฎเดพเดฏ เดชเตเดฏเดฟเดจเตเดฑเตผ เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเตฝ เดชเดฟเดถเดเต HRH เดเตเดตเดเตเดฏเตเดณเตเดณ เดเตเดกเดฟเตฝ เด เดจเตเดตเดฆเดจเตเดฏเด: V522 [CWE-476] เดจเตพ เดชเตเดฏเดฟเดจเตเดฑเตผ 'RHS' เดจเตเดฑเต เดกเดฟเดฑเดซเดฑเตปเดธเดฟเดเต เดจเดเดจเตเดจเตเดเตเดเดพเด. TGPparser.cpp 2186
เดถเดเดฒเด N6: เดจเตเดเตเดเดฟเดฏ เดถเตเดทเด เดชเตเดฏเดฟเดจเตเดฑเตผ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต
static Expected<bool>
ExtractBlocks(....)
{
....
std::unique_ptr<Module> ProgClone = CloneModule(BD.getProgram(), VMap);
....
BD.setNewProgram(std::move(ProgClone)); // <=
MiscompiledFunctions.clear();
for (unsigned i = 0, e = MisCompFunctions.size(); i != e; ++i) {
Function *NewF = ProgClone->getFunction(MisCompFunctions[i].first); // <=
assert(NewF && "Function not found??");
MiscompiledFunctions.push_back(NewF);
}
....
}
PVS-Studio เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: V522 [CWE-476] เดจเตพ เดชเตเดฏเดฟเดจเตเดฑเตผ 'เดชเตเดฐเตเดเตเดเตเดฒเตเตบ' เดกเตเดฑเดซเดฑเตปเดธเดฟเดเต เดจเดเดจเตเดจเตเดเตเดเดพเด. Miscompilation.cpp 601
เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ เดเดฐเต เดธเตเดฎเดพเตผเดเตเดเต เดชเตเดฏเดฟเดจเตเดฑเตผ เดชเตเดฐเตเดเตเดเตเดฒเตเตบ เดตเดธเตเดคเตเดตเดฟเดจเต เดธเตเดตเดจเตเดคเดฎเดพเดเตเดเตเดจเตเดจเดคเต เดจเดฟเตผเดคเตเดคเตเดจเตเดจเต:
BD.setNewProgram(std::move(ProgClone));
เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เดเดชเตเดชเตเตพ เดชเตเดฐเตเดเตเดเตเดฒเตเตบ เดเดฐเต เดจเตพ เดชเตเดฏเดฟเดจเตเดฑเตผ เดเดฃเต. เด เดคเดฟเดจเดพเตฝ, เดเดฐเต เดจเตพ เดชเตเดฏเดฟเดจเตเดฑเตผ เดกเตเดฑเดซเดฑเตปเดธเต เดคเดพเดดเต เดธเดเดญเดตเดฟเดเตเดเดฃเด:
Function *NewF = ProgClone->getFunction(MisCompFunctions[i].first);
เดชเดเตเดทเต, เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เดเดคเต เดธเดเดญเดตเดฟเดเตเดเดฟเดฒเตเดฒ! เดฒเตเดชเตเดชเต เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดคเดฟเดเตเดเดฟเดฒเตเดฒ เดเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด.
เดเดฃเตเดเตเดฏเตเดจเดฑเดฟเดจเตเดฑเต เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ เดคเตเดฑเตเดฑเดพเดฏเดฟ เดธเดฎเดพเดนเดฐเดฟเดเตเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดฎเดพเดฏเตเดเตเดเต:
MiscompiledFunctions.clear();
เด เดเตเดคเตเดคเดคเดพเดฏเดฟ, เด เดเดฃเตเดเตเดฏเตเดจเดฑเดฟเดจเตเดฑเต เดตเดฒเตเดชเตเดชเด เดฒเตเดชเตเดชเต เด เดตเดธเตเดฅเดฏเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต:
for (unsigned i = 0, e = MisCompFunctions.size(); i != e; ++i) {
เดฒเตเดชเตเดชเต เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒเตเดจเตเดจเต เดเดพเดฃเดพเตป เดเดณเตเดชเตเดชเดฎเดพเดฃเต. เดเดคเตเด เดเดฐเต เดฌเดเต เดเดฃเตเดจเตเดจเต เดคเตเดจเตเดจเตเดจเตเดจเต, เดเตเดกเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟ เดเดดเตเดคเดฃเด.
เดคเตเดฑเตเดฑเตเดเดณเตเดเต เดชเตเดฐเดธเดฟเดฆเตเดงเดฎเดพเดฏ เดธเดฎเดคเตเดตเด เดเดเตเดเตพ เดจเตเดฐเดฟเดเตเดเดคเดพเดฏเดฟ เดคเตเดจเตเดจเตเดจเตเดจเต! เดเดฐเต เดคเตเดฑเตเดฑเต เดฎเดฑเตเดฑเตเดจเตเดจเดฟเดจเต เดฎเดฑเดฏเตเดเตเดเตเดจเตเดจเต :).
เดถเดเดฒเด N7: เดจเตเดเตเดเดฟเดฏ เดถเตเดทเด เดชเตเดฏเดฟเดจเตเดฑเตผ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต
static Expected<bool> TestOptimizer(BugDriver &BD, std::unique_ptr<Module> Test,
std::unique_ptr<Module> Safe) {
outs() << " Optimizing functions being tested: ";
std::unique_ptr<Module> Optimized =
BD.runPassesOn(Test.get(), BD.getPassesToRun());
if (!Optimized) {
errs() << " Error running this sequence of passes"
<< " on the input program!n";
BD.setNewProgram(std::move(Test)); // <=
BD.EmitProgressBitcode(*Test, "pass-error", false); // <=
if (Error E = BD.debugOptimizerCrash())
return std::move(E);
return false;
}
....
}
PVS-Studio เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: V522 [CWE-476] เดจเตพ เดชเตเดฏเดฟเดจเตเดฑเตผ 'เดเตเดธเตเดฑเตเดฑเต' เดกเตเดฑเดซเดฑเตปเดธเดฟเดเต เดจเดเดจเตเดจเตเดเตเดเดพเด. Miscompilation.cpp 709
เดตเตเดฃเตเดเตเด เด เดคเต เด เดตเดธเตเดฅ. เดเดฆเตเดฏเด, เดเดฌเตเดเดเตเดฑเตเดฑเดฟเดจเตเดฑเต เดเดณเตเดณเดเดเตเดเดเตเดเตพ เดจเตเดเตเดเดฟ, เดชเดฟเดจเตเดจเตเดเต เดเดจเตเดจเตเด เดธเดเดญเดตเดฟเดเตเดเดพเดคเตเดคเดคเตเดชเตเดฒเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต. C++ เตฝ เดฎเตเดตเตเดฎเตเดจเตเดฑเต เดธเตเดฎเดพเดจเตเดฑเดฟเดเตโเดธเต เดชเตเดฐเดคเตเดฏเดเตเดทเดชเตเดชเตเดเตเดเดคเดฟเดจเต เดถเตเดทเด เดชเตเดฐเตเดเตเดฐเดพเด เดเตเดกเดฟเตฝ เดเดพเตป เด เดธเดพเดนเดเดฐเตเดฏเด เดเตเดเตเดคเตฝ เดเตเดเตเดคเตฝ เดเดพเดฃเตเดจเตเดจเต. เด เดคเตเดเตเดฃเตเดเดพเดฃเต เดเดพเตป C++ เดญเดพเดทเดฏเต เดเดทเตเดเดชเตเดชเตเดเตเดจเตเดจเดคเต! เดจเดฟเดเตเดเดณเตเดเต เดธเตเดตเดจเตเดคเด เดเดพเดฒเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดเดฟเดตเดฏเตเดเตเดเดพเตป เดเตเดเตเดคเตฝ เดเตเดเตเดคเตฝ เดชเตเดคเดฟเดฏ เดตเดดเดฟเดเดณเตเดฃเตเดเต. เดชเดฟเดตเดฟเดเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เด เดจเดฒเตเดธเดฑเดฟเดจเต เดเดฒเตเดฒเดพเดฏเตโเดชเตเดชเตเดดเตเด เดเตเดฒเดฟ เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเตเด :).
เดถเดเดฒเด N8: เดจเตพ เดชเตเดฏเดฟเดจเตเดฑเตผ
void FunctionDumper::dump(const PDBSymbolTypeFunctionArg &Symbol) {
uint32_t TypeId = Symbol.getTypeId();
auto Type = Symbol.getSession().getSymbolById(TypeId);
if (Type)
Printer << "<unknown-type>";
else
Type->dump(*this);
}
PVS-Studio เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: V522 [CWE-476] เดจเตพ เดชเตเดฏเดฟเดจเตเดฑเตผ 'เดเตเดชเตเดชเต' เดกเตเดฑเดซเดฑเตปเดธเดฟเดเต เดจเดเดจเตเดจเตเดเตเดเดพเด. PrettyFunctionDumper.cpp 233
เดชเดฟเดถเดเต เดนเดพเตปเดกเตเดฒเดฑเตเดเตพเดเตเดเต เดชเตเดฑเดฎเต, เดกเตเดฌเดเตเดเดฟเดเดเต เดชเตเดฐเดฟเดจเตเดฑเตเดเตเดเต เดซเดเดเตเดทเดจเตเดเตพ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดชเดฐเตเดเตเดทเดฟเดเตเดเดฟเดฒเตเดฒ. เด เดคเตเดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดเดฐเต เดเตเดธเต เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดจเดฎเตเดฎเตเดเต เดฎเตเดจเตเดจเดฟเดฒเตเดณเตเดณเดคเต. เดซเดเดเตเดทเตป เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเดพเดฏเดฟ เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เด เดตเดจเตเดฑเต เดชเตเดฐเดถเตเดจเดเตเดเตพ เดชเดฐเดฟเดนเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดชเดเดฐเด เด เดคเต เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดพเตป เดจเดฟเตผเดฌเดจเตเดงเดฟเดคเดฐเดพเดเตเด.
เดถเดฐเดฟเดฏเดพเดฃเต:
if (Type)
Type->dump(*this);
else
Printer << "<unknown-type>";
เดถเดเดฒเด N9: เดจเตพ เดชเตเดฏเดฟเดจเตเดฑเตผ
void SearchableTableEmitter::collectTableEntries(
GenericTable &Table, const std::vector<Record *> &Items) {
....
RecTy *Ty = resolveTypes(Field.RecType, TI->getType());
if (!Ty) // <=
PrintFatalError(Twine("Field '") + Field.Name + "' of table '" +
Table.Name + "' has incompatible type: " +
Ty->getAsString() + " vs. " + // <=
TI->getType()->getAsString());
....
}
PVS-Studio เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: V522 [CWE-476] เดจเตพ เดชเตเดฏเดฟเดจเตเดฑเตผ 'Ty' เดฏเตเดเต เดกเดฟเดฑเดซเดฑเตปเดธเดฟเดเต เดจเดเดจเตเดจเตเดเตเดเดพเด. SearchableTableEmitter.cpp 614
เดเดฒเตเดฒเดพเด เดตเตเดฏเดเตเดคเดฎเดพเดฃเตเดจเตเดจเตเด เดตเดฟเดถเดฆเตเดเดฐเดฃเด เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเตเดจเตเดจเตเด เดเดพเตป เดเดฐเตเดคเตเดจเตเดจเต.
เดถเดเดฒเด N10: เด เดเตเดทเดฐเดคเตเดคเตเดฑเตเดฑเต
bool FormatTokenLexer::tryMergeCSharpNullConditionals() {
....
auto &Identifier = *(Tokens.end() - 2);
auto &Question = *(Tokens.end() - 1);
....
Identifier->ColumnWidth += Question->ColumnWidth;
Identifier->Type = Identifier->Type; // <=
Tokens.erase(Tokens.end() - 1);
return true;
}
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เดธเตเดตเดฏเด เดเดฐเต เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดจเตฝเดเตเดจเตเดจเดคเดฟเตฝ เด เตผเดคเตเดฅเดฎเดฟเดฒเตเดฒ. เดฎเดฟเดเตเดเดตเดพเดฑเตเด, เด เดตเตผ เดเดดเตเดคเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเต:
Identifier->Type = Question->Type;
เดถเดเดฒเด N11: เดธเดเดถเดฏเดพเดธเตเดชเดฆเดฎเดพเดฏ เดฌเตเดฐเตเดเตเดเต
void SystemZOperand::print(raw_ostream &OS) const {
switch (Kind) {
break;
case KindToken:
OS << "Token:" << getToken();
break;
case KindReg:
OS << "Reg:" << SystemZInstPrinter::getRegisterName(getReg());
break;
....
}
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ เดตเดณเดฐเต เดธเดเดถเดฏเดพเดธเตเดชเดฆเดฎเดพเดฏ เดเดฐเต เดเดชเตเดชเดฑเตเดฑเตเดฑเตผ เดเดฃเตเดเต เดเดเดตเตเดณ. เดเดตเดฟเดเต เดฎเดฑเตเดฑเตเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดเดดเตเดคเดพเตป เดฎเดฑเดจเตเดจเต?
เดซเตเดฐเดพเดเตโเดฎเตเดจเตเดฑเต N12: เดกเดฟเดซเดฑเตปเดธเดฟเดเดเดฟเดจเต เดถเตเดทเด เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต
InlineCost AMDGPUInliner::getInlineCost(CallSite CS) {
Function *Callee = CS.getCalledFunction();
Function *Caller = CS.getCaller();
TargetTransformInfo &TTI = TTIWP->getTTI(*Callee);
if (!Callee || Callee->isDeclaration())
return llvm::InlineCost::getNever("undefined callee");
....
}
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เดชเตเดฏเดฟเดจเตเดฑเตผ เดเตเดณเต เดซเดเดเตโเดทเตป เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ เดกเดฟเดฑเดซเดฑเตปเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเต getTTI.
เดธเดฎเดคเตเดตเดคเตเดคเดฟเดจเดพเดฏเดฟ เด เดชเตเดฏเดฟเดจเตเดฑเตผ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดฃเดฎเตเดจเตเดจเต เด เดคเต เดฎเดพเดฑเตเดจเตเดจเต nullptr:
if (!Callee || Callee->isDeclaration())
เดชเดเตเดทเต, เดตเดณเดฐเต เดตเตเดเดฟเดชเตเดชเตเดฏเดฟ...
เดถเดเดฒเด N13 - N...: เดกเดฟเดฑเดซเดฑเตปเดธเดฟเดจเต เดถเตเดทเด เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต
เดฎเตเดฎเตเดชเดคเตเดคเต เดเตเดกเต เดถเดเดฒเดคเตเดคเดฟเตฝ เดเตผเดเตเด เดเตเดฏเตเดค เดธเดพเดนเดเดฐเตเดฏเด เด เดฆเตเดตเดฟเดคเตเดฏเดฎเดฒเตเดฒ. เดเดคเต เดเดตเดฟเดเต เดฆเตเดถเตเดฏเดฎเดพเดเตเดจเตเดจเต:
static Value *optimizeDoubleFP(CallInst *CI, IRBuilder<> &B,
bool isBinary, bool isPrecise = false) {
....
Function *CalleeFn = CI->getCalledFunction();
StringRef CalleeNm = CalleeFn->getName(); // <=
AttributeList CalleeAt = CalleeFn->getAttributes();
if (CalleeFn && !CalleeFn->isIntrinsic()) { // <=
....
}
PVS-Studio เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: V595 [CWE-476] 'CalleeFn' เดชเตเดฏเดฟเดจเตเดฑเตผ nullptr-เดจเตเดคเดฟเดฐเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดฑเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เด เดคเต เดเดชเดฏเตเดเดฟเดเตเดเต. เดฒเตเดจเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด: 1079, 1081. SimplifyLibCalls.cpp 1079
เดชเดฟเดจเตเดจเต เดเดตเดฟเดเต:
void Sema::InstantiateAttrs(const MultiLevelTemplateArgumentList &TemplateArgs,
const Decl *Tmpl, Decl *New,
LateInstantiatedAttrVec *LateAttrs,
LocalInstantiationScope *OuterMostScope) {
....
NamedDecl *ND = dyn_cast<NamedDecl>(New);
CXXRecordDecl *ThisContext =
dyn_cast_or_null<CXXRecordDecl>(ND->getDeclContext()); // <=
CXXThisScopeRAII ThisScope(*this, ThisContext, Qualifiers(),
ND && ND->isCXXInstanceMember()); // <=
....
}
PVS-Studio เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: V595 [CWE-476] nullptr-เดจเตเดคเดฟเดฐเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดฑเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต 'ND' เดชเตเดฏเดฟเดจเตเดฑเตผ เดเดชเดฏเตเดเดฟเดเตเดเต. เดฒเตเดจเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด: 532, 534. SemaTemplateInstantiateDecl.cpp 532
เดชเดฟเดจเตเดจเต เดเดตเดฟเดเต:
- V595 [CWE-476] nullptr-เดจเตเดคเดฟเดฐเต เดธเตเดฅเดฟเดฐเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต 'U' เดชเตเดฏเดฟเดจเตเดฑเตผ เดเดชเดฏเตเดเดฟเดเตเดเต. เดเตเดเตเดเต เดฒเตเดจเตเดเตพ: 404, 407. DWARFormValue.cpp 404
- V595 [CWE-476] nullptr-เดจเตเดคเดฟเดฐเต เดธเตเดฅเดฟเดฐเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต 'ND' เดชเตเดฏเดฟเดจเตเดฑเตผ เดเดชเดฏเตเดเดฟเดเตเดเต. เดฒเตเดจเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด: 2149, 2151. SemaTemplateInstantiate.cpp 2149
เดคเตเดเตผเดจเตเดจเต V595 เดเดจเตเดจ เดจเดฎเตเดชเดฑเดฟเดฒเตเดณเตเดณ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเตเดเตพ เดชเด เดฟเดเตเดเดพเตป เดเดจเดฟเดเตเดเต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเดฟเดฒเตเดฒเดพเดคเดพเดฏเดฟ. เด เดคเดฟเดจเดพเตฝ เดเดตเดฟเดเต เดฒเดฟเดธเตเดฑเตเดฑเตเดเตเดฏเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดต เดเตเดเดพเดคเต เดธเดฎเดพเดจเดฎเดพเดฏ เดเตเดเตเดคเตฝ เดชเดฟเดถเดเตเดเตพ เดเดฃเตเดเต เดเดจเตเดจเต เดเดจเดฟเดเตเดเดฑเดฟเดฏเดฟเดฒเตเดฒ. เดฎเดฟเดเตเดเดตเดพเดฑเตเด เดเดฃเตเดเดพเดเดพเตป เดธเดพเดงเตเดฏเดคเดฏเตเดฃเตเดเต.
เดถเดเดฒเด N17, N18: เดธเดเดถเดฏเดพเดธเตเดชเดฆเดฎเดพเดฏ เดฎเดพเดฑเตเดฑเด
static inline bool processLogicalImmediate(uint64_t Imm, unsigned RegSize,
uint64_t &Encoding) {
....
unsigned Size = RegSize;
....
uint64_t NImms = ~(Size-1) << 1;
....
}
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เดเดคเตเดฐเต เดฌเดเต เดเดฏเดฟเดฐเดฟเดเตเดเดฟเดฒเตเดฒ, เดเตเดกเต เดเดฆเตเดฆเตเดถเดฟเดเตเดเดคเตเดชเตเดฒเต เดคเดจเตเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต. เดเดจเตเดจเดพเตฝ เดเดคเต เดตเดณเดฐเต เดธเดเดถเดฏเดพเดธเตเดชเดฆเดฎเดพเดฏ เดธเตเดฅเดฒเดฎเดพเดฃเต, เด เดคเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต.
เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดเดจเตเดจเต เดชเดฑเดฏเดพเด เดตเดฒเตเดชเตเดชเด 16 เดจเต เดคเตเดฒเตเดฏเดฎเดพเดฃเต, เดคเตเดเตผเดจเตเดจเต เดเตเดกเดฟเดจเตเดฑเต เดฐเดเดฏเดฟเดคเดพเดตเต เด เดคเต เดเดฐเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเตฝ เดฒเดญเดฟเดเตเดเดพเตป เดชเดฆเตเดงเดคเดฟเดฏเดฟเดเตเดเต เดจเดฟเดเดธเต เด เตผเดคเตเดฅเด:
1111111111111111111111111111111111111111111111111111111111100000
เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ เดซเดฒเด เดเดคเดพเดฏเดฟเดฐเดฟเดเตเดเตเด:
0000000000000000000000000000000011111111111111111111111111100000
เดเดฒเตเดฒเดพ เดเดฃเดเตเดเตเดเตเดเตเดเดฒเตเดเดณเตเด 32-เดฌเดฟเดฑเตเดฑเต เดธเตเตป เดเตเดฏเตเดฏเดพเดคเตเดค เดคเดฐเด เดเดชเดฏเตเดเดฟเดเตเดเดพเดฃเต เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเดคเต เดเดจเตเดจเดคเดพเดฃเต เดตเดธเตเดคเตเดค. เด เดคเดฟเดจเตเดถเตเดทเด เดฎเดพเดคเตเดฐเดฎเต, เด 32-เดฌเดฟเดฑเตเดฑเต เดเดชเตเดชเดฟเดเดพเดคเตเดค เดคเดฐเด เดชเดฐเตเดเตเดทเดฎเดพเดฏเดฟ เดตเดฟเดชเตเดฒเตเดเดฐเดฟเดเตเดเดชเตเดชเตเดเตเดเดฏเตเดณเตเดณเต uint64_t. เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเดฑเตเดฑเดตเตเด เดชเตเดฐเดงเดพเดจเดชเตเดชเตเดเตเด เดฌเดฟเดฑเตเดฑเตเดเตพ เดชเตเดเตเดฏเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเด.
เดจเดฟเดเตเดเตพเดเตเดเต เดเดคเตเดชเตเดฒเต เดธเดพเดนเดเดฐเตเดฏเด เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด:
uint64_t NImms = ~static_cast<uint64_t>(Size-1) << 1;
เดธเดฎเดพเดจเดฎเดพเดฏ เดธเดพเดนเดเดฐเตเดฏเด: V629 [CWE-190] 'Immr << 6' เดเดเตเดธเตเดชเตเดฐเดทเตป เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเต เดชเดฐเดฟเดเดฃเดฟเดเตเดเตเด. 32-เดฌเดฟเดฑเตเดฑเต เดฎเตเดฒเตเดฏเดคเตเดคเดฟเดจเตเดฑเต เดฌเดฟเดฑเตเดฑเต เดทเดฟเดซเตเดฑเตเดฑเดฟเดเดเต, เดคเตเดเตผเดจเตเดจเตเดณเตเดณ เดตเดฟเดชเตเดฒเตเดเดฐเดฃเดคเตเดคเตเดเต 64-เดฌเดฟเดฑเตเดฑเต เดคเดฐเดคเตเดคเดฟเดฒเตเดเตเดเต. AArch64AddressingModes.h 269
เดถเดเดฒเด N19: เดเตเดตเตเดกเต เดตเดฟเดเตเดเตเดชเตเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต เดฎเดฑเตเดฑเดพเดฐเตเดเตเดเดฟเดฒเตเด?
void AMDGPUAsmParser::cvtDPP(MCInst &Inst, const OperandVector &Operands) {
....
if (Op.isReg() && Op.Reg.RegNo == AMDGPU::VCC) {
// VOP2b (v_add_u32, v_sub_u32 ...) dpp use "vcc" token.
// Skip it.
continue;
} if (isRegOrImmWithInputMods(Desc, Inst.getNumOperands())) { // <=
Op.addRegWithFPInputModsOperands(Inst, 2);
} else if (Op.isDPPCtrl()) {
Op.addImmOperands(Inst, 1);
} else if (Op.isImm()) {
// Handle optional arguments
OptionalIdx[Op.getImmTy()] = I;
} else {
llvm_unreachable("Invalid operand type");
}
....
}
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เดเดตเดฟเดเต เดคเตเดฑเตเดฑเดฟเดฒเตเดฒ. เดเดฆเตเดฏเดคเตเดคเตเดคเดฟเดจเตเดฑเต เด เดจเตเดจเดคเตเดคเต เดฌเตเดฒเตเดเตเดเต เดฎเตเดคเตฝ if เดเตเดเต เด เดตเดธเดพเดจเดฟเดเตเดเตเดจเตเดจเต เดคเตเดเดฐเตเด, เด เดชเตเดชเตเตพ เดธเดพเดฐเดฎเดฟเดฒเตเดฒ, เดเดฐเต เดเตเดตเตเดกเต เดเดฃเตเดเต เดฎเดฑเตเดฑเดพเดฐเตเดเตเดเดฟเดฒเตเด เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เด เดฒเตเดฒ. เดเดคเตเดตเดฟเดงเตเดจเดฏเตเด เดเตเดกเต เดเดฐเตเดชเตเดฒเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเด. เดเดชเตเดชเตเดดเตเด เดจเดทเตเดเดฎเดพเดฏเดฟ เดฎเดฑเตเดฑเดพเดฐเตเดเตเดเดฟเดฒเตเด เดเตเดกเต เดเตเดเตเดคเตฝ เด เดตเตเดฏเดเตเดคเดตเตเด เด เดชเดเดเดเดฐเดตเตเดฎเดพเดเตเดเตเดจเตเดจเต. เดญเดพเดตเดฟเดฏเดฟเดฒเดพเดฃเตเดเตเดเดฟเตฝ เดคเตเดเดฐเตเด เด เดชเตเดฐเดคเตเดฏเดเตเดทเดฎเดพเดเตเดจเตเดจเต, เดเตเดกเต เดคเดฟเดเดเตเดเตเด เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดคเตเดเดเตเดเตเด. เดเดจเตเดฑเต เด เดญเดฟเดชเตเดฐเดพเดฏเดคเตเดคเดฟเตฝ เดเตเตผเดเตเดเตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต เดฎเดฑเตเดฑเดพเดฐเตเดเตเดเดฟเดฒเตเด.
เดถเดเดฒเด N20: เดเดฐเต เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดจเดพเดฒเต เด เดเตเดทเดฐเดคเตเดคเตเดฑเตเดฑเตเดเตพ
LLVM_DUMP_METHOD void Symbol::dump(raw_ostream &OS) const {
std::string Result;
if (isUndefined())
Result += "(undef) ";
if (isWeakDefined())
Result += "(weak-def) ";
if (isWeakReferenced())
Result += "(weak-ref) ";
if (isThreadLocalValue())
Result += "(tlv) ";
switch (Kind) {
case SymbolKind::GlobalSymbol:
Result + Name.str(); // <=
break;
case SymbolKind::ObjectiveCClass:
Result + "(ObjC Class) " + Name.str(); // <=
break;
case SymbolKind::ObjectiveCClassEHType:
Result + "(ObjC Class EH) " + Name.str(); // <=
break;
case SymbolKind::ObjectiveCInstanceVariable:
Result + "(ObjC IVar) " + Name.str(); // <=
break;
}
OS << Result;
}
PVS-Studio เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเตเดเตพ:
- V655 [CWE-480] เดธเตเดเตเดฐเดฟเดเดเตเดเตพ เดเตเดเตเดเดฟเดฏเดฟเดฃเดเตเดเดฟเดฏเตเดเตเดเดฟเดฒเตเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. 'เดซเดฒเด + Name.str()' เดเดเตเดธเตเดชเตเดฐเดทเตป เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเต เดชเดฐเดฟเดเดฃเดฟเดเตเดเตเด. Symbol.cpp 32
- V655 [CWE-480] เดธเตเดเตเดฐเดฟเดเดเตเดเตพ เดเตเดเตเดเดฟเดฏเดฟเดฃเดเตเดเดฟเดฏเตเดเตเดเดฟเดฒเตเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. 'เดซเดฒเด + "(ObjC เดเตเดฒเดพเดธเต)" + Name.str()' เดเดเตเดธเตเดชเตเดฐเดทเตป เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเต เดชเดฐเดฟเดเดฃเดฟเดเตเดเตเด. Symbol.cpp 35
- V655 [CWE-480] เดธเตเดเตเดฐเดฟเดเดเตเดเตพ เดเตเดเตเดเดฟเดเตเดเตเตผเดคเตเดคเดคเดพเดฃเตเดเตเดเดฟเดฒเตเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. 'เดซเดฒเด + "(ObjC เดเตเดฒเดพเดธเต EH) " + Name.str()' เดเดเตเดธเตเดชเตเดฐเดทเตป เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเต เดชเดฐเดฟเดเดฃเดฟเดเตเดเตเด. Symbol.cpp 38
- V655 [CWE-480] เดธเตเดเตเดฐเดฟเดเดเตเดเตพ เดเตเดเตเดเดฟเดฏเดฟเดฃเดเตเดเดฟเดฏเตเดเตเดเดฟเดฒเตเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. 'เดซเดฒเด + "(ObjC IVar)" + Name.str()' เดเดเตเดธเตเดชเตเดฐเดทเตป เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเต เดชเดฐเดฟเดเดฃเดฟเดเตเดเตเด. Symbol.cpp 41
เดเดเดธเตเดฎเดฟเดเดฎเดพเดฏเดฟ, += เดเดชเตเดชเดฑเตเดฑเตเดฑเดฑเดฟเดจเต เดชเดเดฐเด + เดเดชเตเดชเดฑเตเดฑเตเดฑเตผ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต. เด เตผเดคเตเดฅเดฎเดฟเดฒเตเดฒเดพเดคเตเดค เดกเดฟเดธเตเดจเตเดเดณเดพเดฃเต เดซเดฒเด.
เดถเดเดฒเด N21: เดจเดฟเตผเดตเดเดฟเดเตเดเดพเดคเตเดค เดชเตเดฐเตเดฎเดพเดฑเตเดฑเด
static void getReqFeatures(std::map<StringRef, int> &FeaturesMap,
const std::vector<Record *> &ReqFeatures) {
for (auto &R : ReqFeatures) {
StringRef AsmCondString = R->getValueAsString("AssemblerCondString");
SmallVector<StringRef, 4> Ops;
SplitString(AsmCondString, Ops, ",");
assert(!Ops.empty() && "AssemblerCondString cannot be empty");
for (auto &Op : Ops) {
assert(!Op.empty() && "Empty operator");
if (FeaturesMap.find(Op) == FeaturesMap.end())
FeaturesMap[Op] = FeaturesMap.size();
}
}
}
เด เดชเดเดเดเดฐเดฎเดพเดฏ เดเตเดกเต เดธเตเดตเดฏเด เดเดฃเตเดเตเดคเตเดคเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเด. เดเดคเตเดคเดฐเด เดเดเดจเดเดฟ เดจเตเดเตเดเดพเดคเดฟเดฐเดฟเดเตเดเดพเตป เดถเตเดฐเดฆเตเดง เดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดเดฟเดคเตเดฐเดฎเดพเดฃเดฟเดคเต:
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เดชเตเดฐเดถเตเดจ เดฒเตเตป:
FeaturesMap[Op] = FeaturesMap.size();
เดฎเตเดฒเดเดฎเดพเดฃเตเดเตเดเดฟเตฝ Op เดเดฃเตเดเตเดคเตเดคเดฟเดฏเดฟเดฒเตเดฒ, เดคเตเดเตผเดจเตเดจเต เดฎเดพเดชเตเดชเดฟเตฝ เดเดฐเต เดชเตเดคเดฟเดฏ เดเดเดเด เดธเตเดทเตเดเดฟเดเตเดเตเดเดฏเตเด เด เดฎเดพเดชเตเดชเดฟเดฒเต เดเดเดเดเตเดเดณเตเดเต เดเดฃเตเดฃเด เด เดตเดฟเดเต เดเดดเตเดคเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดเดเดเตเดเต เดตเดฟเดณเดฟเดเตเดเตเดฎเต เดเดจเตเดจเต เดฎเดพเดคเตเดฐเด เด เดฑเดฟเดฏเดฟเดฒเตเดฒ เดตเดฒเตเดชเตเดชเด เดเดฐเต เดชเตเดคเดฟเดฏ เดเดเดเด เดเตเตผเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดถเตเดทเดฎเต.
เดถเดเดฒเด N22-N24: เดเดตเตผเดคเตเดคเดฟเดเตเดเตเดณเตเดณ เด เดธเตเตปเดฎเตเดจเตเดฑเตเดเตพ
Error MachOObjectFile::checkSymbolTable() const {
....
} else {
MachO::nlist STE = getSymbolTableEntry(SymDRI);
NType = STE.n_type; // <=
NType = STE.n_type; // <=
NSect = STE.n_sect;
NDesc = STE.n_desc;
NStrx = STE.n_strx;
NValue = STE.n_value;
}
....
}
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เดเดตเดฟเดเต เดเดฐเต เดฏเดฅเดพเตผเดคเตเดฅ เดคเตเดฑเตเดฑเต เดเดฃเตเดเตเดจเตเดจเต เดเดพเตป เดเดฐเตเดคเตเดจเตเดจเดฟเดฒเตเดฒ. เด เดจเดพเดตเดถเตเดฏเดฎเดพเดฏ เดเดตเตผเดคเตเดคเดฟเดเตเดเตเดณเตเดณ เดจเดฟเดฏเดฎเดจเด เดฎเดพเดคเตเดฐเด. เดชเดเตเดทเต เดเดชเตเดชเตเดดเตเด เดเดฐเต เดคเตเดฑเตเดฑเต.
เด เดคเตเดชเตเดฒเต:
- V519 [CWE-563] 'B.NDesc' เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเต เดคเตเดเตผเดเตเดเดฏเดพเดฏเดฟ เดฐเดฃเตเดเต เดคเดตเดฃ เดฎเตเดฒเตเดฏเดเตเดเตพ เดจเตฝเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเตเดชเดเตเดทเต เดเดคเต เดเดฐเต เดคเตเดฑเตเดฑเดพเดฃเต. เดฒเตเดจเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด: 1488, 1489. llvm-nm.cpp 1489
- V519 [CWE-563] เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเต เดคเตเดเตผเดเตเดเดฏเดพเดฏเดฟ เดฐเดฃเตเดเตเดคเดตเดฃ เดฎเตเดฒเตเดฏเดเตเดเตพ เดจเตฝเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเตเดชเดเตเดทเต เดเดคเต เดเดฐเต เดคเตเดฑเตเดฑเดพเดฃเต. เดเตเดเตเดเต เดฒเตเดจเตเดเตพ: 59, 61. coff2yaml.cpp 61
เดถเดเดฒเด N25-N27: เดเตเดเตเดคเตฝ เดชเตเดจเตผเดจเดฟเดฏเดฎเดจเดเตเดเตพ
เดเดชเตเดชเตเตพ เดชเตเดจเตผเดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเตเดฑเต เด เดฒเตเดชเด เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏ เดชเดคเดฟเดชเตเดชเต เดจเตเดเตเดเดพเด.
bool Vectorizer::vectorizeLoadChain(
ArrayRef<Instruction *> Chain,
SmallPtrSet<Instruction *, 16> *InstructionsProcessed) {
....
unsigned Alignment = getAlignment(L0);
....
unsigned NewAlign = getOrEnforceKnownAlignment(L0->getPointerOperand(),
StackAdjustedAlignment,
DL, L0, nullptr, &DT);
if (NewAlign != 0)
Alignment = NewAlign;
Alignment = NewAlign;
....
}
PVS-Studio เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: V519 [CWE-563] 'เด เดฒเตเตปเดฎเตเดจเตเดฑเต' เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเต เดคเตเดเตผเดเตเดเดฏเดพเดฏเดฟ เดฐเดฃเตเดเตเดคเดตเดฃ เดฎเตเดฒเตเดฏเดเตเดเตพ เดจเตฝเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเตเดชเดเตเดทเต เดเดคเต เดเดฐเต เดคเตเดฑเตเดฑเดพเดฃเต. เดฒเตเดจเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด: 1158, 1160. LoadStoreVectorizer.cpp 1160
เดเดคเต เดตเดณเดฐเต เดตเดฟเดเดฟเดคเตเดฐเดฎเดพเดฏ เดเดฐเต เดเตเดกเดพเดฃเต, เด เดคเดฟเตฝ เดชเตเดฐเดคเตเดฏเดเตเดทเดคเตเดคเดฟเตฝ เดเดฐเต เดฒเตเดเดฟเดเตเดเตฝ เดชเดฟเดถเดเต เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ, เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดตเดฟเดจเตเดฏเดพเดธเด เดตเตเดฏเดตเดธเตเดฅเดฏเต เดเดถเตเดฐเดฏเดฟเดเตเดเต เดเดฐเต เดฎเตเดฒเตเดฏเด เดจเดฟเดฏเตเดเตเดคเดฎเดพเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เด เดธเตเตปเดฎเตเดจเตเดฑเต เดตเตเดฃเตเดเตเด เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเต, เดชเดเตเดทเต เดเดชเตเดชเตเตพ เดเดฐเต เดชเดฐเดฟเดถเตเดงเดจเดฏเตเด เดเตเดเดพเดคเต.
เดธเดฎเดพเดจเดฎเดพเดฏ เดธเดพเดนเดเดฐเตเดฏเดเตเดเตพ เดเดตเดฟเดเต เดเดพเดฃเดพเตป เดเดดเดฟเดฏเตเด:
- V519 [CWE-563] 'เดเดซเดเตเดเตโเดธเต' เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเต เดคเตเดเตผเดเตเดเดฏเดพเดฏเดฟ เดฐเดฃเตเดเต เดคเดตเดฃ เดฎเตเดฒเตเดฏเดเตเดเตพ เดจเตฝเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเตเดชเดเตเดทเต เดเดคเต เดเดฐเต เดคเตเดฑเตเดฑเดพเดฃเต. เดฒเตเดจเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด: 152, 165. WebAssemblyRegStackify.cpp 165
- V519 [CWE-563] 'ExpectNoDerefChunk' เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเต เดคเตเดเตผเดเตเดเดฏเดพเดฏเดฟ เดฐเดฃเตเดเต เดคเดตเดฃ เดฎเตเดฒเตเดฏเดเตเดเตพ เดจเตฝเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเตเดชเดเตเดทเต เดเดคเต เดเดฐเต เดคเตเดฑเตเดฑเดพเดฃเต. เดฒเตเดจเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด: 4970, 4973. SemaType.cpp 4973
เดถเดเดฒเด N28: เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เดถเดฐเดฟเดฏเดพเดฏ เด เดตเดธเตเดฅ
static int readPrefixes(struct InternalInstruction* insn) {
....
uint8_t byte = 0;
uint8_t nextByte;
....
if (byte == 0xf3 && (nextByte == 0x88 || nextByte == 0x89 ||
nextByte == 0xc6 || nextByte == 0xc7)) {
insn->xAcquireRelease = true;
if (nextByte != 0x90) // PAUSE instruction support // <=
break;
}
....
}
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเดฟเตฝ เด เตผเดคเตเดฅเดฎเดฟเดฒเตเดฒ. เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เด เดเตเดคเตเดค เดฌเตเดฑเตเดฑเต เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เดฎเตเดฒเตเดฏเดคเตเดคเดฟเดจเต เดคเตเดฒเตเดฏเดฎเดฒเตเดฒ 0x90, เดเดคเต เดฎเตเดฎเตเดชเดคเตเดคเต เดชเดฐเดฟเดถเตเดงเดจเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดฟเดจเตเดคเตเดเดฐเตเดจเตเดจเต. เดเดคเต เดเดฐเตเดคเดฐเด เดฒเตเดเดฟเดเตเดเตฝ เดชเดฟเดถเดเดพเดฃเต.
เดถเดเดฒเด N29 - N...: เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เดถเดฐเดฟ/เดคเตเดฑเตเดฑเดพเดฏ เด เดตเดธเตเดฅเดเตพ
เด
เดจเดฒเตเดธเตผ เดจเดฟเดฐเดตเดงเดฟ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเตเดเตพ เดจเตฝเดเตเดจเตเดจเต, เดฎเตเดดเตเดตเตป เด
เดตเดธเตเดฅเดฏเตเด (
static DecodeStatus DecodeGPRPairRegisterClass(MCInst &Inst, unsigned RegNo,
uint64_t Address, const void *Decoder) {
DecodeStatus S = MCDisassembler::Success;
if (RegNo > 13)
return MCDisassembler::Fail;
if ((RegNo & 1) || RegNo == 0xe)
S = MCDisassembler::SoftFail;
....
}
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เดธเตเดฅเดฟเดฐเดฎเดพเดฏ 0xE เดเดจเตเดจเดคเต เดฆเดถเดพเดเดถเดคเตเดคเดฟเดฒเต เดฎเตเดฒเตเดฏเด 14 เดเดฃเต. เดชเดฐเตเดเตเดท RegNo == 0xe เด เตผเดคเตเดฅเดฎเดฟเดฒเตเดฒ เดเดพเดฐเดฃเด เดเดเตเดเดฟเตฝ RegNo > 13, เดคเตเดเตผเดจเตเดจเต เดซเดเดเตเดทเตป เด เดคเดฟเดจเตเดฑเต เดจเดฟเตผเดตเตเดตเดนเดฃเด เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเตเด.
V547, V560 เดเดจเตเดจเต เดเดกเดฟเดเตพเดเตเดเตเดชเตเดชเด เดฎเดฑเตเดฑเต เดจเดฟเดฐเดตเดงเดฟ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเตเดเดณเตเด เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดเดจเตเดจเดพเตฝ เด
เดคเตเดชเตเดฒเต
เด เดเตเดฐเดฟเดเดฑเตเดเตพ เดชเด เดฟเดเตเดเตเดจเตเดจเดคเต เดตเดฟเดฐเดธเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเต เดเดจเตเดคเตเดเตเดฃเตเดเตเดจเตเดจเดคเดฟเดจเตเดฑเต เดเดฐเต เดเดฆเดพเดนเดฐเดฃเด เดเดพเตป เดจเดฟเดเตเดเตพเดเตเดเต เดคเดฐเดพเด. เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเตเดกเดฟเดจเดพเดฏเดฟ เดเดฐเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต เดจเตฝเดเตเดจเตเดจเดคเดฟเตฝ เด เดจเดฒเตเดธเตผ เดคเดฟเดเดเตเดเตเด เดถเดฐเดฟเดฏเดพเดฃเต. เดเดจเตเดจเดพเตฝ เดเดคเต เดเดฐเต เดคเตเดฑเตเดฑเดฒเตเดฒ.
bool UnwrappedLineParser::parseBracedList(bool ContinueOnSemicolons,
tok::TokenKind ClosingBraceKind) {
bool HasError = false;
....
HasError = true;
if (!ContinueOnSemicolons)
return !HasError;
....
}
PVS-Studio เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: V547 [CWE-570] เดเดเตเดธเตเดชเตเดฐเดทเตป '!HasError' เดเดชเตเดชเตเดดเตเด เดคเตเดฑเตเดฑเดพเดฃเต. UnwrappedLineParser.cpp 1635
เดถเดเดฒเด N30: โโเดธเดเดถเดฏเดพเดธเตเดชเดฆเดฎเดพเดฏ เดคเดฟเดฐเดฟเดเตเดเตเดตเดฐเดตเต
static bool
isImplicitlyDef(MachineRegisterInfo &MRI, unsigned Reg) {
for (MachineRegisterInfo::def_instr_iterator It = MRI.def_instr_begin(Reg),
E = MRI.def_instr_end(); It != E; ++It) {
return (*It).isImplicitDef();
}
....
}
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เดเตเดกเต เดตเดพเดฏเดฟเดเตเดเตเดจเตเดจ เดชเตเดฐเตเดเตเดฐเดพเดฎเตผเดฎเดพเตผเดเตเดเต เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดตเดฟเดถเดฆเตเดเดฐเดฟเดเตเดเดพเตป เดเดฆเตเดฆเตเดถเดฟเดเตเดเตเดณเตเดณ เดเดฐเต เดชเดฟเดถเดเต เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดธเดพเดเตเดเตเดคเดฟเดเดคเดฏเดพเดฃเดฟเดคเต. เด เดกเดฟเดธเตเตป เดเดจเดฟเดเตเดเต เดเดจเตเดจเตเด เดตเดฟเดถเดฆเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ, เดตเดณเดฐเต เดธเดเดถเดฏเดพเดธเตเดชเดฆเดฎเดพเดฏเดฟ เดคเตเดจเตเดจเตเดจเตเดจเต. เด เดเตเดเดจเต เดเดดเตเดคเดพเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต :).
เดฎเดเตเดคเตเดคเต? เด เดชเตเดชเตเตพ เดเดพเดฏเดฏเต เดเดพเดชเตเดชเดฟเดฏเต เดเดฃเตเดเดพเดเตเดเดพเตป เดธเดฎเดฏเดฎเดพเดฏเดฟ.
เดชเตเดคเดฟเดฏ เดกเดฏเดเตเดจเตเดธเตเดฑเตเดฑเดฟเดเตเดธเต เดตเดดเดฟ เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดเตเด เดตเตเดเดฒเตเดฏเดเตเดเตพ
เดชเดดเดฏ เดกเดฏเดเตเดจเตเดธเตเดฑเตเดฑเดฟเดเตเดธเดฟเดจเตเดฑเต 30 เดธเดเตเดตเดฎเดพเดเตเดเดฒเตเดเตพ เดฎเดคเดฟเดฏเตเดจเตเดจเต เดเดพเตป เดเดฐเตเดคเตเดจเตเดจเต. เด
เดคเดฟเดจเตเดถเตเดทเด เด
เดจเดฒเตเดธเดฑเดฟเตฝ เดชเตเดฐเดคเตเดฏเดเตเดทเดชเตเดชเตเดเตเด เดชเตเดคเดฟเดฏ เดกเดฏเดเตเดจเตเดธเตเดฑเตเดฑเดฟเดเตเดธเต เดเดชเดฏเตเดเดฟเดเตเดเต เดฐเดธเดเดฐเดฎเดพเดฏ เดเดพเดฐเตเดฏเดเตเดเตพ เดเดจเตเดคเตเดฒเตเดฒเดพเด เดเดฃเตเดเตเดคเตเดคเดพเดฎเตเดจเตเดจเต เดจเตเดเตเดเดพเด
เดถเดเดฒเด N31: เดเดคเตเดคเดฟเดเตเดเตเดฐเดพเดจเดพเดเดพเดคเตเดค เดเตเดกเต
Error CtorDtorRunner::run() {
....
if (auto CtorDtorMap =
ES.lookup(JITDylibSearchList({{&JD, true}}), std::move(Names),
NoDependenciesToRegister, true))
{
....
return Error::success();
} else
return CtorDtorMap.takeError();
CtorDtorsByPriority.clear();
return Error::success();
}
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เดจเดฟเดเตเดเตพเดเตเดเต เดเดพเดฃเดพเดจเดพเดเตเดจเตเดจเดคเตเดชเตเดฒเต, เดเดชเตเดชเดฑเตเดฑเตเดฑเดฑเตเดเต เดฐเดฃเตเดเต เดถเดพเดเดเดณเตเด if เดเดชเตเดชเดฑเตเดฑเตเดฑเดฑเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดฐเต เดเตเดณเดฟเตฝ เด เดตเดธเดพเดจเดฟเดเตเดเตเดจเตเดจเต เดฎเดเดเตเดเด. เด เดคเดจเตเดธเดฐเดฟเดเตเดเต, เดเดฃเตเดเตเดฏเตเดจเตผ CtorDtorsBy Priority เดเดฐเดฟเดเตเดเดฒเตเด เดฎเดพเดฏเตโเดเตเดเดฟเดฒเตเดฒ.
เดถเดเดฒเด N32: เดเดคเตเดคเดฟเดเตเดเตเดฐเดพเดจเดพเดเดพเดคเตเดค เดเตเดกเต
bool LLParser::ParseSummaryEntry() {
....
switch (Lex.getKind()) {
case lltok::kw_gv:
return ParseGVEntry(SummaryID);
case lltok::kw_module:
return ParseModuleEntry(SummaryID);
case lltok::kw_typeid:
return ParseTypeIdEntry(SummaryID); // <=
break; // <=
default:
return Error(Lex.getLoc(), "unexpected summary kind");
}
Lex.setIgnoreColonInIdentifiers(false); // <=
return false;
}
PVS-Studio เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: V779 [CWE-561] เดฒเดญเตเดฏเดฎเดฒเตเดฒเดพเดคเตเดค เดเตเดกเต เดเดฃเตเดเตเดคเตเดคเดฟ. เดเดฐเต เดชเดฟเดถเดเต เดเดฃเตเดเดพเดเดพเตป เดธเดพเดงเตเดฏเดคเดฏเตเดฃเตเดเต. LLParser.cpp 835
เดฐเดธเดเดฐเดฎเดพเดฏ เดธเดพเดนเดเดฐเตเดฏเด. เดเดฆเตเดฏเด เด เดธเตเดฅเดฒเด เดจเตเดเตเดเดพเด:
return ParseTypeIdEntry(SummaryID);
break;
เดเดฑเตเดฑเดจเตเดเตเดเดคเตเดคเดฟเตฝ, เดเดตเดฟเดเต เดเดฐเต เดคเตเดฑเตเดฑเตเด เดเดฒเตเดฒเตเดจเตเดจเต เดคเตเดจเตเดจเตเดจเตเดจเต. เดเดคเต เดเดชเตเดชเดฑเตเดฑเตเดฑเตผ เดเดฃเตเดจเตเดจเต เดคเตเดจเตเดจเตเดจเตเดจเต เดเดเดตเตเดณ เดเดตเดฟเดเต เดเดฐเต เด เดงเดฟเดเดฎเตเดฃเตเดเต, เดจเดฟเดเตเดเตพเดเตเดเต เด เดคเต เดเดฒเตเดฒเดพเดคเดพเดเตเดเดพเด. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดฒเตเดฒเดพเด เด เดคเตเดฐ เดฒเดณเดฟเดคเดฎเดฒเตเดฒ.
เด เดจเดฒเตเดธเตผ เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดตเดฐเดฟเดเดณเดฟเตฝ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต เดจเตฝเดเตเดจเตเดจเต:
Lex.setIgnoreColonInIdentifiers(false);
return false;
เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เด เดเตเดกเต เดฒเดญเตเดฏเดฎเดฒเตเดฒ. เดเดฒเตเดฒเดพ เดเตเดธเตเดเดณเดฟเดฒเตเด เดฎเดพเดฑเตเด เดเดชเตเดชเดฑเตเดฑเตเดฑเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดเดฐเต เดเตเดณเดฟเตฝ เด เดตเดธเดพเดจเดฟเดเตเดเตเดจเตเดจเต เดฎเดเดเตเดเด. เดเดชเตเดชเตเตพ เดฌเตเดงเดฐเดนเดฟเดคเดจเดพเดฏเดฟ เดฎเดพเดคเตเดฐเด เดเดเดตเตเดณ เด เดคเตเดฐ เดจเดฟเดฐเตเดชเดฆเตเดฐเดตเดเดฐเดฎเดพเดฏเดฟ เดคเตเดจเตเดจเตเดจเตเดจเดฟเดฒเตเดฒ! เดเดฐเตเดชเดเตเดทเต เดถเดพเดเดเดณเดฟเดฒเตเดจเตเดจเต เด เดตเดธเดพเดจเดฟเดเตเดเตเด เดเดเดตเตเดณเดเดฃเดฒเตเดฒ เดฎเดเดเตเดเด?
เดถเดเดฒเด N33: เดเดฏเตผเดจเตเดจ เดฌเดฟเดฑเตเดฑเตเดเดณเตเดเต เดเตเดฐเดฎเดฐเดนเดฟเดคเดฎเดพเดฏ เดฑเตเดธเตเดฑเตเดฑเต
unsigned getStubAlignment() override {
if (Arch == Triple::systemz)
return 8;
else
return 1;
}
Expected<unsigned>
RuntimeDyldImpl::emitSection(const ObjectFile &Obj,
const SectionRef &Section,
bool IsCode) {
....
uint64_t DataSize = Section.getSize();
....
if (StubBufSize > 0)
DataSize &= ~(getStubAlignment() - 1);
....
}
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เดซเดเดเตเดทเตป เดเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด getStubAlinement เดฑเดฟเดเตเดเตเตบเดธเต เดคเดฐเด เดเดชเตเดชเดฟเดเดพเดคเตเดคเดคเต. เดซเดเดเตโเดทเตป เดฎเตเดฒเตเดฏเด 8 เดจเตฝเดเตเดจเตเดจเต เดเดจเตเดจเต เดเดฐเตเดคเดฟ, เดเดเตโเดธเตโเดชเตเดฐเดทเดจเตเดฑเต เดฎเตเดฒเตเดฏเด เดเดฃเดเตเดเดพเดเตเดเดพเด:
~(getStubAlignment() - 1)
~(8u-1)
0xFFFFFFFF8u
เดเดชเตเดชเตเตพ เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด เดกเดพเดฑเตเดฑ เดตเดฒเตเดชเตเดชเด 64-เดฌเดฟเดฑเตเดฑเต เดเดชเตเดชเดฟเดเดพเดคเตเดค เดคเดฐเด เดเดฃเตเดเต. DataSize & 0xFFFFFFF8u เดเดชเตเดชเดฑเตเดทเตป เดจเดเดคเตเดคเตเดฎเตเดชเตเตพ, เดเดฒเตเดฒเดพ เดฎเตเดชเตเดชเดคเตเดคเดฟเดฐเดฃเตเดเต เดเดฏเตผเดจเตเดจ เดเตผเดกเตผ เดฌเดฟเดฑเตเดฑเตเดเดณเตเด เดชเตเดเตเดฏเดคเตเดคเดฟเดฒเตเดเตเดเต เดชเตเดจเดเดธเดเตเดเดฎเดพเดเตเดเดชเตเดชเตเดเตเด. เดฎเดฟเดเตเดเดตเดพเดฑเตเด, เดเดคเต เดชเตเดฐเตเดเตเดฐเดพเดฎเตผ เดเดเตเดฐเดนเดฟเดเตเดเดคเดฒเตเดฒ. เด เดตเตป เดเดฃเดเตเดเดพเดเตเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดเดพเตป เดธเดเดถเดฏเดฟเดเตเดเตเดจเตเดจเต: DataSize & 0xFFFFFFFFFFFFFFF8u.
เดชเดฟเดถเดเต เดชเดฐเดฟเดนเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเดเตเดเตพ เดเดคเต เดเดดเตเดคเดฃเด:
DataSize &= ~(static_cast<uint64_t>(getStubAlignment()) - 1);
เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เด เดเตเดเดจเต:
DataSize &= ~(getStubAlignment() - 1ULL);
เดถเดเดฒเด N34: เดตเตเดฏเดเตเดคเดฎเดพเดฏ เดคเดฐเด เดเดพเดธเตเดฑเตเดฑเต เดชเดฐเดพเดเดฏเดชเตเดชเตเดเตเดเต
template <typename T>
void scaleShuffleMask(int Scale, ArrayRef<T> Mask,
SmallVectorImpl<T> &ScaledMask) {
assert(0 < Scale && "Unexpected scaling factor");
int NumElts = Mask.size();
ScaledMask.assign(static_cast<size_t>(NumElts * Scale), -1);
....
}
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เดคเดฐเด เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดเตเดฃเดฟเดเตเดเตเดฎเตเดชเตเตพ เดเดตเตผเดซเตเดฒเต เดเดดเดฟเดตเดพเดเตเดเดพเตป เดตเตเดฏเดเตเดคเดฎเดพเดฏ เดคเดฐเด เดเดพเดธเตเดฑเตเดฑเดฟเดเดเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต int. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดตเดฟเดเต เดตเตเดฏเดเตเดคเดฎเดพเดฏ เดคเดฐเด เดเดพเดธเตเดฑเตเดฑเดฟเดเดเต เดเดตเตผเดซเตเดฒเตเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. เดเดฆเตเดฏเด, เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดเตเดฃเดฟเดเตเดเตเด, เด
เดคเดฟเดจเตเดถเตเดทเด เดฎเดพเดคเตเดฐเดฎเต เดเตเดฃเดจเดคเตเดคเดฟเดจเตเดฑเต 32-เดฌเดฟเดฑเตเดฑเต เดซเดฒเด เดคเดฐเดคเตเดคเดฟเดฒเตเดเตเดเต เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเดเต.
เดถเดเดฒเด N35: เดชเดเตผเดคเตเดคเตฝ-เดเดเตเดเดฟเดเตเดเตฝ เดชเดฐเดพเดเดฏเดชเตเดชเตเดเตเดเต
Instruction *InstCombiner::visitFCmpInst(FCmpInst &I) {
....
if (!match(Op0, m_PosZeroFP()) && isKnownNeverNaN(Op0, &TLI)) {
I.setOperand(0, ConstantFP::getNullValue(Op0->getType()));
return &I;
}
if (!match(Op1, m_PosZeroFP()) && isKnownNeverNaN(Op1, &TLI)) {
I.setOperand(1, ConstantFP::getNullValue(Op0->getType())); // <=
return &I;
}
....
}
เด เดชเตเดคเดฟเดฏ เดฐเดธเดเดฐเดฎเดพเดฏ เดกเดฏเดเตเดจเตเดธเตเดฑเตเดฑเดฟเดเต, เดเดฐเต เดเตเดกเดฟเดจเตเดฑเต เดเดฐเต เดญเดพเดเด เดชเดเตผเดคเตเดคเดฟ เด เดคเดฟเตฝ เดเดฟเดฒ เดชเตเดฐเตเดเตพ เดฎเดพเดฑเตเดฑเดพเตป เดคเตเดเดเตเดเดฟเดฏ เดธเดพเดนเดเดฐเตเดฏเดเตเดเดณเต เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดฏเตเดจเตเดจเต, เดเดจเตเดจเดพเตฝ เดเดฐเดฟเดเดคเตเดคเต เด เดตเตผ เด เดคเต เดคเดฟเดฐเตเดคเตเดคเดฟเดฏเดฟเดเตเดเดฟเดฒเตเดฒ.
เดฐเดฃเตเดเดพเดฎเดคเตเดคเต เดฌเตเดฒเตเดเตเดเดฟเตฝ เด เดตเตผ เดฎเดพเดฑเดฟเดฏเดคเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด Op0 เดเตบ Op1. เดเดจเตเดจเดพเตฝ เดเดฐเดฟเดเดคเตเดคเต เด เดตเตผ เด เดคเต เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดฟเดฒเตเดฒ. เดฎเดฟเดเตเดเดตเดพเดฑเตเด, เดเดคเต เดเดเตเดเดจเต เดเดดเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเดฃเด:
if (!match(Op1, m_PosZeroFP()) && isKnownNeverNaN(Op1, &TLI)) {
I.setOperand(1, ConstantFP::getNullValue(Op1->getType()));
return &I;
}
เดถเดเดฒเด N36: เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดเตบเดซเตเดฏเตเดทเตป
struct Status {
unsigned Mask;
unsigned Mode;
Status() : Mask(0), Mode(0){};
Status(unsigned Mask, unsigned Mode) : Mask(Mask), Mode(Mode) {
Mode &= Mask;
};
....
};
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เดซเดเดเตโเดทเตป เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเตพเดเตเดเต เดเตเดฒเดพเดธเต เด เดเดเดเตเดเดณเตเดเต เด เดคเต เดชเตเดฐเตเดเตพ เดจเตฝเดเตเดจเตเดจเดคเต เดตเดณเดฐเต เด เดชเดเดเดเดฐเดฎเดพเดฃเต. เดเดถเดฏเดเตเดเตเดดเดชเตเดชเดคเตเดคเดฟเดฒเดพเดเตเดจเตเดจเดคเต เดตเดณเดฐเต เดเดณเตเดชเตเดชเดฎเดพเดฃเต. เด เดคเตเดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดเดฐเต เดเตเดธเต เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดจเดฎเตเดฎเตเดเต เดฎเตเดจเตเดจเดฟเดฒเตเดณเตเดณเดคเต. เด เดชเดฆเดชเตเดฐเดฏเตเดเดคเตเดคเดฟเดจเต เด เตผเดคเตเดฅเดฎเดฟเดฒเตเดฒ:
Mode &= Mask;
เดซเดเดเตเดทเตป เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเต เดฎเดพเดฑเตเดจเตเดจเต. เด เดคเตเดฐเดฏเตเดฏเตเดณเตเดณเต. เด เดตเดพเดฆเด เดเดจเดฟ เดเดชเดฏเตเดเดฟเดเตเดเดฟเดฒเตเดฒ. เดฎเดฟเดเตเดเดตเดพเดฑเตเด เดจเดฟเดเตเดเตพ เดเดคเต เดเดเตเดเดจเต เดเดดเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเดฃเด:
Status(unsigned Mask, unsigned Mode) : Mask(Mask), Mode(Mode) {
this->Mode &= Mask;
};
เดถเดเดฒเด N37: เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดเตบเดซเตเดฏเตเดทเตป
class SectionBase {
....
uint64_t Size = 0;
....
};
class SymbolTableSection : public SectionBase {
....
};
void SymbolTableSection::addSymbol(Twine Name, uint8_t Bind, uint8_t Type,
SectionBase *DefinedIn, uint64_t Value,
uint8_t Visibility, uint16_t Shndx,
uint64_t Size) {
....
Sym.Value = Value;
Sym.Visibility = Visibility;
Sym.Size = Size;
Sym.Index = Symbols.size();
Symbols.emplace_back(llvm::make_unique<Symbol>(Sym));
Size += this->EntrySize;
}
เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต PVS-Studio: V1001 [CWE-563] 'เดธเตเดธเต' เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เด เดธเตเตป เดเตเดฏเตโเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดชเดเตเดทเต เดซเดเดเตโเดทเดจเตเดฑเต เด เดตเดธเดพเดจเดคเตเดคเตเดเต เด เดคเต เดเดชเดฏเตเดเดฟเดเตเดเดฟเดฒเตเดฒ. Object.cpp 424
เดฎเตเดฎเตเดชเดคเตเดคเตเดคเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฃเต เดธเตเดฅเดฟเดคเดฟ. เดเดคเต เดเดดเตเดคเดฃเด:
this->Size += this->EntrySize;
เดถเดเดฒเด N38-N47: เด เดตเตผ เดธเตเดเดฟเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตป เดฎเดฑเดจเตเดจเต
เดฎเตเดฎเตเดชเต, เดกเดฏเดเตเดจเตเดธเตเดฑเตเดฑเดฟเดเต เดเตเดฐเดฟเดเดฑเดฟเดเดเดฟเดจเตเดฑเต เดเดฆเดพเดนเดฐเดฃเดเตเดเตพ เดเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเต
int getGEPCost(Type *PointeeType, const Value *Ptr,
ArrayRef<const Value *> Operands) {
....
if (Ptr != nullptr) { // <=
assert(....);
BaseGV = dyn_cast<GlobalValue>(Ptr->stripPointerCasts());
}
bool HasBaseReg = (BaseGV == nullptr);
auto PtrSizeBits = DL.getPointerTypeSizeInBits(Ptr->getType()); // <=
....
}
PVS-Studio เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: V1004 [CWE-476] nullptr-เดจเตเดคเดฟเดฐเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดฑเดชเตเดชเดฟเดเตเดเดคเดฟเดจเต เดถเตเดทเด 'Ptr' เดชเตเดฏเดฟเดจเตเดฑเตผ เดธเตเดฐเดเตเดทเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค เดฐเตเดคเดฟเดฏเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเต. เดเตเดเตเดเต เดฒเตเดจเตเดเตพ: 729, 738. TargetTransformInfoImpl.h 738
เดตเตเดฐเดฟเดฏเดฌเดฟเตพ Ptr เดคเตเดฒเตเดฏเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเดพเด nullptr, เดเตเดเตเดเต เดคเตเดณเดฟเดตเดพเดฏเดฟ:
if (Ptr != nullptr)
เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดชเตเดฐเดพเดฅเดฎเดฟเด เดชเดฐเดฟเดถเตเดงเดจ เดเตเดเดพเดคเต เด เดชเตเดฏเดฟเดจเตเดฑเดฑเดฟเดจเต เดคเดพเดดเต เดชเดฐเดพเดฎเตผเดถเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต:
auto PtrSizeBits = DL.getPointerTypeSizeInBits(Ptr->getType());
เดธเดฎเดพเดจเดฎเดพเดฏ เดฎเดฑเตเดฑเตเดฐเต เดเตเดธเต เดจเดฎเตเดเตเดเต เดชเดฐเดฟเดเดฃเดฟเดเตเดเดพเด.
llvm::DISubprogram *CGDebugInfo::getFunctionFwdDeclOrStub(GlobalDecl GD,
bool Stub) {
....
auto *FD = dyn_cast<FunctionDecl>(GD.getDecl());
SmallVector<QualType, 16> ArgTypes;
if (FD) // <=
for (const ParmVarDecl *Parm : FD->parameters())
ArgTypes.push_back(Parm->getType());
CallingConv CC = FD->getType()->castAs<FunctionType>()->getCallConv(); // <=
....
}
PVS-Studio เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: V1004 [CWE-476] nullptr-เดจเตเดคเดฟเดฐเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดฑเดชเตเดชเดฟเดเตเดเดคเดฟเดจเต เดถเตเดทเด 'FD' เดชเตเดฏเดฟเดจเตเดฑเตผ เดธเตเดฐเดเตเดทเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค เดฐเตเดคเดฟเดฏเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเต. เดเตเดเตเดเต เดฒเตเดจเตเดเตพ: 3228, 3231. CGDebugInfo.cpp 3231
เด เดเดฏเดพเดณเด เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด FD. เดชเตเดฐเดถเตเดจเด เดตเตเดฏเดเตเดคเดฎเดพเดฏเดฟ เดเดพเดฃเดพเดฎเตเดจเตเดจเตเด เดชเตเดฐเดคเตเดฏเตเด เดตเดฟเดถเดฆเตเดเดฐเดฃเดฎเตเดจเตเดจเตเด เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเตเดจเตเดจเตเด เดเดจเดฟเดเตเดเต เดเดฑเดชเตเดชเตเดฃเตเดเต.
เดเตเดเดพเดคเต เดเตเดเตเดคเตฝ:
static void computePolynomialFromPointer(Value &Ptr, Polynomial &Result,
Value *&BasePtr,
const DataLayout &DL) {
PointerType *PtrTy = dyn_cast<PointerType>(Ptr.getType());
if (!PtrTy) { // <=
Result = Polynomial();
BasePtr = nullptr;
}
unsigned PointerBits =
DL.getIndexSizeInBits(PtrTy->getPointerAddressSpace()); // <=
....
}
PVS-Studio เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: V1004 [CWE-476] nullptr-เดจเตเดคเดฟเดฐเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดฑเดชเตเดชเดฟเดเตเดเดคเดฟเดจเต เดถเตเดทเด 'PtrTy' เดชเตเดฏเดฟเดจเตเดฑเตผ เดธเตเดฐเดเตเดทเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค เดฐเตเดคเดฟเดฏเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเต. เดเตเดเตเดเต เดฒเตเดจเตเดเตพ: 960, 965. InterleavedLoadCombinePass.cpp 965
เด เดคเตเดคเดฐเด เดชเดฟเดถเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเตเดตเดฏเด เดเดเตเดเดจเต เดธเดเดฐเดเตเดทเดฟเดเตเดเดพเด? เดเตเดกเต-เดฑเดฟเดตเตเดฏเตเดตเดฟเตฝ เดเตเดเตเดคเตฝ เดถเตเดฐเดฆเตเดงเดพเดฒเตเดตเดพเดฏเดฟเดฐเดฟเดเตเดเตเด, เดจเดฟเดเตเดเดณเตเดเต เดเตเดกเต เดชเดคเดฟเดตเดพเดฏเดฟ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตป PVS-Studio เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เด เดจเดฒเตเดธเตผ เดเดชเดฏเตเดเดฟเดเตเดเตเด.
เดเดคเตเดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดชเดฟเดถเดเตเดเดณเตเดณเตเดณ เดฎเดฑเตเดฑเต เดเตเดกเต เดถเดเดฒเดเตเดเตพ เดเดฆเตเดงเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเตฝ เด เตผเดคเตเดฅเดฎเดฟเดฒเตเดฒ. เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดเดพเตป เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดฎเดพเดคเตเดฐเด เดเดเตเด:
- V1004 [CWE-476] 'Expr' เดชเตเดฏเดฟเดจเตเดฑเตผ nullptr-เดจเตเดคเดฟเดฐเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดฑเดชเตเดชเดฟเดเตเดเดคเดฟเดจเต เดถเตเดทเด เดธเตเดฐเดเตเดทเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค เดฐเตเดคเดฟเดฏเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเต. เดเตเดเตเดเต เดฒเตเดจเตเดเตพ: 1049, 1078. DebugInfoMetadata.cpp 1078
- V1004 [CWE-476] nullptr-เดจเตเดคเดฟเดฐเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดฑเดชเตเดชเดฟเดเตเดเดคเดฟเดจเต เดถเตเดทเด 'PI' เดชเตเดฏเดฟเดจเตเดฑเตผ เดธเตเดฐเดเตเดทเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค เดฐเตเดคเดฟเดฏเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเต. เดเตเดเตเดเต เดฒเตเดจเตเดเตพ: 733, 753. LegacyPassManager.cpp 753
- V1004 [CWE-476] 'StatepointCall' เดชเตเดฏเดฟเดจเตเดฑเตผ nullptr-เดจเตเดคเดฟเดฐเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดฑเดชเตเดชเดฟเดเตเดเดคเดฟเดจเต เดถเตเดทเด เดธเตเดฐเดเตเดทเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค เดฐเตเดคเดฟเดฏเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเต. เดฒเตเดจเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด: 4371, 4379. Verifier.cpp 4379
- V1004 [CWE-476] nullptr-เดจเตเดคเดฟเดฐเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดฑเดชเตเดชเดฟเดเตเดเดคเดฟเดจเต เดถเตเดทเด 'RV' เดชเตเดฏเดฟเดจเตเดฑเตผ เดธเตเดฐเดเตเดทเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค เดฐเตเดคเดฟเดฏเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเต. เดเตเดเตเดเต เดฒเตเดจเตเดเตพ: 2263, 2268. TGPparser.cpp 2268
- V1004 [CWE-476] nullptr-เดจเตเดคเดฟเดฐเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดฑเดชเตเดชเดฟเดเตเดเดคเดฟเดจเต เดถเตเดทเด 'CalleeFn' เดชเตเดฏเดฟเดจเตเดฑเตผ เดธเตเดฐเดเตเดทเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค เดฐเตเดคเดฟเดฏเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเต. เดฒเตเดจเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด: 1081, 1096. SimplifyLibCalls.cpp 1096
- V1004 [CWE-476] nullptr-เดจเตเดคเดฟเดฐเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดฑเดชเตเดชเดฟเดเตเดเดคเดฟเดจเต เดถเตเดทเด 'TC' เดชเตเดฏเดฟเดจเตเดฑเตผ เดธเตเดฐเดเตเดทเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค เดฐเตเดคเดฟเดฏเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเต. เดเตเดเตเดเต เดฒเตเดจเตเดเตพ: 1819, 1824. Driver.cpp 1824
เดถเดเดฒเด N48-N60: เดจเดฟเตผเดฃเตเดฃเดพเดฏเดเดฎเดฒเตเดฒ, เดเดฐเต เดตเตเดเดฒเตเดฏเด (เดฎเตเดฎเตเดฎเดฑเดฟ เดเตเตผเดเตเด เดธเดพเดงเตเดฏเดฎเดพเดฃเต)
std::unique_ptr<IRMutator> createISelMutator() {
....
std::vector<std::unique_ptr<IRMutationStrategy>> Strategies;
Strategies.emplace_back(
new InjectorIRStrategy(InjectorIRStrategy::getDefaultOps()));
....
}
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เดเดฐเต เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดจเตเดฑเต เด เดฑเตเดฑเดคเตเดคเต เดเดฐเต เดเดเดเด เดเตเตผเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดชเตเดฒเต std:: เดตเตเดเตเดฑเตเดฑเตผ > เดจเดฟเดเตเดเตพเดเตเดเต เดเดดเตเดคเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ xxx.push_back(เดชเตเดคเดฟเดฏ X), เดฎเตเดคเตฝ เดชเดฐเตเดเตเดทเดฎเดพเดฏ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด เดเดฒเตเดฒ X* ะฒ std::unique_ptr.
เดเดฐเต เดชเตเดคเต เดชเดฐเดฟเดนเดพเดฐเด เดเดดเตเดคเตเด เดเดจเตเดจเดคเดพเดฃเต xxx.emplace_back(เดชเตเดคเดฟเดฏ X)เดเดเดชเตเตฝ เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเตฝ: เดฐเตเดคเดฟ emplace_back เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเตเดฐเดฟเดเตเดเต เดเดฐเต เดเดเดเด เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเต, เด เดคเดฟเดจเดพเตฝ เดตเตเดฏเดเตเดคเดฎเดพเดฏ เดเตบเดธเตเดเตเดฐเดเตโเดเดฑเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเดพเดจเดพเดเตเด.
เด เดคเต เดธเตเดฐเดเตเดทเดฟเดคเดฎเดฒเตเดฒ. เดตเตเดเตเดฑเตเดฑเตผ เดจเดฟเดฑเดเตเดเดพเตฝ, เดฎเตเดฎเตเดฎเดฑเดฟ เดตเตเดฃเตเดเตเด เด เดฒเตเดเตเดเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดชเตเดชเตเดเตเด. เดฎเตเดฎเตเดฎเดฑเดฟ เดฑเตเดฒเตเดเตเดเตเดทเตป เดเดชเตเดชเดฑเตเดทเตป เดชเดฐเดพเดเดฏเดชเตเดชเตเดเดพเด, เด เดคเดฟเดจเตเดฑเต เดซเดฒเดฎเดพเดฏเดฟ เดเดฐเต เด เดชเดตเดพเดฆเด เดเดฑเดฟเดฏเดชเตเดชเตเดเตเด std::bad_alloc. เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดชเตเดฏเดฟเดจเตเดฑเตผ เดจเดทเตเดเดชเตเดชเตเดเตเด, เดธเตเดทเตเดเดฟเดเตเด เดเดฌเตเดเดเตเดฑเตเดฑเต เดเดฐเดฟเดเตเดเดฒเตเด เดเดฒเตเดฒเดพเดคเดพเดเตเดเดฟเดฒเตเดฒ.
เดเดฐเต เดธเตเดฐเดเตเดทเดฟเดค เดชเดฐเดฟเดนเดพเดฐเด เดธเตเดทเตเดเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต เดคเดจเดคเต_ptrเดตเตเดเตเดฑเตเดฑเตผ เดฎเตเดฎเตเดฎเดฑเดฟ เดชเตเดจเดเดธเตเดฅเดพเดชเดฟเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดเดคเต เดชเตเดฏเดฟเดจเตเดฑเตผ เดธเตเดตเดจเตเดคเดฎเดพเดเตเดเตเด:
xxx.push_back(std::unique_ptr<X>(new X))
C++14 เดฎเตเดคเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต 'std::make_unique' เดเดชเดฏเตเดเดฟเดเตเดเดพเด:
xxx.push_back(std::make_unique<X>())
เดเดคเตเดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดตเตเดเดฒเตเดฏเด LLVM-เดจเต เดจเดฟเตผเดฃเดพเดฏเดเดฎเดฒเตเดฒ. เดฎเตเดฎเตเดฎเดฑเดฟ เด
เดจเตเดตเดฆเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเดจเตเดจเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ, เดเดเดชเตเดฒเตผ เดจเดฟเตผเดคเตเดคเตเด. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดจเตเดณเดฎเตเดณเตเดณ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพเดเตเดเต
เด เดคเดฟเดจเดพเตฝ, เด เดเตเดกเต LLVM-เดจเต เดชเตเดฐเดพเดฏเตเดเดฟเด เดญเตเดทเดฃเดฟ เดเดฏเตผเดคเตเดคเตเดจเตเดจเดฟเดฒเตเดฒเตเดเตเดเดฟเดฒเตเด, เด เดชเดฟเดถเดเต เดชเดพเดฑเตเดฑเตเดฃเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดธเดเดธเดพเดฐเดฟเดเตเดเตเดจเตเดจเดคเต เดเดชเดฏเตเดเดชเตเดฐเดฆเดฎเดพเดฃเตเดจเตเดจเต เดเดพเตป เดเดฃเตเดเตเดคเตเดคเดฟ, PVS-Studio เด เดจเดฒเตเดธเตผ เดเดคเต เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดฏเดพเตป เดชเด เดฟเดเตเดเต.
เดเดคเตเดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดฎเดฑเตเดฑเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเตเดเตพ:
- V1023 [CWE-460] เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ 'Emplace_back' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต 'Passes' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต เดเตเตผเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. PassManager.h 546
- V1023 [CWE-460] เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ 'เดเดเดเดธเต' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต 'เดเดเดชเตเดฒเตเดธเต_เดฌเดพเดเตเดเต' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเตผเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. AliasAnalysis.h 324
- V1023 [CWE-460] 'เดเดเดชเตเดฒเตเดธเต_เดฌเดพเดเตเดเต' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต 'เดเตปเดเตเดฐเดฟเดเตพ' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ เดเตเตผเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. DWARFDebugFrame.cpp 519
- V1023 [CWE-460] เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ 'Emplace_back' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต 'AllEdges' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต เดเตเตผเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. CFGMST.h 268
- V1023 [CWE-460] เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ 'VMaps' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต 'emplace_back' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเตผเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. SimpleLoopUnswitch.cpp 2012
- V1023 [CWE-460] เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ 'Records' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต 'emplace_back' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเตผเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. FDRLogBuilder.h 30
- V1023 [CWE-460] เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ 'PendingSubmodules' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต 'emplace_back' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเตผเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. ModuleMap.cpp 810
- V1023 [CWE-460] เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ 'Objects' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต 'emplace_back' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเตผเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. DebugMap.cpp 88
- V1023 [CWE-460] เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ 'Emplace_back' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต 'Strategies' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต เดเตเตผเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. llvm-isel-fuzzer.cpp 60
- V1023 [CWE-460] 'เดเดเดชเตเดฒเตเดธเต_เดฌเดพเดเตเดเต' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต 'เดฎเตเดกเดฟเดซเดฏเตเดดเตโเดธเต' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ เดเตเตผเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. llvm-stress.cpp 685
- V1023 [CWE-460] 'เดเดเดชเตเดฒเตเดธเต_เดฌเดพเดเตเดเต' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต 'เดฎเตเดกเดฟเดซเดฏเตเดดเตโเดธเต' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ เดเตเตผเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. llvm-stress.cpp 686
- V1023 [CWE-460] 'เดเดเดชเตเดฒเตเดธเต_เดฌเดพเดเตเดเต' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต 'เดฎเตเดกเดฟเดซเดฏเตเดดเตโเดธเต' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ เดเตเตผเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. llvm-stress.cpp 688
- V1023 [CWE-460] 'เดเดเดชเตเดฒเตเดธเต_เดฌเดพเดเตเดเต' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต 'เดฎเตเดกเดฟเดซเดฏเตเดดเตโเดธเต' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ เดเตเตผเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. llvm-stress.cpp 689
- V1023 [CWE-460] 'เดเดเดชเตเดฒเตเดธเต_เดฌเดพเดเตเดเต' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต 'เดฎเตเดกเดฟเดซเดฏเตเดดเตโเดธเต' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ เดเตเตผเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. llvm-stress.cpp 690
- V1023 [CWE-460] 'เดเดเดชเตเดฒเตเดธเต_เดฌเดพเดเตเดเต' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต 'เดฎเตเดกเดฟเดซเดฏเตเดดเตโเดธเต' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ เดเตเตผเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. llvm-stress.cpp 691
- V1023 [CWE-460] 'เดเดเดชเตเดฒเตเดธเต_เดฌเดพเดเตเดเต' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต 'เดฎเตเดกเดฟเดซเดฏเตเดดเตโเดธเต' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ เดเตเตผเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. llvm-stress.cpp 692
- V1023 [CWE-460] 'เดเดเดชเตเดฒเตเดธเต_เดฌเดพเดเตเดเต' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต 'เดฎเตเดกเดฟเดซเดฏเตเดดเตโเดธเต' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ เดเตเตผเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. llvm-stress.cpp 693
- V1023 [CWE-460] 'เดเดเดชเตเดฒเตเดธเต_เดฌเดพเดเตเดเต' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต 'เดฎเตเดกเดฟเดซเดฏเตเดดเตโเดธเต' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ เดเตเตผเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. llvm-stress.cpp 694
- V1023 [CWE-460] เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ 'Operands' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต 'emplace_back' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเตผเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. GlobalISelEmitter.cpp 1911
- V1023 [CWE-460] เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ 'Stash' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต 'emplace_back' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเตผเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. GlobalISelEmitter.cpp 2100
- V1023 [CWE-460] เดเดเดฎเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ 'Matchers' เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเตเดเตเดเต 'emplace_back' เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเตผเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดดเดฟเดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเต เดธเดเดญเดตเดฟเดเตเดเตเด. GlobalISelEmitter.cpp 2702
เดคเตเดฐเตเดฎเดพเดจเด
เดเดพเตป เดเดเต 60 เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเตเดเตพ เดจเตฝเดเดฟ, เดคเตเดเตผเดจเตเดจเต เดจเดฟเตผเดคเตเดคเดฟ. LLVM-เตฝ PVS-Studio เด เดจเดฒเตเดธเตผ เดเดฃเตเดเตเดคเตเดคเตเดจเตเดจ เดฎเดฑเตเดฑเต เดคเดเดฐเดพเดฑเตเดเตพ เดเดฃเตเดเต? เด เดคเต, เดเดจเดฟเดเตเดเตเดฃเตเดเต. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดพเตป เดฒเตเดเดจเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเตเดกเต เดถเดเดฒเดเตเดเตพ เดเดดเตเดคเตเดฎเตเดชเตเตพ, เด เดคเต เดตเตเดเตเดจเตเดจเตเดฐเดฎเต เดฐเดพเดคเตเดฐเดฟเดฏเต เดเดฏเดฟเดฐเตเดจเตเดจเต, เด เดคเต เดเดฐเต เดฆเดฟเดตเดธเด เดเดจเตเดจเต เดตเดฟเดณเดฟเดเตเดเตเดฃเตเด เดธเดฎเดฏเดฎเดพเดฃเตเดจเตเดจเต เดเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต.
เดจเดฟเดเตเดเตพเดเตเดเต เดเดคเต เดฐเดธเดเดฐเดฎเดพเดฏเดฟ เดคเตเดจเตเดจเดฟเดฏเตเดจเตเดจเตเด PVS-Studio เด เดจเดฒเตเดธเตผ เดชเดฐเตเดเตเดทเดฟเดเตเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดฎเตเดจเตเดจเตเด เดเดพเตป เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเต.
เดจเดฟเดเตเดเตพเดเตเดเต เด
เดจเดฒเตเดธเตผ เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเดพเดจเตเด เดฎเตเตปเดธเตเดตเตเดชเตเดชเตผ เดเต เดจเตเดเดพเดจเตเด เดเดดเดฟเดฏเตเด
เดเดฑเตเดฑเดตเตเด เดชเตเดฐเดงเดพเดจเดฎเดพเดฏเดฟ, เดธเตเดฅเดฟเดฐเดฎเดพเดฏ เดตเดฟเดถเดเดฒเดจเด เดชเดคเดฟเดตเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเตเด. เดเดฑเตเดฑเดคเตเดคเดตเดฃ เดชเดฐเดฟเดถเตเดงเดจเดเตพ, เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เด เดจเดพเดฒเดฟเดธเดฟเดธเดฟเดจเตเดฑเต เดฐเตเดคเดฟเดถเดพเดธเตเดคเตเดฐเด เดเดจเดเตเดฏเดฎเดพเดเตเดเดพเตป เดเดเตเดเตพ เดจเดเดคเตเดคเดฟเดฏเดคเตเด เดชเดฟเดตเดฟเดเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเตเดฏเตเด เดเดฐเต เดธเดพเดงเดพเดฐเดฃ เดธเดพเดนเดเดฐเตเดฏเดฎเดฒเตเดฒ.
เดจเดฟเดเตเดเดณเตเดเต เดเตเดกเดฟเดจเตเดฑเต เดเตเดฃเดจเดฟเดฒเดตเดพเดฐเดตเตเด เดตเดฟเดถเตเดตเดพเดธเตเดฏเดคเดฏเตเด เดฎเตเดเตเดเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเดคเดฟเตฝ เดญเดพเดเตเดฏเด!
เดเดเดเตเดฒเตเดทเต เดธเดเดธเดพเดฐเดฟเดเตเดเตเดจเตเดจ เดชเตเดฐเตเดเตเดทเดเดฐเตเดฎเดพเดฏเดฟ เด เดฒเตเดเดจเด เดชเดเตเดเดฟเดเดพเตป เดจเดฟเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเตเดตเตเดเตเดเดฟเตฝ, เดตเดฟเดตเตผเดคเตเดคเดจ เดฒเดฟเดเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเตเด: Andrey Karpov.
เด
เดตเดฒเดเดฌเด: www.habr.com