PVS-Studio āĻ…ā§āϝāĻžāύāĻžāϞāĻžāχāϜāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ LLVM 8-āĻ āĻŦāĻžāĻ— āĻļāύāĻžāĻ•ā§āϤāĻ•āϰāĻŖ

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āĻŦāĻŋāĻļā§āϞ⧇āώāĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ LLVM 8-āĻ āĻŦāĻžāĻ— āĻ–ā§‹āρāϜāĻž
āφāĻŽāĻžāĻĻ⧇āϰ āĻĒāĻŋāĻ­āĻŋāĻāϏ-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āĻŦāĻŋāĻļā§āϞ⧇āώāĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāϞāĻāϞāĻ­āĻŋāĻāĻŽ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āĻļ⧇āώ āϕ⧋āĻĄ āĻšā§‡āĻ• āĻ•āϰāĻžāϰ āĻĒāϰ āĻĻ⧁āχ āĻŦāĻ›āϰ⧇āϰāĻ“ āĻŦ⧇āĻļāĻŋ āϏāĻŽāϝāĻŧ āϕ⧇āĻŸā§‡ āϗ⧇āϛ⧇āĨ¤ āφāϏ⧁āύ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāĻŋ āϝ⧇ āĻĒāĻŋāĻ­āĻŋāĻāϏ-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āĻŦāĻŋāĻļā§āϞ⧇āώāĻ• āĻāĻ–āύāĻ“ āĻ¤ā§āϰ⧁āϟāĻŋ āĻāĻŦāĻ‚ āϏāĻŽā§āĻ­āĻžāĻŦā§āϝ āĻĻ⧁āĻ°ā§āĻŦāϞāϤāĻž āϏāύāĻžāĻ•ā§āϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻ…āĻ—ā§āϰāĻŖā§€ āĻšāĻžāϤāĻŋāϝāĻŧāĻžāϰāĨ¤ āĻāϟāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž LLVM 8.0.0 āϰāĻŋāϞāĻŋāĻœā§‡ āύāϤ⧁āύ āĻ¤ā§āϰ⧁āϟāĻŋāϗ⧁āϞāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻŦ āĻāĻŦāĻ‚ āϖ⧁āρāĻœā§‡ āĻŦ⧇āϰ āĻ•āϰāĻŦāĨ¤

āĻĒā§āϰāĻŦāĻ¨ā§āϧ āϞāĻŋāĻ–āϤ⧇ āĻšāĻŦ⧇

āϏāĻ¤ā§āϝāĻŋ āĻ•āĻĨāĻž āĻŦāϞāϤ⧇, āφāĻŽāĻŋ āĻāχ āύāĻŋāĻŦāĻ¨ā§āϧāϟāĻŋ āϞāĻŋāĻ–āϤ⧇ āϚāĻžāχāύāĻŋāĨ¤ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϞāĻŋāĻ–āϤ⧇ āφāĻ•āĻ°ā§āώāĻŖā§€āϝāĻŧ āύāϝāĻŧ āϝāĻž āφāĻŽāϰāĻž āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻŦ⧇āĻļ āĻ•āϝāĻŧ⧇āĻ•āĻŦāĻžāϰ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇āĻ›āĻŋ (1, 2, 3) āύāϤ⧁āύ āĻ•āĻŋāϛ⧁ āύāĻŋāϝāĻŧ⧇ āϞāĻŋāĻ–āϞ⧇ āĻ­āĻžāϞ⧋ āĻšāϝāĻŧ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻŽāĻžāϰ āϕ⧋āύ⧋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āύ⧇āχāĨ¤

āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āĻāϞāĻāϞāĻ­āĻŋāĻāĻŽ-āĻāϰ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻŦāĻž āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ āĻāύāĻāύ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āĻŦāĻŋāĻļā§āϞ⧇āώāĻ•, āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻŽā§‡āχāϞ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āϧāϰāϪ⧇āϰ āĻĒā§āϰāĻļā§āύ āĻĒāĻžāχ:

āĻĻ⧇āϖ⧁āύ, āĻ•ā§āĻ˛ā§āϝāĻžāĻ‚ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āĻ…ā§āϝāĻžāύāĻžāϞāĻžāχāϜāĻžāϰ⧇āϰ āύāϤ⧁āύ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āύāϤ⧁āύ āĻ¤ā§āϰ⧁āϟāĻŋ āϖ⧁āρāĻœā§‡ āĻŦ⧇āϰ āĻ•āϰāϤ⧇ āĻļāĻŋāϖ⧇āϛ⧇! āφāĻŽāĻžāϰ āĻ•āĻžāϛ⧇ āĻŽāύ⧇ āĻšāĻšā§āϛ⧇ āĻĒāĻŋāĻ­āĻŋāĻāϏ-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻĒā§āϰāĻžāϏāĻ™ā§āĻ—āĻŋāĻ•āϤāĻž āĻ•āĻŽā§‡ āϝāĻžāĻšā§āϛ⧇āĨ¤ āĻ•ā§āĻ˛ā§āϝāĻžāĻ‚ āφāϗ⧇āϰ āĻšā§‡āϝāĻŧ⧇ āφāϰāĻ“ āĻŦ⧇āĻļāĻŋ āĻ¤ā§āϰ⧁āϟāĻŋ āϖ⧁āρāĻœā§‡ āĻĒāĻžāϝāĻŧ āĻāĻŦāĻ‚ PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“āϰ āϏāĻ•ā§āώāĻŽāϤāĻžāϗ⧁āϞāĻŋ āϧāϰ⧇ āĻĢ⧇āϞ⧇⧎ āφāĻĒāύāĻŋ āĻ āĻŦā§āϝāĻĒāĻžāϰ⧇ āϕ⧀ āĻ­āĻžāĻŦāϛ⧇āύ?

āĻāϟāĻŋāϰ āϜāĻ¨ā§āϝ āφāĻŽāĻŋ āϏāĻ°ā§āĻŦāĻĻāĻž āĻāĻŽāύ āĻ•āĻŋāϛ⧁ āωāĻ¤ā§āϤāϰ āĻĻāĻŋāϤ⧇ āϚāĻžāχ:

āφāĻŽāϰāĻžāĻ“ āĻ…āϞāϏ āĻŦāϏ⧇ āĻĨāĻžāĻ•āĻŋ āύāĻž! āφāĻŽāϰāĻž āĻĒāĻŋāĻ­āĻŋāĻāϏ-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āĻŦāĻŋāĻļā§āϞ⧇āώāϕ⧇āϰ āĻ•ā§āώāĻŽāϤāĻž āωāĻ˛ā§āϞ⧇āĻ–āϝ⧋āĻ—ā§āϝāĻ­āĻžāĻŦ⧇ āωāĻ¨ā§āύāϤ āĻ•āϰ⧇āĻ›āĻŋāĨ¤ āϤāĻžāχ āϚāĻŋāĻ¨ā§āϤāĻž āĻ•āϰāĻŦ⧇āύ āύāĻž, āφāĻŽāϰāĻž āφāϗ⧇āϰ āĻŽāϤāχ āύ⧇āϤ⧃āĻ¤ā§āĻŦ āĻĻāĻŋāϝāĻŧ⧇ āϝāĻžāĻšā§āĻ›āĻŋāĨ¤

āĻĻ⧁āĻ°ā§āĻ­āĻžāĻ—ā§āϝāĻŦāĻļāϤ, āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ–āĻžāϰāĻžāĻĒ āωāĻ¤ā§āϤāϰāĨ¤ āĻāϤ⧇ āϕ⧋āύ⧋ āĻĒā§āϰāĻŽāĻžāĻŖ āύ⧇āχāĨ¤ āφāϰ āϏ⧇āχ āĻ•āĻžāϰāϪ⧇āχ āφāĻŽāĻŋ āĻāĻ–āύ āĻāχ āύāĻŋāĻŦāĻ¨ā§āϧāϟāĻŋ āϞāĻŋāĻ–āĻ›āĻŋāĨ¤ āϏ⧁āϤāϰāĻžāĻ‚, āĻāϞāĻāϞāĻ­āĻŋāĻāĻŽ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϟāĻŋ āφāĻŦāĻžāϰāĻ“ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻāϤ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻ¤ā§āϰ⧁āϟāĻŋ āĻĒāĻžāĻ“āϝāĻŧāĻž āϗ⧇āϛ⧇āĨ¤ āφāĻŽāĻŋ āĻāĻ–āύ āϏ⧇āϗ⧁āϞāĻŋ āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻ•āϰāĻŦ āϝāĻž āφāĻŽāĻžāϰ āĻ•āĻžāϛ⧇ āφāĻ•āĻ°ā§āώāĻŖā§€āϝāĻŧ āĻŦāϞ⧇ āĻŽāύ⧇ āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āĻ•ā§āĻ˛ā§āϝāĻžāĻ‚ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āĻ…ā§āϝāĻžāύāĻžāϞāĻžāχāϜāĻžāϰ āĻāχ āĻ¤ā§āϰ⧁āϟāĻŋāϗ⧁āϞāĻŋ āϖ⧁āρāĻœā§‡ āĻĒāĻžāϝāĻŧ āύāĻž (āĻŦāĻž āĻāϟāĻŋāϰ āϏāĻžāĻšāĻžāĻ¯ā§āϝ⧇ āĻāϟāĻŋ āĻ•āϰāĻž āĻ…āĻ¤ā§āϝāĻ¨ā§āϤ āĻ…āϏ⧁āĻŦāĻŋāϧāĻžāϜāύāĻ•)āĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻŽāϰāĻž āĻĒāĻžāϰāĻŋ. āϤāĻžāĻ›āĻžāĻĄāĻŧāĻž, āφāĻŽāĻŋ āĻāĻ• āϏāĻ¨ā§āĻ§ā§āϝāĻžāϝāĻŧ āĻāχ āϏāĻŽāĻ¸ā§āϤ āĻ¤ā§āϰ⧁āϟāĻŋ āϖ⧁āρāĻœā§‡ āĻĒ⧇āϝāĻŧ⧇āĻ›āĻŋ āĻāĻŦāĻ‚ āϞāĻŋāϖ⧇āĻ›āĻŋāϞāĻžāĻŽāĨ¤

āĻ•āĻŋāĻ¨ā§āϤ⧁ āύāĻŋāĻŦāĻ¨ā§āϧāϟāĻŋ āϞāĻŋāĻ–āϤ⧇ āĻ•āϝāĻŧ⧇āĻ• āϏāĻĒā§āϤāĻžāĻš āϞ⧇āϗ⧇āϛ⧇āĨ¤ āφāĻŽāĻŋ āĻļ⧁āϧ⧁ āĻāχ āϏāĻŦ āĻŸā§‡āĻ•ā§āϏāĻŸā§‡ āϰāĻžāĻ–āĻžāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻœā§‡āϕ⧇ āφāύāϤ⧇ āĻĒāĻžāϰāĻŋāύāĻŋ :)āĨ¤

āϝāĻžāχāĻšā§‹āĻ•, āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻĒāĻŋāĻ­āĻŋāĻāϏ-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āĻŦāĻŋāĻļā§āϞ⧇āώāĻ• āĻ¤ā§āϰ⧁āϟāĻŋāϗ⧁āϞāĻŋ āĻāĻŦāĻ‚ āϏāĻŽā§āĻ­āĻžāĻŦā§āϝ āĻĻ⧁āĻ°ā§āĻŦāϞāϤāĻžāϗ⧁āϞāĻŋ āϏāύāĻžāĻ•ā§āϤ āĻ•āϰāϤ⧇ āϕ⧋āύ āĻĒā§āϰāϝ⧁āĻ•ā§āϤāĻŋāϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ āϏ⧇ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āφāĻ—ā§āϰāĻšā§€ āĻšāύ, āϤāĻŦ⧇ āφāĻŽāĻŋ āĻāϟāĻŋāϰ āϏāĻžāĻĨ⧇ āĻĒāϰāĻŋāϚāĻŋāϤ āĻšāĻ“āϝāĻŧāĻžāϰ āĻĒāϰāĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāχ āĻŦāĻŋāσāĻĻā§āϰāσ.

āύāϤ⧁āύ āĻāĻŦāĻ‚ āĻĒ⧁āϰāĻžāύ⧋ āĻĄāĻžāϝāĻŧāĻžāĻ—āύāĻ¸ā§āϟāĻŋāĻ•āϏ

āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āωāĻ˛ā§āϞāĻŋāĻ–āĻŋāϤ āĻšāĻŋāϏāĻžāĻŦ⧇, āĻĒā§āϰāĻžāϝāĻŧ āĻĻ⧁āχ āĻŦāĻ›āϰ āφāϗ⧇ āĻāϞāĻāϞāĻ­āĻŋāĻāĻŽ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϟāĻŋ āφāĻŦāĻžāϰ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ, āĻāĻŦāĻ‚ āĻĒāĻžāĻ“āϝāĻŧāĻž āĻ¤ā§āϰ⧁āϟāĻŋāϗ⧁āϞāĻŋ āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āĻāĻ–āύ āĻāχ āύāĻŋāĻŦāĻ¨ā§āϧāϟāĻŋ āĻ¤ā§āϰ⧁āϟāĻŋāϰ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻŦā§āϝāĻžāϚ āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻŦ⧇āĨ¤ āϕ⧇āύ āύāϤ⧁āύ āĻŦāĻžāĻ— āĻĒāĻžāĻ“āϝāĻŧāĻž āϗ⧇āϛ⧇? āĻāϰ āϜāĻ¨ā§āϝ 3āϟāĻŋ āĻ•āĻžāϰāĻŖ āϰāϝāĻŧ⧇āϛ⧇:

  1. LLVM āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϟāĻŋ āĻŦāĻŋāĻ•āĻļāĻŋāϤ āĻšāĻšā§āϛ⧇, āĻĒ⧁āϰāĻžāύ⧋ āϕ⧋āĻĄ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϛ⧇ āĻāĻŦāĻ‚ āύāϤ⧁āύ āϕ⧋āĻĄ āϝ⧋āĻ— āĻ•āϰāϛ⧇āĨ¤ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ•āĻ­āĻžāĻŦ⧇āχ, āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻāĻŦāĻ‚ āϞāĻŋāĻ–āĻŋāϤ āϕ⧋āĻĄā§‡ āύāϤ⧁āύ āĻ¤ā§āϰ⧁āϟāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāϟāĻŋ āĻ¸ā§āĻĒāĻˇā§āϟāĻ­āĻžāĻŦ⧇ āĻĒā§āϰāĻŽāĻžāĻŖ āĻ•āϰ⧇ āϝ⧇ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ āύāĻŋāϝāĻŧāĻŽāĻŋāϤ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āωāϚāĻŋāϤ, āĻāĻŦāĻ‚ āĻŽāĻžāĻā§‡ āĻŽāĻžāĻā§‡ āύāϝāĻŧāĨ¤ āφāĻŽāĻžāĻĻ⧇āϰ āύāĻŋāĻŦāĻ¨ā§āϧāϗ⧁āϞāĻŋ āĻĒāĻŋāĻ­āĻŋāĻāϏ-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āĻŦāĻŋāĻļā§āϞ⧇āώāϕ⧇āϰ āĻ•ā§āώāĻŽāϤāĻžāϗ⧁āϞāĻŋ āĻ­āĻžāϞāĻ­āĻžāĻŦ⧇ āĻĻ⧇āĻ–āĻžāϝāĻŧ, āϤāĻŦ⧇ āϕ⧋āĻĄā§‡āϰ āϗ⧁āĻŖāĻŽāĻžāύ āωāĻ¨ā§āύāϤ āĻ•āϰāĻž āĻāĻŦāĻ‚ āĻ¤ā§āϰ⧁āϟāĻŋāϗ⧁āϞāĻŋ āĻ āĻŋāĻ• āĻ•āϰāĻžāϰ āĻ–āϰāϚ āĻ•āĻŽāĻžāύ⧋āϰ āϏāĻžāĻĨ⧇ āĻāϰ āϕ⧋āύāĻ“ āϏāĻŽā§āĻĒāĻ°ā§āĻ• āύ⧇āχ⧎ āύāĻŋāϝāĻŧāĻŽāĻŋāϤ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āϕ⧋āĻĄ āĻŦāĻŋāĻļā§āϞ⧇āώāĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ!
  2. āφāĻŽāϰāĻž āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĄāĻžāϝāĻŧāĻžāĻ—āύāĻ¸ā§āϟāĻŋāĻ•āϏāϕ⧇ āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āϤ āĻ•āϰāĻ›āĻŋ āĻāĻŦāĻ‚ āωāĻ¨ā§āύāϤ āĻ•āϰāĻ›āĻŋāĨ¤ āĻ…āϤāĻāĻŦ, āĻŦāĻŋāĻļā§āϞ⧇āώāĻ• āĻ¤ā§āϰ⧁āϟāĻŋāϗ⧁āϞāĻŋ āϏāύāĻžāĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āϝāĻž āĻāϟāĻŋ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āĻ¸ā§āĻ•ā§āϝāĻžāύ⧇āϰ āϏāĻŽāϝāĻŧ āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰ⧇āύāĻŋāĨ¤
  3. āĻĒāĻŋāĻ­āĻŋāĻāϏ-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“āϤ⧇ āύāϤ⧁āύ āĻĄāĻžāϝāĻŧāĻžāĻ—āύāĻ¸ā§āϟāĻŋāĻ•āϏ āωāĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻž 2 āĻŦāĻ›āϰ āφāϗ⧇ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻ›āĻŋāϞ āύāĻžāĨ¤ PVS-Studio-āĻāϰ āĻŦāĻŋāĻ•āĻžāĻļ āĻ¸ā§āĻĒāĻˇā§āϟāĻ­āĻžāĻŦ⧇ āĻĻ⧇āĻ–āĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āφāĻŽāĻŋ āϏ⧇āϗ⧁āϞāĻŋāϕ⧇ āĻāĻ•āϟāĻŋ āĻĒ⧃āĻĨāĻ• āĻŦāĻŋāĻ­āĻžāϗ⧇ āĻšāĻžāχāϞāĻžāχāϟ āĻ•āϰāĻžāϰ āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āύāĻŋāϝāĻŧ⧇āĻ›āĻŋāĨ¤

2 āĻŦāĻ›āϰ āφāϗ⧇ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĄāĻžāϝāĻŧāĻ—āύāĻŋāĻ¸ā§āϟāĻŋāĻ• āĻĻā§āĻŦāĻžāϰāĻž āϚāĻŋāĻšā§āύāĻŋāϤ āĻ¤ā§āϰ⧁āϟāĻŋāϗ⧁āϞāĻŋ

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N1: āĻ•āĻĒāĻŋ-āĻĒ⧇āĻ¸ā§āϟ

static bool ShouldUpgradeX86Intrinsic(Function *F, StringRef Name) {
  if (Name == "addcarryx.u32" || // Added in 8.0
    ....
    Name == "avx512.mask.cvtps2pd.128" || // Added in 7.0
    Name == "avx512.mask.cvtps2pd.256" || // Added in 7.0
    Name == "avx512.cvtusi2sd" || // Added in 7.0
    Name.startswith("avx512.mask.permvar.") || // Added in 7.0     // <=
    Name.startswith("avx512.mask.permvar.") || // Added in 7.0     // <=
    Name == "sse2.pmulu.dq" || // Added in 7.0
    Name == "sse41.pmuldq" || // Added in 7.0
    Name == "avx2.pmulu.dq" || // Added in 7.0
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V501 [CWE-570] '||'-āĻāϰ āĻŦāĻžāĻŽ āĻāĻŦāĻ‚ āĻĄāĻžāύ⧇ 'Name.startswith("avx512.mask.permvar.")' āĻ…āĻ­āĻŋāĻ¨ā§āύ āϏāĻžāĻŦ-āĻ…āĻ­āĻŋāĻŦā§āϝāĻ•ā§āϤāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āĻ…āĻĒāĻžāϰ⧇āϟāϰ. AutoUpgrade.cpp 73

āĻāϟāĻŋ āĻĻ⧁āχāĻŦāĻžāϰ āĻšā§‡āĻ• āĻ•āϰāĻž āĻšāϝāĻŧ āϝ⧇ āύāĻžāĻŽāϟāĻŋ "avx512.mask.permvar" āϏāĻžāĻŦāĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧁āϰ⧁ āĻšāϝāĻŧāĨ¤ āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āĻšā§‡āĻ•āϟāĻŋāϤ⧇, āϤāĻžāϰāĻž āĻ¸ā§āĻĒāĻˇā§āϟāϤāχ āĻ…āĻ¨ā§āϝ āĻ•āĻŋāϛ⧁ āϞāĻŋāĻ–āϤ⧇ āĻšā§‡āϝāĻŧ⧇āĻ›āĻŋāϞ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻ…āύ⧁āϞāĻŋāĻĒāĻŋ āĻ•āϰāĻž āĻĒāĻžāĻ ā§āϝ āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰāϤ⧇ āϭ⧁āϞ⧇ āĻ—āĻŋāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤

āĻ–āĻŖā§āĻĄ N2: āϟāĻžāχāĻĒā§‹

enum CXNameRefFlags {
  CXNameRange_WantQualifier = 0x1,
  CXNameRange_WantTemplateArgs = 0x2,
  CXNameRange_WantSinglePiece = 0x4
};

void AnnotateTokensWorker::HandlePostPonedChildCursor(
    CXCursor Cursor, unsigned StartTokenIndex) {
  const auto flags = CXNameRange_WantQualifier | CXNameRange_WantQualifier;
  ....
}

āϏāϤāĻ°ā§āϕ⧀āĻ•āϰāĻŖ PVS-Studio: V501 '|'-āĻāϰ āĻŦāĻžāĻŽ āĻāĻŦāĻ‚ āĻĄāĻžāύāĻĻāĻŋāϕ⧇ 'CXNameRange_WantQualifier' āĻ…āĻ­āĻŋāĻ¨ā§āύ āϏāĻžāĻŦ-āĻ…āĻ­āĻŋāĻŦā§āϝāĻ•ā§āϤāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āĻ…āĻĒāĻžāϰ⧇āϟāϰ. CIndex.cpp 7245

āĻāĻ•āϟāĻŋ āϟāĻžāχāĻĒā§‹āϰ āĻ•āĻžāϰāϪ⧇, āĻāĻ•āχ āύāĻžāĻŽā§‡āϰ āĻ§ā§āϰ⧁āĻŦāĻ•āϟāĻŋ āĻĻ⧁āĻŦāĻžāϰ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧ CXNameRange_WantQualifier.

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N3: āĻ…āĻĒāĻžāϰ⧇āϟāϰ āĻ…āĻ—ā§āϰāĻžāϧāĻŋāĻ•āĻžāϰ āύāĻŋāϝāĻŧ⧇ āĻŦāĻŋāĻ­ā§āϰāĻžāĻ¨ā§āϤāĻŋ

int PPCTTIImpl::getVectorInstrCost(unsigned Opcode, Type *Val, unsigned Index) {
  ....
  if (ISD == ISD::EXTRACT_VECTOR_ELT && Index == ST->isLittleEndian() ? 1 : 0)
    return 0;
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V502 [CWE-783] āϏāĻŽā§āĻ­āĻŦāϤ '?:' āĻ…āĻĒāĻžāϰ⧇āϟāϰāϟāĻŋ āĻĒā§āϰāĻ¤ā§āϝāĻžāĻļāĻžāϰ āĻšā§‡āϝāĻŧ⧇ āĻ­āĻŋāĻ¨ā§āύ āωāĻĒāĻžāϝāĻŧ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤ '?:' āĻ…āĻĒāĻžāϰ⧇āϟāϰ⧇āϰ '==' āĻ…āĻĒāĻžāϰ⧇āϟāϰ⧇āϰ āĻšā§‡āϝāĻŧ⧇ āĻ•āĻŽ āĻ…āĻ—ā§āϰāĻžāϧāĻŋāĻ•āĻžāϰ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ PPCTargetTransformInfo.cpp 404

āφāĻŽāĻžāϰ āĻŽāϤ⧇, āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϖ⧁āĻŦ āϏ⧁āĻ¨ā§āĻĻāϰ āϭ⧁āϞāĨ¤ āĻšā§āϝāĻžāρ, āφāĻŽāĻŋ āϜāĻžāύāĻŋ āϏ⧌āĻ¨ā§āĻĻāĻ°ā§āϝ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āφāĻŽāĻžāϰ āĻ…āĻĻā§āϭ⧁āϤ āϧāĻžāϰāĻŖāĻž āφāϛ⧇ :)āĨ¤

āĻāĻ–āύ, āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āĻ…āĻĒāĻžāϰ⧇āϟāϰ āĻ…āĻ—ā§āϰāĻžāϧāĻŋāĻ•āĻžāϰ, āĻ…āĻ­āĻŋāĻŦā§āϝāĻ•ā§āϤāĻŋāϟāĻŋ āύāĻŋāĻŽā§āύāϰ⧂āĻĒ āĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāύ āĻ•āϰāĻž āĻšāϝāĻŧ:

(ISD == ISD::EXTRACT_VECTOR_ELT && (Index == ST->isLittleEndian())) ? 1 : 0

āĻāĻ•āϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ• āĻĻ⧃āĻˇā§āϟāĻŋāϕ⧋āĻŖ āĻĨ⧇āϕ⧇, āĻāχ āϧāϰāύ⧇āϰ āĻāĻ•āϟāĻŋ āĻļāĻ°ā§āϤ āĻŦā§‹āĻāĻž āϝāĻžāϝāĻŧ āύāĻž, āϝ⧇āĻšā§‡āϤ⧁ āĻāϟāĻŋ āĻšā§āϰāĻžāϏ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇:

(ISD == ISD::EXTRACT_VECTOR_ELT && Index == ST->isLittleEndian())

āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĒāĻˇā§āϟ āϭ⧁āϞāĨ¤ āϖ⧁āĻŦ āϏāĻŽā§āĻ­āĻŦāϤ, āϤāĻžāϰāĻž 0/1 āĻāĻ•āϟāĻŋ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ⧇āϰ āϏāĻžāĻĨ⧇ āϤ⧁āϞāύāĻž āĻ•āϰāϤ⧇ āĻšā§‡āϝāĻŧ⧇āĻ›āĻŋāϞ āϏ⧂āϚāĻ•. āϕ⧋āĻĄāϟāĻŋ āĻ āĻŋāĻ• āĻ•āϰāϤ⧇ āφāĻĒāύāĻžāϕ⧇ āϟāĻžāϰāύāĻžāϰāĻŋ āĻ…āĻĒāĻžāϰ⧇āϟāϰ⧇āϰ āϚāĻžāϰāĻĒāĻžāĻļ⧇ āĻŦāĻ¨ā§āϧāύ⧀ āϝ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇:

if (ISD == ISD::EXTRACT_VECTOR_ELT && Index == (ST->isLittleEndian() ? 1 : 0))

āϝāĻžāχāĻšā§‹āĻ•, āϟāĻžāϰāύāĻžāϰāĻŋ āĻ…āĻĒāĻžāϰ⧇āϟāϰāϟāĻŋ āϖ⧁āĻŦ āĻŦāĻŋāĻĒāĻœā§āϜāύāĻ• āĻāĻŦāĻ‚ āϝ⧌āĻ•ā§āϤāĻŋāĻ• āĻ¤ā§āϰ⧁āϟāĻŋāϗ⧁āϞāĻŋāϕ⧇ āωāĻ¸ā§āϕ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āĻāϟāĻŋāϰ āϏāĻžāĻĨ⧇ āϖ⧁āĻŦ āϏāϤāĻ°ā§āĻ• āĻĨāĻžāϕ⧁āύ āĻāĻŦāĻ‚ āĻŦāĻ¨ā§āϧāύ⧀āϰ āϏāĻžāĻĨ⧇ āϞ⧋āĻ­ā§€ āĻšāĻŦ⧇āύ āύāĻžāĨ¤ āφāĻŽāĻŋ āφāϰ⧋ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤāĻ­āĻžāĻŦ⧇ āĻāχ āĻŦāĻŋāώāϝāĻŧ āϤāĻžāĻ•āĻžāύ āĻāĻ–āĻžāύ⧇, āĻ…āĻ§ā§āϝāĻžāϝāĻŧ⧇ "āϏāϤāĻ°ā§āĻ• āĻĨāĻžāϕ⧁āύ?: āĻ…āĻĒāĻžāϰ⧇āϟāϰ āĻāĻŦāĻ‚ āĻŦāĻ¨ā§āϧāύ⧀āϤ⧇ āĻāϟāĻŋ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύāĨ¤"

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N4, N5: āύāĻžāϞ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ

Init *TGParser::ParseValue(Record *CurRec, RecTy *ItemType, IDParseMode Mode) {
  ....
  TypedInit *LHS = dyn_cast<TypedInit>(Result);
  ....
  LHS = dyn_cast<TypedInit>(
    UnOpInit::get(UnOpInit::CAST, LHS, StringRecTy::get())
      ->Fold(CurRec));
  if (!LHS) {
    Error(PasteLoc, Twine("can't cast '") + LHS->getAsString() +
                    "' to string");
    return nullptr;
  }
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V522 [CWE-476] āύāĻžāϞ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ 'LHS' āĻāϰ āĻĄāĻŋāϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏāĻŋāĻ‚ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ TGParser.cpp 2152

āϝāĻĻāĻŋ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻ• LHS āĻļā§‚āĻ¨ā§āϝ, āĻāĻ•āϟāĻŋ āϏāϤāĻ°ā§āĻ•āϤāĻž āϜāĻžāϰāĻŋ āĻ•āϰāĻž āωāϚāĻŋāϤāĨ¤ āϝāĻžāχāĻšā§‹āĻ•, āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇, āĻāχ āĻāĻ•āχ āύāĻžāϞ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āĻĄāĻŋāϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻ•āϰāĻž āĻšāĻŦ⧇: LHS->getAsString().

āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϖ⧁āĻŦ āϏāĻžāϧāĻžāϰāĻŖ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋ āϝāĻ–āύ āĻāĻ•āϟāĻŋ āĻ¤ā§āϰ⧁āϟāĻŋ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāĻžāϰ⧇ āϞ⧁āĻ•āĻžāύ⧋ āĻĨāĻžāϕ⧇, āϝ⧇āĻšā§‡āϤ⧁ āϕ⧇āω āϤāĻžāĻĻ⧇āϰ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇ āύāĻžāĨ¤ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āĻŦāĻŋāĻļā§āϞ⧇āώāĻ•āϰāĻž āϏāĻŽāĻ¸ā§āϤ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāϝ⧋āĻ—ā§āϝ āϕ⧋āĻĄ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇, āϤāĻž āϝāϤ āϘāύ āϘāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšā§‹āĻ• āύāĻž āϕ⧇āύāĨ¤ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻāĻŦāĻ‚ āĻ¤ā§āϰ⧁āϟāĻŋ āϏ⧁āϰāĻ•ā§āώāĻž āĻ•ā§ŒāĻļāϞāϗ⧁āϞāĻŋāϕ⧇ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻĒāϰāĻŋāĻĒā§‚āϰāĻ• āĻ•āϰ⧇ āϤāĻžāϰ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϖ⧁āĻŦ āĻ­āĻžāϞ āωāĻĻāĻžāĻšāϰāĻŖāĨ¤

āĻ…āύ⧁āϰ⧂āĻĒ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāĻŋāĻ‚ āĻ¤ā§āϰ⧁āϟāĻŋ RHS āĻ āĻŋāĻ• āύ⧀āĻšā§‡āϰ āϕ⧋āĻĄā§‡ āĻ…āύ⧁āĻŽā§‹āĻĻāĻŋāϤ: V522 [CWE-476] āύāĻžāϞ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ 'RHS' āĻāϰ āĻĄāĻŋāϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏāĻŋāĻ‚ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ TGParser.cpp 2186

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N6: āϏāϰāĻžāύ⧋āϰ āĻĒāϰ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž

static Expected<bool>
ExtractBlocks(....)
{
  ....
  std::unique_ptr<Module> ProgClone = CloneModule(BD.getProgram(), VMap);
  ....
  BD.setNewProgram(std::move(ProgClone));                                // <=
  MiscompiledFunctions.clear();

  for (unsigned i = 0, e = MisCompFunctions.size(); i != e; ++i) {
    Function *NewF = ProgClone->getFunction(MisCompFunctions[i].first);  // <=
    assert(NewF && "Function not found??");
    MiscompiledFunctions.push_back(NewF);
  }
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V522 [CWE-476] āύāĻžāϞ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ 'ProgClone'-āĻāϰ āĻĄāĻŋāϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏāĻŋāĻ‚ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ Miscompilation.cpp 601

āĻļ⧁āϰ⧁āϤ⧇ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āϟ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āĻĒā§āϰ⧋āĻ—āĻ•ā§āϞ⧋āύ āĻŦāĻ¸ā§āϤ⧁āϰ āĻŽāĻžāϞāĻŋāĻ•āĻžāύāĻž āĻŦāĻ¨ā§āϧ āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧ:

BD.setNewProgram(std::move(ProgClone));

āφāϏāϞ⧇, āĻāĻ–āύ āĻĒā§āϰ⧋āĻ—āĻ•ā§āϞ⧋āύ āĻāĻ•āϟāĻŋ āύāĻžāϞ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ. āĻ…āϤāĻāĻŦ, āĻāĻ•āϟāĻŋ āύāĻžāϞ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āĻĄāĻŋāϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻ āĻŋāĻ• āύ⧀āĻšā§‡ āϘāϟāϤ⧇ āĻšāĻŦ⧇:

Function *NewF = ProgClone->getFunction(MisCompFunctions[i].first);

āĻ•āĻŋāĻ¨ā§āϤ⧁, āĻŦāĻžāĻ¸ā§āϤāĻŦ⧇ āϤāĻž āĻšāĻŦ⧇ āύāĻž! āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰ⧁āύ āϝ⧇ āϞ⧁āĻĒāϟāĻŋ āφāϏāϞ⧇ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āĻšāϝāĻŧ āύāĻžāĨ¤

āĻĒāĻžāĻ¤ā§āϰ⧇āϰ āĻļ⧁āϰ⧁āϤ⧇ āϭ⧁āϞ āĻ•āĻŽā§āĻĒāĻžāχāϞ āĻ•āϰāĻž āĻĢāĻžāĻ‚āĻļāύ āϏāĻžāĻĢ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇:

MiscompiledFunctions.clear();

āĻāϰ āĻĒāϰ⧇, āĻāχ āϧāĻžāϰāĻ•āϟāĻŋāϰ āφāĻ•āĻžāϰ āϞ⧁āĻĒ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧ:

for (unsigned i = 0, e = MisCompFunctions.size(); i != e; ++i) {

āĻāϟāĻž āĻĻ⧇āĻ–āϤ⧇ āϏāĻšāϜ āϝ⧇ āϞ⧁āĻĒ āĻļ⧁āϰ⧁ āĻšāϝāĻŧ āύāĻžāĨ¤ āφāĻŽāĻŋ āĻŽāύ⧇ āĻ•āϰāĻŋ āĻāϟāĻŋāĻ“ āĻāĻ•āϟāĻŋ āĻŦāĻžāĻ— āĻāĻŦāĻ‚ āϕ⧋āĻĄāϟāĻŋ āĻ­āĻŋāĻ¨ā§āύāĻ­āĻžāĻŦ⧇ āϞ⧇āĻ–āĻž āωāϚāĻŋāϤāĨ¤

āĻŽāύ⧇ āĻšāĻšā§āϛ⧇ āφāĻŽāϰāĻž āϏ⧇āχ āĻŦāĻŋāĻ–ā§āϝāĻžāϤ āϏāĻŽāϤāĻžāϰ āĻ¤ā§āϰ⧁āϟāĻŋāϰ āϏāĻŽā§āĻŽā§āĻ–ā§€āύ āĻšāϝāĻŧ⧇āĻ›āĻŋ! āĻāĻ•āϟāĻŋ āϭ⧁āϞ āĻ…āĻ¨ā§āϝāϟāĻŋāϕ⧇ āĻŽā§āĻ–ā§‹āĻļ āĻĻ⧇āϝāĻŧ :)

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N7: āϏāϰāĻžāύ⧋āϰ āĻĒāϰ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž

static Expected<bool> TestOptimizer(BugDriver &BD, std::unique_ptr<Module> Test,
                                    std::unique_ptr<Module> Safe) {
  outs() << "  Optimizing functions being tested: ";
  std::unique_ptr<Module> Optimized =
      BD.runPassesOn(Test.get(), BD.getPassesToRun());
  if (!Optimized) {
    errs() << " Error running this sequence of passes"
           << " on the input program!n";
    BD.setNewProgram(std::move(Test));                       // <=
    BD.EmitProgressBitcode(*Test, "pass-error", false);      // <=
    if (Error E = BD.debugOptimizerCrash())
      return std::move(E);
    return false;
  }
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āϕ⧀āĻ•āϰāĻŖ: V522 [CWE-476] āύāĻžāϞ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ 'āĻĒāϰ⧀āĻ•ā§āώāĻž' āĻāϰ āĻĄāĻŋāϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏāĻŋāĻ‚ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ Miscompilation.cpp 709

āφāĻŦāĻžāϰāĻ“ āĻāĻ•āχ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĨ¤ āĻĒā§āϰāĻĨāĻŽā§‡, āĻŦāĻ¸ā§āϤ⧁āϰ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ, āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āĻāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ āϝ⧇āύ āĻ•āĻŋāϛ⧁āχ āϘāĻŸā§‡āύāĻŋāĨ¤ C++ āĻ āφāĻ¨ā§āĻĻā§‹āϞāύ⧇āϰ āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻĻā§āϝāĻž āωāĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻšāĻ“āϝāĻŧāĻžāϰ āĻĒāϰ⧇ āφāĻŽāĻŋ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āϕ⧋āĻĄā§‡ āĻāχ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋ āφāϰāĻ“ āĻŦ⧇āĻļāĻŋ āĻ•āϰ⧇ āĻĻ⧇āĻ–āĻŋāĨ¤ āĻāχ āĻ•āĻžāϰāϪ⧇āχ āφāĻŽāĻŋ C++ āĻ­āĻžāώāĻž āĻ­āĻžāϞ⧋āĻŦāĻžāϏāĻŋ! āφāĻĒāύāĻžāϰ āύāĻŋāĻœā§‡āϰ āĻĒāĻžāϝāĻŧ⧇ āϗ⧁āϞāĻŋ āĻ•āϰāĻžāϰ āφāϰāĻ“ āĻāĻŦāĻ‚ āφāϰāĻ“ āύāϤ⧁āύ āωāĻĒāĻžāϝāĻŧ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āĻĒāĻŋāĻ­āĻŋāĻāϏ-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āĻŦāĻŋāĻļā§āϞ⧇āώāϕ⧇āϰ āϏāĻŦāϏāĻŽāϝāĻŧ āĻ•āĻžāϜ āĻĨāĻžāĻ•āĻŦ⧇ :)āĨ¤

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N8: āύāĻžāϞ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ

void FunctionDumper::dump(const PDBSymbolTypeFunctionArg &Symbol) {
  uint32_t TypeId = Symbol.getTypeId();
  auto Type = Symbol.getSession().getSymbolById(TypeId);
  if (Type)
    Printer << "<unknown-type>";
  else
    Type->dump(*this);
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V522 [CWE-476] āύāĻžāϞ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ 'āϟāĻžāχāĻĒ'-āĻāϰ āĻĄāĻŋāϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏāĻŋāĻ‚ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ PrettyFunctionDumper.cpp 233

āĻ¤ā§āϰ⧁āϟāĻŋ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāĻžāϰ āĻ›āĻžāĻĄāĻŧāĻžāĻ“, āĻĄāĻŋāĻŦāĻžāĻ—āĻŋāĻ‚ āĻĒā§āϰāĻŋāĻ¨ā§āϟāφāωāϟ āĻĢāĻžāĻ‚āĻļāύ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻžāĨ¤ āφāĻŽāĻžāĻĻ⧇āϰ āϏāĻžāĻŽāύ⧇ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻŽāĻžāĻŽāϞāĻž āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āĻĢāĻžāĻ‚āĻļāύāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āϜāĻ¨ā§āϝ āĻ…āĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰāϛ⧇, āϝāĻžāϰāĻž āϤāĻžāϰ āϏāĻŽāĻ¸ā§āϝāĻžāϗ⧁āϞāĻŋ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻāϟāĻŋ āĻ āĻŋāĻ• āĻ•āϰāϤ⧇ āĻŦāĻžāĻ§ā§āϝ āĻšāĻŦ⧇āĨ¤

āϏāĻ‚āĻļā§‹āϧāύ:

if (Type)
  Type->dump(*this);
else
  Printer << "<unknown-type>";

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N9: āύāĻžāϞ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ

void SearchableTableEmitter::collectTableEntries(
    GenericTable &Table, const std::vector<Record *> &Items) {
  ....
  RecTy *Ty = resolveTypes(Field.RecType, TI->getType());
  if (!Ty)                                                              // <=
    PrintFatalError(Twine("Field '") + Field.Name + "' of table '" +
                    Table.Name + "' has incompatible type: " +
                    Ty->getAsString() + " vs. " +                       // <=
                    TI->getType()->getAsString());
   ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V522 [CWE-476] āύāĻžāϞ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ 'Ty'-āĻāϰ āĻĄāĻŋāϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏāĻŋāĻ‚ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ SearchableTableEmitter.cpp 614

āφāĻŽāĻŋ āĻŽāύ⧇ āĻ•āϰāĻŋ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ āĻāĻŦāĻ‚ āĻŦā§āϝāĻžāĻ–ā§āϝāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āύ⧇āχāĨ¤

āĻ–āĻŖā§āĻĄ N10: āϟāĻžāχāĻĒā§‹

bool FormatTokenLexer::tryMergeCSharpNullConditionals() {
  ....
  auto &Identifier = *(Tokens.end() - 2);
  auto &Question = *(Tokens.end() - 1);
  ....
  Identifier->ColumnWidth += Question->ColumnWidth;
  Identifier->Type = Identifier->Type;                    // <=
  Tokens.erase(Tokens.end() - 1);
  return true;
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V570 'āφāχāĻĄā§‡āĻ¨ā§āϟāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ->āϟāĻžāχāĻĒ' āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϟāĻŋ āύāĻŋāĻœā§‡āχ āĻŦāϰāĻžāĻĻā§āĻĻ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ FormatTokenLexer.cpp 249

āύāĻŋāĻœā§‡āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāĻļā§€āϞ āĻŦāϰāĻžāĻĻā§āĻĻ āĻ•āϰāĻžāϰ āϕ⧋āύ āĻŽāĻžāύ⧇ āύ⧇āχāĨ¤ āϏāĻŽā§āĻ­āĻŦāϤ āϤāĻžāϰāĻž āϞāĻŋāĻ–āϤ⧇ āĻšā§‡āϝāĻŧ⧇āĻ›āĻŋāϞ:

Identifier->Type = Question->Type;

āĻ–āĻŖā§āĻĄ N11: āϏāĻ¨ā§āĻĻ⧇āĻšāϜāύāĻ• āĻŦāĻŋāϰāϤāĻŋ

void SystemZOperand::print(raw_ostream &OS) const {
  switch (Kind) {
    break;
  case KindToken:
    OS << "Token:" << getToken();
    break;
  case KindReg:
    OS << "Reg:" << SystemZInstPrinter::getRegisterName(getReg());
    break;
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V622 [CWE-478] 'āϏ⧁āχāϚ' āĻŦāĻŋāĻŦ⧃āϤāĻŋ āĻĒāϰāĻŋāĻĻāĻ°ā§āĻļāύ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύ. āĻāϟāĻž āϏāĻŽā§āĻ­āĻŦ āϝ⧇ āĻĒā§āϰāĻĨāĻŽ 'āϕ⧇āϏ' āĻ…āĻĒāĻžāϰ⧇āϟāϰ āĻ…āύ⧁āĻĒāĻ¸ā§āĻĨāĻŋāϤāĨ¤ SystemZAsmParser.cpp 652

āĻļ⧁āϰ⧁āϤ⧇ āϖ⧁āĻŦ āϏāĻ¨ā§āĻĻ⧇āĻšāϜāύāĻ• āĻ…āĻĒāĻžāϰ⧇āϟāϰ āφāϛ⧇ āĻŦāĻŋāϰāϤāĻŋ. āφāĻĒāύāĻŋ āĻ•āĻŋ āĻāĻ–āĻžāύ⧇ āĻ…āĻ¨ā§āϝ āĻ•āĻŋāϛ⧁ āϞāĻŋāĻ–āϤ⧇ āϭ⧁āϞ⧇ āϗ⧇āϛ⧇āύ?

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N12: āĻĄāĻŋāϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

InlineCost AMDGPUInliner::getInlineCost(CallSite CS) {
  Function *Callee = CS.getCalledFunction();
  Function *Caller = CS.getCaller();
  TargetTransformInfo &TTI = TTIWP->getTTI(*Callee);

  if (!Callee || Callee->isDeclaration())
    return llvm::InlineCost::getNever("undefined callee");
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V595 [CWE-476] 'āĻ•ā§āϝāĻžāϞāĻŋ' āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϝāĻžāϚāĻžāχ āĻ•āϰāĻžāϰ āφāϗ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āϞāĻžāχāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: 172, 174. AMDGPUInline.cpp 172

āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝāĻžāϕ⧇ āĻ•āϞ āĻ•āϰāĻ›āĻŋ āĻĢāĻžāĻ‚āĻļāύ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻļ⧁āϰ⧁āϤ⧇ āĻĄāĻŋāϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻ•āϰāĻž āĻšāϝāĻŧ āϟāĻŋāϟāĻŋāφāχ āĻĒāĻžāύ.

āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āĻĻ⧇āĻ–āĻž āϝāĻžāĻšā§āϛ⧇ āϝ⧇ āĻāχ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋ āϏāĻŽāϤāĻžāϰ āϜāĻ¨ā§āϝ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž āωāϚāĻŋāϤ nullptr:

if (!Callee || Callee->isDeclaration())

āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻ…āύ⧇āĻ• āĻĻ⧇āϰāĻŋ āĻšāϝāĻŧ⧇ āϗ⧇āϛ⧇...

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N13 - N...: āĻĄāĻŋāϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āϕ⧋āĻĄ āĻ–āĻŖā§āĻĄā§‡ āφāϞ⧋āϚāύāĻž āĻ•āϰāĻž āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋ āĻ…āύāĻ¨ā§āϝ āύāϝāĻŧāĨ¤ āĻāϟāĻŋ āĻāĻ–āĻžāύ⧇ āĻĒā§āϰāĻĻāĻ°ā§āĻļāĻŋāϤ āĻšāϝāĻŧ:

static Value *optimizeDoubleFP(CallInst *CI, IRBuilder<> &B,
                               bool isBinary, bool isPrecise = false) {
  ....
  Function *CalleeFn = CI->getCalledFunction();
  StringRef CalleeNm = CalleeFn->getName();                 // <=
  AttributeList CalleeAt = CalleeFn->getAttributes();
  if (CalleeFn && !CalleeFn->isIntrinsic()) {               // <=
  ....
}

PVS-Studio āϏāϤāĻ°ā§āĻ•āϤāĻž: V595 [CWE-476] 'CalleeFn' āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϝāĻžāϚāĻžāχ āĻ•āϰāĻžāϰ āφāϗ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āϞāĻžāχāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: 1079, 1081. SimplifyLibCalls.cpp 1079

āĻāĻŦāĻ‚ āĻāĻ–āĻžāύ⧇:

void Sema::InstantiateAttrs(const MultiLevelTemplateArgumentList &TemplateArgs,
                            const Decl *Tmpl, Decl *New,
                            LateInstantiatedAttrVec *LateAttrs,
                            LocalInstantiationScope *OuterMostScope) {
  ....
  NamedDecl *ND = dyn_cast<NamedDecl>(New);
  CXXRecordDecl *ThisContext =
    dyn_cast_or_null<CXXRecordDecl>(ND->getDeclContext());         // <=
  CXXThisScopeRAII ThisScope(*this, ThisContext, Qualifiers(),
                             ND && ND->isCXXInstanceMember());     // <=
  ....
}

PVS-Studio āϏāϤāĻ°ā§āĻ•āϤāĻž: V595 [CWE-476] 'ND' āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϝāĻžāϚāĻžāχ āĻ•āϰāĻžāϰ āφāϗ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āϞāĻžāχāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: 532, 534. SemaTemplateInstantiateDecl.cpp 532

āĻāĻŦāĻ‚ āĻāĻ–āĻžāύ⧇:

  • V595 [CWE-476] 'U' āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϝāĻžāϚāĻžāχ āĻ•āϰāĻžāϰ āφāϗ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āϞāĻžāχāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: 404, 407. DWARFormValue.cpp 404
  • V595 [CWE-476] 'ND' āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϝāĻžāϚāĻžāχ āĻ•āϰāĻžāϰ āφāϗ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āϞāĻžāχāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: 2149, 2151. SemaTemplateInstantiate.cpp 2149

āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āφāĻŽāĻŋ V595 āύāĻŽā§āĻŦāϰ āϏāĻš āϏāϤāĻ°ā§āĻ•āϤāĻž āĻ…āĻ§ā§āϝāϝāĻŧāύ āĻ•āϰāϤ⧇ āφāĻ—ā§āϰāĻšā§€ āĻšāϝāĻŧ⧇ āωāĻ āĻŋ āύāĻžāĨ¤ āϤāĻžāχ āφāĻŽāĻŋ āϜāĻžāύāĻŋ āύāĻž āĻāĻ–āĻžāύ⧇ āϤāĻžāϞāĻŋāĻ•āĻžāϭ⧁āĻ•ā§āϤ āĻ›āĻžāĻĄāĻŧāĻžāĻ“ āφāϰāĻ“ āĻ…āύ⧁āϰ⧂āĻĒ āĻ¤ā§āϰ⧁āϟāĻŋ āφāϛ⧇ āĻ•āĻŋāύāĻžāĨ¤ āϏāĻŽā§āĻ­āĻŦāϤ āφāϛ⧇.

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N17, N18: āϏāĻ¨ā§āĻĻ⧇āĻšāϜāύāĻ• āĻ¸ā§āĻĨāĻžāύāĻžāĻ¨ā§āϤāϰ

static inline bool processLogicalImmediate(uint64_t Imm, unsigned RegSize,
                                           uint64_t &Encoding) {
  ....
  unsigned Size = RegSize;
  ....
  uint64_t NImms = ~(Size-1) << 1;
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V629 [CWE-190] '~(āφāĻ•āĻžāϰ - 1) << 1' āĻ…āĻ­āĻŋāĻŦā§āϝāĻ•ā§āϤāĻŋ āĻĒāϰāĻŋāĻĻāĻ°ā§āĻļāύ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύāĨ¤ 32-āĻŦāĻŋāϟ āϟāĻžāχāĻĒ⧇āϰ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϏāĻŽā§āĻĒā§āϰāϏāĻžāϰāϪ⧇āϰ āϏāĻžāĻĨ⧇ 64-āĻŦāĻŋāϟ āĻŽāĻžāύ⧇āϰ āĻŦāĻŋāϟ āĻ¸ā§āĻĨāĻžāύāĻžāĻ¨ā§āϤāϰāĨ¤ AArch64AddressingModes.h 260

āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻŦāĻžāĻ— āύāĻžāĻ“ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āϕ⧋āĻĄāϟāĻŋ āĻ āĻŋāĻ• āϝ⧇āĻŽāύāϟāĻŋ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤ āϤāĻŦ⧇ āĻāϟāĻŋ āĻ¸ā§āĻĒāĻˇā§āϟāϤāχ āĻāĻ•āϟāĻŋ āϖ⧁āĻŦ āϏāĻ¨ā§āĻĻ⧇āĻšāϜāύāĻ• āϜāĻžāϝāĻŧāĻ—āĻž āĻāĻŦāĻ‚ āĻāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž āĻĻāϰāĻ•āĻžāϰāĨ¤

āϚāϞāĻ• āĻŦāϞāĻž āϝāĻžāĻ• āφāϝāĻŧāϤāύ 16 āĻāϰ āϏāĻŽāĻžāύ, āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āϕ⧋āĻĄā§‡āϰ āϞ⧇āĻ–āĻ• āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāĻļā§€āϞ āĻ•āϰāĻžāϰ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻž āĻ•āϰ⧇āĻ›āĻŋāϞ⧇āύ NImms āĻŽāĻžāύ:

1111111111111111111111111111111111111111111111111111111111100000

āϝāĻžāχāĻšā§‹āĻ•, āĻŦāĻžāĻ¸ā§āϤāĻŦ⧇ āĻĢāϞāĻžāĻĢāϞ āĻšāĻŦ⧇:

0000000000000000000000000000000011111111111111111111111111100000

āφāϏāϞ āĻŦāĻŋāώāϝāĻŧāϟāĻŋ āĻšāϞ āϝ⧇ āϏāĻŽāĻ¸ā§āϤ āĻ—āĻŖāύāĻž 32-āĻŦāĻŋāϟ āĻ¸ā§āĻŦāĻžāĻ•ā§āώāϰāĻŦāĻŋāĻšā§€āύ āϟāĻžāχāĻĒ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϘāĻŸā§‡āĨ¤ āĻāĻŦāĻ‚ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϤāĻžāϰāĻĒāϰ, āĻāχ 32-āĻŦāĻŋāϟ āĻ¸ā§āĻŦāĻžāĻ•ā§āώāϰāĻŦāĻŋāĻšā§€āύ āϟāĻžāχāĻĒāϟāĻŋ āύāĻŋāĻšāĻŋāϤāĻ­āĻžāĻŦ⧇ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻšāĻŦ⧇ uint64_t. āĻāχ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āωāĻ˛ā§āϞ⧇āĻ–āϝ⧋āĻ—ā§āϝ āĻŦāĻŋāϟ āĻļā§‚āĻ¨ā§āϝ āĻšāĻŦ⧇āĨ¤

āφāĻĒāύāĻŋ āĻāχ āĻŽāϤ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋ āĻ āĻŋāĻ• āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ:

uint64_t NImms = ~static_cast<uint64_t>(Size-1) << 1;

āĻ…āύ⧁āϰ⧂āĻĒ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋ: V629 [CWE-190] 'Immr << 6' āĻ…āĻ­āĻŋāĻŦā§āϝāĻ•ā§āϤāĻŋ āĻĒāϰāĻŋāĻĻāĻ°ā§āĻļāύ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύāĨ¤ 32-āĻŦāĻŋāϟ āϟāĻžāχāĻĒ⧇āϰ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϏāĻŽā§āĻĒā§āϰāϏāĻžāϰāϪ⧇āϰ āϏāĻžāĻĨ⧇ 64-āĻŦāĻŋāϟ āĻŽāĻžāύ⧇āϰ āĻŦāĻŋāϟ āĻ¸ā§āĻĨāĻžāύāĻžāĻ¨ā§āϤāϰāĨ¤ AArch64AddressingModes.h 269

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N19: āĻ…āύ⧁āĻĒāĻ¸ā§āĻĨāĻŋāϤ āϕ⧀āĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āφāϰ?

void AMDGPUAsmParser::cvtDPP(MCInst &Inst, const OperandVector &Operands) {
  ....
  if (Op.isReg() && Op.Reg.RegNo == AMDGPU::VCC) {
    // VOP2b (v_add_u32, v_sub_u32 ...) dpp use "vcc" token.
    // Skip it.
    continue;
  } if (isRegOrImmWithInputMods(Desc, Inst.getNumOperands())) {    // <=
    Op.addRegWithFPInputModsOperands(Inst, 2);
  } else if (Op.isDPPCtrl()) {
    Op.addImmOperands(Inst, 1);
  } else if (Op.isImm()) {
    // Handle optional arguments
    OptionalIdx[Op.getImmTy()] = I;
  } else {
    llvm_unreachable("Invalid operand type");
  }
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V646 [CWE-670] āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇āϰ āϝ⧁āĻ•ā§āϤāĻŋ āĻĒāϰāĻŋāĻĻāĻ°ā§āĻļāύ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύ. āĻāϟāĻž āϏāĻŽā§āĻ­āĻŦ āϝ⧇ 'āĻ…āĻ¨ā§āϝ' āϕ⧀āĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻ…āύ⧁āĻĒāĻ¸ā§āĻĨāĻŋāϤāĨ¤ AMDGPUAsmParser.cpp 5655

āĻāĻ–āĻžāύ⧇ āϕ⧋āύ⧋ āϭ⧁āϞ āύ⧇āχāĨ¤ āϤāĻžāϰāĻĒāϰ āĻĨ⧇āϕ⧇ āĻĒā§āϰāĻĨāĻŽ āĻŦā§āϞāĻ• if āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧇āώ āĻšāϝāĻŧ āĻ…āĻŦāĻŋāϰāϤ, āϤāĻžāĻšāϞ⧇ āĻāϟāĻž āϕ⧋āύ āĻŦā§āϝāĻžāĻĒāĻžāϰ āύāĻž, āĻāĻ•āϟāĻŋ āϕ⧀āĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āφāϛ⧇ āφāϰ āĻ…āĻĨāĻŦāĻž āύāĻž. āϝ⧇āĻ­āĻžāĻŦ⧇āχ āĻšā§‹āĻ• āϕ⧋āĻĄ āĻāĻ•āχ āĻ•āĻžāϜ āĻ•āϰāĻŦ⧇āĨ¤ āĻāĻ–āύāĻ“ āĻŽāĻŋāϏ āĻ•āϰāĻ›āĻŋ āφāϰ āϕ⧋āĻĄāϟāĻŋāϕ⧇ āφāϰāĻ“ āĻ…āĻ¸ā§āĻĒāĻˇā§āϟ āĻāĻŦāĻ‚ āĻŦāĻŋāĻĒāĻœā§āϜāύāĻ• āĻ•āϰ⧇ āϤ⧋āϞ⧇āĨ¤ āϝāĻĻāĻŋ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇ āĻ…āĻŦāĻŋāϰāϤ āĻ…āĻĻ⧃āĻļā§āϝ āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧ, āϕ⧋āĻĄāϟāĻŋ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ­āĻŋāĻ¨ā§āύāĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻļ⧁āϰ⧁ āĻ•āϰāĻŦ⧇āĨ¤ āφāĻŽāĻžāϰ āĻŽāϤ⧇ āϝ⧋āĻ— āĻ•āϰāĻž āĻ­āĻžāϞ⧋ āφāϰ.

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N20: āĻāĻ•āχ āϧāϰāύ⧇āϰ āϚāĻžāϰāϟāĻŋ āϟāĻžāχāĻĒā§‹

LLVM_DUMP_METHOD void Symbol::dump(raw_ostream &OS) const {
  std::string Result;
  if (isUndefined())
    Result += "(undef) ";
  if (isWeakDefined())
    Result += "(weak-def) ";
  if (isWeakReferenced())
    Result += "(weak-ref) ";
  if (isThreadLocalValue())
    Result += "(tlv) ";
  switch (Kind) {
  case SymbolKind::GlobalSymbol:
    Result + Name.str();                        // <=
    break;
  case SymbolKind::ObjectiveCClass:
    Result + "(ObjC Class) " + Name.str();      // <=
    break;
  case SymbolKind::ObjectiveCClassEHType:
    Result + "(ObjC Class EH) " + Name.str();   // <=
    break;
  case SymbolKind::ObjectiveCInstanceVariable:
    Result + "(ObjC IVar) " + Name.str();       // <=
    break;
  }
  OS << Result;
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž:

  • V655 [CWE-480] āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚āϗ⧁āϞāĻŋ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻ›āĻŋāϞ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻŋ⧎ 'Result + Name.str()' āĻāĻ•ā§āϏāĻĒā§āϰ⧇āĻļāύ āĻĒāϰāĻŋāĻĻāĻ°ā§āĻļāύ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύāĨ¤ Symbol.cpp 32
  • V655 [CWE-480] āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚āϗ⧁āϞāĻŋ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻ›āĻŋāϞ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻŋ⧎ 'āĻĢāϞāĻžāĻĢāϞ + "(ObjC āĻ•ā§āϞāĻžāϏ)" + Name.str()' āĻ…āĻ­āĻŋāĻŦā§āϝāĻ•ā§āϤāĻŋ āĻĒāϰāĻŋāĻĻāĻ°ā§āĻļāύ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύāĨ¤ Symbol.cpp 35
  • V655 [CWE-480] āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚āϗ⧁āϞāĻŋ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻ›āĻŋāϞ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻŋ⧎ 'āĻĢāϞāĻžāĻĢāϞ + "(ObjC āĻ•ā§āϞāĻžāϏ EH) " + Name.str()' āĻ…āĻ­āĻŋāĻŦā§āϝāĻ•ā§āϤāĻŋ āĻĒāϰāĻŋāĻĻāĻ°ā§āĻļāύ āĻ•āϰāĻžāϰ āĻ•āĻĨāĻž āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύāĨ¤ Symbol.cpp 38
  • V655 [CWE-480] āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚āϗ⧁āϞāĻŋ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻ›āĻŋāϞ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻŋ⧎ 'āĻĢāϞāĻžāĻĢāϞ + "(ObjC IVar)" + Name.str()' āĻ…āĻ­āĻŋāĻŦā§āϝāĻ•ā§āϤāĻŋ āĻĒāϰāĻŋāĻĻāĻ°ā§āĻļāύ āĻ•āϰāĻžāϰ āĻ•āĻĨāĻž āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύāĨ¤ Symbol.cpp 41

āĻĻ⧁āĻ°ā§āϘāϟāύāĻžāĻ•ā§āϰāĻŽā§‡, += āĻ…āĻĒāĻžāϰ⧇āϟāϰ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ + āĻ…āĻĒāĻžāϰ⧇āϟāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻĢāϞāĻžāĻĢāϞ āĻšāϞ āĻāĻŽāύ āĻĄāĻŋāϜāĻžāχāύ āϝāĻž āĻ…āĻ°ā§āĻĨāĻšā§€āύāĨ¤

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N21: āĻ…āύāĻŋāĻ°ā§āϧāĻžāϰāĻŋāϤ āφāϚāϰāĻŖ

static void getReqFeatures(std::map<StringRef, int> &FeaturesMap,
                           const std::vector<Record *> &ReqFeatures) {
  for (auto &R : ReqFeatures) {
    StringRef AsmCondString = R->getValueAsString("AssemblerCondString");

    SmallVector<StringRef, 4> Ops;
    SplitString(AsmCondString, Ops, ",");
    assert(!Ops.empty() && "AssemblerCondString cannot be empty");

    for (auto &Op : Ops) {
      assert(!Op.empty() && "Empty operator");
      if (FeaturesMap.find(Op) == FeaturesMap.end())
        FeaturesMap[Op] = FeaturesMap.size();
    }
  }
}

āĻŦāĻŋāĻĒāĻœā§āϜāύāĻ• āϕ⧋āĻĄ āύāĻŋāĻœā§‡āχ āϖ⧁āρāĻœā§‡ āĻŦ⧇āϰ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧁āύ. āĻāĻŦāĻ‚ āĻāϟāĻŋ āĻŽāύ⧋āϝ⧋āĻ— āĻŦāĻŋāĻ­ā§āϰāĻžāĻ¨ā§āϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻ›āĻŦāĻŋ āϝāĻžāϤ⧇ āĻ…āĻŦāĻŋāϞāĻŽā§āĻŦ⧇ āωāĻ¤ā§āϤāϰāϟāĻŋ āĻĻ⧇āĻ–āϤ⧇ āύāĻž āĻĒāĻžāϰ⧇:

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āĻŦāĻŋāĻļā§āϞ⧇āώāĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ LLVM 8-āĻ āĻŦāĻžāĻ— āĻ–ā§‹āρāϜāĻž

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V708 [CWE-758] āĻŦāĻŋāĻĒāĻœā§āϜāύāĻ• āύāĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ: 'FeaturesMap[Op] = FeaturesMap.size()', āϝ⧇āĻ–āĻžāύ⧇ 'FeaturesMap' 'āĻŽā§āϝāĻžāĻĒ' āĻļā§āϰ⧇āĻŖā§€āϰāĨ¤ āĻāϟāĻŋ āĻ…āύāĻŋāĻ°ā§āϧāĻžāϰāĻŋāϤ āφāϚāϰāϪ⧇āϰ āĻĻāĻŋāϕ⧇ āĻĒāϰāĻŋāϚāĻžāϞāĻŋāϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ RISCVCompressInstEmitter.cpp 490

āϏāĻŽāĻ¸ā§āϝāĻž āϞāĻžāχāύ:

FeaturesMap[Op] = FeaturesMap.size();

āϝāĻĻāĻŋ āωāĻĒāĻžāĻĻāĻžāύ Op āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧ āύāĻž, āϤāĻžāϰāĻĒāϰ āĻŽāĻžāύāϚāĻŋāĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āωāĻĒāĻžāĻĻāĻžāύ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻāχ āĻŽāĻžāύāϚāĻŋāĻ¤ā§āϰ⧇āϰ āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋāϰ āϏāĻ‚āĻ–ā§āϝāĻž āϏ⧇āĻ–āĻžāύ⧇ āϞ⧇āĻ–āĻž āĻšāϝāĻŧāĨ¤ āĻĢāĻžāĻ‚āĻļāύāϟāĻŋ āĻ•āϞ āĻ•āϰāĻž āĻšāĻŦ⧇ āĻ•āĻŋāύāĻž āϤāĻž āĻ āĻŋāĻ• āĻ…āϜāĻžāύāĻž āφāϝāĻŧāϤāύ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āωāĻĒāĻžāĻĻāĻžāύ āϝ⧋āĻ— āĻ•āϰāĻžāϰ āφāϗ⧇ āĻŦāĻž āĻĒāϰ⧇āĨ¤

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N22-N24: āĻŦāĻžāϰāĻŦāĻžāϰ āĻ…ā§āϝāĻžāϏāĻžāχāύāĻŽā§‡āĻ¨ā§āϟ

Error MachOObjectFile::checkSymbolTable() const {
  ....
  } else {
    MachO::nlist STE = getSymbolTableEntry(SymDRI);
    NType = STE.n_type;                              // <=
    NType = STE.n_type;                              // <=
    NSect = STE.n_sect;
    NDesc = STE.n_desc;
    NStrx = STE.n_strx;
    NValue = STE.n_value;
  }
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V519 [CWE-563] 'NType' āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϕ⧇ āĻĒāϰāĻĒāϰ āĻĻ⧁āχāĻŦāĻžāϰ āĻŽāĻžāύ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āϏāĻŽā§āĻ­āĻŦāϤ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϭ⧁āϞ. āϞāĻžāχāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: 1663, 1664. MachOObjectFile.cpp 1664

āφāĻŽāĻŋ āĻŽāύ⧇ āĻ•āϰāĻŋ āύāĻž āĻāĻ–āĻžāύ⧇ āĻĒā§āϰāĻ•ā§ƒāϤ āϭ⧁āϞ āφāϛ⧇āĨ¤ āĻļ⧁āϧ⧁ āĻāĻ•āϟāĻŋ āĻ…āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āĻ…ā§āϝāĻžāϏāĻžāχāύāĻŽā§‡āĻ¨ā§āϟ. āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāĻ–āύāĻ“ āĻāĻ•āϟāĻŋ āϭ⧁āϞ.

āĻāĻ•āχāĻ­āĻžāĻŦ⧇:

  • V519 [CWE-563] 'B.NDesc' āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϕ⧇ āĻĒāϰāĻĒāϰ āĻĻ⧁āĻŦāĻžāϰ āĻŽāĻžāύ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āϏāĻŽā§āĻ­āĻŦāϤ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϭ⧁āϞ. āϞāĻžāχāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: 1488, 1489. llvm-nm.cpp 1489
  • V519 [CWE-563] āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϟāĻŋāϕ⧇ āĻĒāϰāĻĒāϰ āĻĻ⧁āĻŦāĻžāϰ āĻŽāĻžāύ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āϏāĻŽā§āĻ­āĻŦāϤ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϭ⧁āϞ. āϞāĻžāχāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: 59, 61. coff2yaml.cpp 61

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N25-N27: āφāϰāĻ“ āϰāĻŋāĻ…ā§āϝāĻžāϏāĻžāχāύāĻŽā§‡āĻ¨ā§āϟ

āĻāĻ–āύ āĻĒ⧁āύāσāĻ…ā§āϝāĻžāϏāĻžāχāύāĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ āĻāĻ•āϟāĻŋ āϏāĻžāĻŽāĻžāĻ¨ā§āϝ āĻ­āĻŋāĻ¨ā§āύ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āϤāĻžāĻ•āĻžāύ.

bool Vectorizer::vectorizeLoadChain(
    ArrayRef<Instruction *> Chain,
    SmallPtrSet<Instruction *, 16> *InstructionsProcessed) {
  ....
  unsigned Alignment = getAlignment(L0);
  ....
  unsigned NewAlign = getOrEnforceKnownAlignment(L0->getPointerOperand(),
                                                 StackAdjustedAlignment,
                                                 DL, L0, nullptr, &DT);
  if (NewAlign != 0)
    Alignment = NewAlign;
  Alignment = NewAlign;
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V519 [CWE-563] 'āĻ…ā§āϝāĻžāϞāĻžāχāύāĻŽā§‡āĻ¨ā§āϟ' āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϕ⧇ āĻĒāϰāĻĒāϰ āĻĻ⧁āĻŦāĻžāϰ āĻŽāĻžāύ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻŽā§āĻ­āĻŦāϤ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϭ⧁āϞ. āϞāĻžāχāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: 1158, 1160. LoadStoreVectorizer.cpp 1160

āĻāϟāĻŋ āϖ⧁āĻŦ āĻ…āĻĻā§āϭ⧁āϤ āϕ⧋āĻĄ āϝāĻž āĻĻ⧃āĻļā§āϝāϤ āĻāĻ•āϟāĻŋ āϞāϜāĻŋāĻ•ā§āϝāĻžāϞ āĻ¤ā§āϰ⧁āϟāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āĻļ⧁āϰ⧁āϤ⧇, āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāĻļā§€āϞ āĻļā§āϰ⧇āĻŖā§€āĻŦāĻŋāĻ¨ā§āϝāĻžāϏ āĻļāĻ°ā§āϤ⧇āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽāĻžāύ āĻŦāϰāĻžāĻĻā§āĻĻ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āĻ…ā§āϝāĻžāϏāĻžāχāύāĻŽā§‡āĻ¨ā§āϟ āφāĻŦāĻžāϰ āϘāĻŸā§‡, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāĻ–āύ āϕ⧋āύ āĻšā§‡āĻ• āĻ›āĻžāĻĄāĻŧāĻž.

āĻ…āύ⧁āϰ⧂āĻĒ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋ āĻāĻ–āĻžāύ⧇ āĻĻ⧇āĻ–āĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇:

  • V519 [CWE-563] 'āχāĻĢ⧇āĻ•ā§āϟ' āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϕ⧇ āĻĒāϰāĻĒāϰ āĻĻ⧁āĻŦāĻžāϰ āĻŽāĻžāύ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āϏāĻŽā§āĻ­āĻŦāϤ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϭ⧁āϞ. āϞāĻžāχāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: 152, 165. WebAssemblyRegStackify.cpp 165
  • V519 [CWE-563] 'ExpectNoDerefChunk' āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϕ⧇ āĻĒāϰāĻĒāϰ āĻĻ⧁āĻŦāĻžāϰ āĻŽāĻžāύ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻŽā§āĻ­āĻŦāϤ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϭ⧁āϞ. āϞāĻžāχāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: 4970, 4973. SemaType.cpp 4973

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N28: āϏāĻ°ā§āĻŦāĻĻāĻž āϏāĻ¤ā§āϝ āĻ…āĻŦāĻ¸ā§āĻĨāĻž

static int readPrefixes(struct InternalInstruction* insn) {
  ....
  uint8_t byte = 0;
  uint8_t nextByte;
  ....
  if (byte == 0xf3 && (nextByte == 0x88 || nextByte == 0x89 ||
                       nextByte == 0xc6 || nextByte == 0xc7)) {
    insn->xAcquireRelease = true;
    if (nextByte != 0x90) // PAUSE instruction support             // <=
      break;
  }
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V547 [CWE-571] āĻāĻ•ā§āϏāĻĒā§āϰ⧇āĻļāύ 'nextByte != 0x90' āϏāĻ°ā§āĻŦāĻĻāĻž āϏāĻ¤ā§āϝāĨ¤ X86DisassemblerDecoder.cpp 379

āĻšā§‡āĻ• āĻ•āϰāĻž āĻŽāĻžāύ⧇ āύāĻž. āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāĻļā§€āϞ āύ⧇āĻ•ā§āϏāϟāĻŦāĻžāχāϟ āϏāĻŦāϏāĻŽāϝāĻŧ āĻŽāĻžāύ⧇āϰ āϏāĻŽāĻžāύ āύāϝāĻŧ 0x90, āϝāĻž āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āĻšā§‡āĻ• āĻĨ⧇āϕ⧇ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ āĻāĻ•āϧāϰāύ⧇āϰ āϝ⧌āĻ•ā§āϤāĻŋāĻ• āĻ¤ā§āϰ⧁āϟāĻŋāĨ¤

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N29 - N...: āϏāĻ°ā§āĻŦāĻĻāĻž āϏāĻ¤ā§āϝ/āĻŽāĻŋāĻĨā§āϝāĻž āĻļāĻ°ā§āϤ

āĻŦāĻŋāĻļā§āϞ⧇āώāĻ• āĻ…āύ⧇āĻ• āϏāϤāĻ°ā§āĻ•āϤāĻž āϜāĻžāϰāĻŋ āĻ•āϰ⧇ āϝ⧇ āϏāĻŽāĻ—ā§āϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻž (V547) āĻŦāĻž āĻāϰ āĻ…āĻ‚āĻļ (V560) āϏāĻ°ā§āĻŦāĻĻāĻž āϏāĻ¤ā§āϝ āĻŦāĻž āĻŽāĻŋāĻĨā§āϝāĻžāĨ¤ āĻĒā§āϰāĻžāϝāĻŧāĻļāχ āĻāϗ⧁āϞāĻŋ āφāϏāϞ āĻ¤ā§āϰ⧁āϟāĻŋ āύāϝāĻŧ, āϤāĻŦ⧇ āϕ⧇āĻŦāϞ āĻ¸ā§āϞ⧋āĻĒāĻŋ āϕ⧋āĻĄ, āĻŽā§āϝāĻžāĻ•ā§āϰ⧋ āϏāĻŽā§āĻĒā§āϰāϏāĻžāϰāϪ⧇āϰ āĻĢāϞāĻžāĻĢāϞ āĻāĻŦāĻ‚ āĻāϰ āĻŽāϤ⧋āĨ¤ āϝāĻžāχāĻšā§‹āĻ•, āĻāχ āϏāĻŽāĻ¸ā§āϤ āϏāϤāĻ°ā§āĻ•āĻŦāĻžāĻŖā§€āϰ āĻĻāĻŋāϕ⧇ āϤāĻžāĻ•āĻžāύ⧋ āĻŦā§‹āϧāĻ—āĻŽā§āϝ, āĻ•āĻžāϰāĻŖ āĻĒā§āϰāĻ•ā§ƒāϤ āϝ⧌āĻ•ā§āϤāĻŋāĻ• āĻ¤ā§āϰ⧁āϟāĻŋ āϏāĻŽāϝāĻŧ⧇ āϏāĻŽāϝāĻŧ⧇ āϘāĻŸā§‡āĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āϕ⧋āĻĄā§‡āϰ āĻāχ āĻŦāĻŋāĻ­āĻžāĻ—āϟāĻŋ āϏāĻ¨ā§āĻĻ⧇āĻšāϜāύāĻ•:

static DecodeStatus DecodeGPRPairRegisterClass(MCInst &Inst, unsigned RegNo,
                                   uint64_t Address, const void *Decoder) {
  DecodeStatus S = MCDisassembler::Success;

  if (RegNo > 13)
    return MCDisassembler::Fail;

  if ((RegNo & 1) || RegNo == 0xe)
     S = MCDisassembler::SoftFail;
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V560 [CWE-570] āĻļāĻ°ā§āϤāϏāĻžāĻĒ⧇āĻ•ā§āώ āĻ…āĻ­āĻŋāĻŦā§āϝāĻ•ā§āϤāĻŋāϰ āĻāĻ•āϟāĻŋ āĻ…āĻ‚āĻļ āϏāĻ°ā§āĻŦāĻĻāĻž āĻŽāĻŋāĻĨā§āϝāĻž: RegNo == 0xeāĨ¤ ARMDisassembler.cpp 939

āĻ§ā§āϰ⧁āĻŦāĻ• 0xE āĻšāϞ āĻĻāĻļāĻŽāĻŋāϕ⧇āϰ āĻŽāĻžāύ 14āĨ¤ āĻĒāϰ⧀āĻ•ā§āώāĻž RegNo == 0xe āĻŽāĻžāύ⧇ āύāĻž āĻ•āĻžāϰāĻŖ āϝāĻĻāĻŋ RegNo > 13, āϤāĻžāĻšāϞ⧇ āĻĢāĻžāĻ‚āĻļāύāϟāĻŋ āϤāĻžāϰ āĻ•āĻžāĻ°ā§āϝ āϏāĻŽā§āĻĒāĻžāĻĻāύ āϏāĻŽā§āĻĒāĻ¨ā§āύ āĻ•āϰāĻŦ⧇āĨ¤

āφāχāĻĄāĻŋ V547 āĻāĻŦāĻ‚ V560 āĻāϰ āϏāĻžāĻĨ⧇ āφāϰāĻ“ āĻ…āύ⧇āĻ• āϏāϤāĻ°ā§āĻ•āϤāĻž āĻ›āĻŋāϞ, āϤāĻŦ⧇ āĻāϰ āϏāĻžāĻĨ⧇ V595, āφāĻŽāĻŋ āĻāχ āϏāϤāĻ°ā§āĻ•āϤāĻž āĻ…āĻ§ā§āϝāϝāĻŧāύ āĻ•āϰāϤ⧇ āφāĻ—ā§āϰāĻšā§€ āĻ›āĻŋāϞ āύāĻž. āĻāϟāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻ¸ā§āĻĒāĻˇā§āϟ āĻ›āĻŋāϞ āϝ⧇ āφāĻŽāĻžāϰ āĻ•āĻžāϛ⧇ āĻāĻ•āϟāĻŋ āύāĻŋāĻŦāĻ¨ā§āϧ āϞ⧇āĻ–āĻžāϰ āϜāĻ¨ā§āϝ āϝāĻĨ⧇āĻˇā§āϟ āωāĻĒāĻžāĻĻāĻžāύ āĻ›āĻŋāϞ :)āĨ¤ āĻ…āϤāĻāĻŦ, āĻĒāĻŋāĻ­āĻŋāĻāϏ-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāϞāĻāϞāĻ­āĻŋāĻāĻŽ-āĻ āĻāχ āϧāϰāϪ⧇āϰ āĻ•āϤāϗ⧁āϞāĻŋ āĻ¤ā§āϰ⧁āϟāĻŋ āϏāύāĻžāĻ•ā§āϤ āĻ•āϰāĻž āϝāĻžāϝāĻŧ āϤāĻž āĻ…āϜāĻžāύāĻžāĨ¤

āφāĻŽāĻŋ āφāĻĒāύāĻžāϕ⧇ āĻāĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ āĻĻ⧇āĻŦ āϕ⧇āύ āĻāχ āĻŸā§āϰāĻŋāĻ—āĻžāϰāϗ⧁āϞāĻŋ āĻ…āĻ§ā§āϝāϝāĻŧāύ āĻ•āϰāĻž āĻŦāĻŋāϰāĻ•ā§āϤāĻŋāĻ•āϰāĨ¤ āĻŦāĻŋāĻļā§āϞ⧇āώāĻ• āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āϕ⧋āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϏāϤāĻ°ā§āĻ•āϤāĻž āϜāĻžāϰāĻŋ āĻ•āϰāĻžāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāϕ⧇āĻŦāĻžāϰ⧇ āϏāĻ āĻŋāĻ•āĨ¤ āϤāĻŦ⧇ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϭ⧁āϞ āύāϝāĻŧāĨ¤

bool UnwrappedLineParser::parseBracedList(bool ContinueOnSemicolons,
                                          tok::TokenKind ClosingBraceKind) {
  bool HasError = false;
  ....
  HasError = true;
  if (!ContinueOnSemicolons)
    return !HasError;
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V547 [CWE-570] āĻ…āĻ­āĻŋāĻŦā§āϝāĻ•ā§āϤāĻŋ '!HasError' āϏāĻ°ā§āĻŦāĻĻāĻž āĻŽāĻŋāĻĨā§āϝāĻžāĨ¤ UnwrappedLineParser.cpp 1635

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N30: ​​āϏāĻ¨ā§āĻĻ⧇āĻšāϜāύāĻ• āϰāĻŋāϟāĻžāĻ°ā§āύ

static bool
isImplicitlyDef(MachineRegisterInfo &MRI, unsigned Reg) {
  for (MachineRegisterInfo::def_instr_iterator It = MRI.def_instr_begin(Reg),
      E = MRI.def_instr_end(); It != E; ++It) {
    return (*It).isImplicitDef();
  }
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V612 [CWE-670] āĻāĻ•āϟāĻŋ āϞ⧁āĻĒ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻāĻ•āϟāĻŋ āĻļāĻ°ā§āϤāĻšā§€āύ 'āϰāĻŋāϟāĻžāĻ°ā§āύ'āĨ¤ R600OptimizeVectorRegisters.cpp 63

āĻāϟāĻŋ āĻšāϝāĻŧ āĻāĻ•āϟāĻŋ āĻ¤ā§āϰ⧁āϟāĻŋ āĻŦāĻž āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•ā§ŒāĻļāϞ āϝāĻž āϕ⧋āĻĄ āĻĒāĻžāĻ āĻ•āĻžāϰ⧀ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻžāϰāĻĻ⧇āϰ āĻ•āĻŋāϛ⧁ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āĻ•āϰāĻžāϰ āωāĻĻā§āĻĻ⧇āĻļā§āϝ⧇āĨ¤ āĻāχ āύāĻ•āĻļāĻžāϟāĻŋ āφāĻŽāĻžāϕ⧇ āĻ•āĻŋāϛ⧁ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āĻ•āϰ⧇ āύāĻž āĻāĻŦāĻ‚ āϖ⧁āĻŦ āϏāĻ¨ā§āĻĻ⧇āĻšāϜāύāĻ• āĻĻ⧇āĻ–āĻžāϝāĻŧāĨ¤ āĻāĻ­āĻžāĻŦ⧇ āύāĻž āϞ⧇āĻ–āĻžāχ āĻ­āĻžāϞ⧋ :)

āĻ•ā§āϞāĻžāĻ¨ā§āϤ? āϤāĻžāϰāĻĒāϰ āϚāĻž āĻŦāĻž āĻ•āĻĢāĻŋ āĻŦāĻžāύāĻžāύ⧋āϰ āĻĒāĻžāϞāĻžāĨ¤

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āĻŦāĻŋāĻļā§āϞ⧇āώāĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ LLVM 8-āĻ āĻŦāĻžāĻ— āĻ–ā§‹āρāϜāĻž

āύāϤ⧁āύ āĻĄāĻžāϝāĻŧāĻ—āύāĻŋāĻ¸ā§āϟāĻŋāĻ• āĻĻā§āĻŦāĻžāϰāĻž āϚāĻŋāĻšā§āύāĻŋāϤ āĻ¤ā§āϰ⧁āϟāĻŋ

āφāĻŽāĻŋ āĻŽāύ⧇ āĻ•āϰāĻŋ āĻĒ⧁āϰāĻžāύ⧋ āĻĄāĻžāϝāĻŧāĻžāĻ—āύāĻ¸ā§āϟāĻŋāĻ•āϗ⧁āϞāĻŋāϰ 30 āϟāĻŋ āϏāĻ•ā§āϰāĻŋāϝāĻŧāĻ•āϰāĻŖ āϝāĻĨ⧇āĻˇā§āϟāĨ¤ āφāϏ⧁āύ āĻāĻ–āύ āĻĻ⧇āĻ–āĻŋ āύāϤ⧁āύ āĻĄāĻžāϝāĻŧāĻžāĻ—āύāĻ¸ā§āϟāĻŋāĻ•āϏ⧇āϰ āϏāĻžāĻĨ⧇ āϕ⧀ āφāĻ•āĻ°ā§āώāĻŖā§€āϝāĻŧ āϜāĻŋāύāĻŋāϏ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āϝāĻž āĻŦāĻŋāĻļā§āϞ⧇āώāϕ⧇āϰ āĻĒāϰ⧇ āωāĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ āφāϗ⧇ āĻšā§‡āĻ• āĻāχ āϏāĻŽāϝāĻŧ⧇, C++ āĻŦāĻŋāĻļā§āϞ⧇āώāĻ•āϟāĻŋāϤ⧇ āĻŽā§‹āϟ 66āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ-āωāĻĻā§āĻĻ⧇āĻļā§āϝ āĻĄāĻžāϝāĻŧāĻžāĻ—āύāĻ¸ā§āϟāĻŋāĻ• āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N31: āĻĒ⧌āρāĻ›āĻžāύ⧋ āϝāĻžāϝāĻŧ āύāĻž āĻāĻŽāύ āϕ⧋āĻĄ

Error CtorDtorRunner::run() {
  ....
  if (auto CtorDtorMap =
          ES.lookup(JITDylibSearchList({{&JD, true}}), std::move(Names),
                    NoDependenciesToRegister, true))
  {
    ....
    return Error::success();
  } else
    return CtorDtorMap.takeError();

  CtorDtorsByPriority.clear();

  return Error::success();
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V779 [CWE-561] āύāĻžāĻ—āĻžāϞāϝ⧋āĻ—ā§āϝ āϕ⧋āĻĄ āĻļāύāĻžāĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāϟāĻž āϏāĻŽā§āĻ­āĻŦ āϝ⧇ āĻāĻ•āϟāĻŋ āĻ¤ā§āϰ⧁āϟāĻŋ āωāĻĒāĻ¸ā§āĻĨāĻŋāϤ āφāϛ⧇. ExecutionUtils.cpp 146

āφāĻĒāύāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰ⧇āύ, āĻ…āĻĒāĻžāϰ⧇āϟāϰ āωāĻ­āϝāĻŧ āĻļāĻžāĻ–āĻž if āĻ…āĻĒāĻžāϰ⧇āϟāϰāϕ⧇ āĻāĻ•āϟāĻŋ āĻ•āϞ āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧇āώ āĻšāϝāĻŧ āĻĒā§āϰāĻ¤ā§āϝāĻžāĻŦāĻ°ā§āϤāύ. āϏ⧇āχ āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āϧāĻžāϰāĻ• CtorDtorsBy Priority āĻ•āĻ–āύāĻ“ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ āĻ•āϰāĻž āĻšāĻŦ⧇ āύāĻžāĨ¤

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N32: āĻĒ⧌āρāĻ›āĻžāύ⧋ āϝāĻžāϝāĻŧ āύāĻž āĻāĻŽāύ āϕ⧋āĻĄ

bool LLParser::ParseSummaryEntry() {
  ....
  switch (Lex.getKind()) {
  case lltok::kw_gv:
    return ParseGVEntry(SummaryID);
  case lltok::kw_module:
    return ParseModuleEntry(SummaryID);
  case lltok::kw_typeid:
    return ParseTypeIdEntry(SummaryID);                        // <=
    break;                                                     // <=
  default:
    return Error(Lex.getLoc(), "unexpected summary kind");
  }
  Lex.setIgnoreColonInIdentifiers(false);                      // <=
  return false;
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V779 [CWE-561] āύāĻžāĻ—āĻžāϞāϝ⧋āĻ—ā§āϝ āϕ⧋āĻĄ āĻļāύāĻžāĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāϟāĻž āϏāĻŽā§āĻ­āĻŦ āϝ⧇ āĻāĻ•āϟāĻŋ āĻ¤ā§āϰ⧁āϟāĻŋ āωāĻĒāĻ¸ā§āĻĨāĻŋāϤ āφāϛ⧇. LLParser.cpp 835

āφāĻ•āĻ°ā§āώāĻŖā§€āϝāĻŧ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋāĨ¤ āφāϏ⧁āύ āĻĒā§āϰāĻĨāĻŽā§‡ āĻāχ āϜāĻžāϝāĻŧāĻ—āĻžāϟāĻŋ āĻĻ⧇āĻ–āĻŋ:

return ParseTypeIdEntry(SummaryID);
break;

āĻĒā§āϰāĻĨāĻŽ āύāϜāϰ⧇, āĻŽāύ⧇ āĻšāĻšā§āϛ⧇ āĻāĻ–āĻžāύ⧇ āϕ⧋āύ āĻ¤ā§āϰ⧁āϟāĻŋ āύ⧇āχāĨ¤ āĻāϟāĻž āĻ…āĻĒāĻžāϰ⧇āϟāϰ āĻŽāϤ āĻĻ⧇āĻ–āĻžāϝāĻŧ āĻŦāĻŋāϰāϤāĻŋ āĻāĻ–āĻžāύ⧇ āĻāĻ•āϟāĻŋ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āφāϛ⧇, āĻāĻŦāĻ‚ āφāĻĒāύāĻŋ āĻāϟāĻŋ āĻŽā§āϛ⧇ āĻĢ⧇āϞāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āϝāĻžāχāĻšā§‹āĻ•, āϏāĻŦ āĻāϤ āϏāĻšāϜ āύāϝāĻŧāĨ¤

āĻŦāĻŋāĻļā§āϞ⧇āώāĻ• āϞāĻžāχāύāϗ⧁āϞāĻŋāϤ⧇ āĻāĻ•āϟāĻŋ āϏāϤāĻ°ā§āĻ•āϤāĻž āϜāĻžāϰāĻŋ āĻ•āϰ⧇:

Lex.setIgnoreColonInIdentifiers(false);
return false;

āĻāĻŦāĻ‚ āĻĒā§āϰāĻ•ā§ƒāϤāĻĒāĻ•ā§āώ⧇, āĻāχ āϕ⧋āĻĄāϟāĻŋ āĻĒ⧌āρāĻ›āĻžāύ⧋ āϝāĻžāϝāĻŧ āύāĻžāĨ¤ āĻŽāĻ§ā§āϝ⧇ āϏāĻŦ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϏ⧁āχāϚ āĻ…āĻĒāĻžāϰ⧇āϟāϰ āĻĨ⧇āϕ⧇ āĻāĻ•āϟāĻŋ āĻ•āϞ āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧇āώ āĻšāϝāĻŧ āĻĒā§āϰāĻ¤ā§āϝāĻžāĻŦāĻ°ā§āϤāύ. āφāϰ āĻāĻ–āύ āĻāĻ•āĻž āĻāĻ•āĻž āĻŦāĻŋāϰāϤāĻŋ āĻāϤ āύāĻŋāϰ⧀āĻš āĻĻ⧇āĻ–āĻžāϝāĻŧ āύāĻž! āϏāĻŽā§āĻ­āĻŦāϤ āĻļāĻžāĻ–āĻžāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧇āώ āĻšāĻ“āϝāĻŧāĻž āωāϚāĻŋāϤ āĻŦāĻŋāϰāϤāĻŋ, āύāĻž āĻĒā§āϰāĻ¤ā§āϝāĻžāĻŦāĻ°ā§āϤāύ?

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N33: āωāĻšā§āϚ āĻŦāĻŋāĻŸā§‡āϰ āĻ°ā§āϝāĻžāĻ¨ā§āĻĄāĻŽ āϰāĻŋāϏ⧇āϟ

unsigned getStubAlignment() override {
  if (Arch == Triple::systemz)
    return 8;
  else
    return 1;
}

Expected<unsigned>
RuntimeDyldImpl::emitSection(const ObjectFile &Obj,
                             const SectionRef &Section,
                             bool IsCode) {
  ....
  uint64_t DataSize = Section.getSize();
  ....
  if (StubBufSize > 0)
    DataSize &= ~(getStubAlignment() - 1);
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V784 āĻŦāĻŋāϟ āĻŽāĻžāĻ¸ā§āϕ⧇āϰ āφāĻ•āĻžāϰ āĻĒā§āϰāĻĨāĻŽ āĻ…āĻĒāĻžāϰ⧇āĻ¨ā§āĻĄā§‡āϰ āφāĻ•āĻžāϰ⧇āϰ āĻšā§‡āϝāĻŧ⧇ āĻ•āĻŽāĨ¤ āĻāϟāĻŋ āωāĻšā§āϚāϤāϰ āĻŦāĻŋāϟāϗ⧁āϞāĻŋāϰ āĻ•ā§āώāϤāĻŋāϰ āĻ•āĻžāϰāĻŖ āĻšāĻŦ⧇āĨ¤ RuntimeDyld.cpp 815

āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ āύ⧋āϟ āĻ•āϰ⧁āύ āϝ⧇ āĻĢāĻžāĻ‚āĻļāύ GetStubAlignment āϰāĻŋāϟāĻžāĻ°ā§āύ āϟāĻžāχāĻĒ āĻ…āĻ¸ā§āĻŦāĻžāĻ•ā§āώāϰāĻŋāϤ. āφāϏ⧁āύ āĻāĻ•ā§āϏāĻĒā§āϰ⧇āĻļāύ⧇āϰ āĻŽāĻžāύ āĻ—āĻŖāύāĻž āĻ•āϰāĻŋ, āϧāϰ⧇ āύāĻŋāχ āϝ⧇ āĻĢāĻžāĻ‚āĻļāύāϟāĻŋ 8 āĻŽāĻžāύ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇:

~( getStubAlignment() - 1)

~(8u-1)

0xFFFFFFFF8u

āĻāĻ–āύ āϝ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāĻļā§€āϞ āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰ⧁āύ āĻĄā§‡āϟāĻž āϏāĻžāχāϜ āĻāĻ•āϟāĻŋ 64-āĻŦāĻŋāϟ āĻ¸ā§āĻŦāĻžāĻ•ā§āώāϰāĻŦāĻŋāĻšā§€āύ āϟāĻžāχāĻĒ āφāϛ⧇āĨ¤ āĻĻ⧇āĻ–āĻž āϝāĻžāĻšā§āϛ⧇ āϝ⧇ DataSize āĻāĻŦāĻ‚ 0xFFFFFFF8u āĻ…āĻĒāĻžāϰ⧇āĻļāύ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āϏāĻŽāĻ¸ā§āϤ āĻŦāĻ¤ā§āϰāĻŋāĻļāϟāĻŋ āĻšāĻžāχ-āĻ…āĻ°ā§āĻĄāĻžāϰ āĻŦāĻŋāϟ āĻļā§‚āĻ¨ā§āϝ⧇ āϰāĻŋāϏ⧇āϟ āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤ āϏāĻŽā§āĻ­āĻŦāϤ, āĻāϟāĻŋ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻžāϰ āϝāĻž āĻšā§‡āϝāĻŧ⧇āĻ›āĻŋāϞ⧇āύ āϤāĻž āύāϝāĻŧāĨ¤ āφāĻŽāĻŋ āϏāĻ¨ā§āĻĻ⧇āĻš āĻ•āϰāĻŋ āϝ⧇ āϤāĻŋāύāĻŋ āĻ—āĻŖāύāĻž āĻ•āϰāϤ⧇ āĻšā§‡āϝāĻŧ⧇āĻ›āĻŋāϞ⧇āύ: āĻĄā§‡āϟāĻž āϏāĻžāχāϜ āĻāĻŦāĻ‚ 0xFFFFFFFFFFFFFF8uāĨ¤

āĻ¤ā§āϰ⧁āϟāĻŋāϟāĻŋ āĻ āĻŋāĻ• āĻ•āϰāϤ⧇, āφāĻĒāύāĻžāϕ⧇ āĻāϟāĻŋ āϞāĻŋāĻ–āϤ⧇ āĻšāĻŦ⧇:

DataSize &= ~(static_cast<uint64_t>(getStubAlignment()) - 1);

āĻŦāĻž āϤāĻžāχ:

DataSize &= ~(getStubAlignment() - 1ULL);

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N34: āĻŦā§āϝāĻ°ā§āĻĨ āĻ¸ā§āĻĒāĻˇā§āϟ āϟāĻžāχāĻĒ āĻ•āĻžāĻ¸ā§āϟ

template <typename T>
void scaleShuffleMask(int Scale, ArrayRef<T> Mask,
                      SmallVectorImpl<T> &ScaledMask) {
  assert(0 < Scale && "Unexpected scaling factor");
  int NumElts = Mask.size();
  ScaledMask.assign(static_cast<size_t>(NumElts * Scale), -1);
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V1028 [CWE-190] āϏāĻŽā§āĻ­āĻžāĻŦā§āϝ āĻ“āĻ­āĻžāϰāĻĢā§āϞ⧋āĨ¤ 'NumElts * Scale' āĻ…āĻĒāĻžāϰ⧇āϟāϰ⧇āϰ āĻ•āĻžāĻ¸ā§āϟāĻŋāĻ‚ āĻ…āĻĒāĻžāϰ⧇āĻ¨ā§āĻĄāϗ⧁āϞāĻŋāϕ⧇ 'size_t' āĻĒā§āϰāĻ•āĻžāϰ⧇ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύ, āĻĢāϞāĻžāĻĢāϞ āύāϝāĻŧāĨ¤ X86ISelLowering.h 1577

āϟāĻžāχāĻĒ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āϗ⧁āύ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻ“āĻ­āĻžāϰāĻĢā§āϞ⧋ āĻāĻĄāĻŧāĻžāϤ⧇ āĻ¸ā§āĻĒāĻˇā§āϟ āϟāĻžāχāĻĒ āĻ•āĻžāĻ¸ā§āϟāĻŋāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ āϕ⧋āύ int. āϝāĻžāχāĻšā§‹āĻ•, āĻāĻ–āĻžāύ⧇ āĻ¸ā§āĻĒāĻˇā§āϟ āϟāĻžāχāĻĒ āĻ•āĻžāĻ¸ā§āϟāĻŋāĻ‚ āĻ“āĻ­āĻžāϰāĻĢā§āϞ⧋ āĻĨ⧇āϕ⧇ āϰāĻ•ā§āώāĻž āĻ•āϰ⧇ āύāĻžāĨ¤ āĻĒā§āϰāĻĨāĻŽā§‡, āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϗ⧁āϞāĻŋāϕ⧇ āϗ⧁āĻŖāĻŋāϤ āĻ•āϰāĻž āĻšāĻŦ⧇, āĻāĻŦāĻ‚ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϤāĻžāϰāĻĒāϰ āϗ⧁āĻŖāύ⧇āϰ 32-āĻŦāĻŋāϟ āĻĢāϞāĻžāĻĢāϞāϟāĻŋ āϟāĻžāχāĻĒ⧇ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻšāĻŦ⧇ āϏāĻžāχāϜ_āϟāĻŋ.

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N35: āĻŦā§āϝāĻ°ā§āĻĨ āĻ•āĻĒāĻŋ-āĻĒ⧇āĻ¸ā§āϟ

Instruction *InstCombiner::visitFCmpInst(FCmpInst &I) {
  ....
  if (!match(Op0, m_PosZeroFP()) && isKnownNeverNaN(Op0, &TLI)) {
    I.setOperand(0, ConstantFP::getNullValue(Op0->getType()));
    return &I;
  }
  if (!match(Op1, m_PosZeroFP()) && isKnownNeverNaN(Op1, &TLI)) {
    I.setOperand(1, ConstantFP::getNullValue(Op0->getType()));        // <=
    return &I;
  }
  ....
}

V778 [CWE-682] āĻĻ⧁āϟāĻŋ āĻ…āύ⧁āϰ⧂āĻĒ āϕ⧋āĻĄ āϟ⧁āĻ•āϰāĻž āĻĒāĻžāĻ“āϝāĻŧāĻž āϗ⧇āϛ⧇. āϏāĻŽā§āĻ­āĻŦāϤ, āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϟāĻžāχāĻĒā§‹ āĻāĻŦāĻ‚ 'Op1' āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ 'Op0' āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āωāϚāĻŋāϤāĨ¤ InstCombineCompares.cpp 5507

āĻāχ āύāϤ⧁āύ āφāĻ•āĻ°ā§āώāĻŖā§€āϝāĻŧ āĻĄāĻžāϝāĻŧāĻžāĻ—āύāĻ¸ā§āϟāĻŋāĻ•āϟāĻŋ āĻāĻŽāύ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋāϤ⧇ āϏāύāĻžāĻ•ā§āϤ āĻ•āϰ⧇ āϝ⧇āĻ–āĻžāύ⧇ āϕ⧋āĻĄā§‡āϰ āĻāĻ•āϟāĻŋ āĻ…āĻ‚āĻļ āĻ…āύ⧁āϞāĻŋāĻĒāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻāϤ⧇ āĻ•āĻŋāϛ⧁ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻļ⧁āϰ⧁ āĻšāϝāĻŧ⧇āϛ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāĻ• āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āϤāĻžāϰāĻž āĻāϟāĻŋ āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰ⧇āύāĻŋāĨ¤

āĻĻāϝāĻŧāĻž āĻ•āϰ⧇ āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇āύ āϝ⧇ āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āĻŦā§āϞāϕ⧇ āϤāĻžāϰāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇ āĻ…āĻĒā§Ģ āωāĻĒāϰ āĻ…āĻĒā§Ģ. āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāĻ• āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āϤāĻžāϰāĻž āĻ āĻŋāĻ• āĻ•āϰ⧇āύāĻŋāĨ¤ āϏāĻŽā§āĻ­āĻŦāϤ āĻāϟāĻŋ āĻāχ āĻŽāϤ āϞ⧇āĻ–āĻž āωāϚāĻŋāϤ āĻ›āĻŋāϞ:

if (!match(Op1, m_PosZeroFP()) && isKnownNeverNaN(Op1, &TLI)) {
  I.setOperand(1, ConstantFP::getNullValue(Op1->getType()));
  return &I;
}

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N36: āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāĻļā§€āϞ āĻŦāĻŋāĻ­ā§āϰāĻžāĻ¨ā§āϤāĻŋ

struct Status {
  unsigned Mask;
  unsigned Mode;

  Status() : Mask(0), Mode(0){};

  Status(unsigned Mask, unsigned Mode) : Mask(Mask), Mode(Mode) {
    Mode &= Mask;
  };
  ....
};

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V1001 [CWE-563] 'āĻŽā§‹āĻĄ' āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āĻŦāϰāĻžāĻĻā§āĻĻ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āĻļ⧇āώ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻžāĨ¤ SIModeRegister.cpp 48

āĻĢāĻžāĻ‚āĻļāύ āφāĻ°ā§āϗ⧁āĻŽā§‡āĻ¨ā§āϟāϕ⧇ āĻ•ā§āϞāĻžāϏ āĻŽā§‡āĻŽā§āĻŦāĻžāϰāĻĻ⧇āϰ āĻŽāϤ⧋ āĻāĻ•āχ āύāĻžāĻŽ āĻĻ⧇āĻ“āϝāĻŧāĻž āϖ⧁āĻŦāχ āĻŦāĻŋāĻĒāĻœā§āϜāύāĻ•āĨ¤ āĻāϟāĻž āĻŦāĻŋāĻ­ā§āϰāĻžāĻ¨ā§āϤ āĻ•āϰāĻž āϖ⧁āĻŦ āϏāĻšāϜ. āφāĻŽāĻžāĻĻ⧇āϰ āϏāĻžāĻŽāύ⧇ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻŽāĻžāĻŽāϞāĻž āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāχ āĻ…āĻ­āĻŋāĻŦā§āϝāĻ•ā§āϤāĻŋ āĻ…āĻ°ā§āĻĨāĻĒā§‚āĻ°ā§āĻŖ āύāϝāĻŧ:

Mode &= Mask;

āĻĢāĻžāĻ‚āĻļāύ āϝ⧁āĻ•ā§āϤāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ. āĻāĻ–āĻžāύ⧇āχ āĻļ⧇āώ. āĻāχ āϝ⧁āĻ•ā§āϤāĻŋ āφāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻž. āϏāĻŽā§āĻ­āĻŦāϤ āφāĻĒāύāĻžāϰ āĻāϟāĻŋ āĻāĻ­āĻžāĻŦ⧇ āϞ⧇āĻ–āĻž āωāϚāĻŋāϤ āĻ›āĻŋāϞ:

Status(unsigned Mask, unsigned Mode) : Mask(Mask), Mode(Mode) {
  this->Mode &= Mask;
};

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N37: āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāĻļā§€āϞ āĻŦāĻŋāĻ­ā§āϰāĻžāĻ¨ā§āϤāĻŋ

class SectionBase {
  ....
  uint64_t Size = 0;
  ....
};

class SymbolTableSection : public SectionBase {
  ....
};

void SymbolTableSection::addSymbol(Twine Name, uint8_t Bind, uint8_t Type,
                                   SectionBase *DefinedIn, uint64_t Value,
                                   uint8_t Visibility, uint16_t Shndx,
                                   uint64_t Size) {
  ....
  Sym.Value = Value;
  Sym.Visibility = Visibility;
  Sym.Size = Size;
  Sym.Index = Symbols.size();
  Symbols.emplace_back(llvm::make_unique<Symbol>(Sym));
  Size += this->EntrySize;
}

āϏāϤāĻ°ā§āϕ⧀āĻ•āϰāĻŖ PVS-Studio: V1001 [CWE-563] 'āφāĻ•āĻžāϰ' āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āĻŦāϰāĻžāĻĻā§āĻĻ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āĻļ⧇āώ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻžāĨ¤ Object.cpp 424

āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋ āφāϗ⧇āϰ āĻŽāϤ⧋āχāĨ¤ āĻāϟāĻž āϞ⧇āĻ–āĻž āωāϚāĻŋāϤ:

this->Size += this->EntrySize;

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N38-N47: āϤāĻžāϰāĻž āϏ⧂āϚāĻ• āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāϤ⧇ āϭ⧁āϞ⧇ āϗ⧇āϛ⧇

āĻĒā§‚āĻ°ā§āĻŦ⧇, āφāĻŽāϰāĻž āĻĄāĻžāϝāĻŧāĻžāĻ—āύāĻ¸ā§āϟāĻŋāĻ• āĻŸā§āϰāĻŋāĻ—āĻžāϰāĻŋāĻ‚āϝāĻŧ⧇āϰ āωāĻĻāĻžāĻšāϰāĻŖ āĻĻ⧇āϖ⧇āĻ›āĻŋ V595. āĻāϰ āϏāĻžāϰāĻŽāĻ°ā§āĻŽ āĻšāϞ āϝ⧇ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋ āĻļ⧁āϰ⧁āϤ⧇ āĻĄāĻŋāϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻ•āϰāĻž āĻšāϝāĻŧ, āĻāĻŦāĻ‚ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϤāĻžāϰāĻĒāϰ āĻšā§‡āĻ• āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āϤāϰ⧁āĻŖ āĻĄāĻžāϝāĻŧāĻžāĻ—āύāĻ¸ā§āϟāĻŋāĻ•āϏ V1004 āĻ…āĻ°ā§āĻĨ⧇āϰ āĻŦāĻŋāĻĒāϰ⧀āϤ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻ…āύ⧇āĻ• āĻ¤ā§āϰ⧁āϟāĻŋāĻ“ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ āĻāĻŽāύ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋ āϚāĻŋāĻšā§āύāĻŋāϤ āĻ•āϰ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋ āĻļ⧁āϰ⧁āϤ⧇ āĻšā§‡āĻ• āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āϤāĻž āĻ•āϰāϤ⧇ āϭ⧁āϞ⧇ āĻ—āĻŋāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āφāϏ⧁āύ LLVM-āĻāϰ āĻ­āĻŋāϤāϰ⧇ āĻĒāĻžāĻ“āϝāĻŧāĻž āĻāχ āϧāϰāύ⧇āϰ āϕ⧇āϏāϗ⧁āϞ⧋ āĻĻ⧇āĻ–āĻŋāĨ¤

int getGEPCost(Type *PointeeType, const Value *Ptr,
               ArrayRef<const Value *> Operands) {
  ....
  if (Ptr != nullptr) {                                            // <=
    assert(....);
    BaseGV = dyn_cast<GlobalValue>(Ptr->stripPointerCasts());
  }
  bool HasBaseReg = (BaseGV == nullptr);

  auto PtrSizeBits = DL.getPointerTypeSizeInBits(Ptr->getType());  // <=
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āϕ⧀āĻ•āϰāĻŖ: V1004 [CWE-476] 'Ptr' āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϝāĻžāϚāĻžāχ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āĻ…āύāĻŋāϰāĻžāĻĒāĻĻāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āϞāĻžāχāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: 729, 738. TargetTransformInfoImpl.h 738

āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāĻļā§€āϞ ptr āϏāĻŽāĻžāύ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ nullptr, āĻšā§‡āĻ• āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāĻŽāĻžāĻŖāĻŋāϤ:

if (Ptr != nullptr)

āϝāĻžāχāĻšā§‹āĻ•, āĻāχ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ• āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ›āĻžāĻĄāĻŧāĻžāχ āĻĄāĻŋāϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇:

auto PtrSizeBits = DL.getPointerTypeSizeInBits(Ptr->getType());

āφāϏ⧁āύ āφāϰ⧇āĻ•āϟāĻŋ āĻ…āύ⧁āϰ⧂āĻĒ āϕ⧇āϏ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāĻž āϝāĻžāĻ•āĨ¤

llvm::DISubprogram *CGDebugInfo::getFunctionFwdDeclOrStub(GlobalDecl GD,
                                                          bool Stub) {
  ....
  auto *FD = dyn_cast<FunctionDecl>(GD.getDecl());
  SmallVector<QualType, 16> ArgTypes;
  if (FD)                                                                // <=
    for (const ParmVarDecl *Parm : FD->parameters())
      ArgTypes.push_back(Parm->getType());
  CallingConv CC = FD->getType()->castAs<FunctionType>()->getCallConv(); // <=
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āϕ⧀āĻ•āϰāĻŖ: V1004 [CWE-476] 'FD' āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϝāĻžāϚāĻžāχ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āĻ…āύāĻŋāϰāĻžāĻĒāĻĻāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āϞāĻžāχāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: 3228, 3231. CGDebugInfo.cpp 3231

āϚāĻŋāĻšā§āύ⧇āϰ āĻĻāĻŋāϕ⧇ āĻŽāύ⧋āϝ⧋āĻ— āĻĻāĻŋāύ FD. āφāĻŽāĻŋ āύāĻŋāĻļā§āϚāĻŋāϤ āϝ⧇ āϏāĻŽāĻ¸ā§āϝāĻžāϟāĻŋ āĻ¸ā§āĻĒāĻˇā§āϟāĻ­āĻžāĻŦ⧇ āĻĻ⧃āĻļā§āϝāĻŽāĻžāύ āĻāĻŦāĻ‚ āϕ⧋āύ āĻŦāĻŋāĻļ⧇āώ āĻŦā§āϝāĻžāĻ–ā§āϝāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āύ⧇āχāĨ¤

āĻāĻŦāĻ‚ āφāϰāĻ“:

static void computePolynomialFromPointer(Value &Ptr, Polynomial &Result,
                                         Value *&BasePtr,
                                         const DataLayout &DL) {
  PointerType *PtrTy = dyn_cast<PointerType>(Ptr.getType());
  if (!PtrTy) {                                                   // <=
    Result = Polynomial();
    BasePtr = nullptr;
  }
  unsigned PointerBits =
      DL.getIndexSizeInBits(PtrTy->getPointerAddressSpace());     // <=
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āϕ⧀āĻ•āϰāĻŖ: V1004 [CWE-476] 'PtrTy' āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϝāĻžāϚāĻžāχ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āĻ…āύāĻŋāϰāĻžāĻĒāĻĻāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āϞāĻžāχāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: 960, 965. InterleavedLoadCombinePass.cpp 965

āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻāχ āϧāϰāύ⧇āϰ āĻ¤ā§āϰ⧁āϟāĻŋ āĻĨ⧇āϕ⧇ āύāĻŋāĻœā§‡āϕ⧇ āϰāĻ•ā§āώāĻž āĻ•āϰāĻŦ⧇āύ? āϕ⧋āĻĄ-āϰāĻŋāĻ­āĻŋāωāϤ⧇ āφāϰāĻ“ āĻŽāύ⧋āϝ⧋āĻ—ā§€ āĻšāύ āĻāĻŦāĻ‚ āύāĻŋāϝāĻŧāĻŽāĻŋāϤ āφāĻĒāύāĻžāϰ āϕ⧋āĻĄ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāϤ⧇ PVS-Studio āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āĻŦāĻŋāĻļā§āϞ⧇āώāĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤

āĻāχ āϧāϰāϪ⧇āϰ āĻ¤ā§āϰ⧁āϟāĻŋ āϏāĻš āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āϕ⧋āĻĄā§‡āϰ āĻ–āĻŖā§āĻĄāϗ⧁āϞāĻŋ āωāĻĻā§āϧ⧃āϤ āĻ•āϰāĻžāϰ āϕ⧋āύāĻ“ āĻ…āĻ°ā§āĻĨ āύ⧇āχāĨ¤ āφāĻŽāĻŋ āύāĻŋāĻŦāĻ¨ā§āϧ⧇ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϏāϤāĻ°ā§āĻ•āϤāĻžāϰ āĻāĻ•āϟāĻŋ āϤāĻžāϞāĻŋāĻ•āĻž āϛ⧇āĻĄāĻŧ⧇ āĻĻ⧇āĻŦ:

  • V1004 [CWE-476] 'Expr' āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϝāĻžāϚāĻžāχ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āĻ…āύāĻŋāϰāĻžāĻĒāĻĻāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āϞāĻžāχāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: 1049, 1078. DebugInfoMetadata.cpp 1078
  • V1004 [CWE-476] 'PI' āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϝāĻžāϚāĻžāχ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āĻ…āύāĻŋāϰāĻžāĻĒāĻĻāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āϞāĻžāχāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: 733, 753. LegacyPassManager.cpp 753
  • V1004 [CWE-476] 'StatepointCall' āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϝāĻžāϚāĻžāχ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āĻ…āύāĻŋāϰāĻžāĻĒāĻĻāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āϞāĻžāχāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: 4371, 4379āĨ¤ Verifier.cpp 4379
  • V1004 [CWE-476] 'RV' āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϝāĻžāϚāĻžāχ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āĻ…āύāĻŋāϰāĻžāĻĒāĻĻāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āϞāĻžāχāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: 2263, 2268. TGParser.cpp 2268
  • V1004 [CWE-476] 'CalleeFn' āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϝāĻžāϚāĻžāχ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āĻ…āύāĻŋāϰāĻžāĻĒāĻĻāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āϞāĻžāχāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: 1081, 1096. SimplifyLibCalls.cpp 1096
  • V1004 [CWE-476] 'TC' āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϝāĻžāϚāĻžāχ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āĻ…āύāĻŋāϰāĻžāĻĒāĻĻāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āϞāĻžāχāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ: 1819, 1824āĨ¤ Driver.cpp 1824

āĻĢā§āĻ°ā§āϝāĻžāĻ—āĻŽā§‡āĻ¨ā§āϟ N48-N60: āϏāĻŽāĻžāϞ⧋āϚāύāĻžāĻŽā§‚āϞāĻ• āύāϝāĻŧ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāĻ•āϟāĻŋ āĻ¤ā§āϰ⧁āϟāĻŋ (āϏāĻŽā§āĻ­āĻžāĻŦā§āϝ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ•)

std::unique_ptr<IRMutator> createISelMutator() {
  ....
  std::vector<std::unique_ptr<IRMutationStrategy>> Strategies;
  Strategies.emplace_back(
      new InjectorIRStrategy(InjectorIRStrategy::getDefaultOps()));
  ....
}

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϏāϤāĻ°ā§āĻ•āϤāĻž: V1023 [CWE-460] 'āĻāĻŽāĻĒā§āϞ⧇āϏ_āĻŦā§āϝāĻžāĻ•' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'āĻ•ā§ŒāĻļāϞ' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. llvm-isel-fuzzer.cpp 58

āĻāĻ•āϟāĻŋ āϧāĻžāϰāĻ• āĻļ⧇āώ⧇ āĻāĻ•āϟāĻŋ āωāĻĒāĻžāĻĻāĻžāύ āϝ⧋āĻ— āĻ•āϰāĻžāϰ āĻŽāϤ std:: āϭ⧇āĻ•ā§āϟāϰ > āφāĻĒāύāĻŋ āĻļ⧁āϧ⧁ āϞāĻŋāĻ–āϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύ āύāĻž xxx.push_back(āύāϤ⧁āύ āĻāĻ•ā§āϏ), āϝ⧇āĻšā§‡āϤ⧁ āĻĨ⧇āϕ⧇ āϕ⧋āύ āĻ…āĻ¨ā§āϤāĻ°ā§āύāĻŋāĻšāĻŋāϤ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āύ⧇āχ X* в std::unique_ptr.

āĻāĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āϏāĻŽāĻžāϧāĻžāύ āϞāĻŋāĻ–āϤ⧇ āĻšāϝāĻŧ xxx.emplace_back(āύāϤ⧁āύ āĻāĻ•ā§āϏ)āϝ⧇āĻšā§‡āϤ⧁ āĻāϟāĻŋ āϏāĻ‚āĻ•āϞāύ āĻ•āϰ⧇: āĻĒāĻĻā§āϧāϤāĻŋ emplace_back āϏāϰāĻžāϏāϰāĻŋ āϤāĻžāϰ āφāĻ°ā§āϗ⧁āĻŽā§‡āĻ¨ā§āϟ āĻĨ⧇āϕ⧇ āĻāĻ•āϟāĻŋ āωāĻĒāĻžāĻĻāĻžāύ āĻ—āĻ āύ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āϤāĻžāχ āĻ¸ā§āĻĒāĻˇā§āϟ āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āĻāϟāĻž āύāĻŋāϰāĻžāĻĒāĻĻ āύāϝāĻŧ. āϭ⧇āĻ•ā§āϟāϰ āĻĒā§‚āĻ°ā§āĻŖ āĻšāϞ⧇, āĻŽā§‡āĻŽāϰāĻŋ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻŦāϰāĻžāĻĻā§āĻĻ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻŽā§‡āĻŽāϰāĻŋ āϰāĻŋāϞ⧋āϕ⧇āĻļāύ āĻ…āĻĒāĻžāϰ⧇āĻļāύ āĻŦā§āϝāĻ°ā§āĻĨ āĻšāϤ⧇ āĻĒāĻžāϰ⧇, āϝāĻžāϰ āĻĢāϞ⧇ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āύāĻŋāĻ•ā§āώāĻŋāĻĒā§āϤ āĻšāϝāĻŧ std::bad_alloc. āĻāχ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋ āĻšāĻžāϰāĻŋāϝāĻŧ⧇ āϝāĻžāĻŦ⧇ āĻāĻŦāĻ‚ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻŦāĻ¸ā§āϤ⧁āϟāĻŋ āĻ•āĻ–āύāχ āĻŽā§āϛ⧇ āϝāĻžāĻŦ⧇ āύāĻžāĨ¤

āĻāĻ•āϟāĻŋ āύāĻŋāϰāĻžāĻĒāĻĻ āϏāĻŽāĻžāϧāĻžāύ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ āĻ…āύāĻ¨ā§āϝ_āĻĒāĻŋāϟāĻŋāφāϰāϭ⧇āĻ•ā§āϟāϰ āĻŽā§‡āĻŽāϰāĻŋ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻŦāϰāĻžāĻĻā§āĻĻ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻžāϰ āφāϗ⧇ āϝāĻž āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ⧇āϰ āĻŽāĻžāϞāĻŋāĻ• āĻšāĻŦ⧇:

xxx.push_back(std::unique_ptr<X>(new X))

C++14 āĻĨ⧇āϕ⧇, āφāĻĒāύāĻŋ 'std::make_unique' āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ:

xxx.push_back(std::make_unique<X>())

āĻāχ āϧāϰāύ⧇āϰ āĻ¤ā§āϰ⧁āϟāĻŋ LLVM-āĻāϰ āϜāĻ¨ā§āϝ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āύāϝāĻŧāĨ¤ āϝāĻĻāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āĻŦāϰāĻžāĻĻā§āĻĻ āύāĻž āĻ•āϰāĻž āϝāĻžāϝāĻŧ āϤāĻŦ⧇ āĻ•āĻŽā§āĻĒāĻžāχāϞāĻžāϰāϟāĻŋ āϕ⧇āĻŦāϞ āĻŦāĻ¨ā§āϧ āĻšāϝāĻŧ⧇ āϝāĻžāĻŦ⧇āĨ¤ āϝāĻžāχāĻšā§‹āĻ•, āĻĻā§€āĻ°ā§āϘ āϏāĻ™ā§āϗ⧇ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āφāĻĒāϟāĻžāχāĻŽ, āϝāĻž āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻŽā§‡āĻŽāϰāĻŋ āĻŦāϰāĻžāĻĻā§āĻĻ āĻŦā§āϝāĻ°ā§āĻĨ āĻšāϞ⧇ āĻŦāĻ¨ā§āϧ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻž, āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻŦāĻžāĻœā§‡ āĻŦāĻžāĻ— āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āϏ⧁āϤāϰāĻžāĻ‚, āϝāĻĻāĻŋāĻ“ āĻāχ āϕ⧋āĻĄāϟāĻŋ LLVM-āĻāϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ• āĻšā§āĻŽāĻ•āĻŋ āϏ⧃āĻˇā§āϟāĻŋ āĻ•āϰ⧇ āύāĻž, āφāĻŽāĻŋ āĻāχ āĻ¤ā§āϰ⧁āϟāĻŋāϰ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ•āĻĨāĻž āĻŦāϞāĻž āĻāĻŦāĻ‚ PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āĻŦāĻŋāĻļā§āϞ⧇āώāĻ• āĻāϟāĻŋ āϏāύāĻžāĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻļāĻŋāϖ⧇āĻ›āĻŋ āĻāϟāĻŋ āĻĻāϰāĻ•āĻžāϰ⧀ āĻŦāϞ⧇ āĻŽāύ⧇ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāχ āϧāϰāύ⧇āϰ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āϏāϤāĻ°ā§āĻ•āϤāĻž:

  • V1023 [CWE-460] āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ 'Emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'Passes' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. PassManager.h 546
  • V1023 [CWE-460] āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ 'āĻāĻāĻāϏ' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ 'āĻāĻŽāĻĒā§āϞ⧇āϏ_āĻŦā§āϝāĻžāĻ•' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. āωāĻĒāύāĻžāĻŽ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ.h 324
  • V1023 [CWE-460] 'āĻāĻŽāĻĒā§āϞ⧇āϏ_āĻŦā§āϝāĻžāĻ•' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'āĻāĻ¨ā§āĻŸā§āϰāĻŋ' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. DWARFDebugFrame.cpp 519
  • V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'AllEdges' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. CFGMST.h 268
  • V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'VMaps' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. SimpleLoopUnswitch.cpp 2012
  • V1023 [CWE-460] 'āĻāĻŽāĻĒā§āϞ⧇āϏ_āĻŦā§āϝāĻžāĻ•' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'āϰ⧇āĻ•āĻ°ā§āĻĄ' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. FDRLogBuilder.h 30
  • V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'PendingSubmodules' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. ModuleMap.cpp 810
  • V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. DebugMap.cpp 88
  • V1023 [CWE-460] 'āĻāĻŽāĻĒā§āϞ⧇āϏ_āĻŦā§āϝāĻžāĻ•' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'āĻ•ā§ŒāĻļāϞ' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. llvm-isel-fuzzer.cpp 60
  • V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. llvm-stress.cpp 685
  • V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. llvm-stress.cpp 686
  • V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. llvm-stress.cpp 688
  • V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. llvm-stress.cpp 689
  • V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. llvm-stress.cpp 690
  • V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. llvm-stress.cpp 691
  • V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. llvm-stress.cpp 692
  • V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. llvm-stress.cpp 693
  • V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. llvm-stress.cpp 694
  • V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'āĻ…āĻĒāĻžāϰ⧇āĻ¨ā§āĻĄ' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. GlobalISelEmitter.cpp 1911
  • V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'Stash' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. GlobalISelEmitter.cpp 2100
  • V1023 [CWE-460] 'āĻāĻŽāĻĒā§āϞ⧇āϏ_āĻŦā§āϝāĻžāĻ•' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ 'āĻŽā§āϝāĻžāϚāĻžāĻ°ā§āϏ' āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϘāϟāĻŦ⧇. GlobalISelEmitter.cpp 2702

āωāĻĒāϏāĻ‚āĻšāĻžāϰ

āφāĻŽāĻŋ āĻŽā§‹āϟ 60āϟāĻŋ āϏāϤāĻ°ā§āĻ•āϤāĻž āϜāĻžāϰāĻŋ āĻ•āϰ⧇āĻ›āĻŋ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āĻŦāĻ¨ā§āϧ āĻ•āϰ⧇āĻ›āĻŋāĨ¤ āĻĒāĻŋāĻ­āĻŋāĻāϏ-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āĻŦāĻŋāĻļā§āϞ⧇āώāĻ• āĻāϞāĻāϞāĻ­āĻŋāĻāĻŽ-āĻ āĻļāύāĻžāĻ•ā§āϤ āĻ•āϰ⧇ āĻāĻŽāύ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻ¤ā§āϰ⧁āϟāĻŋ āφāϛ⧇ āĻ•āĻŋ? āĻšā§āϝāĻžāρ āφāĻŽāĻžāϰ āφāϛ⧇. āϝāĻžāχāĻšā§‹āĻ•, āϝāĻ–āύ āφāĻŽāĻŋ āύāĻŋāĻŦāĻ¨ā§āϧāϟāĻŋāϰ āϜāĻ¨ā§āϝ āϕ⧋āĻĄā§‡āϰ āϟ⧁āĻ•āϰ⧋āϗ⧁āϞāĻŋ āϞāĻŋāĻ–āĻ›āĻŋāϞāĻžāĻŽ, āϤāĻ–āύ āĻ—āĻ­ā§€āϰ āϏāĻ¨ā§āĻ§ā§āϝāĻž, āĻŦāĻž āĻāĻŽāύāĻ•āĻŋ āϰāĻžāϤ āĻ›āĻŋāϞ āĻāĻŦāĻ‚ āφāĻŽāĻŋ āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āύāĻŋāϝāĻŧ⧇āĻ›āĻŋāϞāĻžāĻŽ āϝ⧇ āĻāϟāĻŋāϕ⧇ āĻāĻ•āϟāĻŋ āĻĻāĻŋāύ āĻŦāϞāĻžāϰ āϏāĻŽāϝāĻŧāĨ¤

āφāĻŽāĻŋ āφāĻļāĻž āĻ•āϰāĻŋ āφāĻĒāύāĻŋ āĻāϟāĻŋ āφāĻ•āĻ°ā§āώāĻŖā§€āϝāĻŧ āĻĒ⧇āϝāĻŧ⧇āϛ⧇āύ āĻāĻŦāĻ‚ PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āĻŦāĻŋāĻļā§āϞ⧇āώāĻ• āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāϤ⧇ āϚāĻžāχāĻŦ⧇āύāĨ¤

āφāĻĒāύāĻŋ āĻŦāĻŋāĻļā§āϞ⧇āώāĻ• āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻŦāĻ‚ āĻŽāĻžāχāύāϏ⧁āχāĻĒāĻžāϰ āϕ⧀ āĻĒ⧇āϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāχ āĻĒ⧃āĻˇā§āĻ āĻžāϟāĻŋ.

āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ, āύāĻŋāϝāĻŧāĻŽāĻŋāϤ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ āĻāĻ•āĻ•āĻžāϞ⧀āύ āĻšā§‡āĻ•, āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ āĻĒāĻĻā§āϧāϤāĻŋ āϜāύāĻĒā§āϰāĻŋāϝāĻŧ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻŽāĻžāĻĻ⧇āϰ āĻĻā§āĻŦāĻžāϰāĻž āĻŦāĻžāĻšāĻŋāϤ āĻāĻŦāĻ‚ PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻĻ⧃āĻļā§āϝāĻ•āĻ˛ā§āĻĒ āύāϝāĻŧ.

āφāĻĒāύāĻžāϰ āϕ⧋āĻĄā§‡āϰ āϗ⧁āĻŖāĻŽāĻžāύ āĻāĻŦāĻ‚ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝāϤāĻž āωāĻ¨ā§āύāϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϏ⧌āĻ­āĻžāĻ—ā§āϝ!

PVS-āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āĻŦāĻŋāĻļā§āϞ⧇āώāĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ LLVM 8-āĻ āĻŦāĻžāĻ— āĻ–ā§‹āρāϜāĻž

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāχ āύāĻŋāĻŦāĻ¨ā§āϧāϟāĻŋ āχāĻ‚āϰ⧇āϜāĻŋāĻ­āĻžāώ⧀ āĻĻāĻ°ā§āĻļāĻ•āĻĻ⧇āϰ āϏāĻžāĻĨ⧇ āĻ­āĻžāĻ— āĻ•āϰāϤ⧇ āϚāĻžāύ āϤāĻŦ⧇ āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ āĻ…āύ⧁āĻŦāĻžāĻĻ āϞāĻŋāĻ™ā§āĻ•āϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ: āφāĻ¨ā§āĻĻā§āϰ⧇ āĻ•āĻžāĻ°ā§āĻĒāĻ­āĨ¤ PVS-Studio-āĻāϰ āϏāĻžāĻĨ⧇ LLVM 8-āĻ āĻŦāĻžāĻ— āĻ–ā§‹āρāϜāĻžā§ˇ.

āωāĻ¤ā§āϏ: www.habr.com

DDoS āϏ⧁āϰāĻ•ā§āώāĻž, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻš āϏāĻžāχāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ đŸ”Ĩ DDoS āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻš āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ | ProHoster