22 рдордИ
рдХреЛ LLVM 3.1 рдХрд╛ рд╡рд┐рдореЛрдЪрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ , рдЬреЛ рдПрдХ рд╕рдВрдХрд▓рдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд░реНрдорд┐рдд рд╕рдВрдХрд▓рдХ рдЙрдкрдХрд░рдг рдХрд╛ рдкрд░рд┐рд╡рд╛рд░ рдерд╛ред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ Apple рдФрд░ Google рдЬреИрд╕реА рдХрдВрдкрдирд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ GCC рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣реА рд╣реИред
рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдореЗрдВ
рдирдП C ++ '11 Clang
' рдорд╛рдирдХ (рд▓реИрдореНрдмрдбрд╛, рдЖрд░рдВрднреАрдХрд░рдг рд╕реВрдЪреА, рдирд┐рд░рдВрддрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢рд╛рдмреНрджрд┐рдХ рдФрд░ рдПрдЯрдорд┐рдХреНрд╕ рд╕рд╣рд┐рдд) рдХреЗ
рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╕рдорд░реНрдерди рд╢рд╛рдорд┐рд▓ рд╣реИ;
AddressSanitizer рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ - рд╕реНрдореГрддрд┐ рдХреЗ рд╕рд╛рде рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг; рд╕рдВрдХрд▓рди рд╕рдордп рдореЗрдВ рдкреНрд░рдореБрдЦ рд╕реБрдзрд╛рд░ рдФрд░ рдПрдЖрд░рдПрдо рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд▓рд┐рдП рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐; MIPS рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╕реБрдзрд╛рд░ (MIPS64 рд╕рд╣рд┐рдд)ред

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ - рдмрд┐рд▓реНрд▓реА рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдореБрдЦреНрдп рдПрд▓рдПрд▓рд╡реАрдПрдо рдЯреВрд▓ рдореИрдХ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рдореВрд▓ C / C ++ / рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡ рд╕реА рд▓реИрдВрдЧреНрд╡реЗрдЬ рдХрдВрдкрд╛рдЗрд▓рд░ Clang рд╣реИред рдХрдВрдкрд╛рдЗрд▓рд░ рдЕрдиреНрдп рдкреНрд░рдореБрдЦ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо - рд▓рд┐рдирдХреНрд╕ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рднреА рдЙрдкрд▓рдмреНрдз рд╣реИред рд╕рдЪ рд╣реИ, рд╡рд┐рдВрдбреЛрдЬ рд╕рдорд░реНрдерди рдЕрднреА рднреА рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╣реИред рдпрд╣ рд╕рдВрдХрд▓рдХ рдЕрдкрдиреЗ рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдХреА рдЧрддрд┐ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рд╕рдЯреАрдХ рддреНрд░реБрдЯрд┐ рдирд┐рджрд╛рди рдХреЗ рдЕрдиреБрдХреВрд▓ рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЬреАрд╕реАрд╕реА рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдУрдкрди-рд╕реЛрд░реНрд╕ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдирдпрд╛ рд░рд┐рд▓реАрдЬ рдЗрд╕ рд╕рдВрдХрд▓рдХ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдХрд╛рд░рдг рд╣реИред
рд╕рдВрднрд╡рддрдГ рдПрд▓рдПрд▓рд╡реАрдПрдо 3.1 рдореЗрдВ рдореБрдЦреНрдп рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рдирдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ
рдПрдбреНрд░реЗрд╕рд╕реНрдиреАрдЯрд╛рдЗрдЬрд╝рд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИ - рд╕реНрдореГрддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдгред рдпрд╣ рдЙрдкрдХрд░рдг, Google рдХреЗ рдЖрдВрддреНрд░ рдореЗрдВ рдкреИрджрд╛ рд╣реБрдЖ, рдЖрдкрдХреЛ рдмрдлрд░ рдУрд╡рд░рдлреНрд▓реЛ (рдвреЗрд░ рдкрд░, рдЧреНрд▓реЛрдмрд▓реНрд╕ рдореЗрдВ) рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЫреЛрдЯреА рдордВрджреА (рд▓рдЧрднрдЧ рджреЛ рдмрд╛рд░) рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ-рдмрд╛рдж-рдореБрдХреНрдд рддреНрд░реБрдЯрд┐рдпрд╛рдВред рдпрд╣ рдореМрдЬреВрджрд╛
рдХреНрд▓реИрдВрдЧ рд╕реНрдЯреЗрдЯрд┐рдХ рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рд╕реНрдЯреИрдЯрд┐рдХ рдХреЛрдб рд╡реЗрд░рд┐рдлрд┐рдХреЗрд╢рди рдЯреВрд▓ рдХрд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдРрдб рд╣реИред
LLVM 3.1 рдореЗрдВ
DragonEgg , GCC рдкреНрд▓рдЧ-рдЗрди рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ LLVM рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде gcc рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдХреА рдЬрдЧрд╣ рд▓реЗрддрд╛ рд╣реИред рдирдИ рд░рд┐рд▓реАрдЬ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬреАрд╕реАрд╕реА 4.5 рдФрд░ 4.6 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ, рдФрд░ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ 4.7 рдЬрд╛рд░реА рдХреА рдЧрдИ рд╣реИред Ada, C, C ++ рдФрд░ рдлреЛрд░рдЯреНрд░рд╛рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ, рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ Go, Java, Obj-C рдФрд░ Obj-C ++ред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЬреАрд╡реАрд╕реА рдХреА рд╕реАрдорд╛ рдПрд▓рдПрд▓рд╡реАрдПрдо рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рд╣реИ, рдпрд╣ рдЙрдкрдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдирд╛ рдЬрд╛рд░реА рд╣реИред
рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдкреВрд░реА рд╕реВрдЪреА
рдЬрд╛рд░реА рдиреЛрдЯреЛрдВ рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред рдФрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ - рдЗрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рд╛рдЗрдЯ рд╕реЗ
рдмрд╛рдпрдиреЗрд░реА рдпрд╛ рд╕реЙрд░реНрд╕ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдХреЗред