ืžืขืœื“ื•ื ื’ ืคื•ืŸ ื“ื™ LLVM 10.0 ืงืึทืžืคึผื™ื™ืœืขืจ ืฉื˜ืขืœืŸ

ื ืึธืš ื–ืขืงืก ื—ื“ืฉื™ื ืคื•ืŸ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ื“ืขืจืœืื ื’ื˜ ืคึผืจื•ื™ืขืงื˜ ืžืขืœื“ื•ื ื’ LLVM 10.0 - GCC-ืงืึทืžืคึผืึทื˜ืึทื‘ืึทืœ ืžื›ืฉื™ืจื™ื (ืงืึทืžืคึผื™ื™ืœืขืจื–, ืึธืคึผื˜ื™ืžื™ื–ืขืจืก ืื•ืŸ ืงืึธื“ ื’ืขื ืขืจืึทื˜ืึธืจืก), ืงืึทืžืคึผื™ื™ืœื™ื ื’ ืžื’ื™ืœื” ืื™ืŸ ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜ ื‘ื™ื˜ืงืึธื“ืข ืคื•ืŸ โ€‹โ€‹RISC-ื•ื•ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– (ื ื™ื“ืขืจื™ืง-ืžื“ืจื’ื” ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ืžื™ื˜ ืึท ืžืึทืœื˜ื™-ืžื“ืจื’ื” ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืกื™ืกื˜ืขื). ื“ื™ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ืคึผืกืขื•ื•ื“ืึธืงืึธื“ืข ืงืขื ืขืŸ ื–ื™ื™ืŸ ืงืึธื ื•ื•ืขืจื˜ืขื“ ืžื™ื˜ ืึท JIT ืงืึทืžืคึผื™ื™ืœืขืจ ืื™ืŸ ืžืึทืฉื™ืŸ ืื™ื ืกื˜ืจื•ืงืฆื™ืขืก ื’ืœื™ื™ึทืš ืื™ืŸ ื“ืขืจ ืฆื™ื™ื˜ ืคื•ืŸ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืคื•ืŸ ื“ื™ ืคึผืจืึธื’ืจืึทื.

ื ื™ื™ึทืข ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืื™ืŸ LLVM 10.0 ืึทืจื™ื™ึทื ื ืขืžืขืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ C ++ ืงืึทื ืกืขืคึผืก, ื ื™ื˜ ืžืขืจ ืœื•ื™ืคื˜ ืงืœืึทื ื’ ื•ื•ื™ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืคึผืจืึธืฆืขืก, ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ CFG (ืงืึธื ื˜ืจืึธืœ ืœื•ื™ืคืŸ ื”ื™ื˜ืŸ) ื˜ืฉืขืงืก ืคึฟืึทืจ Windows ืื•ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื ื™ื™ึทืข ืงืคึผื• ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื–.

ื™ืžืคึผืจื•ื•ื•ืžืึทื ืฅ ืื™ืŸ ืงืœืึทื ื’ 10.0:

  • ืฆื•ื’ืขื’ืขื‘ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ "ืงืึทื ืกืขืคึผืก", ืึท C ++ ืžื•ืกื˜ืขืจ ืคืึทืจืœืขื ื’ืขืจื•ื ื’ ื•ื•ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ื ืึธืจืžืึทืœ, ืงืึธื“ืขื ืึทืžืขื“ C ++ 2 ืึท (ืื•ื™ืกื’ืขืงืขืจื˜ ื“ื•ืจืš ื“ื™ -std = c ++ 2a ืคืึธืŸ).
    ืงืึทื ืกืขืคึผืก ืœืึธื–ืŸ ืื™ืจ ืฆื• ื“ืขืคื™ื ื™ืจืŸ ืึท ืกื›ื•ื ืคื•ืŸ ื˜ืขืžืคึผืœืึทื˜ืข ืคึผืึทืจืึทืžืขื˜ืขืจ ืจืขืงื•ื•ื™ืจืขืžืขื ืฅ ื•ื•ืึธืก, ืื™ืŸ ื“ื™ ืฆื•ื ื•ื™ืคื ืขืžืขืŸ ืฆื™ื™ื˜, ื‘ืึทื’ืจืขื ืขืฆืŸ ื“ื™ ื’ืึทื ื’ ืคื•ืŸ ืึทืจื’ื•ืžืขื ื˜ืŸ ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืื ื’ืขื ื•ืžืขืŸ ื•ื•ื™ ืžื•ืกื˜ืขืจ ืคึผืึทืจืึทืžืขื˜ืขืจืก. ื“ื™ ืงืึทื ืกืขืคึผืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืฆื• ื•ื™ืกืžื™ื™ื“ืŸ ืœืึทื“ื–ืฉื™ืงืึทืœ ื™ื ื’ืงืึทื ืกื™ืกื˜ืขื ืกื™ื– ืฆื•ื•ื™ืฉืŸ ื“ื™ ืคึผืจืึธืคึผืขืจื˜ื™ืขืก ืคื•ืŸ ื“ื™ ื“ืึทื˜ืŸ ื˜ื™ื™ืคึผืก ื’ืขื ื™ืฆื˜ ืื™ืŸ ื“ืขื ืžื•ืกื˜ืขืจ ืื•ืŸ ื“ื™ ื“ืึทื˜ืŸ ื˜ื™ืคึผ ืคึผืจืึธืคึผืขืจื˜ื™ืขืก ืคื•ืŸ ื“ื™ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ืคึผืึทืจืึทืžืขื˜ืขืจืก.

    ืžื•ืกื˜ืขืจ
    ื‘ืึทื’ืจื™ืฃ ืขืงื•ื•ืึทืœื™ื˜ื™ืงืึธืžืคึผืึทืจืึทื‘ืœืข = ืจื™ืงื•ื•ื™ื™ืขืจื–(ื˜ ืึท, ื˜ ื‘) {
    {ืึท == ื‘} -> ืกื˜ื“::ื‘ื•ืœืขืึทืŸ;
    { ืึท != ื‘ } -> ืกื˜ื“:: ื‘ืึธืึธืœืขืึทืŸ;
    };

  • ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ื“ื™ ืงืึทื˜ืขืจ ืคื•ืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืคึผืจืึธืฆืขืก ("ืงืœืึทื ื’ -ืงืง1") ืื™ืŸ ื•ื•ืึธืก ื–ืึทืžืœื•ื ื’ ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืื™ื– ืกื˜ืึทืคึผื˜. ื–ืึทืžืœื•ื ื’ ืื™ื– ืื™ืฆื˜ ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืื™ืŸ ื“ื™ ื”ื•ื™ืคึผื˜ ืคึผืจืึธืฆืขืก, ืื•ืŸ ื“ื™ "-fno-integrated-cc1" ืึธืคึผืฆื™ืข ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืฆื• ื•ืžืงืขืจืŸ ื“ื™ ืึทืœื˜ ื ืึทื˜ื•ืจ.
  • ื ื™ื• ื“ื™ืึทื’ื ืึธืกื˜ื™ืง ืžืึธื“ืขืก:
    • "-Wc99-designator" ืื•ืŸ "-Wreorder-init-list" ื•ื•ืึธืจืขื ืขืŸ ืงืขื’ืŸ ื ื™ืฆืŸ C99 ื™ื ื™ืฉืึทื˜ื™ื•ื•ื– ืื™ืŸ C ++ ืžืึธื“ืข ืื™ืŸ ืงืึทืกืขืก ื•ื•ื• ื–ื™ื™ ื–ืขื ืขืŸ ืจื™ื›ื˜ื™ืง ืื™ืŸ C99 ืึธื‘ืขืจ ื ื™ืฉื˜ ืื™ืŸ C ++20.
    • "-Wsizeof-array-div" - ืงืึทื˜ืฉืึทื– ืกื™ื˜ื•ืึทื˜ื™ืึธื ืก ืึทื–ืึท ื•ื•ื™ "int arr[10]; ... ื’ืจื™ื™ืก ืคื•ืŸ (ืึทืจืจ) / ื’ืจื™ื™ืก ืคื•ืŸ (ืงื•ืจืฅ) ..." (ื–ืึธืœ ื–ื™ื™ืŸ "ืกื™ื™ื– ืคื•ืŸ (ืึทืจืจ) / ื’ืจื™ื™ืก ืคื•ืŸ (ื™ื ื˜)").
    • "-Wxor-used-as-po" - ื•ื•ืึธืจื ื– ืงืขื’ืŸ ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ืงืึทื ืกื˜ืจืึทืงืฉืึทื ื– ืึทื–ืึท ื•ื•ื™ ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ื“ื™ "^" (ืงืกืึธืจ) ืึธืคึผืขืจืึทื˜ืึธืจ ืื™ืŸ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืฆืขืžื™ืฉื˜ ืžื™ื˜ ืขืงืกืคึผืึธื ืขื ื˜ื™ืึทื˜ื™ืึธืŸ (2^16).
    • "-Wfinal-dtor-non-final-class" - ื•ื•ืึธืจื ื– ื•ื•ืขื’ืŸ ืงืœืืกืŸ ื•ื•ืึธืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ืื ื’ืขืฆื™ื™ื›ื ื˜ ืžื™ื˜ ื“ื™ "ืขื ื“ืœืขืš" ืกืคึผืขืกื™ืคื™ืขืจ, ืึธื‘ืขืจ ื”ืึธื‘ืŸ ืึท ื“ืขืกื˜ืจื•ืงื˜ื•ืจ ืžื™ื˜ ื“ื™ "ืขื ื“ืœืขืš" ืึทื˜ืจื™ื‘ื™ื•ื˜.
    • "-Wtautological-bitwise-compare" ืื™ื– ืึท ื’ืจื•ืคึผืข ืคื•ืŸ โ€‹โ€‹ื•ื•ืึธืจื ื™ื ื’ื– ืคึฟืึทืจ ื“ื™ืึทื’ื ืึธืกื™ื ื’ ื˜ืึทื•ื˜ืึธืœืึธื’ื™ืงืึทืœ ืงืึทืžืคึผืขืจืึทืกืึทื ื– ืฆื•ื•ื™ืฉืŸ ืึท ื‘ื™ื˜ื•ื•ื™ื™ื– ืึธืคึผืขืจืึทืฆื™ืข ืื•ืŸ ืึท ืงืขืกื™ื™ื“ืขืจื“ื™ืง, ืื•ืŸ ืคึฟืึทืจ ื™ื“ืขื ื˜ื™ืคื™ื™ื ื’ ืฉื˜ืขื ื“ื™ืง-ืืžืช ืงืึทืžืคึผืขืจืึทืกืึทื ื– ืื™ืŸ ื•ื•ืึธืก ื“ื™ ื‘ื™ื˜ื•ื•ื™ื™ื– OR ืึธืคึผืขืจืึทืฆื™ืข ืื™ื– ื’ืขื•ื•ืขื ื“ื˜ ืฆื• ืึท ื ื™ื˜-ื ืขื’ืึทื˜ื™ื•ื• ื ื•ืžืขืจ.
    • "-Wbitwise-conditional-parentheses" ื•ื•ืึธืจื ื– ืคื•ืŸ ืคึผืจืึธื‘ืœืขืžืก ื•ื•ืขืŸ ืžื™ืงืกื™ื ื’ ื“ื™ ืœืึทื“ื–ืฉื™ืงืึทืœ ืึธืคึผืขืจื™ื™ื˜ืขืจื– AND (&) ืื•ืŸ OR (|) ืžื™ื˜ ื“ื™ ืงืึทื ื“ื™ืฉืึทื ืึทืœ ืึธืคึผืขืจืึทื˜ืึธืจ (?:).
    • "-Wmisleading-indentation" ืื™ื– ืึทืŸ ืึทื ืึทืœืึธื’ ืคื•ืŸ ื“ื™ ื˜ืฉืขืง ืžื™ื˜ ื“ื™ ื–ืขืœื‘ืข ื ืึธืžืขืŸ ืคื•ืŸ GCC, ื•ื•ืึธืก ื•ื•ืึธืจื ื– ื•ื•ืขื’ืŸ ื™ื ื“ืขื ื˜ื™ื“ ืื•ื™ืกื“ืจื•ืงืŸ ื•ื•ื™ ืื•ื™ื‘ ื–ื™ื™ ื–ืขื ืขืŸ ื˜ื™ื™ืœ ืคื•ืŸ ืึท ืื•ื™ื‘ / ืึทื ื“ืขืจืฉ / ืคึฟืึทืจ / ื‘ืฉืขืช ื‘ืœืึธืง, ืึธื‘ืขืจ ืื™ืŸ ืคืึทืงื˜ ื–ื™ื™ ื–ืขื ืขืŸ ื ื™ืฉื˜ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ื“ืขื ื‘ืœืึธืง. .
    • ื•ื•ืขืŸ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ "-ื•ื•ืขืงืกื˜ืจืึท", ื“ื™ "-Wdeprecated-copy" ื˜ืฉืขืง ืื™ื– ืขื ื™ื™ื‘ืึทืœื“, ื•ื•ืืจืขื ื•ื ื’ ื•ื•ืขื’ืŸ ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ืงืึทื ืกื˜ืจืึทืงื˜ืขืจื–
      "ืžืึทืš" ืื•ืŸ "ืงืึธืคึผื™ืข" ืื™ืŸ ืงืœืืกืŸ ืžื™ื˜ ืึท ื™ืงืกืคึผืœื™ืกืึทื˜ ื“ืขืกื˜ืจื•ืงื˜ื•ืจ ื“ืขืคึฟื™ื ื™ืฆื™ืข.

    • ื“ื™ ื˜ืฉืขืงืก "-ื•ื•ื˜ืึทื•ื˜ืึธืœืึธื’ื™ืงืึทืœ-ืึธื•ื•ืขืจืœืึทืคึผ-ืคืึทืจื’ืœื™ื™ึทื›ืŸ", "-ื•ื•ืกื™ื–ืขืึธืค-ื•ื•ื™ื™ึทื˜ืขืจ-ื“ื™ื™ื•ื•", "-ื•ื•ื˜ืึทื•ื˜ืึธืœืึธื’ื™ืงืึทืœ-ืคืึทืจื’ืœื™ื™ึทื›ืŸ", "-ื•ื•ืจืึทื ื’ืข-ืฉืœื™ื™ืฃ-ืึทื ืึทืœื™ืกื™ืก" ื˜ืฉืขืงืก ื–ืขื ืขืŸ ื™ืงืกืคึผืึทื ื“ื™ื“.
    • ื“ื™ "-Wbitwise-op-parentheses" ืื•ืŸ "-Wlogical-op-parentheses" ื˜ืฉืขืงืก ื–ืขื ืขืŸ ืคืึทืจืงืจื™ืคึผืœื˜ ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜.
  • ืื™ืŸ C ืื•ืŸ C ++ ืงืึธื“, ื˜ื™ื™ึทื˜ืœ ืึทืจื™ื˜ืžืขื˜ื™ืง ืึทืคึผืขืจื™ื™ืฉืึทื ื– ื–ืขื ืขืŸ ื‘ืœื•ื™ื– ืขืจืœื•ื™ื‘ื˜ ืื™ืŸ ืขืจื™ื™ื–. ื“ื™ ื•ื ื“ืขืคื™ื ืขื“ ื‘ืขื”ืึทื•ื•ื™ืึธืจ ืกืึทื ื™ื˜ื™ื–ืขืจ ืื™ืŸ "-ืคืกืึทื ื™ื˜ื™ื–ืข = ื˜ื™ื™ึทื˜ืœ-ืึธื•ื•ืขืจืคืœืึธื•" ืžืึธื“ืข ืื™ืฆื˜ ืงืึทื˜ืฉืึทื– ืงืึทืกืขืก ืึทื–ืึท ื•ื•ื™ ืึทื“ื™ื ื’ ืึท ื ื™ื˜-ื ื•ืœ ืคืึธื˜ืึธ ืฆื• ืึท ื ืึทืœ ื˜ื™ื™ึทื˜ืœ ืึธื“ืขืจ ืฉืึทืคึฟืŸ ืึท ื ืึทืœ ื˜ื™ื™ึทื˜ืœ ื•ื•ืขืŸ ืึทืจืึธืคึผืจืขื›ืขื ืขืŸ ืึท ื’ืึทื ืฅ ื ื•ืžืขืจ ืคื•ืŸ ืึท ื ื™ื˜-ื ื•ืœ ื˜ื™ื™ึทื˜ืœ.
  • ื“ื™ ืžืึธื“ืข "-fsanitize=implicit-conversion" (Implicit Conversion Sanitizer) ืžืึธื“ืข ืื™ื– ืฆื•ื’ืขืคืืกื˜ ืฆื• ื™ื“ืขื ื˜ื™ืคื™ืฆื™ืจืŸ ืคึผืจืึธื‘ืœืขืžืก ืžื™ื˜ ื™ื ืงืจืึทืžืึทื ื˜ ืื•ืŸ ื“ืขืงืจืขืžืขื ื˜ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ืคึฟืึทืจ ื˜ื™ื™ืคึผืก ืžื™ื˜ ืึท ื‘ื™ืกืœ ื’ืจื™ื™ืก ืงืœืขื ืขืจืขืจ ื•ื•ื™ ื“ื™ "ื™ื ื˜" ื˜ื™ืคึผ.
  • ื•ื•ืขืŸ ืกืึทืœืขืงื˜ื™ื ื’ ืงืก86 ืฆื™ืœ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจื– "-ืžืึทืจืฅ = ืกืงื™ืœืึทืงืข-ืึทื•ื•ืงืก512", "-ืžืึทืจืฅ = ื™ืกืขืœืึทืงืข-ืงืœื™ืขื ื˜", "-ืžืึทืจืฅ = ื™ืกืขืœืึทืงืข-ืกืขืจื•ื•ืขืจ", "-ืžืึทืจืฅ = ืงืึทืกืงืึทื“ืขืœืึทืงืข" ืื•ืŸ "-ืžืึทืจืฅ = ืงืึธืึธืคึผืขืจืœืึทืงืข" ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜ ืื™ืŸ ื•ื•ืขืงื˜ืึธืจื™ื–ืขื“ ื“ื™ ืงืึธื“ ื”ืื˜ ืคืืจืฉื˜ืืคื˜ ื ื™ืฆืŸ 512-ื‘ื™ืกืœ ื–ืžื ืจืขื“ื–ืฉื™ืกื˜ืขืจื–, ืึทื—ื•ืฅ ืคึฟืึทืจ ื–ื™ื™ืขืจ ื“ื™ืจืขืงื˜ ืึธื ื•ื•ื™ื™ึทื– ืื™ืŸ ื“ื™ ืžืงื•ืจ ืงืึธื“. ื“ื™ ืกื™ื‘ื” ืื™ื– ืึทื– ื“ื™ ืงืคึผื• ืึธืคื˜ืงื™ื™ึทื˜ ื“ื™ืงืจื™ืกืึทื– ื•ื•ืขืŸ ืคึผืขืจืคืึธืจืžื™ื ื’ 512-ื‘ื™ืกืœ ืึทืคึผืขืจื™ื™ืฉืึทื ื–, ื•ื•ืึธืก ืงืขื ืขืŸ ื ืขื’ืึทื˜ื™ื•ื•ืœื™ ื•ื•ื™ืจืงืŸ ื“ื™ ืงื•ื™ืœืขืœื“ื™ืง ืคืึธืจืฉื˜ืขืœื•ื ื’. ืฆื• ื˜ื•ื™ืฉืŸ ื“ื™ ื ื™ื™ึทืข ื ืึทื˜ื•ืจ, ื“ื™ ืึธืคึผืฆื™ืข "-mrefer-vector-width=512" ืื™ื– ืฆื•ื’ืขืฉื˜ืขืœื˜.
  • ื“ื™ ื ืึทื˜ื•ืจ ืคื•ืŸ ื“ื™ "-ืคืœืึทืงืก-ื•ื•ืขืงื˜ืึธืจ-ืงืึทื ื•ื•ืขืจื–ืฉืึทื ื–" ืคืึธืŸ ืื™ื– ืขื ืœืขืš ืฆื• GCC: ื™ืžืคึผืœื™ืกืึทื˜ ื•ื•ืขืงื˜ืึธืจ ื‘ื™ืกืœ ืงืึทื ื•ื•ืขืจื–ืฉืึทื ื– ืฆื•ื•ื™ืฉืŸ ื™ื ื˜ืึทื“ื–ืฉืขืจ ืื•ืŸ ืคืœืึธื•ื˜ื™ื ื’-ืคื•ื ื˜ ื•ื•ืขืงื˜ืึธืจืก ื–ืขื ืขืŸ ืคึผืจืึธื•ื›ื™ื‘ืึทื˜ืึทื“. ืฆื• ืขืœื™ืžื™ื ื™ืจืŸ ื“ืขื ื‘ืึทื’ืจืขื ืขืฆื•ื ื’, ืขืก ืื™ื– ืคืืจื’ืขืœื™ื™ื’ื˜ ืฆื• ื ื•ืฆืŸ ื“ื™ ืคืึธืŸ
    "-ืคืœืึทืงืก-ื•ื•ืขืงื˜ืึธืจ-ืงืึทื ื•ื•ืขืจื–ืฉืึทื ื– = ืึทืœืข" ื•ื•ืึธืก ืื™ื– ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜.

  • ื™ืžืคึผืจื•ื•ื•ื“ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ MIPS ืงืคึผื•ืก ืคื•ืŸ ื“ื™ Octeon ืžืฉืคึผื—ื”. ืฆื•ื’ืขื’ืขื‘ืŸ "ืึธืงื˜ืขืึธืŸ +" ืฆื• ื“ืขืจ ืจืฉื™ืžื” ืคื•ืŸ ื’ื™ืœื˜ื™ืง ืงืคึผื• ื˜ื™ื™ืคึผืก.
  • ื•ื•ืขืŸ ืึทืกืขืžื‘ืึทืœื™ื ื’ ืื™ืŸ ื•ื•ืขื‘ืึทืกืกืขืžื‘ืœื™ ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜ ืงืึธื“, ื“ื™ ื•ื•ืึทืก-ืึธืคึผื˜ ืึธืคึผื˜ื™ืžื™ื–ืขืจ ืื™ื– ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ื’ืขืจื•ืคืŸ, ืื•ื™ื‘ ื‘ื ื™ืžืฆื ืื™ืŸ ื“ื™ ืกื™ืกื˜ืขื.
  • ืคึฟืึทืจ ืกื™ืกื˜ืขืžืขืŸ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ RISC-V ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ, ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ื•ื•ืึธืก ืกื˜ืึธืจื™ื ื’ ืคืœืึธื•ื˜ื™ื ื’ ืคื•ื ื˜ ื•ื•ืึทืœื•ืขืก ืื™ื– ืขืจืœื•ื™ื‘ื˜ ืื™ืŸ ืงืึทื ื“ื™ืฉืึทื ืึทืœ ื‘ืœืึทืงืก ืคื•ืŸ ื™ื ืœื™ื ืข ื™ื ืกืขืจืฅ ืคื•ืŸ ืึทืกืขืžื‘ืึทืœืœืขืจ.
  • ืฆื•ื’ืขื’ืขื‘ืŸ ื ื™ื™ึท ืงืึทืžืคึผื™ื™ืœืขืจ ืคืœืึทื’ืก: "-fgnuc-version" ืฆื• ืฉื˜ืขืœืŸ ื“ื™ ื•ื•ืขืจืกื™ืข ื•ื•ืขืจื˜ ืคึฟืึทืจ "__GNUC__" ืื•ืŸ ืขื ืœืขืš ืžืึทืงืจืึธืก; "-fmacro-prefix-map = ืึทืœื˜ = ื ื™ื™ึท" ืฆื• ืคืึทืจื‘ื™ื™ึทื˜ืŸ ื“ื™ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืคึผืจืขืคื™ืงืก ืึทืœื˜ ืžื™ื˜ ื ื™ื™ึท ืื™ืŸ ืžืึทืงืจืึธืก ืึทื–ืึท ื•ื•ื™ "__FILE__"; "-fpatchable-function-entry=N[,M]" ืฆื• ื“ื–ืฉืขื ืขืจื™ื™ื˜ ืึท ื–ื™ื›ืขืจ ื ื•ืžืขืจ ืคื•ืŸ NOP ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืื™ื™ื“ืขืจ ืื•ืŸ ื ืึธืš ื“ื™ ืคื•ื ืงืฆื™ืข ืคึผืึธื–ื™ืฆื™ืข ืคื•ื ื˜. ืคึฟืึทืจ RISC-V
    ืฆื•ื’ืขืœื™ื™ื’ื˜ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื“ื™ "-ffixed-xX", "-mcmodel=medany" ืื•ืŸ "-mcmodel=medlow" ืคืœืึทื’ืก.

  • ืฆื•ื’ืขื’ืขื‘ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื“ื™ ืึทื˜ืจื™ื‘ื™ื•ื˜ '__ ืึทื˜ืจื™ื‘ื™ื•ื˜__ ((ืฆื™ืœ ("ืฆื•ื•ื™ื™ึทื’-ืฉื•ืฅ =..."))) ืึทื˜ืจื™ื‘ื™ื•ื˜, ื“ื™ ื•ื•ื™ืจืงื•ื ื’ ืคื•ืŸ ื•ื•ืึธืก ืื™ื– ืขื ืœืขืš ืฆื• ื“ื™ ืึธืคึผืฆื™ืข -ื‘ืจืึทื ื˜ืฉ-ืฉื•ืฅ.
  • ืื•ื™ืฃ ื“ื™ Windows ืคึผืœืึทื˜ืคืึธืจืžืข, ื•ื•ืขืŸ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ "-cfguard" ืคืึธืŸ, ืกืึทื‘ืกื˜ื™ื˜ื•ืฉืึทืŸ ืคื•ืŸ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืœื•ื™ืคืŸ ืึธืจื ื˜ืœืขื›ืงื™ื™ึทื˜ ื˜ืฉืขืงืก (ืงืึธื ื˜ืจืึธืœ ืคืœืึธื• ื’ืึทืจื“) ืคึฟืึทืจ ื•ืžื“ื™ืจืขืงื˜ ืคื•ื ืงืฆื™ืข ืจื•ืคื˜ ืื™ื– ื™ืžืคึผืœืึทืžืขื ืึทื“. ืฆื• ื“ื™ืกื™ื™ื‘ืึทืœ ื˜ืฉืขืง ืกืึทื‘ืกื˜ื™ื˜ื•ืฉืึทืŸ, ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ื“ื™ "-cfguard-nochecks" ืคืึธืŸ ืึธื“ืขืจ ื“ื™ "__declspec (guard (nocf))" ืžืึธื“ื™ืคื™ืขืจ.
  • ื“ื™ ื ืึทื˜ื•ืจ ืคื•ืŸ ื“ื™ gnu_inline ืึทื˜ืจื™ื‘ื™ื•ื˜ ืื™ื– ืขื ืœืขืš ืฆื• GCC ืื™ืŸ ืงืึทืกืขืก ื•ื•ืขืŸ ืขืก ืื™ื– ื’ืขื ื™ืฆื˜ ืึธืŸ ื“ื™ "ืขืงืกื˜ืขืจืŸ" ืงื™ื•ื•ืขืจื“.
  • ื“ื™ ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื– ืคึฟืึทืจื‘ื•ื ื“ืŸ ืžื™ื˜ OpenCL ืื•ืŸ CUDA ืฉื˜ื™ืฆืŸ ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ื™ืงืกืคึผืึทื ื“ื™ื“. ืฆื•ื’ืขืœื™ื™ื’ื˜ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื ื™ื™ึทืข OpenMP 5.0 ืคึฟืขื™ึดืงื™ื™ื˜ืŸ.
  • ื ืกื˜ืึทื ื“ืึทืจื“ ืึธืคึผืฆื™ืข ืื™ื– ืฆื•ื’ืขืœื™ื™ื’ื˜ ืฆื• ื“ื™ ืงืœืึทื ื’ ืคึฟืึธืจืžืึทื˜ ื ื•ืฆืŸ, ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื‘ืึทืฉื˜ื™ืžืขืŸ ื“ื™ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื“ื™ C ++ ื ืึธืจืžืึทืœ ื’ืขื ื™ืฆื˜ ื•ื•ืขืŸ ืคึผืึทืจืกื™ื ื’ ืื•ืŸ ืคืึธืจืžืึทื˜ื˜ื™ื ื’ ืงืึธื“ (ืœืขืฆื˜ืข, ืึทื•ื˜ืึธ, c ++ 03, c ++ 11, c ++ 14, c++17, c++20).
  • ื ื™ื• ื˜ืฉืขืงืก ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ืฆื•ื’ืขืœื™ื™ื’ื˜ ืฆื• ื“ื™ ืกื˜ืึทื˜ื™ืง ืึทื ืึทืœื™ื–ืขืจ: alpha.cplusplus.PlacementNew ืฆื• ื‘ืึทืฉืœื™ืกืŸ ืฆื™ ืขืก ืื™ื– ื’ืขื ื•ื’ ืกื˜ืึธืจื™ื“ื–ืฉ ืคึผืœืึทืฅ, Fuchsia.HandleChecker ืฆื• ื“ืขื˜ืขืงื˜ ืœื™ืงืก ืฉื™ื™ึทื›ื•ืช ืฆื• Fuchsia ื”ืึทื ื“ืœืขืจืก, Security.insecureAPI.decodeValueOfObjCType ืฆื• ื“ืขื˜ืขืงื˜ ืคึผืึธื˜ืขื ืฆื™ืขืœ ื‘ืึทืคืขืจ ืึธื•ื•ื•ืขืจืคืœืึธื•ื– ื•ื•ืขืŸ ื ื™ืฆืŸ [NSCoder decodevCTypeOf :ื‘ื™ื™ึท:] .
  • ื“ื™ Undefined Behavior Sanitizer (UBSan) ื”ืื˜ ื™ืงืกืคึผืึทื ื“ื™ื“ ื–ื™ื™ึทืŸ ื˜ื™ื™ึทื˜ืœ ืœื•ื™ืคืŸ ื˜ืฉืขืงืก ืฆื• ื›ืึทืคึผืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคื•ืŸ ื ื™ื˜-ื ื•ืœ ืึธืคืกืขืฅ ืฆื• NULL ืคึผื•ื™ื ื˜ืขืจื– ืึธื“ืขืจ ื“ื™ ืจื™ื–ืึทืœื˜ื™ื ื’ ืึทื“ื™ืฉืึทืŸ ืคื•ืŸ ืึท NULL ื˜ื™ื™ึทื˜ืœ ืคืึธื˜ืึธ.
  • ืื™ืŸ ืœื™ื ื“ืขืจ ืงืœืึทื ื’-ืฆื™ื›ื˜ื™ืง ืฆื•ื’ืขื’ืขื‘ืŸ ืึท ื’ืจื•ื™ืก ื˜ื™ื™ืœ ืคื•ืŸ ื ื™ื™ึท ื˜ืฉืขืงืก.

ื”ื•ื™ืคึผื˜ ื™ื ืึธื•ื•ื•ื™ื™ืฉืึทื ื– LLVM 10.0:

  • ืฆื• ื“ื™ ืคืจื™ื™ืžื•ื•ืขืจืง ืึทื˜ืจื™ื‘ื•ื˜ืึธืจ ื ื™ื• ื™ื ื˜ืขืจืคึผืจืึทืกื™ื“ื–ืฉืขืจืึทืœ ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทื ื– ืื•ืŸ ืึทื ืึทืœื™ื–ืขืจื– ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ืฆื•ื’ืขื’ืขื‘ืŸ. ื“ื™ ืฉื˜ืึทื˜ ืคื•ืŸ 19 ืคืึทืจืฉื™ื“ืขื ืข ืึทื˜ืจื™ื‘ื™ื•ืฅ ืื™ื– ืคึผืจืขื“ื™ืงื˜ืขื“, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ 12 ืึทื˜ืจื™ื‘ื™ื•ืฅ 12 LLVM IR ืื•ืŸ 7 ืึทื‘ืกื˜ืจืึทืงื˜ ืึทื˜ืจื™ื‘ื™ื•ืฅ ืึทื–ืึท ื•ื•ื™ ืœืขื‘ืŸ.
  • ืฆื•ื’ืขืœื™ื™ื’ื˜ ื ื™ื™ึท ืžืึทื˜ืจื™ืฅ ืžืึทื˜ืึทืžืึทื˜ื™ืงืึทืœ ืคืึทื ื’ืงืฉืึทื ื– ื’ืขื‘ื•ื™ื˜ ืื™ืŸ ื“ื™ ืงืึทืžืคึผื™ื™ืœืขืจ (ื™ื ื˜ืจื™ื ืกื™ืงืก), ื•ื•ืึธืก ื–ืขื ืขืŸ ืจื™ืคึผืœื™ื™ืกื˜ ื“ื•ืจืš ืขืคืขืงื˜ื™ื•ื• ื•ื•ืขืงื˜ืึธืจ ืื™ื ืกื˜ืจื•ืงืฆื™ืขืก ื‘ืขืฉืึทืก ื–ืึทืžืœื•ื ื’.
  • ืคื™ืœืข ื™ืžืคึผืจื•ื•ื•ืžืึทื ืฅ ื–ืขื ืขืŸ ื’ืขืžืื›ื˜ ืฆื• ื‘ืึทืงืขื ื“ื– ืคึฟืึทืจ X86, AArch64, ARM, SystemZ, MIPS, AMDGPU ืื•ืŸ PowerPC ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจื–. ืฆื•ื’ืขื’ืขื‘ืŸ ืงืคึผื• ืฉื˜ื™ืฆืŸ
    Cortex-A65, Cortex-A65AE, Neoverse E1 ืื•ืŸ Neoverse N1. ืคึฟืึทืจ ARMv8.1-M, โ€‹โ€‹ื“ื™ ืงืึธื“ ื“ื–ืฉืขื ืขืจื™ื™ื˜ื™ื ื’ ืคึผืจืึธืฆืขืก ืื™ื– ืึธืคึผื˜ื™ืžื™ื–ืขื“ (ืœืžืฉืœ, ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืœื•ืคึผืก ืžื™ื˜ ืžื™ื ื™ืžืึทืœ ืึธื•ื•ื•ืขืจื›ืขื“ ืื™ื– ืืจื•ื™ืก) ืื•ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืึทื•ื˜ืึธื•ื•ืขืงื˜ืึธืจื™ื–ืึทื˜ื™ืึธืŸ ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ ืžื™ื˜ ื“ื™ MVE ืคืึทืจืœืขื ื’ืขืจื•ื ื’. ื™ืžืคึผืจื•ื•ื•ื“ CPU MIPS Octeon ืฉื˜ื™ืฆืŸ. ืคึฟืึทืจ PowerPC, ื•ื•ืขืงื˜ืึธืจื™ื–ืึทื˜ื™ืึธืŸ ืคื•ืŸ ืžืึทื˜ืึทืžืึทื˜ื™ืงืึทืœ ืกื•ื‘ืจืึธื•ื˜ื™ื ื– ื ื™ืฆืŸ ื“ื™ MASSV (ืžืึทื˜ืึทืžืึทื˜ื™ืง ืึทืงืกืขืœืขืจื™ื™ืฉืึทืŸ ืกื•ื‘ืกื™ืกื˜ืขื) ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืื™ื– ืขื ื™ื™ื‘ืึทืœื“, ืงืึธื“ ื“ื–ืฉืขื ืขืจื™ื™ืฉืึทืŸ ืื™ื– ื™ืžืคึผืจื•ื•ื•ื“ ืื•ืŸ ื–ื›ึผืจื•ืŸ ืึทืงืกืขืก ืคึฟื•ืŸ ืœื•ืคึผืก ืื™ื– ืึธืคึผื˜ื™ืžื™ื–ืขื“. ืคึฟืึทืจ ืงืก86, ื“ื™ ื”ืึทื ื“ืœื™ื ื’ ืคื•ืŸ ื•ื•2ื™32, ื•ื•4ื™16, ื•ื•2ื™16, ื•ื•8ื™8, ื•ื•4ื™8 ืื•ืŸ ื•ื•2ื™8 ืื™ื– ืคืืจืขื ื“ืขืจื˜.

  • ื™ืžืคึผืจื•ื•ื•ื“ ืงืึธื“ ื’ืขื ืขืจืึทื˜ืึธืจ ืคึฟืึทืจ ื•ื•ืขื‘ ืึทืกืขืžื‘ืœื™. ืฆื•ื’ืขื’ืขื‘ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ TLS (ืคืึธื“ืขื-ืœืึธืงืึทืœ ืกื˜ืึธืจื™ื“ื–ืฉ) ืื•ืŸ atomic.fence ื™ื ืกื˜ืจืึทืงืฉืึทื ื–. SIMD ืฉื˜ื™ืฆืŸ ืื™ื– ื‘ืื˜ื™ื™ื˜ื™ืง ื™ืงืกืคึผืึทื ื“ื™ื“. ื•ื•ืขื‘ืึทืกืกืขืžื‘ืœื™ ืึทื‘ื“ื–ืฉืขืงืฅ ืื™ืฆื˜ ื”ืึธื‘ืŸ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ื ื•ืฆืŸ ืžืึทืœื˜ื™-ื•ื•ืึทืœื™ื•ื“ ืคึฟื•ื ืงืฆื™ืข ืกื™ื’ื ืึทื˜ืฉืขืจื–.
  • ื“ื™ ืึทื ืึทืœื™ื–ืขืจ ืื™ื– ื’ืขื ื™ืฆื˜ ื•ื•ืขืŸ ืคึผืจืึทืกืขืกื™ื ื’ ืœื•ืคึผืก MemorySSA, ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื“ืขืคื™ื ื™ืจืŸ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื– ืฆื•ื•ื™ืฉืŸ ืคืึทืจืฉื™ื“ืขื ืข ื–ื›ึผืจื•ืŸ ืึทืคึผืขืจื™ื™ืฉืึทื ื–. ืžืขืžืึธืจื™ืกืกืกืึท ืงืขื ืขืŸ ืจืขื“ื•ืฆื™ืจืŸ ื–ืึทืžืœื•ื ื’ ืื•ืŸ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืฆื™ื™ื˜ ืึธื“ืขืจ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ AliasSetTracker ืึธืŸ ืึธื ื•ื•ืขืจ ืคื•ืŸ ืคืึธืจืฉื˜ืขืœื•ื ื’.
  • ื“ื™ LLDB ื“ื™ื‘ื•ื’ื’ืขืจ ื”ืื˜ ื‘ืื˜ื™ื™ื˜ื™ืง ื™ืžืคึผืจื•ื•ื•ื“ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื“ื™ DWARF v5 ืคึฟืึธืจืžืึทื˜. ื™ืžืคึผืจื•ื•ื•ื“ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื‘ื ื™ืŸ ืžื™ื˜ MinGW
    ืื•ืŸ ืฆื•ื’ืขื’ืขื‘ืŸ ืขืจืฉื˜ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ื“ื™ื‘ืึทื’ื™ื ื’ Windows ืขืงืกืขืงื•ื˜ืึทื‘ืœืขืก ืคึฟืึทืจ ARM ืื•ืŸ ARM64 ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจื–. ืฆื•ื’ืขืœื™ื™ื’ื˜ ื“ื™ืกืงืจื™ืคึผืฉืึทื ื– ืคื•ืŸ ื“ื™ ืึธืคึผืฆื™ืขืก ื’ืขืคึฟื™ื ื˜ ื•ื•ืขืŸ ืึทื•ื˜ืึธืงืึธืžืคึผืœืขื˜ื™ื ื’ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ื“ื•ืจืš ื“ืจื™ื ื’ืœืขืš ื“ื™ ืงื•ื•ื™ื˜ืœ.

  • ื™ืงืกืคึผืึทื ื“ื™ื“ LLD ืœื™ื ืงืขืจ ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื–. ื™ืžืคึผืจื•ื•ื•ื“ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื“ื™ ELF ืคึฟืึธืจืžืึทื˜, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ื™ื ืฉื•ืจื™ื ื’ ืคื•ืœ ืงืึทืžืคึผืึทื˜ืึทื‘ื™ืœืึทื˜ื™ ืคื•ืŸ ื’ืœืึธื‘ ื˜ืขืžืคึผืœืึทื˜ืขืก ืžื™ื˜ ื“ื™ GNU ืœื™ื ืงืขืจ, ืึทื“ื™ื ื’ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืงืึทืžืคึผืจืขืกื˜ ื“ื™ื‘ืึทื’ ืกืขืงืฉืึทื ื– ".ื–ื“ืขื‘ื•ื’", ืึทื“ื™ื ื’ ื“ื™ PT_GNU_PROPERTY ืคืึทืจืžืึธื’ ืฆื• ื“ืขืคื™ื ื™ืจืŸ ื“ื™ .note.gnu.property ืึธืคึผื˜ื™ื™ืœื•ื ื’ (ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืื™ืŸ ืฆื•ืงื•ื ืคึฟื˜. ืœื™ื ื•ืงืก ืงืขืจื ืึทืœื–),
    ื“ื™ ืžืึธื“ืขืก "-ื– ื ืึธืกืขืคึผืขืจืึทื˜ืข-ืงืึธื“", "-ื– ื‘ืึทื–ื•ื ื“ืขืจ-ืงืึธื“" ืื•ืŸ "-ื– ื‘ืึทื–ื•ื ื“ืขืจ-ืœืึธืึทื“ืึทื‘ืœืข-ืกืขื’ืžืึทื ืฅ" ืžืึธื“ืขืก ื–ืขื ืขืŸ ื™ืžืคึผืœืึทืžืขื ืึทื“. ื™ืžืคึผืจื•ื•ื•ื“ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ MinGW ืื•ืŸ WebAssembly.

ืžืงื•ืจ: opennet.ru

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’