E silia ma le lua tausaga ua mavae talu mai le siaki code mulimuli o le poloketi LLVM e faʻaaoga ai le matou suʻega PVS-Studio. Sei o tatou mautinoa o le PVS-Studio analyzer o loʻo avea pea ma meafaigaluega taʻutaʻua mo le iloa o mea sese ma faʻafitauli faʻaletonu. Ina ia faia lenei mea, matou te siakiina ma maua ni mea sese fou i le LLVM 8.0.0 faʻamalolo.
E tatau ona tusia
E fa'amaoni, ou te le'i mana'o e tusia lenei tala. E le manaia le tusi e uiga i se poloketi ua uma ona matou siakiina i le tele o taimi (
So'o se taimi e tu'u mai ai pe fa'afou se fa'afouga fou o le LLVM
Va'ai, o le lomiga fou o le Clang Static Analyzer ua aʻoaʻoina e suʻe ni mea sese fou! E foliga mai ia te aʻu o le taua o le faʻaaogaina o le PVS-Studio o loʻo faʻaitiitia. Ua maua e Clang nisi mea sese nai lo le taimi muamua ma maua ai le malosi o le PVS-Studio. O le a sou manatu i lenei mea?
I lenei mea ou te manaʻo pea e tali se mea e pei o:
Tatou te le nofonofo foi! Ua matou faʻaleleia atili le gafatia o le PVS-Studio analyzer. Aua la e te popole, o loo faaauau pea ona taʻitaʻia e pei ona iai muamua.
Ae paga lea, o se tali leaga lea. E leai ni faamaoniga i totonu. Ma o le mafuaaga lena ua ou tusia ai lenei tusiga i le taimi nei. O lea la, ua toe siaki le poloketi LLVM ma ua tele mea sese ua maua i totonu. O le a ou faʻaalia nei mea na foliga fiafia ia te aʻu. E le mafai e le Clang Static Analyzer ona maua nei mea sese (pe e matua faigata lava ona fai ma lana fesoasoani). Ae tatou te mafaia. E le gata i lea, na ou mauaina ma tusi i lalo nei mea sese uma i le afiafi e tasi.
Ae o le tusiaina o le tusiga na alu ai ni nai vaiaso. Na le mafai ona ou faʻatagaina aʻu lava e tuʻu uma nei mea i totonu o tusitusiga :).
I le auala, afai e te fiafia i tekinolosi o loʻo faʻaaogaina i le PVS-Studio analyzer e iloa ai mea sese ma faʻafitauli faʻaletonu, ona ou fautua atu lea ia e masani i lenei mea.
Fa'ailoga fou ma tuai
E pei ona taʻua muamua, pe a ma le lua tausaga talu ai na toe siaki ai le poloketi LLVM, ma faʻasaʻo mea sese na maua. O lenei tusiga o le a tuʻuina atu se vaega fou o mea sese. Aisea na maua ai ni pepe fou? E 3 mafuaaga mo lenei mea:
- O loʻo faʻaleleia le poloketi LLVM, suia le tulafono tuai ma faʻaopoopo le code fou. E masani lava, o loʻo i ai ni mea sese fou i le suiga ma le tusiaina o tulafono. O lo'o fa'aalia manino mai ai e tatau ona fa'aoga masani, ae le o nisi taimi. O a matou tusiga o loʻo faʻaalia lelei le gafatia o le PVS-Studio analyzer, ae leai se mea e fai i le faʻaleleia atili o le code code ma faʻaitiitia le tau o le faʻasaʻoina o mea sese. Fa'aaogā se su'esu'ega fa'ailoga fa'amaumau i taimi uma!
- O loʻo matou faʻamaeʻaina ma faʻaleleia suʻesuʻega o loʻo iai. O le mea lea, e mafai e le tagata suʻesuʻe ona iloa mea sese na te leʻi matauina i le taimi o suʻesuʻega muamua.
- Fa'ailoga fou ua fa'aalia i le PVS-Studio e le'i iai i le 2 tausaga talu ai. Na ou filifili e faʻamaonia i latou i se isi vaega e faʻaalia manino ai le atinaʻeina o le PVS-Studio.
Fa'aletonu na iloa e su'esu'ega sa iai i le 2 tausaga talu ai
Vaega N1: Kopi-Pape
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-Studio lapataiga:
E faalua ona siaki e amata le igoa i le substring "avx512.mask.permvar.". I le siaki lona lua, e manino lava sa latou mananao e tusi se isi mea, ae galo e faasaʻo le kopi kopi.
Vaega N2: Fa'ailoga
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;
....
}
Lapata'iga PVS-Studio: V501 E iai fa'amatalaga tutusa 'CXNameRange_WantQualifier' ile agavale ma le taumatau ole '|' fa'afoe. CIindex.cpp 7245
Ona o se fa'aoga sese, o le mea lava e tasi e ta'ua tumau e fa'aaoga faalua CXNameRange_WantQualifier.
Vaega N3: Fenumia'i ma le fa'amuamua a le tagata fa'afoe
int PPCTTIImpl::getVectorInstrCost(unsigned Opcode, Type *Val, unsigned Index) {
....
if (ISD == ISD::EXTRACT_VECTOR_ELT && Index == ST->isLittleEndian() ? 1 : 0)
return 0;
....
}
PVS-Studio lapataiga:
I lo'u manatu, o se mea sese sili lea ona matagofie. Ioe, ou te iloa e iai oʻu manatu uiga ese e uiga i le matagofie :).
O lenei, e tusa ai ma
(ISD == ISD::EXTRACT_VECTOR_ELT && (Index == ST->isLittleEndian())) ? 1 : 0
Mai se vaaiga faʻapitoa, o sea tulaga e le talafeagai, talu ai e mafai ona faʻaititia i:
(ISD == ISD::EXTRACT_VECTOR_ELT && Index == ST->isLittleEndian())
O se mea sese manino lea. E foliga mai, na latou mananaʻo e faʻatusatusa le 0/1 ma se fesuiaiga limatusi. Ina ia faʻapipiʻi le code e te manaʻomia le faʻaopoopoina o puipui i luga o le faʻaogaina o le ternary:
if (ISD == ISD::EXTRACT_VECTOR_ELT && Index == (ST->isLittleEndian() ? 1 : 0))
I le ala, o le ternary operator e matua mataʻutia ma faʻaosoosoina mea sese. Ia matua faaeteete i ai ma aua le matapeapea i puipui. Sa ou tilotilo atili i lenei autu
Vaega N4, N5: Null pointer
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-Studio lapataiga:
Afai o le faasino LHS e null, e tatau ona tuʻuina atu se lapataiga. Ae ui i lea, nai lo lena, o lenei lava null pointer o le a faʻaaogaina: LHS->getAsString().
O se tulaga masani lea pe a natia se mea sese i se tagata e faʻaaogaina mea sese, talu ai e leai se tasi e suʻeina. E su'esu'e e le au su'esu'e static code uma e mafai ona o'o iai, tusa lava pe fa'afia ona fa'aoga. O se fa'ata'ita'iga lelei tele lea o le fa'aogaina o su'esu'ega fa'ata'ita'i ma isi auala e puipuia ai mea sese.
Fa'apena fa'asino sese sese RHS fa'atagaina ile fa'ailoga o lo'o i lalo: V522 [CWE-476] Fa'ate'aina le fa'asinoala 'RHS' e ono tupu. TGParser.cpp 2186
Vaega N6: Fa'aaoga le fa'asino pe a uma ona gaioi
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);
}
....
}
Lapataiga a le PVS-Studio: V522 [CWE-476] E ono tupu le fa'ai'uga ole fa'ailoga ole 'ProgClone'. Micompilation.cpp 601
I le amataga o se faʻailoga atamai ProgClone taofia le umiaina o le mea faitino:
BD.setNewProgram(std::move(ProgClone));
O le mea moni, i le taimi nei ProgClone o se fa'ailo null. O le mea lea, e tatau ona tupu se fa'ailoga fa'ailo i lalo ifo:
Function *NewF = ProgClone->getFunction(MisCompFunctions[i].first);
Ae, o le mea moni, e le tupu lenei mea! Manatua o le matasele e leʻi faia moni.
I le amataga o le koneteina Miscompiled Functions kilia:
MiscompiledFunctions.clear();
O le isi, o le tele o lenei atigipusa o loʻo faʻaaogaina i le tulaga matasele:
for (unsigned i = 0, e = MisCompFunctions.size(); i != e; ++i) {
E faigofie ona iloa e le o amataina le matasele. Ou te manatu o lenei foi o se pusa ma o le code e tatau ona tusi ese.
E foliga mai ua tatou fetaiaʻi ma lenā vaega taʻutaʻua o mea sesē! E ufiufi e le tasi mea sese le isi :).
Vaega N7: Fa'aaoga le fa'asino pe a uma ona gaioi
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;
}
....
}
Lapataiga a le PVS-Studio: V522 [CWE-476] Fa'ate'a le fa'asinomaga ole 'Su'ega' e ono tupu. Micompilation.cpp 709
Toe tutusa le tulaga. I le taimi muamua, o mea o loʻo i totonu o le mea e faʻafefe, ona faʻaaogaina lea e pei e leai se mea na tupu. Ou te vaʻaia lenei tulaga e sili atu ma sili atu i le polokalame code pe a uma le faʻaogaina o semantics i le C ++. O le mea lea ou te fiafia ai i le gagana C++! E tele ma sili atu auala fou e fana ai lou lava vae. O le PVS-Studio analyzer o le a iai pea galuega :).
Vaega N8: Null pointer
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);
}
Lapataiga a le PVS-Studio: V522 [CWE-476] Fa'ate'aina le fa'asinoala 'ituaiga' e ono tupu. PrettyFunctionDumper.cpp 233
I le fa'aopoopoina i fa'atonu mea sese, e masani ona le fa'ata'ita'iina galuega fa'apipi'i lolomi. O loo i ai se mataupu faapena i o tatou luma. O loʻo faʻatali le galuega mo le tagata faʻaoga, o ia, nai lo le foia o ona faʻafitauli, o le a faʻamalosia e faʻaleleia.
Tauagavale:
if (Type)
Type->dump(*this);
else
Printer << "<unknown-type>";
Vaega N9: Null pointer
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());
....
}
Lapataiga a le PVS-Studio: V522 [CWE-476] E ono tupu le fa'ai'uga o le fa'ailo 'Ty'. SearchableTableEmitter.cpp 614
Ou te manatu o loʻo manino mea uma ma e le manaʻomia se faʻamatalaga.
Vaega N10: Fa'ailoga
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-Studio lapataiga:
E leai se aoga i le tofiaina o se fesuiaiga ia te ia lava. E foliga mai na latou mananao e tusi:
Identifier->Type = Question->Type;
Vaega N11: Ta'otoga masalomia
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-Studio lapataiga:
O loʻo i ai se tagata faʻatautaia masalosalo i le amataga malologa. Na galo ia te oe e tusi se isi mea iinei?
Vaega N12: Siakiina se fa'asinoala pe a mae'a fa'aleaogaina
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-Studio lapataiga:
Указатель Callee i le amataga e dereference i le taimi e valaau ai le galuega mauaTTI.
Ona aliali mai lea e tatau ona siaki lenei faʻailoga mo le tutusa nullptr:
if (!Callee || Callee->isDeclaration())
Ae ua tuai tele…
Pepa N13 - N...: Siakiina se fa'ailoga pe a uma ona fa'aleaogaina
O le tulaga na talanoaina i le vaega muamua o le code fragment e le tulaga ese. E aliali mai iinei:
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()) { // <=
....
}
Lapataiga a le PVS-Studio: V595 [CWE-476] O le 'CalleeFn' fa'asino na fa'aaoga a'o le'i fa'amaonia e le nullptr. Siaki laina: 1079, 1081. SimplifyLibCalls.cpp 1079
Ma iinei:
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()); // <=
....
}
Lapata'iga PVS-Studio: V595 [CWE-476] O le 'ND' fa'asino na fa'aaoga a'o le'i fa'amaonia mai le nullptr. Siaki laina: 532, 534. SemaTemplateInstantiateDecl.cpp 532
Ma iinei:
- V595 [CWE-476] O le 'U' fa'asino na fa'aaoga a'o le'i fa'amaonia e le nullptr. Siaki laina: 404, 407. DWARFormValue.cpp 404
- V595 [CWE-476] O le 'ND' pointer na fa'aaogaina a'o le'i fa'amaonia e le nullptr. Siaki laina: 2149, 2151. SemaTemplateInstantiate.cpp 2149
Ona ou le fiafia ai lea i le suesueina o lapataiga ma le numera V595. O lea ou te le iloa pe sili atu mea sese tutusa e ese mai i mea o loʻo lisiina iinei. E foliga mai e iai.
Vaega N17, N18: Sifi masalomia
static inline bool processLogicalImmediate(uint64_t Imm, unsigned RegSize,
uint64_t &Encoding) {
....
unsigned Size = RegSize;
....
uint64_t NImms = ~(Size-1) << 1;
....
}
PVS-Studio lapataiga:
Atonu e le o se pusa ma o le code e galue tonu e pei ona fuafuaina. Ae e manino lava o se nofoaga sili ona masalomia ma e tatau ona siaki.
Se'i tatou fai atu le fesuiaiga fua e tutusa ma le 16, ona fuafua ai lea e le tusitala o le code e maua i se fesuiaiga NImms uiga:
1111111111111111111111111111111111111111111111111111111111100000
Ae ui i lea, o le mea moni o le taunuuga o le a:
0000000000000000000000000000000011111111111111111111111111100000
O le mea moni o faʻatusatusaga uma e tupu i le faʻaaogaina o le 32-bit unsigned type. Ma naʻo le taimi lena, o lenei ituaiga 32-bit e leʻi faʻailogaina o le a faʻalauteleina faʻalautele i uint64_t. I lenei tulaga, o le pito sili ona taua o le a leai.
E mafai ona e faaleleia le tulaga e pei o lenei:
uint64_t NImms = ~static_cast<uint64_t>(Size-1) << 1;
Tulaga tutusa: V629 [CWE-190] Mafaufau e asiasia le faaupuga 'Immr << 6'. Siitia siisii o le tau 32-bit fa'atasi ai ma se fa'alautelega mulimuli ane i le ituaiga 64-bit. AArch64AddressingModes.h 269
Vaega N19: Ua misi upu autu isi?
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-Studio lapataiga:
E leai se mea sese iinei. Talu mai lena taimi-poloka o le muamua if faaiuina i faaauau pea, ona le afaina lea, o loʻo i ai se upu autu isi pe leai. Po o le a lava le auala e galue tutusa le code. Ua misia lava isi faia le code sili atu ona le malamalama ma matautia. Afai i le lumanai faaauau pea mou atu, o le a amata ona galue le code e matua ese lava. I lo'u manatu e sili ona faaopoopo isi.
Vaega N20: Fa fa'ailoga o le ituaiga tutusa
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 lapataiga:
- V655 [CWE-480] O manoa na tu'ufa'atasia ae le'o fa'aaogaina. Mafaufau e asiasia le 'Result + Name.str()' fa'aaliga. Faailoga.cpp 32
- V655 [CWE-480] O manoa na tu'ufa'atasia ae le'o fa'aaogaina. Mafaufau e asiasia le 'I'uga + "(ObjC Vasega)" + Name.str()' fa'aaliga. Faailoga.cpp 35
- V655 [CWE-480] O manoa na tu'ufa'atasia ae le'o fa'aaogaina. Mafaufau e asiasia le 'Result + "(ObjC Class EH) " + Name.str()' fa'aaliga. Faailoga.cpp 38
- V655 [CWE-480] O manoa na tu'ufa'atasia ae le'o fa'aaogaina. Mafaufau e asiasia le 'Result + "(ObjC IVar)" + Name.str()' fa'aaliga. Faailoga.cpp 41
I se faʻalavelave, o le + operator e faʻaaogaina nai lo le += operator. O le taunuuga o mamanu e leai se uiga.
Vaega N21: Amioga le fa'amalamalamaina
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();
}
}
}
Taumafai e su'e oe lava le code matautia. Ma o se ata lenei e faʻalavelave ai le mafaufau ina ia le vave tilotilo i le tali:
PVS-Studio lapataiga:
Laina fa'afitauli:
FeaturesMap[Op] = FeaturesMap.size();
Afai elemene Op e le maua, ona faia lea o se elemene fou i le faafanua ma tusia ai iina le numera o elemene i lenei faafanua. E le o iloa pe o le a valaʻau le galuega fua i luma po'o le mae'a ona fa'aopoopoina se elemene fou.
Vaega N22-N24: Tofiga fai fai
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-Studio lapataiga:
Ou te manatu e leai se mea sese moni iinei. Na'o se tofiga faifaipea e le mana'omia. Ae ose mea sese.
E faapena foi:
- V519 [CWE-563] O le fesuiaiga o le 'B.NDesc' e fa'alua fa'alua ona tu'u fa'asologa. Atonu o se mea sese lea. Siaki laina: 1488, 1489. llvm-nm.cpp 1489
- V519 [CWE-563] O le fesuiaiga e tuʻuina atu faʻalua faʻalua faʻasolosolo. Atonu o se mea sese lea. Siaki laina: 59, 61. coff2yaml.cpp 61
Vaega N25-N27: Toe fa'aopoopoina
Se'i o tatou va'ava'ai i se fa'aliliuga la'ititi la'ititi o le toe tofiaina.
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;
....
}
Lapataiga a le PVS-Studio: V519 [CWE-563] O le fesuiaiga o le 'Alignment' o lo'o tu'uina atu fa'alua fa'asolosolo. Atonu o se mea sese lea. Siaki laina: 1158, 1160. LoadStoreVectorizer.cpp 1160
Ose code uiga ese lea e foliga mai o loʻo i ai se mea sese. I le amataga, fesuiaiga gatasi o se tau e tofia e fuafua i le tulaga. Ona toe tupu lea o le tofiga, ae o le taimi nei e aunoa ma se siaki.
E mafai ona va'aia tulaga fa'apenei:
- V519 [CWE-563] O le 'Aafiaga' fesuia'i e tu'u fa'alua fa'alua fa'asologa. Atonu o se mea sese lea. Siaki laina: 152, 165. WebAssemblyRegStackify.cpp 165
- V519 [CWE-563] O le fesuiaiga o le 'ExpectNoDerefChunk' e fa'alua ona tu'u fa'alua fa'asologa. Atonu o se mea sese lea. Siaki laina: 4970, 4973. SemaType.cpp 4973
Vaega N28: Tulaga moni i taimi uma
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-Studio lapataiga:
E le talafeagai le siaki. Fesuia'i NextByte e le tutusa i taimi uma ma le tau 0x90, lea e mulimuli mai i le siaki muamua. O se ituaiga o mea sese.
Vaega N29 - N...: Tulaga moni/sese i taimi uma
O loʻo tuʻuina atu e le tagata suʻesuʻe le tele o lapataiga o le tulaga atoa (
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-Studio lapataiga:
Ole 0xE faifaipea ole tau ole 14 ile tesimale. Su'ega RegNo == 0xe e le talafeagai aua afai Numera Numera > 13, ona fa'auma lea o le fa'atinoga.
E tele isi lapataiga ma ID V547 ma V560, ae pei o
O le a ou tuʻuina atu ia te oe se faʻataʻitaʻiga pe aisea e le manaia ai le suʻesuʻeina o nei faʻaoso. E matua sa'o lava le tagata su'esu'e i le tu'uina atu o se lapataiga mo le code lea. Ae e le o se mea sese lea.
bool UnwrappedLineParser::parseBracedList(bool ContinueOnSemicolons,
tok::TokenKind ClosingBraceKind) {
bool HasError = false;
....
HasError = true;
if (!ContinueOnSemicolons)
return !HasError;
....
}
PVS-Studio Lapataiga: V547 [CWE-570] Fa'amatalaga '!HasError' e sese i taimi uma. UnwrappedLineParser.cpp 1635
Vaega N30: Toe foʻi masalomia
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-Studio lapataiga:
O se mea sese poʻo se metotia faʻapitoa e faʻamoemoe e faʻamatalaina se mea i tagata fai polokalame o loʻo faitauina le code. O lenei mamanu e le faʻamatalaina se mea ia te aʻu ma foliga masalosalo tele. E sili le aua le tusia fa'apea :).
Lelava? Ona o'o lea i le taimi e fai ai le lauti po'o le kofe.
Fa'aletonu ua iloa e su'esu'ega fou
Ou te manatu ua lava le 30 faʻagaioiga o suʻesuʻega tuai. Se'i o tatou va'ai nei po'o a ni mea manaia e mafai ona maua i fa'ama'i fou na fa'aalia i le su'esu'ega mulimuli ane
Vaega N31: Fa'ailoga e le mafai ona aapa atu
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-Studio lapataiga:
E pei ona e vaʻaia, o lala uma e lua o le tagata faʻatautaia if fa'ai'u ile telefoni ile fa'afoe foʻi. E tusa ai, o le koneteina CtorDtorsByPriority o le a le mafai lava ona kilia.
Vaega N32: Fa'ailoga e le mafai ona aapa atu
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;
}
Lapataiga PVS-Studio: V779 [CWE-561] Fa'ailoga e le mafai ona maua. E ono iai se mea sese. LLParser.cpp 835
Tulaga manaia. Se'i o tatou va'ai muamua i le nofoaga lea:
return ParseTypeIdEntry(SummaryID);
break;
I le tepa muamua, e foliga mai e leai se mea sese iinei. E foliga mai o le tagata faafoe malologa o lo'o i ai se isi fa'aopoopo iinei, ma e mafai lava ona e tapeina. Ae ui i lea, e le o mea uma e faigofie.
E tuʻuina atu e le suʻega se lapataiga i luga o laina:
Lex.setIgnoreColonInIdentifiers(false);
return false;
Ma e moni lava, o lenei code e le mafai ona maua. O mataupu uma i totonu suiga fa'ai'u ile telefoni mai le fa'afoe foʻi. Ma o lea ua leai se mafaufau na o oe malologa e foliga mai e le afaina tele! Masalo o se tasi o lala e tatau ona muta i malologa, e le o luga foʻi?
Vaega N33: Toe seti fa'afuase'i o pito maualuluga
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-Studio lapataiga:
Faamolemole ia matau o le galuega getStubAlignment toe faafoi ituaiga lē saini. Sei o tatou fuafua le tau o le faʻamatalaga, ma le manatu o le galuega e toe faʻafoʻi le tau 8:
~(getStubAlignment() - 1)
~(8u-1)
0xFFFFFFFF8u
Ia matau o le fesuiaiga Tele Fa'amaumauga ei ai se ituaiga 64-bit e le'i sainia. E aliali mai pe a fa'atino le Fa'atonuga & 0xFFFFFFF8u fa'agaioiga, o le a toe fa'afo'i uma le tolusefulu-lua pa'u maualuga i le zero. E foliga mai, e le o le mea lea na manaʻo ai le fai polokalame. Ou te masalo na ia manaʻo e faʻatatau: DataSize & 0xFFFFFFFFFFFFFFF8u.
Ina ia foia le mea sese, e tatau ona e tusia lenei:
DataSize &= ~(static_cast<uint64_t>(getStubAlignment()) - 1);
A faʻapea:
DataSize &= ~(getStubAlignment() - 1ULL);
Vaega N34: Fa'alilolilo ituaiga lafo
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-Studio lapataiga:
E fa'aogaina le tu'i fa'ama'oti e 'alofia ai le so'amu pe a fa'atele ituaiga fesuiaiga int. Ae ui i lea, o le tu'i fa'ailoga manino iinei e le puipuia mai le lolovaia. Muamua, o le a faʻateleina fesuiaiga, ma naʻo le 32-bit iʻuga o le faʻateleina o le a faʻalauteleina i le ituaiga
Vaega N35: Ua le mafai ona kopi ma faapipii
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;
}
....
}
O lenei su'esu'ega manaia fou e iloa ai tulaga na kopiina ai se fasi code ma ua amata ona suia nisi o igoa i totonu, ae i se tasi nofoaga latou te le'i faasa'oina.
Faamolemole ia matau o le poloka lona lua na latou suia Op0 i Op1. Ae i se tasi nofoaga latou te lei faaleleia. E foliga mai e tatau ona tusia e pei o lenei:
if (!match(Op1, m_PosZeroFP()) && isKnownNeverNaN(Op1, &TLI)) {
I.setOperand(1, ConstantFP::getNullValue(Op1->getType()));
return &I;
}
Vaega N36: Fenumia'i Fesuia'i
struct Status {
unsigned Mask;
unsigned Mode;
Status() : Mask(0), Mode(0){};
Status(unsigned Mask, unsigned Mode) : Mask(Mask), Mode(Mode) {
Mode &= Mask;
};
....
};
PVS-Studio lapataiga:
E matua matautia lava le tuuina atu o finauga tau galuega i igoa tutusa ma tagata o le vasega. E matua faigofie lava ona fenumiai. O loo i ai se mataupu faapena i o tatou luma. E le talafeagai lenei faaupuga:
Mode &= Mask;
E sui le finauga o galuega. Pau lava lena. O lenei finauga ua le toe faaaogaina. Atonu na tatau ona e tusia e pei o lenei:
Status(unsigned Mask, unsigned Mode) : Mask(Mask), Mode(Mode) {
this->Mode &= Mask;
};
Vaega N37: Fenumia'i Fesuia'i
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;
}
Lapataiga PVS-Studio: V1001 [CWE-563] O le 'Lapo'a' fesuia'i ua tofia ae e le'o fa'aaogaina i le faaiuga o le galuega. Object.cpp 424
E talitutusa le tulaga ma le tulaga muamua. E tatau ona tusia:
this->Size += this->EntrySize;
Vaega N38-N47: Ua galo ia i latou le siakiina o le faasino igoa
I le taimi muamua, na matou vaʻavaʻai i faʻataʻitaʻiga o faʻamaʻi faʻamaʻi
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()); // <=
....
}
Lapata'iga PVS-Studio: V1004 [CWE-476] O le 'Ptr' fa'ailoga sa fa'aoga le saogalemu ina ua uma ona fa'amaonia e le nullptr. Siaki laina: 729, 738. TargetTransformInfoImpl.h 738
Fesuiaiga Ptr atonu e tutusa nullptr, e pei ona molimauina e le siaki:
if (Ptr != nullptr)
Ae ui i lea, i lalo ifo o lenei faʻailoga e faʻaaogaina e aunoa ma se siaki muamua:
auto PtrSizeBits = DL.getPointerTypeSizeInBits(Ptr->getType());
Seʻi o tatou iloiloina se isi tulaga faapena.
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(); // <=
....
}
Lapataiga a le PVS-Studio: V1004 [CWE-476] O le 'FD' fa'ailoga sa fa'aoga le saogalemu ina ua mae'a fa'amaonia i le nullptr. Siaki laina: 3228, 3231. CGDebugInfo.cpp 3231
Fa'alogo lelei i le fa'ailoga FD. Ou te mautinoa o loʻo manino le faʻafitauli ma e leai se faʻamatalaga faʻapitoa e manaʻomia.
Ma le isi:
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()); // <=
....
}
Lapataiga a le PVS-Studio: V1004 [CWE-476] O le 'PtrTy' fa'ailoga sa fa'aoga le saogalemu ina ua mae'a fa'amaonia i le nullptr. Siaki laina: 960, 965. InterleavedLoadCombinePass.cpp 965
E faapefea ona puipuia oe mai ia mea sese? Faʻalogo atili ile Code-Review ma faʻaoga le PVS-Studio static analyzer e siaki ai lau code.
E leai se aoga i le taʻua o isi vaega faʻailoga ma mea sese o lenei ituaiga. O le a ou tuua na o se lisi o lapataiga i le tusiga:
- V1004 [CWE-476] O le 'Expr' fa'asino na fa'aoga le saogalemu ina ua uma ona fa'amaonia e le nullptr. Siaki laina: 1049, 1078. DebugInfoMetadata.cpp 1078
- V1004 [CWE-476] O le 'PI' fa'asino na fa'aoga le saogalemu ina ua uma ona fa'amaonia e le nullptr. Siaki laina: 733, 753. LegacyPassManager.cpp 753
- V1004 [CWE-476] O le 'StatepointCall' fa'ailoga sa fa'aogaina le saogalemu ina ua uma ona fa'amaonia i le nullptr. Siaki laina: 4371, 4379. Verifier.cpp 4379
- V1004 [CWE-476] O le 'RV' fa'ailoga sa fa'aogaina le saogalemu ina ua uma ona fa'amaonia e le nullptr. Siaki laina: 2263, 2268. TGParser.cpp 2268
- V1004 [CWE-476] O le 'CalleeFn' na fa'aoga le saogalemu ina ua mae'a fa'amaonia i le nullptr. Siaki laina: 1081, 1096. SimplifyLibCalls.cpp 1096
- V1004 [CWE-476] O le 'TC' fa'ailoga sa fa'aogaina le saogalemu ina ua uma ona fa'amaonia e le nullptr. Siaki laina: 1819, 1824. Driver.cpp 1824
Vaega N48-N60: E le taua, ae o se fa'aletonu (atonu e le mafai ona manatua)
std::unique_ptr<IRMutator> createISelMutator() {
....
std::vector<std::unique_ptr<IRMutationStrategy>> Strategies;
Strategies.emplace_back(
new InjectorIRStrategy(InjectorIRStrategy::getDefaultOps()));
....
}
PVS-Studio lapataiga:
E faaopoopo se elemene i le pito o se atigipusa pei std::vector > e le mafai ona e tusitusi xxx.push_back(X fou), talu ai e leai se liua manino mai X* в std::tulaga_ptr.
O se fofo masani o le tusitusi xxx.emplace_back(X fou)talu ona tuufaatasia: metotia emplace_back fausia sa'o se elemene mai ana finauga ma mafai ai ona fa'aoga fau fau.
E le saogalemu. Afai ua tumu le vector, ona toe fa'asoaina lea o le manatua. Atonu e le manuia le fa'agaioiga o le toe fa'avasegaina o manatua, ma mafua ai ona lafo se fa'alavelave std::bad_alloc. I lenei tulaga, o le a leiloa le faʻailoga ma o le mea na faia e le mafai lava ona tapeina.
O se fofo saogalemu o le fatuina unique_ptrlea o le a umia le faʻailoga aʻo leʻi taumafai le vector e toe faʻavasega manatua:
xxx.push_back(std::unique_ptr<X>(new X))
Talu mai le C++ 14, e mafai ona e faʻaogaina 'std::make_unique':
xxx.push_back(std::make_unique<X>())
O lenei ituaiga o faaletonu e le taua mo le LLVM. Afai e le mafai ona tuʻuina atu le manatua, o le a tuʻu lava le tuʻufaʻatasia. Ae ui i lea, mo talosaga e umi
O lea la, e ui lava o lenei tulafono e le o se faʻamataʻu aoga i le LLVM, na ou iloa e aoga le talanoa e uiga i lenei mamanu sese ma o le PVS-Studio analyzer ua aʻoaʻoina e iloa ai.
O isi lapataiga o lenei ituaiga:
- V1023 [CWE-460] E fa'aopoopoina le fa'ailoga e aunoa ma le pule ile koneteina 'Passes' ile auala 'emplace_back'. O le a tupu se lepa manatua pe a iai se tuusaunoaga. PassManager.h 546
- V1023 [CWE-460] E fa'aopoopoina le fa'asino e aunoa ma le pule ile koneteina 'AA' ile 'emplace_back' auala. O le a tupu se lepa manatua pe a iai se tuusaunoaga. AliasAnalysis.h 324
- V1023 [CWE-460] E fa'aopoopoina le fa'ailoga e aunoa ma le pule ile koneteina 'Entries' ile auala 'emplace_back'. O le a tupu se lepa manatua pe a iai se tuusaunoaga. DWARFDebugFrame.cpp 519
- V1023 [CWE-460] E fa'aopoopoina le fa'asino e aunoa ma le pule ile koneteina 'AllEdges' ile auala 'emplace_back'. O le a tupu se lepa manatua pe a iai se tuusaunoaga. CFGMST.h 268
- V1023 [CWE-460] E fa'aopoopoina le fa'ailoga e aunoa ma le pule ile koneteina 'VMaps' ile auala 'emplace_back'. O le a tupu se lepa manatua pe a iai se tuusaunoaga. SimpleLoopUnswitch.cpp 2012
- V1023 [CWE-460] Ua fa'aopoopoina le fa'asino e aunoa ma le pule ile koneteina 'Fa'amaumauga' ile 'emplace_back' auala. O le a tupu se lepa manatua pe a iai se tuusaunoaga. FDRLogBuilder.h 30
- V1023 [CWE-460] Ua fa'aopoopoina le fa'ailoga e aunoa ma le pule ile koneteina 'PendingSubmodules' ile auala 'emplace_back'. O le a tupu se lepa manatua pe a iai se tuusaunoaga. ModuleMap.cpp 810
- V1023 [CWE-460] E fa'aopoopoina le fa'asino e aunoa ma le pule ile koneteina 'mea' ile auala 'emplace_back'. O le a tupu se lepa manatua pe a iai se tuusaunoaga. DebugMap.cpp 88
- V1023 [CWE-460] E fa'aopoopoina le fa'asino e aunoa ma le pule ile koneteina 'Ta'iala' ile auala 'emplace_back'. O le a tupu se lepa manatua pe a iai se tuusaunoaga. llvm-isel-fuzzer.cpp 60
- V1023 [CWE-460] Ua fa'aopoopoina le fa'ailoga e aunoa ma le pule ile koneteina 'Modifiers' ile auala 'emplace_back'. O le a tupu se lepa manatua pe a iai se tuusaunoaga. llvm-stress.cpp 685
- V1023 [CWE-460] Ua fa'aopoopoina le fa'ailoga e aunoa ma le pule ile koneteina 'Modifiers' ile auala 'emplace_back'. O le a tupu se lepa manatua pe a iai se tuusaunoaga. llvm-stress.cpp 686
- V1023 [CWE-460] Ua fa'aopoopoina le fa'ailoga e aunoa ma le pule ile koneteina 'Modifiers' ile auala 'emplace_back'. O le a tupu se lepa manatua pe a iai se tuusaunoaga. llvm-stress.cpp 688
- V1023 [CWE-460] Ua fa'aopoopoina le fa'ailoga e aunoa ma le pule ile koneteina 'Modifiers' ile auala 'emplace_back'. O le a tupu se lepa manatua pe a iai se tuusaunoaga. llvm-stress.cpp 689
- V1023 [CWE-460] Ua fa'aopoopoina le fa'ailoga e aunoa ma le pule ile koneteina 'Modifiers' ile auala 'emplace_back'. O le a tupu se lepa manatua pe a iai se tuusaunoaga. llvm-stress.cpp 690
- V1023 [CWE-460] Ua fa'aopoopoina le fa'ailoga e aunoa ma le pule ile koneteina 'Modifiers' ile auala 'emplace_back'. O le a tupu se lepa manatua pe a iai se tuusaunoaga. llvm-stress.cpp 691
- V1023 [CWE-460] Ua fa'aopoopoina le fa'ailoga e aunoa ma le pule ile koneteina 'Modifiers' ile auala 'emplace_back'. O le a tupu se lepa manatua pe a iai se tuusaunoaga. llvm-stress.cpp 692
- V1023 [CWE-460] Ua fa'aopoopoina le fa'ailoga e aunoa ma le pule ile koneteina 'Modifiers' ile auala 'emplace_back'. O le a tupu se lepa manatua pe a iai se tuusaunoaga. llvm-stress.cpp 693
- V1023 [CWE-460] Ua fa'aopoopoina le fa'ailoga e aunoa ma le pule ile koneteina 'Modifiers' ile auala 'emplace_back'. O le a tupu se lepa manatua pe a iai se tuusaunoaga. llvm-stress.cpp 694
- V1023 [CWE-460] E fa'aopoopoina le fa'ailoga e aunoa ma le pule ile koneteina 'Operands' ile auala 'emplace_back'. O le a tupu se lepa manatua pe a iai se tuusaunoaga. GlobalISelEmitter.cpp 1911
- V1023 [CWE-460] E fa'aopoopoina le fa'ailoga e aunoa ma le pule ile koneteina 'Stash' ile auala 'emplace_back'. O le a tupu se lepa manatua pe a iai se tuusaunoaga. GlobalISelEmitter.cpp 2100
- V1023 [CWE-460] E fa'aopoopoina le fa'ailoga e aunoa ma le pule ile koneteina 'Matchers' ile auala 'emplace_back'. O le a tupu se lepa manatua pe a iai se tuusaunoaga. GlobalISelEmitter.cpp 2702
iʻuga
Na ou tuuina atu le 60 lapataiga i le aofaiga atoa ona taofi lea. E i ai isi fa'aletonu e iloa e le PVS-Studio analyzer i le LLVM? Ioe, ua ou maua. Ae ui i lea, ina ua ou tusia ni vaega o le code mo le tusiga, ua leva le afiafi, pe sili atu foi i le po, ma na ou filifili ai ua oo i le taimi e taʻua ai o se aso.
Ou te faʻamoemoe na e mauaina le manaia ma e te manaʻo e faʻataʻitaʻi le PVS-Studio analyzer.
E mafai ona e sii maia le su'esu'e ma maua le ki maina i
O le mea pito sili ona taua, fa'aaoga fa'ata'ita'iga masani. E tasi le taimi siaki, faʻatinoina e matou ina ia faʻasalalau le metotia o suʻesuʻega faʻapitoa ma PVS-Studio e le o se faʻaaliga masani.
Manuia le fa'aleleia o le lelei ma le fa'amaoni o lau code!
Afai e te manaʻo e faʻasoa lenei tusiga i se faʻalogo Igilisi, faʻamolemole faʻaoga le fesoʻotaʻiga faʻaliliu: Andrey Karpov.
puna: www.habr.com