LLVM 9.0 ಕಂಪೈಲರ್ ಸೂಟ್‌ನ ಬಿಡುಗಡೆ

ಆರು ತಿಂಗಳ ಅಭಿವೃದ್ಧಿಯ ನಂತರ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ ಯೋಜನೆಯ ಬಿಡುಗಡೆ LLVM 9.0 — GCC-ಹೊಂದಾಣಿಕೆಯ ಪರಿಕರಗಳು (ಕಂಪೈಲರ್‌ಗಳು, ಆಪ್ಟಿಮೈಜರ್‌ಗಳು ಮತ್ತು ಕೋಡ್ ಜನರೇಟರ್‌ಗಳು), ಪ್ರೋಗ್ರಾಂಗಳನ್ನು RISC ತರಹದ ವರ್ಚುವಲ್ ಸೂಚನೆಗಳ ಮಧ್ಯಂತರ ಬಿಟ್‌ಕೋಡ್‌ಗೆ ಕಂಪೈಲ್ ಮಾಡುವುದು (ಬಹು-ಹಂತದ ಆಪ್ಟಿಮೈಸೇಶನ್ ಸಿಸ್ಟಮ್‌ನೊಂದಿಗೆ ಕಡಿಮೆ-ಮಟ್ಟದ ವರ್ಚುವಲ್ ಯಂತ್ರ). ರಚಿತವಾದ ಸೂಡೊಕೋಡ್ ಅನ್ನು JIT ಕಂಪೈಲರ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರೋಗ್ರಾಂ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಸಮಯದಲ್ಲಿ ನೇರವಾಗಿ ಯಂತ್ರ ಸೂಚನೆಗಳಾಗಿ ಪರಿವರ್ತಿಸಬಹುದು.

LLVM 9.0 ನ ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳು ಟಾರ್ಗೆಟ್ RISC-V ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ನಿಂದ ಪ್ರಾಯೋಗಿಕ ವಿನ್ಯಾಸದ ಟ್ಯಾಗ್ ಅನ್ನು ತೆಗೆದುಹಾಕುವುದು, OpenCL ಗೆ C++ ಬೆಂಬಲ, LLD ನಲ್ಲಿ ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಲೋಡ್ ಮಾಡಲಾದ ಭಾಗಗಳಾಗಿ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ವಿಭಜಿಸುವ ಸಾಮರ್ಥ್ಯ ಮತ್ತು "asm goto", Linux ಕರ್ನಲ್ ಕೋಡ್‌ನಲ್ಲಿ ಬಳಸಲಾಗಿದೆ. libc++ WASI (WebAssembly System Interface) ಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಿತು, ಮತ್ತು LLD WebAssembly ಡೈನಾಮಿಕ್ ಲಿಂಕ್‌ಗೆ ಆರಂಭಿಕ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಿತು.

ಅಭಿವೃದ್ಧಿಗಳು ಕ್ಲಾಂಗ್ 9.0 ರಲ್ಲಿ:

  • ಸೇರಿಸಲಾಗಿದೆ GCC-ನಿರ್ದಿಷ್ಟ ಅಭಿವ್ಯಕ್ತಿಯ ಅನುಷ್ಠಾನ "asm goto“, ಇದು ಅಸೆಂಬ್ಲರ್ ಇನ್‌ಲೈನ್ ಬ್ಲಾಕ್‌ನಿಂದ ಸಿ ಕೋಡ್‌ನಲ್ಲಿ ಲೇಬಲ್‌ಗೆ ಚಲಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. x86_64 ಆರ್ಕಿಟೆಕ್ಚರ್ ಹೊಂದಿರುವ ಸಿಸ್ಟಂಗಳಲ್ಲಿ ಕ್ಲಾಂಗ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು “CONFIG_JUMP_LABEL=y” ಮೋಡ್‌ನಲ್ಲಿ ಲಿನಕ್ಸ್ ಕರ್ನಲ್ ಅನ್ನು ನಿರ್ಮಿಸಲು ಈ ವೈಶಿಷ್ಟ್ಯವು ಅಗತ್ಯವಿದೆ. ಹಿಂದಿನ ಬಿಡುಗಡೆಗಳಲ್ಲಿ ಸೇರಿಸಲಾದ ಬದಲಾವಣೆಗಳನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಂಡು, Linux ಕರ್ನಲ್ ಅನ್ನು ಈಗ x86_64 ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗಾಗಿ ಕ್ಲಾಂಗ್‌ನಲ್ಲಿ ನಿರ್ಮಿಸಬಹುದು (ಹಿಂದೆ ಆರ್ಮ್, aarch64, ppc32, ppc64le ಮತ್ತು mips ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗಳಿಗೆ ಮಾತ್ರ ಕಟ್ಟಡವನ್ನು ಬೆಂಬಲಿಸಲಾಯಿತು). ಇದಲ್ಲದೆ, Android ಮತ್ತು ChromeOS ಪ್ರಾಜೆಕ್ಟ್‌ಗಳನ್ನು ಈಗಾಗಲೇ ಕರ್ನಲ್ ನಿರ್ಮಾಣಕ್ಕಾಗಿ ಕ್ಲಾಂಗ್ ಬಳಸಲು ಪರಿವರ್ತಿಸಲಾಗಿದೆ ಮತ್ತು Google ಅದರ ಉತ್ಪಾದನೆಯ Linux ಸಿಸ್ಟಮ್‌ಗಳಿಗಾಗಿ ಕರ್ನಲ್‌ಗಳನ್ನು ನಿರ್ಮಿಸಲು ಕ್ಲಾಂಗ್ ಅನ್ನು ಮುಖ್ಯ ವೇದಿಕೆಯಾಗಿ ಪರೀಕ್ಷಿಸುತ್ತಿದೆ. ಭವಿಷ್ಯದಲ್ಲಿ, LLD, llvm-objcopy, llvm-ar, llvm-nm, ಮತ್ತು llvm-objdump ಸೇರಿದಂತೆ ಕರ್ನಲ್ ನಿರ್ಮಾಣ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಇತರ LLVM ಘಟಕಗಳನ್ನು ಬಳಸಬಹುದು;
  • OpenCL ನಲ್ಲಿ C++17 ಅನ್ನು ಬಳಸಲು ಪ್ರಾಯೋಗಿಕ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ. ನಿರ್ದಿಷ್ಟ ವೈಶಿಷ್ಟ್ಯಗಳಲ್ಲಿ ವಿಳಾಸ ಸ್ಥಳದ ಗುಣಲಕ್ಷಣಗಳಿಗೆ ಬೆಂಬಲ, ಟೈಪ್ ಕ್ಯಾಸ್ಟಿಂಗ್ ಆಪರೇಟರ್‌ಗಳ ಮೂಲಕ ವಿಳಾಸದ ಸ್ಥಳ ಪರಿವರ್ತನೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವುದು, ಸಿ ಗಾಗಿ ಓಪನ್‌ಸಿಎಲ್‌ನಲ್ಲಿರುವಂತೆ ವೆಕ್ಟರ್ ಪ್ರಕಾರಗಳನ್ನು ಒದಗಿಸುವುದು, ಚಿತ್ರಗಳು, ಈವೆಂಟ್‌ಗಳು, ಚಾನಲ್‌ಗಳು ಇತ್ಯಾದಿಗಳಿಗೆ ನಿರ್ದಿಷ್ಟ ಓಪನ್‌ಸಿಎಲ್ ಪ್ರಕಾರಗಳ ಉಪಸ್ಥಿತಿ.
  • ಮುಂಭಾಗದ ವಿವಿಧ ಹಂತಗಳ (ಪಾರ್ಸಿಂಗ್, ಇನಿಶಿಯಲೈಸೇಶನ್) ಮತ್ತು ಬ್ಯಾಕೆಂಡ್ (ಆಪ್ಟಿಮೈಸೇಶನ್ ಹಂತಗಳು) ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಮಯದ ವರದಿಯನ್ನು ರಚಿಸಲು "-ftime-trace" ಮತ್ತು "-ftime-trace-granularity=N" ಹೊಸ ಕಂಪೈಲರ್ ಫ್ಲ್ಯಾಗ್‌ಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ. ವರದಿಯನ್ನು json ಫಾರ್ಮ್ಯಾಟ್‌ನಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ, chrome://tracing ಮತ್ತು speedscope.app ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ;
  • ವಿಷುಯಲ್ ಸ್ಟುಡಿಯೋ ಪರಿಸರದಲ್ಲಿ ಮೆಮೊರಿ ಬಳಕೆಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುವ "__declspec (ಅಲೋಕೇಟರ್)" ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಮತ್ತು ಅದರ ಜೊತೆಗಿನ ಡೀಬಗ್ ಮಾಡುವಿಕೆಯ ಮಾಹಿತಿಯ ಸಂಸ್ಕರಣೆಯನ್ನು ಸೇರಿಸಲಾಗಿದೆ;
  • C ಭಾಷೆಗೆ, "__FILE_NAME__" ಮ್ಯಾಕ್ರೋಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಇದು "__FILE__" ಮ್ಯಾಕ್ರೋವನ್ನು ಹೋಲುತ್ತದೆ, ಆದರೆ ಪೂರ್ಣ ಮಾರ್ಗವಿಲ್ಲದೆ ಫೈಲ್ ಹೆಸರನ್ನು ಮಾತ್ರ ಒಳಗೊಂಡಿರುತ್ತದೆ;
  • ಪ್ಯಾರಾಮೀಟರ್ ಮತ್ತು ಆರ್ಗ್ಯುಮೆಂಟ್ ಪ್ಯಾಟರ್ನ್‌ಗಳು, ರೆಫರೆನ್ಸ್ ಪ್ರಕಾರಗಳು, ರಿಟರ್ನ್ ಟೈಪ್ ಇನ್‌ಫರೆನ್ಸ್, ಆಬ್ಜೆಕ್ಟ್‌ಗಳು, ಸ್ವಯಂ-ರಚಿಸಿದ ಕಾರ್ಯಗಳು, ಬಿಲ್ಟ್-ಇನ್ ಆಪರೇಟರ್‌ಗಳು ಮತ್ತು ಹೆಚ್ಚಿನವುಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ವಿವಿಧ C++ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಒಳಗೊಳ್ಳಲು C++ ಅಡ್ರೆಸ್ ಸ್ಪೇಸ್ ಗುಣಲಕ್ಷಣಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ವಿಸ್ತರಿಸಿದೆ.
  • OpenCL, OpenMP ಮತ್ತು CUDA ಗೆ ಬೆಂಬಲದೊಂದಿಗೆ ಸಂಬಂಧಿಸಿದ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ವಿಸ್ತರಿಸಲಾಗಿದೆ. ಇದು ಅಂತರ್ನಿರ್ಮಿತ OpenCL ಕಾರ್ಯಗಳ ಸೂಚ್ಯ ಸೇರ್ಪಡೆಗೆ ಆರಂಭಿಕ ಬೆಂಬಲವನ್ನು ಒಳಗೊಂಡಿದೆ ("-fdeclare-opencl-builtins" ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ), cl_arm_integer_dot_product ವಿಸ್ತರಣೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ರೋಗನಿರ್ಣಯದ ಸಾಧನಗಳನ್ನು ವಿಸ್ತರಿಸಲಾಗಿದೆ;
  • ಸ್ಥಿರ ವಿಶ್ಲೇಷಕದ ಕೆಲಸವನ್ನು ಸುಧಾರಿಸಲಾಗಿದೆ ಮತ್ತು ಸ್ಥಿರ ವಿಶ್ಲೇಷಣೆಯನ್ನು ನಿರ್ವಹಿಸುವ ದಾಖಲಾತಿಯನ್ನು ಸೇರಿಸಲಾಗಿದೆ. ಲಭ್ಯವಿರುವ ಪರೀಕ್ಷಕ ಮಾಡ್ಯೂಲ್‌ಗಳು ಮತ್ತು ಬೆಂಬಲಿತ ಆಯ್ಕೆಗಳನ್ನು ಪ್ರದರ್ಶಿಸಲು ಫ್ಲ್ಯಾಗ್‌ಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ (“-ವಿಶ್ಲೇಷಕ-ಪರೀಕ್ಷಕ[-ಆಯ್ಕೆ]-ಸಹಾಯ”, “-ವಿಶ್ಲೇಷಕ-ಪರೀಕ್ಷಕ[-ಆಯ್ಕೆ]-ಸಹಾಯ-ಆಲ್ಫಾ” ಮತ್ತು “-ವಿಶ್ಲೇಷಕ-ಪರೀಕ್ಷಕ[-ಆಯ್ಕೆ]-ಸಹಾಯ "-ಡೆವಲಪರ್"). ಎಚ್ಚರಿಕೆಗಳನ್ನು ದೋಷಗಳೆಂದು ಪರಿಗಣಿಸಲು "-ಅನಾಲೈಸರ್-ವೆರರ್" ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
    ಹೊಸ ಪರಿಶೀಲನಾ ವಿಧಾನಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ:

    • ಬಫರ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಅಸುರಕ್ಷಿತ ಅಭ್ಯಾಸಗಳನ್ನು ಗುರುತಿಸಲು security.insecureAPI.DeprecatedOrUnsafeBufferHandling;
    • osx.MIGChecker MIG (ಮ್ಯಾಕ್ ಇಂಟರ್ಫೇಸ್ ಜನರೇಟರ್) ಕರೆ ನಿಯಮಗಳ ಉಲ್ಲಂಘನೆಗಾಗಿ ಹುಡುಕಲು;
    • ತಪ್ಪಾದ XNU ಲಿಬ್ಕರ್ನ್ ಆಬ್ಜೆಕ್ಟ್ ಪರಿವರ್ತನೆಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು optin.osx.OSObjectCStyleCast;
    • apiModeling.llvm LLVM ಕೋಡ್‌ಬೇಸ್‌ನಲ್ಲಿ ದೋಷಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಮಾಡೆಲಿಂಗ್ ತಪಾಸಣೆ ಕಾರ್ಯಗಳ ಸೆಟ್‌ನೊಂದಿಗೆ;
    • ಅನ್ಇನಿಶಿಯಲೈಸ್ಡ್ C++ ಆಬ್ಜೆಕ್ಟ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಸ್ಥಿರ ಕೋಡ್ (optin.cplus ಪ್ಲಸ್ ಪ್ಯಾಕೇಜ್‌ನಲ್ಲಿ UnininitializedObject);
  • ಕ್ಲಾಂಗ್-ಫಾರ್ಮ್ಯಾಟ್ ಉಪಯುಕ್ತತೆಯು C# ಭಾಷೆಯಲ್ಲಿ ಕೋಡ್ ಫಾರ್ಮ್ಯಾಟಿಂಗ್‌ಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಿದೆ ಮತ್ತು ಮೈಕ್ರೋಸಾಫ್ಟ್ ಬಳಸುವ ಕೋಡ್ ಫಾರ್ಮ್ಯಾಟಿಂಗ್ ಶೈಲಿಗೆ ಬೆಂಬಲವನ್ನು ಒದಗಿಸುತ್ತದೆ;
  • ಕ್ಲಾಂಗ್-cl, ವಿಷುಯಲ್ ಸ್ಟುಡಿಯೋದಲ್ಲಿ ಸೇರಿಸಲಾದ cl.exe ಕಂಪೈಲರ್‌ನೊಂದಿಗೆ ಆಯ್ಕೆ-ಮಟ್ಟದ ಹೊಂದಾಣಿಕೆಯನ್ನು ಒದಗಿಸುವ ಪರ್ಯಾಯ ಕಮಾಂಡ್-ಲೈನ್ ಇಂಟರ್ಫೇಸ್, ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ ಫೈಲ್‌ಗಳನ್ನು ಕಮಾಂಡ್-ಲೈನ್ ಆಯ್ಕೆಗಳಾಗಿ ಪರಿಗಣಿಸಲು ಮತ್ತು ಅನುಗುಣವಾದ ಎಚ್ಚರಿಕೆಯನ್ನು ಪ್ರದರ್ಶಿಸಲು ಹ್ಯೂರಿಸ್ಟಿಕ್ಸ್ ಅನ್ನು ಸೇರಿಸಿದೆ (ಉದಾಹರಣೆಗೆ, "ಕ್ಲ್ಯಾಂಗ್-ಸಿಎಲ್ / ಡಯಾಗ್ನೋಸ್ಟಿಕ್: ಕ್ಯಾರೆಟ್ / ಸಿ ಟೆಸ್ಟ್.ಸಿಸಿ" ಅನ್ನು ಚಾಲನೆ ಮಾಡುವಾಗ);
  • ಹೊಸ ಚೆಕ್‌ಗಳ ಹೆಚ್ಚಿನ ಭಾಗವನ್ನು ಲಿಂಟರ್ ಕ್ಲಾಂಗ್-ಟಿಡಿಗೆ ಸೇರಿಸಲಾಗಿದೆ, ಇದರಲ್ಲಿ OpenMP API ಗೆ ನಿರ್ದಿಷ್ಟವಾದ ಚೆಕ್‌ಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ;
  • ವಿಸ್ತರಿಸಲಾಗಿದೆ ಸರ್ವರ್ ಸಾಮರ್ಥ್ಯಗಳು ಕ್ಲಾಂಗ್ಡ್ (ಕ್ಲ್ಯಾಂಗ್ ಸರ್ವರ್), ಇದರಲ್ಲಿ ಹಿನ್ನೆಲೆ ಸೂಚ್ಯಂಕ ಬಿಲ್ಡಿಂಗ್ ಮೋಡ್ ಅನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ, ಕೋಡ್‌ನೊಂದಿಗೆ ಸಾಂದರ್ಭಿಕ ಕ್ರಿಯೆಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ (ವೇರಿಯಬಲ್ ಮರುಪಡೆಯುವಿಕೆ, ಸ್ವಯಂ ಮತ್ತು ಮ್ಯಾಕ್ರೋ ವ್ಯಾಖ್ಯಾನಗಳ ವಿಸ್ತರಣೆ, ತಪ್ಪಿಸಿಕೊಳ್ಳದ ಸ್ಟ್ರಿಂಗ್‌ಗಳನ್ನು ಅನ್‌ಸ್ಕೇಪ್‌ಗೆ ಪರಿವರ್ತಿಸುವುದು), ಪ್ರದರ್ಶಿಸುವ ಸಾಮರ್ಥ್ಯ ಕ್ಲಾಂಗ್-ಅಚ್ಚುಕಟ್ಟಾದ ಎಚ್ಚರಿಕೆಗಳು, ಹೆಡರ್ ಫೈಲ್‌ಗಳಲ್ಲಿನ ದೋಷಗಳ ವಿಸ್ತರಿತ ರೋಗನಿರ್ಣಯ ಮತ್ತು ಪ್ರಕಾರದ ಶ್ರೇಣಿಯ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಪ್ರದರ್ಶಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ;

ಮುಖ್ಯ ನಾವೀನ್ಯತೆಗಳು LLVM 9.0:

  • LLD ಲಿಂಕರ್‌ಗೆ ಪ್ರಾಯೋಗಿಕ ವಿಭಜನಾ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಇದು ಒಂದು ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಹಲವಾರು ಭಾಗಗಳಾಗಿ ವಿಭಜಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, ಪ್ರತಿಯೊಂದೂ ಪ್ರತ್ಯೇಕ ELF ಫೈಲ್‌ನಲ್ಲಿದೆ. ಈ ವೈಶಿಷ್ಟ್ಯವು ಪ್ರೋಗ್ರಾಂನ ಮುಖ್ಯ ಭಾಗವನ್ನು ಪ್ರಾರಂಭಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, ಇದು ಕಾರ್ಯಾಚರಣೆಯ ಸಮಯದಲ್ಲಿ ಅಗತ್ಯವಿರುವಂತೆ ಇತರ ಘಟಕಗಳನ್ನು ಲೋಡ್ ಮಾಡುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, ನೀವು ಅಂತರ್ನಿರ್ಮಿತ PDF ವೀಕ್ಷಕವನ್ನು ಪ್ರತ್ಯೇಕ ಫೈಲ್ ಆಗಿ ಪ್ರತ್ಯೇಕಿಸಬಹುದು, ಇದು ಬಳಕೆದಾರರು PDF ಅನ್ನು ತೆರೆದಾಗ ಮಾತ್ರ ಲೋಡ್ ಆಗುತ್ತದೆ. ಫೈಲ್).

    LLD ಲಿಂಕರ್ ಮುನ್ನೆಲೆಗೆ ತಂದರು arm32_7, arm64, ppc64le ಮತ್ತು x86_64 ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗಳಿಗಾಗಿ Linux ಕರ್ನಲ್ ಅನ್ನು ಲಿಂಕ್ ಮಾಡಲು ಸೂಕ್ತವಾದ ಸ್ಥಿತಿಗೆ.
    ಹೊಸ ಆಯ್ಕೆಗಳು "-" (stdout ಗೆ ಔಟ್‌ಪುಟ್), "-[no-]allow-shlib-undefined", "-undefined-glob", "-nmagic", "-omagic", "-dependent-library", " - z ifunc-noplt" ಮತ್ತು "-z ಸಾಮಾನ್ಯ-ಪುಟ-ಗಾತ್ರ". AArch64 ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗಾಗಿ, BTI (ಶಾಖೆಯ ಗುರಿ ಸೂಚಕ) ಮತ್ತು PAC (ಪಾಯಿಂಟರ್ ಅಥೆಂಟಿಕೇಶನ್ ಕೋಡ್) ಸೂಚನೆಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ. MIPS, RISC-V ಮತ್ತು PowerPC ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಸುಧಾರಿಸಲಾಗಿದೆ. WebAssembly ಗಾಗಿ ಡೈನಾಮಿಕ್ ಲಿಂಕ್ ಮಾಡಲು ಆರಂಭಿಕ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ;

  • libc++ ನಲ್ಲಿ ಅಳವಡಿಸಲಾಗಿದೆ ಕಾರ್ಯಗಳು ssize, std::is_constant_evaluated, std::midpoint ಮತ್ತು std::lerp, ವಿಧಾನಗಳು "ಫ್ರಂಟ್" ಮತ್ತು "ಬ್ಯಾಕ್" ಅನ್ನು std ಗೆ ಸೇರಿಸಲಾಗಿದೆ::span, ಪ್ರಕಾರಗಳ ಗುಣಲಕ್ಷಣಗಳು std::is_unbounded_array ಮತ್ತು std::is_bounded_array ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ , ಎಸ್ಟಿಡಿ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ವಿಸ್ತರಿಸಲಾಗಿದೆ: : ಪರಮಾಣು. GCC 4.9 ಗೆ ಬೆಂಬಲವನ್ನು ನಿಲ್ಲಿಸಲಾಗಿದೆ (GCC 5.1 ಮತ್ತು ಹೊಸ ಬಿಡುಗಡೆಗಳೊಂದಿಗೆ ಬಳಸಬಹುದು). ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ ವಾಸಿ (WebAssembly ಸಿಸ್ಟಮ್ ಇಂಟರ್ಫೇಸ್, ಬ್ರೌಸರ್ನ ಹೊರಗೆ WebAssembly ಅನ್ನು ಬಳಸುವ ಇಂಟರ್ಫೇಸ್);
  • ಹೊಸ ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ. ಕೆಲವು ಸಂದರ್ಭಗಳಲ್ಲಿ memcmp ಕರೆಗಳನ್ನು bcmp ಗೆ ಪರಿವರ್ತಿಸುವುದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ಕಡಿಮೆ ಸ್ವಿಚ್ ಬ್ಲಾಕ್‌ಗಳನ್ನು ತಲುಪಲಾಗದಿರುವಾಗ ಅಥವಾ ಸೂಚನೆಗಳನ್ನು ಬಳಸದಿರುವಾಗ, ಉದಾಹರಣೆಗೆ, ಪ್ರಕಾರದ ನಿರರ್ಥಕದೊಂದಿಗೆ ಕಾರ್ಯಗಳನ್ನು ಕರೆಯುವಾಗ ಜಂಪ್ ಕೋಷ್ಟಕಗಳಿಗಾಗಿ ಶ್ರೇಣಿಯ ಪರಿಶೀಲನೆಯ ಲೋಪವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗಿದೆ;
  • RISC-V ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗೆ ಬ್ಯಾಕೆಂಡ್ ಅನ್ನು ಸ್ಥಿರಗೊಳಿಸಲಾಗಿದೆ, ಅದನ್ನು ಇನ್ನು ಮುಂದೆ ಪ್ರಾಯೋಗಿಕವಾಗಿ ಇರಿಸಲಾಗಿಲ್ಲ ಮತ್ತು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ನಿರ್ಮಿಸಲಾಗಿದೆ. MAFDC ವಿಸ್ತರಣೆಗಳೊಂದಿಗೆ RV32I ಮತ್ತು RV64I ಸೂಚನಾ ಸೆಟ್ ರೂಪಾಂತರಗಳಿಗೆ ಸಂಪೂರ್ಣ ಕೋಡ್ ಉತ್ಪಾದನೆಯ ಬೆಂಬಲವನ್ನು ಒದಗಿಸುತ್ತದೆ;
  • X86, AArch64, ARM, SystemZ, MIPS, AMDGPU ಮತ್ತು PowerPC ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗಳಿಗೆ ಬ್ಯಾಕೆಂಡ್‌ಗಳಿಗೆ ಹಲವಾರು ಸುಧಾರಣೆಗಳನ್ನು ಮಾಡಲಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, ವಾಸ್ತುಶಿಲ್ಪಕ್ಕಾಗಿ
    ARM ಬ್ಯಾಕೆಂಡ್‌ನಲ್ಲಿ SVE64 (ಸ್ಕೇಲೆಬಲ್ ವೆಕ್ಟರ್ ಎಕ್ಸ್‌ಟೆನ್ಶನ್ 2) ಮತ್ತು MTE (ಮೆಮೊರಿ ಟ್ಯಾಗಿಂಗ್ ಎಕ್ಸ್‌ಟೆನ್ಶನ್ಸ್) ಸೂಚನೆಗಳಿಗೆ AArch2 ಬೆಂಬಲವನ್ನು ಸೇರಿಸಿತು, Armv8.1-M ಆರ್ಕಿಟೆಕ್ಚರ್ ಮತ್ತು MVE (M-ಪ್ರೊಫೈಲ್ ವೆಕ್ಟರ್ ಎಕ್ಸ್‌ಟೆನ್ಶನ್) ವಿಸ್ತರಣೆಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ. GFX10 (Navi) ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗೆ ಬೆಂಬಲವನ್ನು AMDGPU ಬ್ಯಾಕೆಂಡ್‌ಗೆ ಸೇರಿಸಲಾಗಿದೆ, ಫಂಕ್ಷನ್ ಕರೆ ಮಾಡುವ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಡೀಫಾಲ್ಟ್ ಆಗಿ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಸಂಯೋಜಿತ ಪಾಸ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ ಡಿಪಿಪಿ (ಡೇಟಾ-ಪ್ಯಾರಲಲ್ ಪ್ರಿಮಿಟಿವ್ಸ್).

  • LLDB ಡೀಬಗರ್ ಈಗ ಬ್ಯಾಕ್‌ಟ್ರೇಸ್‌ಗಳಿಗೆ ಬಣ್ಣ ಹೈಲೈಟ್ ಮಾಡುವಿಕೆಯನ್ನು ಹೊಂದಿದೆ ಮತ್ತು DWARF4 ಡೀಬಗ್_ಟೈಪ್‌ಗಳು ಮತ್ತು DWARF5 ಡೀಬಗ್_ಇನ್ಫೋ ಬ್ಲಾಕ್‌ಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ;
  • COFF ಸ್ವರೂಪದಲ್ಲಿ ಆಬ್ಜೆಕ್ಟ್ ಮತ್ತು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಫೈಲ್‌ಗಳಿಗೆ ಬೆಂಬಲವನ್ನು llvm-objcopy ಮತ್ತು llvm-ಸ್ಟ್ರಿಪ್ ಉಪಯುಕ್ತತೆಗಳಿಗೆ ಸೇರಿಸಲಾಗಿದೆ.

ಮೂಲ: opennet.ru

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ