{"id":32660,"date":"2019-10-31T21:48:15","date_gmt":"2019-10-31T18:48:15","guid":{"rendered":"https:\/\/prohoster.info\/blog\/nahodim-bagi-v-llvm-8-s-pomoshhyu-analizatora-pvs-studio\/"},"modified":"2019-10-31T21:48:15","modified_gmt":"2019-10-31T18:48:15","slug":"nahodim-bagi-v-llvm-8-s-pomoshhyu-analizatora-pvs-studio","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/nahodim-bagi-v-llvm-8-s-pomoshhyu-analizatora-pvs-studio","title":{"rendered":"\ufeffWir finden Fehler in LLVM 8 mit dem PVS-Studio-Analyzer","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"\ufeff\u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0431\u0430\u0433\u0438 \u0432 LLVM 8 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio\" src=\"\/wp-content\/uploads\/2019\/04\/2aa7ded47dcf7eed52c6828e44910c39.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n\u041f\u0440\u043e\u0448\u043b\u043e \u0431\u043e\u043b\u0435\u0435 \u0434\u0432\u0443\u0445 \u043b\u0435\u0442 \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 LLVM \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0448\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0434\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043f\u043e \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u044e \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0438 \u043d\u0430\u0439\u0434\u0451\u043c \u043d\u043e\u0432\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0440\u0435\u043b\u0438\u0437\u0435 LLVM 8.0.0.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>\u0421\u0442\u0430\u0442\u044c\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430<\/h2>\n<p>\n\u0415\u0441\u043b\u0438 \u0447\u0435\u0441\u0442\u043d\u043e, \u043c\u043d\u0435 \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e. \u041d\u0435\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e \u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0443\u0436\u0435 \u043d\u0435\u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0108\/\">1<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0155\/\">2<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0446\/\">3<\/a><\/noindex>). \u041b\u0443\u0447\u0448\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e \u0447\u0442\u043e-\u0442\u043e \u043d\u043e\u0432\u043e\u0435, \u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u0432\u044b\u0431\u043e\u0440\u0430.<\/p>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f LLVM \u0438\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f <noindex><a rel=\"nofollow\" href=\"https:\/\/clang-analyzer.llvm.org\/\">Clang Static Analyzer<\/a><\/noindex>, \u0443 \u043d\u0430\u0441 \u0432 \u043f\u043e\u0447\u0442\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0442\u0438\u043f\u0430:<\/p>\n<p><i>\u0421\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f Clang Static Analyzer \u043d\u0430\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438! \u041c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c PVS-Studio \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f. Clang \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0448\u0438\u0431\u043e\u043a, \u0447\u0435\u043c \u0440\u0430\u043d\u044c\u0448\u0435 \u0438 \u0434\u043e\u0433\u043e\u043d\u044f\u0435\u0442 \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c PVS-Studio. \u0427\u0442\u043e \u0432\u044b \u043f\u0440\u043e \u044d\u0442\u043e \u0434\u0443\u043c\u0430\u0435\u0442\u0435?<\/i><\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e \u043c\u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0432 \u0434\u0443\u0445\u0435:<\/p>\n<p><b>\u041c\u044b \u0442\u043e\u0436\u0435 \u043d\u0435 \u0441\u0438\u0434\u0438\u043c \u0431\u0435\u0437 \u0434\u0435\u043b\u0430!<\/b> \u041c\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio. \u0422\u0430\u043a \u0447\u0442\u043e \u043d\u0435 \u0432\u043e\u043b\u043d\u0443\u0439\u0442\u0435\u0441\u044c, \u043c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043a\u0430\u043a \u0438 \u0440\u0430\u043d\u044c\u0448\u0435.<\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u044d\u0442\u043e \u043f\u043b\u043e\u0445\u043e\u0439 \u043e\u0442\u0432\u0435\u0442. \u0412 \u043d\u0451\u043c \u043d\u0435\u0442 proof-\u043e\u0432. \u0418 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0435\u0439\u0447\u0430\u0441 \u044f \u043f\u0438\u0448\u0443 \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e. \u0418\u0442\u0430\u043a, \u043f\u0440\u043e\u0435\u043a\u0442 LLVM \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0440\u0430\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d \u0438 \u0432 \u043d\u0451\u043c \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u0435\u0439\u0448\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438. \u0422\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438, \u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e. \u042d\u0442\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 Clang Static Analyzer (\u0438\u043b\u0438 \u044d\u0442\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e). \u0410 \u043c\u044b \u043c\u043e\u0436\u0435\u043c. \u041f\u0440\u0438\u0447\u0451\u043c \u044f \u043d\u0430\u0448\u0435\u043b \u0438 \u0432\u044b\u043f\u0438\u0441\u0430\u043b \u0432\u0441\u0435 \u044d\u0442\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0437\u0430 \u043e\u0434\u0438\u043d \u0432\u0435\u0447\u0435\u0440.<\/p>\n<p>\u0410 \u0432\u043e\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0437\u0430\u0442\u044f\u043d\u0443\u043b\u043e\u0441\u044c \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0434\u0435\u043b\u044c. \u041d\u0438\u043a\u0430\u043a \u043d\u0435 \u043c\u043e\u0433 \u0441\u0435\u0431\u044f \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0451 \u044d\u0442\u043e \u043e\u0444\u043e\u0440\u043c\u0438\u0442\u044c \u0432 \u0432\u0438\u0434\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 :).<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043a\u0430\u043a\u0438\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0435 PVS-Studio \u0434\u043b\u044f \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0442\u043e \u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u043e\u0439 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0592\/\">\u0437\u0430\u043c\u0435\u0442\u043a\u043e\u0439<\/a><\/noindex>.<\/p>\n<h2>\u041d\u043e\u0432\u044b\u0435 \u0438 \u0441\u0442\u0430\u0440\u044b\u0435 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438<\/h2>\n<p>\n\u041a\u0430\u043a \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043e, \u043e\u043a\u043e\u043b\u043e \u0434\u0432\u0443\u0445 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u043f\u0440\u043e\u0435\u043a\u0442 LLVM \u0431\u044b\u043b \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0440\u0430\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d, \u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b. \u0422\u0435\u043f\u0435\u0440\u044c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043d\u043e\u0432\u0430\u044f \u043f\u043e\u0440\u0446\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a. \u041f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u043d\u043e\u0432\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438? \u041d\u0430 \u044d\u0442\u043e \u0435\u0441\u0442\u044c 3 \u043f\u0440\u0438\u0447\u0438\u043d\u044b:<\/p>\n<ol>\n<li>\u041f\u0440\u043e\u0435\u043a\u0442 LLVM \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0432 \u043d\u0451\u043c \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u044b\u0439 \u043a\u043e\u0434, \u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439. \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u043e\u043c \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0435\u0441\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438. \u042d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e, \u0430 \u043d\u0435 \u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u044f \u043a \u0441\u043b\u0443\u0447\u0430\u044e. \u041d\u0430\u0448\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043e\u0431\u0449\u0435\u0433\u043e \u0441 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u0434\u0430 \u0438 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e!<\/li>\n<li>\u041c\u044b \u0434\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0438 \u0443\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u0443\u0435\u043c \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u044f\u0432\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043b \u043f\u0440\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u0445.<\/li>\n<li>\u0412 PVS-Studio \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043d\u043e\u0432\u044b\u0435 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0431\u044b\u043b\u043e 2 \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434. \u042f \u0440\u0435\u0448\u0438\u043b \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u0445 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 PVS-Studio.<\/li>\n<\/ol>\n<p><\/p>\n<h2>\u0414\u0435\u0444\u0435\u043a\u0442\u044b, \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430\u043c\u0438, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0432\u0448\u0438\u043c\u0438 2 \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434<\/h2>\n<p>\n<b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N1: Copy-Paste<\/b><\/p>\n<pre><code class=\"cpp\">static bool ShouldUpgradeX86Intrinsic(Function *F, StringRef Name) {\n  if (Name == \"addcarryx.u32\" || \/\/ Added in 8.0\n    ....\n    Name == \"avx512.mask.cvtps2pd.128\" || \/\/ Added in 7.0\n    Name == \"avx512.mask.cvtps2pd.256\" || \/\/ Added in 7.0\n    Name == \"avx512.cvtusi2sd\" || \/\/ Added in 7.0\n    Name.startswith(\"avx512.mask.permvar.\") || \/\/ Added in 7.0     \/\/ &lt;=\n    Name.startswith(\"avx512.mask.permvar.\") || \/\/ Added in 7.0     \/\/ &lt;=\n    Name == \"sse2.pmulu.dq\" || \/\/ Added in 7.0\n    Name == \"sse41.pmuldq\" || \/\/ Added in 7.0\n    Name == \"avx2.pmulu.dq\" || \/\/ Added in 7.0\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v501\/\">V501<\/a><\/noindex> [CWE-570] There are identical sub-expressions &#8216;Name.startswith(\u00abavx512.mask.permvar.\u00bb)&#8217; to the left and to the right of the &#8216;||&#8217; operator. AutoUpgrade.cpp 73<\/p>\n<p>\u0414\u0432\u0430\u0436\u0434\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0438\u043c\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438 \u00abavx512.mask.permvar.\u00bb. \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u044f\u0432\u043d\u043e \u0445\u043e\u0442\u0435\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0435\u0449\u0451, \u043d\u043e \u0437\u0430\u0431\u044b\u043b\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442.<\/p>\n<p><b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N2: \u041e\u043f\u0435\u0447\u0430\u0442\u043a\u0430<\/b><\/p>\n<pre><code class=\"cpp\">enum CXNameRefFlags {\n  CXNameRange_WantQualifier = 0x1,\n  CXNameRange_WantTemplateArgs = 0x2,\n  CXNameRange_WantSinglePiece = 0x4\n};\n\nvoid AnnotateTokensWorker::HandlePostPonedChildCursor(\n    CXCursor Cursor, unsigned StartTokenIndex) {\n  const auto flags = CXNameRange_WantQualifier | CXNameRange_WantQualifier;\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V501 There are identical sub-expressions &#8216;CXNameRange_WantQualifier&#8217; to the left and to the right of the &#8216;|&#8217; operator. CIndex.cpp 7245<\/p>\n<p>\u0418\u0437-\u0437\u0430 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438 \u0434\u0432\u0430\u0436\u0434\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 <i>CXNameRange_WantQualifier<\/i>.<\/p>\n<p><b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N3: \u041f\u0443\u0442\u0430\u043d\u0438\u0446\u0430 \u0441 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432<\/b><\/p>\n<pre><code class=\"cpp\">int PPCTTIImpl::getVectorInstrCost(unsigned Opcode, Type *Val, unsigned Index) {\n  ....\n  if (ISD == ISD::EXTRACT_VECTOR_ELT &amp;&amp; Index == ST-&gt;isLittleEndian() ? 1 : 0)\n    return 0;\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v502\/\">V502<\/a><\/noindex> [CWE-783] Perhaps the &#8216;?:&#8217; operator works in a different way than it was expected. The &#8216;?:&#8217; operator has a lower priority than the &#8216;==&#8217; operator. PPCTargetTransformInfo.cpp 404<\/p>\n<p>\u041d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430. \u0414\u0430, \u044f \u0437\u043d\u0430\u044e, \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e \u043a\u0440\u0430\u0441\u043e\u0442\u0435 :).<\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/t\/0064\/\">\u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432<\/a><\/noindex>, \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"cpp\">(ISD == ISD::EXTRACT_VECTOR_ELT &amp;&amp; (Index == ST-&gt;isLittleEndian())) ? 1 : 0<\/code><\/pre>\n<p>\n\u0421 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0434\u043e:<\/p>\n<pre><code class=\"cpp\">(ISD == ISD::EXTRACT_VECTOR_ELT &amp;&amp; Index == ST-&gt;isLittleEndian())<\/code><\/pre>\n<p>\n\u042d\u0442\u043e \u044f\u0432\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, 0\/1 \u0445\u043e\u0442\u0435\u043b\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <i>Index<\/i>. \u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u0434 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043a\u043e\u0431\u043a\u0438 \u0432\u043e\u043a\u0440\u0443\u0433 \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430:<\/p>\n<pre><code class=\"cpp\">if (ISD == ISD::EXTRACT_VECTOR_ELT &amp;&amp; Index == (ST-&gt;isLittleEndian() ? 1 : 0))<\/code><\/pre>\n<p>\n\u041a\u0441\u0442\u0430\u0442\u0438, \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043e\u0447\u0435\u043d\u044c \u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0438 \u043f\u0440\u043e\u0432\u043e\u0446\u0438\u0440\u0443\u0435\u0442 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438. \u0411\u0443\u0434\u044c\u0442\u0435 \u043e\u0447\u0435\u043d\u044c \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b \u0441 \u043d\u0438\u043c \u0438 \u043d\u0435 \u0436\u0430\u0434\u043d\u0438\u0447\u0430\u0439\u0442\u0435 \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0440\u0443\u0433\u043b\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u044f \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0391\/\">\u0437\u0434\u0435\u0441\u044c<\/a><\/noindex>, \u0432 \u0433\u043b\u0430\u0432\u0435 \u00ab\u0411\u043e\u0439\u0442\u0435\u0441\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 ?: \u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0439\u0442\u0435 \u0435\u0433\u043e \u0432 \u043a\u0440\u0443\u0433\u043b\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438\u00bb.<\/p>\n<p><b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N4, N5: \u041d\u0443\u043b\u0435\u0432\u043e\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c<\/b><\/p>\n<pre><code class=\"cpp\">Init *TGParser::ParseValue(Record *CurRec, RecTy *ItemType, IDParseMode Mode) {\n  ....\n  TypedInit *LHS = dyn_cast&lt;TypedInit&gt;(Result);\n  ....\n  LHS = dyn_cast&lt;TypedInit&gt;(\n    UnOpInit::get(UnOpInit::CAST, LHS, StringRecTy::get())\n      -&gt;Fold(CurRec));\n  if (!LHS) {\n    Error(PasteLoc, Twine(\"can't cast '\") + LHS-&gt;getAsString() +\n                    \"' to string\");\n    return nullptr;\n  }\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v522\/\">V522<\/a><\/noindex> [CWE-476] Dereferencing of the null pointer &#8216;LHS&#8217; might take place. TGParser.cpp 2152<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c <i>LHS<\/i> \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0443\u043b\u0435\u0432\u044b\u043c, \u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432\u044b\u0434\u0430\u043d\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f: <i>LHS-&gt;getAsString()<\/i>.<\/p>\n<p>\u042d\u0442\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u0442\u0438\u043f\u043e\u0432\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u044f\u0447\u0435\u0442\u0441\u044f \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u043e\u0448\u0438\u0431\u043e\u043a, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u0445 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442. \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0432\u0435\u0441\u044c \u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u044b\u0439 \u043a\u043e\u0434, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 \u043e\u0448\u0438\u0431\u043e\u043a.<\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f <i>RHS<\/i> \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0430 \u0432 \u043a\u043e\u0434\u0435 \u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435: V522 [CWE-476] Dereferencing of the null pointer &#8216;RHS&#8217; might take place. TGParser.cpp 2186<\/p>\n<p><b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N6: \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f<\/b><\/p>\n<pre><code class=\"cpp\">static Expected&lt;bool&gt;\nExtractBlocks(....)\n{\n  ....\n  std::unique_ptr&lt;Module&gt; ProgClone = CloneModule(BD.getProgram(), VMap);\n  ....\n  BD.setNewProgram(std::move(ProgClone));                                \/\/ &lt;=\n  MiscompiledFunctions.clear();\n\n  for (unsigned i = 0, e = MisCompFunctions.size(); i != e; ++i) {\n    Function *NewF = ProgClone-&gt;getFunction(MisCompFunctions[i].first);  \/\/ &lt;=\n    assert(NewF &amp;&amp; \"Function not found??\");\n    MiscompiledFunctions.push_back(NewF);\n  }\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V522 [CWE-476] Dereferencing of the null pointer &#8216;ProgClone&#8217; might take place. Miscompilation.cpp 601<\/p>\n<p>\u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0443\u043c\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c <i>ProgClone<\/i> \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0451\u0442 \u0432\u043b\u0430\u0434\u0435\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c:<\/p>\n<pre><code class=\"cpp\">BD.setNewProgram(std::move(ProgClone));<\/code><\/pre>\n<p>\n\u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0442\u0435\u043f\u0435\u0440\u044c <i>ProgClone <\/i> \u2014 \u044d\u0442\u043e \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f:<\/p>\n<pre><code class=\"cpp\">Function *NewF = ProgClone-&gt;getFunction(MisCompFunctions[i].first);<\/code><\/pre>\n<p>\n\u041d\u043e, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442! \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0446\u0438\u043a\u043b \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 <i>MiscompiledFunctions<\/i> \u043e\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f:<\/p>\n<pre><code class=\"cpp\">MiscompiledFunctions.clear();<\/code><\/pre>\n<p>\n\u0414\u0430\u043b\u0435\u0435 \u0440\u0430\u0437\u043c\u0435\u0440 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0446\u0438\u043a\u043b\u0430:<\/p>\n<pre><code class=\"cpp\">for (unsigned i = 0, e = MisCompFunctions.size(); i != e; ++i) {<\/code><\/pre>\n<p>\n\u041b\u0435\u0433\u043a\u043e \u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u0446\u0438\u043a\u043b \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f. \u0414\u0443\u043c\u0430\u044e, \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043e\u0448\u0438\u0431\u043a\u0430, \u0438 \u043a\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0438\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.<\/p>\n<p>\u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u043c\u044b \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0438 \u0442\u0443 \u0441\u0430\u043c\u0443\u044e \u0437\u043d\u0430\u043c\u0435\u043d\u0438\u0442\u0443\u044e \u0447\u0451\u0442\u043d\u043e\u0441\u0442\u044c \u043e\u0448\u0438\u0431\u043e\u043a! \u041e\u0434\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043c\u0430\u0441\u043a\u0438\u0440\u0443\u0435\u0442 \u0434\u0440\u0443\u0433\u0443\u044e :).<\/p>\n<p><b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N7: \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f<\/b><\/p>\n<pre><code class=\"cpp\">static Expected&lt;bool&gt; TestOptimizer(BugDriver &amp;BD, std::unique_ptr&lt;Module&gt; Test,\n                                    std::unique_ptr&lt;Module&gt; Safe) {\n  outs() &lt;&lt; \"  Optimizing functions being tested: \";\n  std::unique_ptr&lt;Module&gt; Optimized =\n      BD.runPassesOn(Test.get(), BD.getPassesToRun());\n  if (!Optimized) {\n    errs() &lt;&lt; \" Error running this sequence of passes\"\n           &lt;&lt; \" on the input program!n\";\n    BD.setNewProgram(std::move(Test));                       \/\/ &lt;=\n    BD.EmitProgressBitcode(*Test, \"pass-error\", false);      \/\/ &lt;=\n    if (Error E = BD.debugOptimizerCrash())\n      return std::move(E);\n    return false;\n  }\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V522 [CWE-476] Dereferencing of the null pointer &#8216;Test&#8217; might take place. Miscompilation.cpp 709<\/p>\n<p>\u0412\u043d\u043e\u0432\u044c \u0442\u0430 \u0436\u0435 \u0441\u0430\u043c\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f. \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f, \u0430 \u0437\u0430\u0442\u0435\u043c \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0438 \u0432 \u0447\u0451\u043c \u043d\u0435 \u0431\u044b\u0432\u0430\u043b\u043e. \u042f \u0432\u0441\u0451 \u0447\u0430\u0449\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e \u044d\u0442\u0443 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u0432 \u043a\u043e\u0434\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432 \u0421++ \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f. \u0417\u0430 \u044d\u0442\u043e \u044f \u0438 \u043b\u044e\u0431\u043b\u044e \u044f\u0437\u044b\u043a C++! \u041f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u0441\u0451 \u043d\u043e\u0432\u044b\u0435 \u0438 \u043d\u043e\u0432\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043e\u0442\u0441\u0442\u0440\u0435\u043b\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u043d\u043e\u0433\u0443. \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0443 PVS-Studio \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430 :).<\/p>\n<p><b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N8: \u041d\u0443\u043b\u0435\u0432\u043e\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c<\/b><\/p>\n<pre><code class=\"cpp\">void FunctionDumper::dump(const PDBSymbolTypeFunctionArg &amp;Symbol) {\n  uint32_t TypeId = Symbol.getTypeId();\n  auto Type = Symbol.getSession().getSymbolById(TypeId);\n  if (Type)\n    Printer &lt;&lt; \"&lt;unknown-type&gt;\";\n  else\n    Type-&gt;dump(*this);\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V522 [CWE-476] Dereferencing of the null pointer &#8216;Type&#8217; might take place. PrettyFunctionDumper.cpp 233<\/p>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043e\u0448\u0438\u0431\u043e\u043a, \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u0430\u043a\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0436\u0434\u0451\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0435\u0451 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e:<\/p>\n<pre><code class=\"cpp\">if (Type)\n  Type-&gt;dump(*this);\nelse\n  Printer &lt;&lt; \"&lt;unknown-type&gt;\";<\/code><\/pre>\n<p>\n<b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N9: \u041d\u0443\u043b\u0435\u0432\u043e\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c<\/b><\/p>\n<pre><code class=\"cpp\">void SearchableTableEmitter::collectTableEntries(\n    GenericTable &amp;Table, const std::vector&lt;Record *&gt; &amp;Items) {\n  ....\n  RecTy *Ty = resolveTypes(Field.RecType, TI-&gt;getType());\n  if (!Ty)                                                              \/\/ &lt;=\n    PrintFatalError(Twine(\"Field '\") + Field.Name + \"' of table '\" +\n                    Table.Name + \"' has incompatible type: \" +\n                    Ty-&gt;getAsString() + \" vs. \" +                       \/\/ &lt;=\n                    TI-&gt;getType()-&gt;getAsString());\n   ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V522 [CWE-476] Dereferencing of the null pointer &#8216;Ty&#8217; might take place. SearchableTableEmitter.cpp 614<\/p>\n<p>\u0414\u0443\u043c\u0430\u044e, \u0438 \u0442\u0430\u043a \u0432\u0441\u0451 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0439.<\/p>\n<p><b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N10: \u041e\u043f\u0435\u0447\u0430\u0442\u043a\u0430<\/b><\/p>\n<pre><code class=\"cpp\">bool FormatTokenLexer::tryMergeCSharpNullConditionals() {\n  ....\n  auto &amp;Identifier = *(Tokens.end() - 2);\n  auto &amp;Question = *(Tokens.end() - 1);\n  ....\n  Identifier-&gt;ColumnWidth += Question-&gt;ColumnWidth;\n  Identifier-&gt;Type = Identifier-&gt;Type;                    \/\/ &lt;=\n  Tokens.erase(Tokens.end() - 1);\n  return true;\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v570\/\">V570<\/a><\/noindex> The &#8216;Identifier-&gt;Type&#8217; variable is assigned to itself. FormatTokenLexer.cpp 249<\/p>\n<p>\u041d\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0441\u0430\u043c\u0443 \u0441\u0435\u0431\u0435. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0445\u043e\u0442\u0435\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c:<\/p>\n<pre><code class=\"cpp\">Identifier-&gt;Type = Question-&gt;Type;<\/code><\/pre>\n<p>\n<b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N11: \u041f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 break<\/b><\/p>\n<pre><code class=\"cpp\">void SystemZOperand::print(raw_ostream &amp;OS) const {\n  switch (Kind) {\n    break;\n  case KindToken:\n    OS &lt;&lt; \"Token:\" &lt;&lt; getToken();\n    break;\n  case KindReg:\n    OS &lt;&lt; \"Reg:\" &lt;&lt; SystemZInstPrinter::getRegisterName(getReg());\n    break;\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v622\/\">V622<\/a><\/noindex> [CWE-478] Consider inspecting the &#8216;switch&#8217; statement. It&#8217;s possible that the first &#8216;case&#8217; operator is missing. SystemZAsmParser.cpp 652<\/p>\n<p>\u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <i>break<\/i>. \u041d\u0435 \u0437\u0430\u0431\u044b\u043b\u0438 \u043b\u0438 \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0435\u0449\u0451?<\/p>\n<p><b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N12: \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043f\u043e\u0441\u043b\u0435 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f<\/b><\/p>\n<pre><code class=\"cpp\">InlineCost AMDGPUInliner::getInlineCost(CallSite CS) {\n  Function *Callee = CS.getCalledFunction();\n  Function *Caller = CS.getCaller();\n  TargetTransformInfo &amp;TTI = TTIWP-&gt;getTTI(*Callee);\n\n  if (!Callee || Callee-&gt;isDeclaration())\n    return llvm::InlineCost::getNever(\"undefined callee\");\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v595\/\">V595<\/a><\/noindex> [CWE-476] The &#8216;Callee&#8217; pointer was utilized before it was verified against nullptr. Check lines: 172, 174. AMDGPUInline.cpp 172<\/p>\n<p>\u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c <i>Callee<\/i> \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <i>getTTI<\/i>.<\/p>\n<p>\u0410 \u0437\u0430\u0442\u0435\u043c \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043d\u0430 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e <i>nullptr<\/i>:<\/p>\n<pre><code class=\"cpp\">if (!Callee || Callee-&gt;isDeclaration())<\/code><\/pre>\n<p>\n\u041d\u043e \u0443\u0436\u0435 \u043f\u043e\u0437\u0434\u043d\u043e\u2026<\/p>\n<p><b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N13 \u2014 N&#8230;: \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043f\u043e\u0441\u043b\u0435 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f<\/b><\/p>\n<p>\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u0430\u044f \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u043a\u043e\u0434\u0430 \u043d\u0435 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u0430. \u041e\u043d\u0430 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0437\u0434\u0435\u0441\u044c:<\/p>\n<pre><code class=\"cpp\">static Value *optimizeDoubleFP(CallInst *CI, IRBuilder&lt;&gt; &amp;B,\n                               bool isBinary, bool isPrecise = false) {\n  ....\n  Function *CalleeFn = CI-&gt;getCalledFunction();\n  StringRef CalleeNm = CalleeFn-&gt;getName();                 \/\/ &lt;=\n  AttributeList CalleeAt = CalleeFn-&gt;getAttributes();\n  if (CalleeFn &amp;&amp; !CalleeFn-&gt;isIntrinsic()) {               \/\/ &lt;=\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V595 [CWE-476] The &#8216;CalleeFn&#8217; pointer was utilized before it was verified against nullptr. Check lines: 1079, 1081. SimplifyLibCalls.cpp 1079<\/p>\n<p>\u0418 \u0437\u0434\u0435\u0441\u044c:<\/p>\n<pre><code class=\"cpp\">void Sema::InstantiateAttrs(const MultiLevelTemplateArgumentList &amp;TemplateArgs,\n                            const Decl *Tmpl, Decl *New,\n                            LateInstantiatedAttrVec *LateAttrs,\n                            LocalInstantiationScope *OuterMostScope) {\n  ....\n  NamedDecl *ND = dyn_cast&lt;NamedDecl&gt;(New);\n  CXXRecordDecl *ThisContext =\n    dyn_cast_or_null&lt;CXXRecordDecl&gt;(ND-&gt;getDeclContext());         \/\/ &lt;=\n  CXXThisScopeRAII ThisScope(*this, ThisContext, Qualifiers(),\n                             ND &amp;&amp; ND-&gt;isCXXInstanceMember());     \/\/ &lt;=\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V595 [CWE-476] The &#8216;ND&#8217; pointer was utilized before it was verified against nullptr. Check lines: 532, 534. SemaTemplateInstantiateDecl.cpp 532<\/p>\n<p>\u0418 \u0437\u0434\u0435\u0441\u044c:<\/p>\n<ul>\n<li>V595 [CWE-476] The &#8216;U&#8217; pointer was utilized before it was verified against nullptr. Check lines: 404, 407. DWARFFormValue.cpp 404<\/li>\n<li>V595 [CWE-476] The &#8216;ND&#8217; pointer was utilized before it was verified against nullptr. Check lines: 2149, 2151. SemaTemplateInstantiate.cpp 2149<\/li>\n<\/ul>\n<p>\n\u0410 \u0434\u0430\u043b\u044c\u0448\u0435 \u043c\u043d\u0435 \u0441\u0442\u0430\u043b\u043e \u043d\u0435\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c V595. \u0422\u0430\u043a \u0447\u0442\u043e \u044f \u043d\u0435 \u0437\u043d\u0430\u044e, \u0435\u0441\u0442\u044c \u043b\u0438 \u0435\u0449\u0451 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438, \u043f\u043e\u043c\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0437\u0434\u0435\u0441\u044c. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0435\u0441\u0442\u044c.<\/p>\n<p><b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N17, N18: \u041f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0434\u0432\u0438\u0433<\/b><\/p>\n<pre><code class=\"cpp\">static inline bool processLogicalImmediate(uint64_t Imm, unsigned RegSize,\n                                           uint64_t &amp;Encoding) {\n  ....\n  unsigned Size = RegSize;\n  ....\n  uint64_t NImms = ~(Size-1) &lt;&lt; 1;\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v629\/\">V629<\/a><\/noindex> [CWE-190] Consider inspecting the &#8216;~(Size \u2014 1) &lt;&lt; 1&#8217; expression. Bit shifting of the 32-bit value with a subsequent expansion to the 64-bit type. AArch64AddressingModes.h 260<\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044d\u0442\u043e \u043d\u0435 \u043e\u0448\u0438\u0431\u043a\u0430, \u0438 \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a, \u043a\u0430\u043a \u0438 \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043e. \u041d\u043e \u044d\u0442\u043e \u044f\u0432\u043d\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u0438 \u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c.<\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <i>Size<\/i> \u0440\u0430\u0432\u043d\u0430 16, \u0438 \u0442\u043e\u0433\u0434\u0430 \u0430\u0432\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <i>NImms<\/i> \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435:<\/p>\n<p>1111111111111111111111111111111111111111111111111111111111100000<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435:<\/p>\n<p>0000000000000000000000000000000011111111111111111111111111100000<\/p>\n<p>\u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c 32-\u0431\u0438\u0442\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 unsigned. \u0418 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0442\u0435\u043c, \u044d\u0442\u043e\u0442 32-\u0431\u0438\u0442\u043d\u044b\u0439 \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u0442\u0438\u043f \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u044f\u0432\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d \u0434\u043e <i>uint64_t<\/i>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0442\u0430\u0440\u0448\u0438\u0435 \u0431\u0438\u0442\u044b \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0443\u043b\u0435\u0432\u044b\u043c\u0438.<\/p>\n<p>\u0418\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">uint64_t NImms = ~static_cast&lt;uint64_t&gt;(Size-1) &lt;&lt; 1;<\/code><\/pre>\n<p>\n\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f: V629 [CWE-190] Consider inspecting the &#8216;Immr &lt;&lt; 6&#8217; expression. Bit shifting of the 32-bit value with a subsequent expansion to the 64-bit type. AArch64AddressingModes.h 269<\/p>\n<p><b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N19: \u041f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e <\/b><b><i>else<\/i><\/b><b>?<\/b><\/p>\n<pre><code class=\"cpp\">void AMDGPUAsmParser::cvtDPP(MCInst &amp;Inst, const OperandVector &amp;Operands) {\n  ....\n  if (Op.isReg() &amp;&amp; Op.Reg.RegNo == AMDGPU::VCC) {\n    \/\/ VOP2b (v_add_u32, v_sub_u32 ...) dpp use \"vcc\" token.\n    \/\/ Skip it.\n    continue;\n  } if (isRegOrImmWithInputMods(Desc, Inst.getNumOperands())) {    \/\/ &lt;=\n    Op.addRegWithFPInputModsOperands(Inst, 2);\n  } else if (Op.isDPPCtrl()) {\n    Op.addImmOperands(Inst, 1);\n  } else if (Op.isImm()) {\n    \/\/ Handle optional arguments\n    OptionalIdx[Op.getImmTy()] = I;\n  } else {\n    llvm_unreachable(\"Invalid operand type\");\n  }\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v646\/\">V646<\/a><\/noindex> [CWE-670] Consider inspecting the application&#8217;s logic. It&#8217;s possible that &#8216;else&#8217; keyword is missing. AMDGPUAsmParser.cpp 5655<\/p>\n<p>\u041e\u0448\u0438\u0431\u043a\u0438 \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442. \u0422\u0430\u043a \u043a\u0430\u043a then-\u0431\u043b\u043e\u043a \u043f\u0435\u0440\u0432\u043e\u0433\u043e <i>if<\/i> \u043e\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 <i>continue<\/i>, \u0442\u043e \u043d\u0435 \u0432\u0430\u0436\u043d\u043e, \u0435\u0441\u0442\u044c \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e <i>else <\/i> \u0438\u043b\u0438 \u043d\u0435\u0442. \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0439 <i>else <\/i> \u0434\u0435\u043b\u0430\u0435\u0442 \u043a\u043e\u0434 \u0431\u043e\u043b\u0435\u0435 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u0438 \u043e\u043f\u0430\u0441\u043d\u044b\u043c. \u0415\u0441\u043b\u0438 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c <i>continue <\/i> \u0438\u0441\u0447\u0435\u0437\u043d\u0435\u0442, \u0442\u043e \u043a\u043e\u0434 \u043d\u0430\u0447\u043d\u0451\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443. \u041d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043b\u0443\u0447\u0448\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c <i>else<\/i>.<\/p>\n<p><b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N20: \u0427\u0435\u0442\u044b\u0440\u0435 \u043e\u0434\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0445 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438<\/b><\/p>\n<pre><code class=\"cpp\">LLVM_DUMP_METHOD void Symbol::dump(raw_ostream &amp;OS) const {\n  std::string Result;\n  if (isUndefined())\n    Result += \"(undef) \";\n  if (isWeakDefined())\n    Result += \"(weak-def) \";\n  if (isWeakReferenced())\n    Result += \"(weak-ref) \";\n  if (isThreadLocalValue())\n    Result += \"(tlv) \";\n  switch (Kind) {\n  case SymbolKind::GlobalSymbol:\n    Result + Name.str();                        \/\/ &lt;=\n    break;\n  case SymbolKind::ObjectiveCClass:\n    Result + \"(ObjC Class) \" + Name.str();      \/\/ &lt;=\n    break;\n  case SymbolKind::ObjectiveCClassEHType:\n    Result + \"(ObjC Class EH) \" + Name.str();   \/\/ &lt;=\n    break;\n  case SymbolKind::ObjectiveCInstanceVariable:\n    Result + \"(ObjC IVar) \" + Name.str();       \/\/ &lt;=\n    break;\n  }\n  OS &lt;&lt; Result;\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f PVS-Studio:<\/p>\n<ul>\n<li>V655 [CWE-480] The strings were concatenated but are not utilized. Consider inspecting the &#8216;Result + Name.str()&#8217; expression. Symbol.cpp 32<\/li>\n<li>V655 [CWE-480] The strings were concatenated but are not utilized. Consider inspecting the &#8216;Result + &#171;(ObjC Class) &#187; + Name.str()&#8217; expression. Symbol.cpp 35<\/li>\n<li>V655 [CWE-480] The strings were concatenated but are not utilized. Consider inspecting the &#8216;Result + &#171;(ObjC Class EH) &#187; + Name.str()&#8217; expression. Symbol.cpp 38<\/li>\n<li>V655 [CWE-480] The strings were concatenated but are not utilized. Consider inspecting the &#8216;Result + &#171;(ObjC IVar) &#187; + Name.str()&#8217; expression. Symbol.cpp 41<\/li>\n<\/ul>\n<p>\n\u0421\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 += \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 +. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u043b\u0438\u0448\u0451\u043d\u043d\u044b\u0435 \u0441\u043c\u044b\u0441\u043b\u0430.<\/p>\n<p><b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N21: \u041d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/b><\/p>\n<pre><code class=\"cpp\">static void getReqFeatures(std::map&lt;StringRef, int&gt; &amp;FeaturesMap,\n                           const std::vector&lt;Record *&gt; &amp;ReqFeatures) {\n  for (auto &amp;R : ReqFeatures) {\n    StringRef AsmCondString = R-&gt;getValueAsString(\"AssemblerCondString\");\n\n    SmallVector&lt;StringRef, 4&gt; Ops;\n    SplitString(AsmCondString, Ops, \",\");\n    assert(!Ops.empty() &amp;&amp; \"AssemblerCondString cannot be empty\");\n\n    for (auto &amp;Op : Ops) {\n      assert(!Op.empty() &amp;&amp; \"Empty operator\");\n      if (FeaturesMap.find(Op) == FeaturesMap.end())\n        FeaturesMap[Op] = FeaturesMap.size();\n    }\n  }\n}<\/code><\/pre>\n<p>\n\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u043a\u043e\u0434. \u0410 \u044d\u0442\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0434\u043b\u044f \u043e\u0442\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u0441\u0440\u0430\u0437\u0443 \u043d\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043e\u0442\u0432\u0435\u0442:<\/p>\n<p><img decoding=\"async\" alt=\"\ufeff\u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0431\u0430\u0433\u0438 \u0432 LLVM 8 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio\" src=\"\/wp-content\/uploads\/2019\/04\/c6f076308acf81356a968e213a924355.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v708\/\">V708<\/a><\/noindex> [CWE-758] Dangerous construction is used: &#8216;FeaturesMap[Op] = FeaturesMap.size()&#8217;, where &#8216;FeaturesMap&#8217; is of &#8216;map&#8217; class. This may lead to undefined behavior. RISCVCompressInstEmitter.cpp 490<\/p>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043a\u0430:<\/p>\n<pre><code class=\"cpp\">FeaturesMap[Op] = FeaturesMap.size();<\/code><\/pre>\n<p>\n\u0415\u0441\u043b\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <i>Op<\/i> \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d, \u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u043a\u0430\u0440\u0442\u0435 \u0438 \u0442\u0443\u0434\u0430 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u044d\u0442\u043e\u0439 \u043a\u0430\u0440\u0442\u0435. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <i>size<\/i> \u0434\u043e \u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430.<\/p>\n<p><b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N22-N24: \u041f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f<\/b><\/p>\n<pre><code class=\"cpp\">Error MachOObjectFile::checkSymbolTable() const {\n  ....\n  } else {\n    MachO::nlist STE = getSymbolTableEntry(SymDRI);\n    NType = STE.n_type;                              \/\/ &lt;=\n    NType = STE.n_type;                              \/\/ &lt;=\n    NSect = STE.n_sect;\n    NDesc = STE.n_desc;\n    NStrx = STE.n_strx;\n    NValue = STE.n_value;\n  }\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v519\/\">V519<\/a><\/noindex> [CWE-563] The &#8216;NType&#8217; variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 1663, 1664. MachOObjectFile.cpp 1664<\/p>\n<p>\u0414\u0443\u043c\u0430\u044e, \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442. \u041f\u0440\u043e\u0441\u0442\u043e \u043b\u0438\u0448\u043d\u0435\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0435\u0435\u0441\u044f \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0435. \u041d\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043b\u044f\u043f.<\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e:<\/p>\n<ul>\n<li>V519 [CWE-563] The &#8216;B.NDesc&#8217; variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 1488, 1489. llvm-nm.cpp 1489<\/li>\n<li>V519 [CWE-563] The variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 59, 61. coff2yaml.cpp 61<\/li>\n<\/ul>\n<p>\n<b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N25-N27: \u0415\u0449\u0451 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f<\/b><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f.<\/p>\n<pre><code class=\"cpp\">bool Vectorizer::vectorizeLoadChain(\n    ArrayRef&lt;Instruction *&gt; Chain,\n    SmallPtrSet&lt;Instruction *, 16&gt; *InstructionsProcessed) {\n  ....\n  unsigned Alignment = getAlignment(L0);\n  ....\n  unsigned NewAlign = getOrEnforceKnownAlignment(L0-&gt;getPointerOperand(),\n                                                 StackAdjustedAlignment,\n                                                 DL, L0, nullptr, &amp;DT);\n  if (NewAlign != 0)\n    Alignment = NewAlign;\n  Alignment = NewAlign;\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V519 [CWE-563] The &#8216;Alignment&#8217; variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 1158, 1160. LoadStoreVectorizer.cpp 1160<\/p>\n<p>\u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e \u0432\u0441\u0435\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443. \u0412 \u043d\u0430\u0447\u0430\u043b\u0435, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <i>Alignment<\/i> \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u044f. \u0410 \u0437\u0430\u0442\u0435\u043c \u0432\u043d\u043e\u0432\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0435, \u043d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0443\u0436\u0435 \u0431\u0435\u0437 \u0432\u0441\u044f\u043a\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438.<\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0437\u0434\u0435\u0441\u044c:<\/p>\n<ul>\n<li>V519 [CWE-563] The &#8216;Effects&#8217; variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 152, 165. WebAssemblyRegStackify.cpp 165<\/li>\n<li>V519 [CWE-563] The &#8216;ExpectNoDerefChunk&#8217; variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 4970, 4973. SemaType.cpp 4973<\/li>\n<\/ul>\n<p>\n<b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N28: \u0412\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u0442\u0438\u043d\u043d\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435<\/b><\/p>\n<pre><code class=\"cpp\">static int readPrefixes(struct InternalInstruction* insn) {\n  ....\n  uint8_t byte = 0;\n  uint8_t nextByte;\n  ....\n  if (byte == 0xf3 &amp;&amp; (nextByte == 0x88 || nextByte == 0x89 ||\n                       nextByte == 0xc6 || nextByte == 0xc7)) {\n    insn-&gt;xAcquireRelease = true;\n    if (nextByte != 0x90) \/\/ PAUSE instruction support             \/\/ &lt;=\n      break;\n  }\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v547\/\">V547<\/a><\/noindex> [CWE-571] Expression &#8216;nextByte != 0x90&#8217; is always true. X86DisassemblerDecoder.cpp 379<\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430. \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <i>nextByte<\/i> \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0435 \u0440\u0430\u0432\u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e <i>0x90<\/i>, \u0447\u0442\u043e \u0432\u044b\u0442\u0435\u043a\u0430\u0435\u0442 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u042d\u0442\u043e \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430.<\/p>\n<p><b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N29 \u2014 N&#8230;: \u0412\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u0442\u0438\u043d\u043d\u044b\u0435\/\u043b\u043e\u0436\u043d\u044b\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f<\/b><\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0432\u044b\u0434\u0430\u0451\u0442 \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0441\u0451 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v547\/\">V547<\/a><\/noindex>) \u0438\u043b\u0438 \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u044c (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v560\/\">V560<\/a><\/noindex>) \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u0442\u0438\u043d\u043d\u043e \u0438\u043b\u0438 \u043b\u043e\u0436\u043d\u043e. \u0427\u0430\u0441\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u0439 \u043a\u043e\u0434, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u0432 \u0438 \u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0435\u0441\u0442\u044c \u0441\u043c\u044b\u0441\u043b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u0435\u043d \u0432\u043e\u0442 \u044d\u0442\u043e\u0442 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u043a\u043e\u0434\u0430:<\/p>\n<pre><code class=\"cpp\">static DecodeStatus DecodeGPRPairRegisterClass(MCInst &amp;Inst, unsigned RegNo,\n                                   uint64_t Address, const void *Decoder) {\n  DecodeStatus S = MCDisassembler::Success;\n\n  if (RegNo &gt; 13)\n    return MCDisassembler::Fail;\n\n  if ((RegNo &amp; 1) || RegNo == 0xe)\n     S = MCDisassembler::SoftFail;\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v560\/\">V560<\/a><\/noindex> [CWE-570] A part of conditional expression is always false: RegNo == 0xe. ARMDisassembler.cpp 939<\/p>\n<p>\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 0xE \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 14 \u0432 \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 <i>RegNo == 0xe<\/i> \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0435\u0441\u043b\u0438 <i>RegNo &gt; 13<\/i>, \u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442 \u0441\u0432\u043e\u0451 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0411\u044b\u043b\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u0441 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c V547 \u0438 V560, \u043d\u043e, \u043a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v595\/\">V595<\/a><\/noindex>, \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u044d\u0442\u0438 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0435\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e. \u0411\u044b\u043b\u043e \u0438 \u0442\u0430\u043a \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043c\u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u0442 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 :). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u044f\u0432\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043e\u043a \u044d\u0442\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0432 LLVM \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PVS-Studio.<\/p>\n<p>\u041f\u0440\u0438\u0432\u0435\u0434\u0443 \u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u044d\u0442\u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0441\u043a\u0443\u0447\u043d\u043e. \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043f\u0440\u0430\u0432, \u0432\u044b\u0434\u0430\u0432\u0430\u044f \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434. \u041d\u043e \u044d\u0442\u043e \u0438 \u043d\u0435 \u043e\u0448\u0438\u0431\u043a\u0430.<\/p>\n<pre><code class=\"cpp\">bool UnwrappedLineParser::parseBracedList(bool ContinueOnSemicolons,\n                                          tok::TokenKind ClosingBraceKind) {\n  bool HasError = false;\n  ....\n  HasError = true;\n  if (!ContinueOnSemicolons)\n    return !HasError;\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V547 [CWE-570] Expression &#8216;!HasError&#8217; is always false. UnwrappedLineParser.cpp 1635<\/p>\n<p><b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N30: \u041f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 return<\/b><\/p>\n<pre><code class=\"cpp\">static bool\nisImplicitlyDef(MachineRegisterInfo &amp;MRI, unsigned Reg) {\n  for (MachineRegisterInfo::def_instr_iterator It = MRI.def_instr_begin(Reg),\n      E = MRI.def_instr_end(); It != E; ++It) {\n    return (*It).isImplicitDef();\n  }\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v612\/\">V612<\/a><\/noindex> [CWE-670] An unconditional &#8216;return&#8217; within a loop. R600OptimizeVectorRegisters.cpp 63<\/p>\n<p>\u042d\u0442\u043e \u0438\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0430, \u0438\u043b\u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0438\u0451\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u0437\u0432\u0430\u043d \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u044f\u0441\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430\u043c, \u0447\u0438\u0442\u0430\u044e\u0449\u0438\u043c \u043a\u043e\u0434. \u041c\u043d\u0435 \u0442\u0430\u043a\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u044f\u0441\u043d\u044f\u0435\u0442 \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439. \u041b\u0443\u0447\u0448\u0435 \u0442\u0430\u043a \u043d\u0435 \u043f\u0438\u0441\u0430\u0442\u044c :).<\/p>\n<p>\u0423\u0441\u0442\u0430\u043b\u0438? \u0422\u043e\u0433\u0434\u0430 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0432\u0430\u0440\u0438\u0442\u044c \u0447\u0430\u0439 \u0438\u043b\u0438 \u043a\u043e\u0444\u0435.<\/p>\n<p><img decoding=\"async\" alt=\"\ufeff\u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0431\u0430\u0433\u0438 \u0432 LLVM 8 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio\" src=\"\/wp-content\/uploads\/2019\/04\/026293c0eefd65444522a0d1082ebfc6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>\u0414\u0435\u0444\u0435\u043a\u0442\u044b, \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u043e\u0432\u044b\u043c\u0438 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430\u043c\u0438<\/h2>\n<p>\n\u0414\u0443\u043c\u0430\u044e, 30 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0439 \u0441\u0442\u0430\u0440\u044b\u0445 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u043c\u0438 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0432 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0435 \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0446\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439<\/a><\/noindex> \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u0412\u0441\u0435\u0433\u043e \u0437\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0432 C++ \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u043e\u0441\u044c 66 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p><b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N31: \u041d\u0435\u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u044b\u0439 \u043a\u043e\u0434<\/b><\/p>\n<pre><code class=\"cpp\">Error CtorDtorRunner::run() {\n  ....\n  if (auto CtorDtorMap =\n          ES.lookup(JITDylibSearchList({{&amp;JD, true}}), std::move(Names),\n                    NoDependenciesToRegister, true))\n  {\n    ....\n    return Error::success();\n  } else\n    return CtorDtorMap.takeError();\n\n  CtorDtorsByPriority.clear();\n\n  return Error::success();\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v779\/\">V779<\/a><\/noindex> [CWE-561] Unreachable code detected. It is possible that an error is present. ExecutionUtils.cpp 146<\/p>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u043e\u0431\u0435 \u0432\u0435\u0442\u043a\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <i>if<\/i> \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <i>return<\/i>. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 <i>CtorDtorsByPriority<\/i> \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0438\u0449\u0435\u043d.<\/p>\n<p><b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N32: \u041d\u0435\u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u044b\u0439 \u043a\u043e\u0434<\/b><\/p>\n<pre><code class=\"cpp\">bool LLParser::ParseSummaryEntry() {\n  ....\n  switch (Lex.getKind()) {\n  case lltok::kw_gv:\n    return ParseGVEntry(SummaryID);\n  case lltok::kw_module:\n    return ParseModuleEntry(SummaryID);\n  case lltok::kw_typeid:\n    return ParseTypeIdEntry(SummaryID);                        \/\/ &lt;=\n    break;                                                     \/\/ &lt;=\n  default:\n    return Error(Lex.getLoc(), \"unexpected summary kind\");\n  }\n  Lex.setIgnoreColonInIdentifiers(false);                      \/\/ &lt;=\n  return false;\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V779 [CWE-561] Unreachable code detected. It is possible that an error is present. LLParser.cpp 835<\/p>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0432\u043e\u0442 \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e:<\/p>\n<pre><code class=\"cpp\">return ParseTypeIdEntry(SummaryID);\nbreak;<\/code><\/pre>\n<p>\n\u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0438 \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442. \u041f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <i>break<\/i> \u0437\u0434\u0435\u0441\u044c \u043b\u0438\u0448\u043d\u0438\u0439, \u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c. \u041e\u0434\u043d\u0430\u043a\u043e, \u043d\u0435 \u0432\u0441\u0451 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0432\u044b\u0434\u0430\u0451\u0442 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u0440\u043e\u0447\u043a\u0438:<\/p>\n<pre><code class=\"cpp\">Lex.setIgnoreColonInIdentifiers(false);\nreturn false;<\/code><\/pre>\n<p>\n\u0418 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043d\u0435\u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c. \u0412\u0441\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0432 <i>switch<\/i> \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c <i>return<\/i>. \u0418 \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u044b\u0439 \u043e\u0434\u0438\u043d\u043e\u043a\u0438\u0439 <i>break<\/i> \u043d\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a\u0438\u043c \u0431\u0435\u0437\u043e\u0431\u0438\u0434\u043d\u044b\u043c! \u0411\u044b\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u043e\u0434\u043d\u0430 \u0438\u0437 \u0432\u0435\u0442\u043e\u043a \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 <i>break<\/i>, \u0430 \u043d\u0435 \u043d\u0430 <i>return<\/i>?<\/p>\n<p><b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N33: \u0421\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0440\u0448\u0438\u0445 \u0431\u0438\u0442<\/b><\/p>\n<pre><code class=\"cpp\">unsigned getStubAlignment() override {\n  if (Arch == Triple::systemz)\n    return 8;\n  else\n    return 1;\n}\n\nExpected&lt;unsigned&gt;\nRuntimeDyldImpl::emitSection(const ObjectFile &amp;Obj,\n                             const SectionRef &amp;Section,\n                             bool IsCode) {\n  ....\n  uint64_t DataSize = Section.getSize();\n  ....\n  if (StubBufSize &gt; 0)\n    DataSize &amp;= ~(getStubAlignment() - 1);\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v784\/\">V784<\/a><\/noindex> The size of the bit mask is less than the size of the first operand. This will cause the loss of higher bits. RuntimeDyld.cpp 815<\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f <i>getStubAlignment<\/i> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0438\u043f <i>unsigned<\/i>. \u0412\u044b\u0447\u0438\u0441\u043b\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u0435\u0440\u043d\u0451\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 8:<\/p>\n<p>~(getStubAlignment() \u2014 1)<\/p>\n<p>~(8u-1)<\/p>\n<p>0xFFFFFFF8\u202cu<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <i>DataSize<\/i> \u0438\u043c\u0435\u0435\u0442 64-\u0431\u0438\u0442\u043d\u044b\u0439 \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u0442\u0438\u043f. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 DataSize &amp; 0xFFFFFFF8\u202cu \u0432\u0441\u0435 \u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044c \u0434\u0432\u0430 \u0441\u0442\u0430\u0440\u0448\u0438\u0445 \u0431\u0438\u0442\u0430 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u043d\u0443\u043b\u0435\u043d\u044b. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u044d\u0442\u043e \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u0445\u043e\u0442\u0435\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442. \u041f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u044e, \u0447\u0442\u043e \u043e\u043d \u0445\u043e\u0442\u0435\u043b \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c: DataSize &amp; 0xFFFFFFFFFFFFFFF8\u202cu.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">DataSize &amp;= ~(static_cast&lt;uint64_t&gt;(getStubAlignment()) - 1);<\/code><\/pre>\n<p>\n\u0418\u043b\u0438 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">DataSize &amp;= ~(getStubAlignment() - 1ULL);<\/code><\/pre>\n<p>\n<b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N34: \u041d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u0435 \u044f\u0432\u043d\u043e\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430<\/b><\/p>\n<pre><code class=\"cpp\">template &lt;typename T&gt;\nvoid scaleShuffleMask(int Scale, ArrayRef&lt;T&gt; Mask,\n                      SmallVectorImpl&lt;T&gt; &amp;ScaledMask) {\n  assert(0 &lt; Scale &amp;&amp; \"Unexpected scaling factor\");\n  int NumElts = Mask.size();\n  ScaledMask.assign(static_cast&lt;size_t&gt;(NumElts * Scale), -1);\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v1028\/\">V1028<\/a><\/noindex> [CWE-190] Possible overflow. Consider casting operands of the &#8216;NumElts * Scale&#8217; operator to the &#8216;size_t&#8217; type, not the result. X86ISelLowering.h 1577<\/p>\n<p>\u042f\u0432\u043d\u043e\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0430 <i>int<\/i>. \u041e\u0434\u043d\u0430\u043a\u043e, \u0437\u0434\u0435\u0441\u044c \u044f\u0432\u043d\u043e\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 \u043d\u0435 \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u0442 \u043e\u0442 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0435\u043d\u044b, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c 32-\u0431\u0438\u0442\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d \u0434\u043e \u0442\u0438\u043f\u0430 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/t\/0044\/\"><i>size_t<\/i><\/a><\/noindex>.<\/p>\n<p><b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N35: \u041d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0439 Copy-Paste<\/b><\/p>\n<pre><code class=\"cpp\">Instruction *InstCombiner::visitFCmpInst(FCmpInst &amp;I) {\n  ....\n  if (!match(Op0, m_PosZeroFP()) &amp;&amp; isKnownNeverNaN(Op0, &amp;TLI)) {\n    I.setOperand(0, ConstantFP::getNullValue(Op0-&gt;getType()));\n    return &amp;I;\n  }\n  if (!match(Op1, m_PosZeroFP()) &amp;&amp; isKnownNeverNaN(Op1, &amp;TLI)) {\n    I.setOperand(1, ConstantFP::getNullValue(Op0-&gt;getType()));        \/\/ &lt;=\n    return &amp;I;\n  }\n  ....\n}<\/code><\/pre>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v778\/\">V778<\/a><\/noindex> [CWE-682] Two similar code fragments were found. Perhaps, this is a typo and &#8216;Op1&#8217; variable should be used instead of &#8216;Op0&#8217;. InstCombineCompares.cpp 5507<\/p>\n<p>\u042d\u0442\u0430 \u043d\u043e\u0432\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430 \u0432\u044b\u044f\u0432\u043b\u044f\u0435\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430 \u0431\u044b\u043b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d, \u0438 \u0432 \u043d\u0451\u043c \u043d\u0430\u0447\u0430\u043b\u0438 \u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u043d\u0430, \u043d\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043d\u0435 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u043b\u0438.<\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0431\u043b\u043e\u043a\u0435 \u043c\u0435\u043d\u044f\u043b\u0438 <i>Op0<\/i> \u043d\u0430 <i>Op1<\/i>. \u041d\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043d\u0435 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u043b\u0438. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">if (!match(Op1, m_PosZeroFP()) &amp;&amp; isKnownNeverNaN(Op1, &amp;TLI)) {\n  I.setOperand(1, ConstantFP::getNullValue(Op1-&gt;getType()));\n  return &amp;I;\n}<\/code><\/pre>\n<p>\n<b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N36: \u041f\u0443\u0442\u0430\u043d\u0438\u0446\u0430 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445<\/b><\/p>\n<pre><code class=\"cpp\">struct Status {\n  unsigned Mask;\n  unsigned Mode;\n\n  Status() : Mask(0), Mode(0){};\n\n  Status(unsigned Mask, unsigned Mode) : Mask(Mask), Mode(Mode) {\n    Mode &amp;= Mask;\n  };\n  ....\n};<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v1001\/\">V1001<\/a><\/noindex> [CWE-563] The &#8216;Mode&#8217; variable is assigned but is not used by the end of the function. SIModeRegister.cpp 48<\/p>\n<p>\u041e\u0447\u0435\u043d\u044c \u043e\u043f\u0430\u0441\u043d\u043e \u0434\u0430\u0432\u0430\u0442\u044c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0442\u0435 \u0436\u0435 \u0441\u0430\u043c\u044b\u0435 \u0438\u043c\u0435\u043d\u0430, \u0447\u0442\u043e \u0438 \u0447\u043b\u0435\u043d\u0430\u043c \u043a\u043b\u0430\u0441\u0441\u0430. \u041e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e \u0437\u0430\u043f\u0443\u0442\u0430\u0442\u044c\u0441\u044f. \u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u0430\u043a\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439. \u042d\u0442\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430:<\/p>\n<pre><code class=\"cpp\">Mode &amp;= Mask;<\/code><\/pre>\n<p>\n\u041c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0418 \u0432\u0441\u0451. \u042d\u0442\u043e\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">Status(unsigned Mask, unsigned Mode) : Mask(Mask), Mode(Mode) {\n  this-&gt;Mode &amp;= Mask;\n};<\/code><\/pre>\n<p>\n<b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N37: \u041f\u0443\u0442\u0430\u043d\u0438\u0446\u0430 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445<\/b><\/p>\n<pre><code class=\"cpp\">class SectionBase {\n  ....\n  uint64_t Size = 0;\n  ....\n};\n\nclass SymbolTableSection : public SectionBase {\n  ....\n};\n\nvoid SymbolTableSection::addSymbol(Twine Name, uint8_t Bind, uint8_t Type,\n                                   SectionBase *DefinedIn, uint64_t Value,\n                                   uint8_t Visibility, uint16_t Shndx,\n                                   uint64_t Size) {\n  ....\n  Sym.Value = Value;\n  Sym.Visibility = Visibility;\n  Sym.Size = Size;\n  Sym.Index = Symbols.size();\n  Symbols.emplace_back(llvm::make_unique&lt;Symbol&gt;(Sym));\n  Size += this-&gt;EntrySize;\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V1001 [CWE-563] The &#8216;Size&#8217; variable is assigned but is not used by the end of the function. Object.cpp 424<\/p>\n<p>\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439. \u0414\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e:<\/p>\n<pre><code class=\"cpp\">this-&gt;Size += this-&gt;EntrySize;<\/code><\/pre>\n<p>\n<b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N38-N47: \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c<\/b><\/p>\n<p>\u0420\u0430\u043d\u0435\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v595\/\">V595<\/a><\/noindex>. \u0415\u0451 \u0441\u0443\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f. \u041c\u043e\u043b\u043e\u0434\u0430\u044f \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v1004\/\">V1004<\/a><\/noindex> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0435\u0439 \u043f\u043e \u0441\u043c\u044b\u0441\u043b\u0443, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u043e\u0448\u0438\u0431\u043e\u043a. \u041e\u043d\u0430 \u0432\u044b\u044f\u0432\u043b\u044f\u0435\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438, \u0430 \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u0431\u044b\u043b\u0438 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u0430\u043a\u0438\u0435 \u0441\u043b\u0443\u0447\u0430\u0438, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 LLVM.<\/p>\n<pre><code class=\"cpp\">int getGEPCost(Type *PointeeType, const Value *Ptr,\n               ArrayRef&lt;const Value *&gt; Operands) {\n  ....\n  if (Ptr != nullptr) {                                            \/\/ &lt;=\n    assert(....);\n    BaseGV = dyn_cast&lt;GlobalValue&gt;(Ptr-&gt;stripPointerCasts());\n  }\n  bool HasBaseReg = (BaseGV == nullptr);\n\n  auto PtrSizeBits = DL.getPointerTypeSizeInBits(Ptr-&gt;getType());  \/\/ &lt;=\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V1004 [CWE-476] The &#8216;Ptr&#8217; pointer was used unsafely after it was verified against nullptr. Check lines: 729, 738. TargetTransformInfoImpl.h 738<\/p>\n<p>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <i>Ptr <\/i> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0432\u043d\u0430 <i>nullptr<\/i>, \u043e \u0447\u0451\u043c \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430:<\/p>\n<pre><code class=\"cpp\">if (Ptr != nullptr)<\/code><\/pre>\n<p>\n\u041e\u0434\u043d\u0430\u043a\u043e, \u043d\u0438\u0436\u0435 \u044d\u0442\u043e\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0443\u0436\u0435 \u0431\u0435\u0437 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438:<\/p>\n<pre><code class=\"cpp\">auto PtrSizeBits = DL.getPointerTypeSizeInBits(Ptr-&gt;getType());<\/code><\/pre>\n<p>\n\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439.<\/p>\n<pre><code class=\"cpp\">llvm::DISubprogram *CGDebugInfo::getFunctionFwdDeclOrStub(GlobalDecl GD,\n                                                          bool Stub) {\n  ....\n  auto *FD = dyn_cast&lt;FunctionDecl&gt;(GD.getDecl());\n  SmallVector&lt;QualType, 16&gt; ArgTypes;\n  if (FD)                                                                \/\/ &lt;=\n    for (const ParmVarDecl *Parm : FD-&gt;parameters())\n      ArgTypes.push_back(Parm-&gt;getType());\n  CallingConv CC = FD-&gt;getType()-&gt;castAs&lt;FunctionType&gt;()-&gt;getCallConv(); \/\/ &lt;=\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V1004 [CWE-476] The &#8216;FD&#8217; pointer was used unsafely after it was verified against nullptr. Check lines: 3228, 3231. CGDebugInfo.cpp 3231<\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c <i>FD<\/i>. \u0423\u0432\u0435\u0440\u0435\u043d, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0445\u043e\u0440\u043e\u0448\u043e \u0432\u0438\u0434\u043d\u0430, \u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0439 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0418 \u0435\u0449\u0451:<\/p>\n<pre><code class=\"cpp\">static void computePolynomialFromPointer(Value &amp;Ptr, Polynomial &amp;Result,\n                                         Value *&amp;BasePtr,\n                                         const DataLayout &amp;DL) {\n  PointerType *PtrTy = dyn_cast&lt;PointerType&gt;(Ptr.getType());\n  if (!PtrTy) {                                                   \/\/ &lt;=\n    Result = Polynomial();\n    BasePtr = nullptr;\n  }\n  unsigned PointerBits =\n      DL.getIndexSizeInBits(PtrTy-&gt;getPointerAddressSpace());     \/\/ &lt;=\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V1004 [CWE-476] The &#8216;PtrTy&#8217; pointer was used unsafely after it was verified against nullptr. Check lines: 960, 965. InterleavedLoadCombinePass.cpp 965<\/p>\n<p>\u041a\u0430\u043a \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0442\u0430\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a? \u0411\u0443\u0434\u044c\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u0435\u0439 \u043d\u0430 Code-Review \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0434\u043b\u044f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u0434\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio.<\/p>\n<p>\u041f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0434\u0430 \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0430 \u0441\u043c\u044b\u0441\u043b\u0430 \u043d\u0435\u0442. \u041e\u0441\u0442\u0430\u0432\u043b\u044e \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439:<\/p>\n<ul>\n<li>V1004 [CWE-476] The &#8216;Expr&#8217; pointer was used unsafely after it was verified against nullptr. Check lines: 1049, 1078. DebugInfoMetadata.cpp 1078<\/li>\n<li>V1004 [CWE-476] The &#8216;PI&#8217; pointer was used unsafely after it was verified against nullptr. Check lines: 733, 753. LegacyPassManager.cpp 753<\/li>\n<li>V1004 [CWE-476] The &#8216;StatepointCall&#8217; pointer was used unsafely after it was verified against nullptr. Check lines: 4371, 4379. Verifier.cpp 4379<\/li>\n<li>V1004 [CWE-476] The &#8216;RV&#8217; pointer was used unsafely after it was verified against nullptr. Check lines: 2263, 2268. TGParser.cpp 2268<\/li>\n<li>V1004 [CWE-476] The &#8216;CalleeFn&#8217; pointer was used unsafely after it was verified against nullptr. Check lines: 1081, 1096. SimplifyLibCalls.cpp 1096<\/li>\n<li>V1004 [CWE-476] The &#8216;TC&#8217; pointer was used unsafely after it was verified against nullptr. Check lines: 1819, 1824. Driver.cpp 1824<\/li>\n<\/ul>\n<p>\n<b>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N48-N60: \u041d\u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e, \u043d\u043e \u0434\u0435\u0444\u0435\u043a\u0442 (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0443\u0442\u0435\u0447\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438)<\/b><\/p>\n<pre><code class=\"cpp\">std::unique_ptr&lt;IRMutator&gt; createISelMutator() {\n  ....\n  std::vector&lt;std::unique_ptr&lt;IRMutationStrategy&gt;&gt; Strategies;\n  Strategies.emplace_back(\n      new InjectorIRStrategy(InjectorIRStrategy::getDefaultOps()));\n  ....\n}<\/code><\/pre>\n<p>\n\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v1023\/\">V1023<\/a><\/noindex> [CWE-460] A pointer without owner is added to the &#8216;Strategies&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. llvm-isel-fuzzer.cpp 58<\/p>\n<p>\u0414\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432 \u043a\u043e\u043d\u0435\u0446 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0442\u0438\u043f\u0430 <i>std::vector&lt;std::unique_ptr&lt;X&gt;&gt;<\/i> \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c <i>xxx.push_back(new X)<\/i>, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435\u0442 \u043d\u0435\u044f\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437 <i>X*<\/i> \u0432 <i>std::unique_ptr&lt;X&gt;<\/i>.<\/p>\n<p>\u0420\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 <i>xxx.emplace_back(new X)<\/i>, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f: \u043c\u0435\u0442\u043e\u0434 <i>emplace_back<\/i> \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u0443\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044f\u0432\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b.<\/p>\n<p>\u042d\u0442\u043e \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e. \u0415\u0441\u043b\u0438 \u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u043e\u043b\u043e\u043d, \u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0435\u0440\u0435\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438. \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0435\u0443\u0434\u0430\u0447\u0435\u0439, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0447\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <i>std::bad_alloc<\/i>. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0442\u0435\u0440\u044f\u043d, \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d.<\/p>\n<p>\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 <i>unique_ptr<\/i>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u043b\u0430\u0434\u0435\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c:<\/p>\n<pre><code class=\"cpp\">xxx.push_back(std::unique_ptr&lt;X&gt;(new X))<\/code><\/pre>\n<p>\n\u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 C++14, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c &#8216;std::make_unique&#8217;:<\/p>\n<pre><code class=\"cpp\">xxx.push_back(std::make_unique&lt;X&gt;())<\/code><\/pre>\n<p>\n\u0414\u0430\u043d\u043d\u044b\u0439 \u0432\u0438\u0434 \u0434\u0435\u0444\u0435\u043a\u0442\u0430 \u043d\u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u043d \u0434\u043b\u044f LLVM. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c, \u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430. \u041e\u0434\u043d\u0430\u043a\u043e, \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0441 \u0434\u043e\u043b\u0433\u0438\u043c <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%90%D0%BF%D1%82%D0%B0%D0%B9%D0%BC\">\u0430\u043f\u0442\u0430\u0439\u043c\u043e\u043c<\/a><\/noindex>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c, \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0445\u043e\u0442\u044f \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f LLVM, \u044f \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u0447\u0442\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio \u043d\u0430\u0443\u0447\u0438\u043b\u0441\u044f \u0435\u0433\u043e \u0432\u044b\u044f\u0432\u043b\u044f\u0442\u044c.<\/p>\n<p>\u0414\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430:<\/p>\n<ul>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;Passes&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. PassManager.h 546<\/li>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;AAs&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. AliasAnalysis.h 324<\/li>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;Entries&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. DWARFDebugFrame.cpp 519<\/li>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;AllEdges&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. CFGMST.h 268<\/li>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;VMaps&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. SimpleLoopUnswitch.cpp 2012<\/li>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;Records&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. FDRLogBuilder.h 30<\/li>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;PendingSubmodules&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. ModuleMap.cpp 810<\/li>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;Objects&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. DebugMap.cpp 88<\/li>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;Strategies&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. llvm-isel-fuzzer.cpp 60<\/li>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;Modifiers&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. llvm-stress.cpp 685<\/li>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;Modifiers&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. llvm-stress.cpp 686<\/li>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;Modifiers&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. llvm-stress.cpp 688<\/li>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;Modifiers&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. llvm-stress.cpp 689<\/li>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;Modifiers&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. llvm-stress.cpp 690<\/li>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;Modifiers&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. llvm-stress.cpp 691<\/li>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;Modifiers&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. llvm-stress.cpp 692<\/li>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;Modifiers&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. llvm-stress.cpp 693<\/li>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;Modifiers&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. llvm-stress.cpp 694<\/li>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;Operands&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. GlobalISelEmitter.cpp 1911<\/li>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;Stash&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. GlobalISelEmitter.cpp 2100<\/li>\n<li>V1023 [CWE-460] A pointer without owner is added to the &#8216;Matchers&#8217; container by the &#8217;emplace_back&#8217; method. A memory leak will occur in case of an exception. GlobalISelEmitter.cpp 2702<\/li>\n<\/ul>\n<p><\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\n\u0412\u0441\u0435\u0433\u043e \u044f \u0432\u044b\u043f\u0438\u0441\u0430\u043b 60 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f. \u0415\u0441\u0442\u044c \u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u0435\u0444\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0432 LLVM \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio? \u0414\u0430, \u0435\u0441\u0442\u044c. \u041e\u0434\u043d\u0430\u043a\u043e, \u043a\u043e\u0433\u0434\u0430 \u044f \u0432\u044b\u043f\u0438\u0441\u044b\u0432\u0430\u043b \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u044c\u0438, \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u043b \u043f\u043e\u0437\u0434\u043d\u0438\u0439 \u0432\u0435\u0447\u0435\u0440, \u0432\u0435\u0440\u043d\u0435\u0435, \u0434\u0430\u0436\u0435 \u043d\u043e\u0447\u044c, \u0438 \u044f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u043f\u043e\u0440\u0430 \u0437\u0430\u043a\u0440\u0443\u0433\u043b\u044f\u0442\u044c\u0441\u044f.<\/p>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0432\u0430\u043c \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0438 \u0432\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio.<\/p>\n<p>\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u043d\u0430 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/pvs-studio-download\/\">\u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435<\/a><\/noindex>.<\/p>\n<p>\u0421\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e. <b>\u0420\u0430\u0437\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438<\/b>, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u043c\u0438 \u043d\u0430\u043c\u0438 \u0441 \u0446\u0435\u043b\u044c\u044e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438 PVS-Studio \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u043c.<\/p>\n<p>\u0423\u0434\u0430\u0447\u0438 \u0432 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u0434\u0430!<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/450002\/\"><img decoding=\"async\" alt=\"\ufeff\u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0431\u0430\u0433\u0438 \u0432 LLVM 8 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio\" src=\"\/wp-content\/uploads\/2019\/04\/576b36fd5f34dddd71d28353d50be40c.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 \u0441 \u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0435\u0439, \u0442\u043e \u043f\u0440\u043e\u0448\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434: Andrey Karpov. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/450002\/\">Finding Bugs in LLVM 8 with PVS-Studio<\/a><\/noindex>.<br \/>\n<br \/>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/450008\/\">habr.com<\/a><\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u043e\u0448\u043b\u043e \u0431\u043e\u043b\u0435\u0435 \u0434\u0432\u0443\u0445 \u043b\u0435\u0442 \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 LLVM \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0448\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0434\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043f\u043e \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u044e \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0438 \u043d\u0430\u0439\u0434\u0451\u043c \u043d\u043e\u0432\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0440\u0435\u043b\u0438\u0437\u0435 LLVM 8.0.0. \u0421\u0442\u0430\u0442\u044c\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0415\u0441\u043b\u0438 \u0447\u0435\u0441\u0442\u043d\u043e, \u043c\u043d\u0435 \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24450,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32660","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u043e\u0448\u043b\u043e \u0431\u043e\u043b\u0435\u0435 \u0434\u0432\u0443\u0445 \u043b\u0435\u0442 \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 LLVM \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0448\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0434\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043f\u043e \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u044e \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0438 \u043d\u0430\u0439\u0434\u0451\u043c \u043d\u043e\u0432\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0440\u0435\u043b\u0438\u0437\u0435 LLVM 8.0.0. \u0421\u0442\u0430\u0442\u044c\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0415\u0441\u043b\u0438 \u0447\u0435\u0441\u0442\u043d\u043e, \u043c\u043d\u0435 \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/nahodim-bagi-v-llvm-8-s-pomoshhyu-analizatora-pvs-studio\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\ufeff\u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0431\u0430\u0433\u0438 \u0432 LLVM 8 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u043e\u0448\u043b\u043e \u0431\u043e\u043b\u0435\u0435 \u0434\u0432\u0443\u0445 \u043b\u0435\u0442 \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 LLVM \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0448\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0434\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043f\u043e \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u044e \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0438 \u043d\u0430\u0439\u0434\u0451\u043c \u043d\u043e\u0432\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0440\u0435\u043b\u0438\u0437\u0435 LLVM 8.0.0. \u0421\u0442\u0430\u0442\u044c\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0415\u0441\u043b\u0438 \u0447\u0435\u0441\u0442\u043d\u043e, \u043c\u043d\u0435 \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/nahodim-bagi-v-llvm-8-s-pomoshhyu-analizatora-pvs-studio\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:48:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:48:15+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47\ufeffFehler in LLVM 8 mit dem PVS-Studio-Analyzer finden | ProHoster","description":"Es sind mehr als zwei Jahre vergangen, seit wir den Code des LLVM-Projekts mit unserem PVS-Studio-Analyzer \u00fcberpr\u00fcft haben. Lassen Sie uns sicherstellen, dass der PVS-Studio-Analyzer nach wie vor das f\u00fchrende Tool zur Erkennung von Fehlern und potenziellen Schwachstellen ist. Dazu werden wir neue Fehler in der Version LLVM 8.0.0 finden. Der Artikel, der geschrieben werden muss. Um ehrlich zu sein, hatte ich keine Lust, diesen Artikel zu schreiben.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/nahodim-bagi-v-llvm-8-s-pomoshhyu-analizatora-pvs-studio","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\ufeff\u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0431\u0430\u0433\u0438 \u0432 LLVM 8 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio | ProHoster","og:description":"\u041f\u0440\u043e\u0448\u043b\u043e \u0431\u043e\u043b\u0435\u0435 \u0434\u0432\u0443\u0445 \u043b\u0435\u0442 \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 LLVM \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0448\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0434\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043f\u043e \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u044e \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0438 \u043d\u0430\u0439\u0434\u0451\u043c \u043d\u043e\u0432\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0440\u0435\u043b\u0438\u0437\u0435 LLVM 8.0.0. \u0421\u0442\u0430\u0442\u044c\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0415\u0441\u043b\u0438 \u0447\u0435\u0441\u0442\u043d\u043e, \u043c\u043d\u0435 \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/nahodim-bagi-v-llvm-8-s-pomoshhyu-analizatora-pvs-studio","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:48:15+00:00","article:modified_time":"2019-10-31T18:48:15+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32660","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 11:58:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:54:27","updated":"2026-01-21 11:58:19"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/32660","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=32660"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/32660\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/24450"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=32660"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=32660"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=32660"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}