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

ಅಭಿವೃದ್ಧಿಯ ಒಂದು ವರ್ಷದ ನಂತರ ಪ್ರಕಟಿಸಲಾಗಿದೆ ಕಂಪೈಲರ್‌ಗಳ ಉಚಿತ ಸೆಟ್ ಬಿಡುಗಡೆ GCC 10.1, ಹೊಸ GCC 10.x ಶಾಖೆಯಲ್ಲಿ ಮೊದಲ ಪ್ರಮುಖ ಬಿಡುಗಡೆ. ಅನುಗುಣವಾಗಿ ಹೊಸ ಯೋಜನೆ ಬಿಡುಗಡೆ ಸಂಖ್ಯೆಗಳು, ಆವೃತ್ತಿ 10.0 ಅನ್ನು ಅಭಿವೃದ್ಧಿ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಬಳಸಲಾಯಿತು, ಮತ್ತು GCC 10.1 ಬಿಡುಗಡೆಗೆ ಸ್ವಲ್ಪ ಮೊದಲು, GCC 11.0 ಶಾಖೆಯು ಈಗಾಗಲೇ ಕವಲೊಡೆಯಿತು, ಅದರ ಆಧಾರದ ಮೇಲೆ ಮುಂದಿನ ಮಹತ್ವದ ಬಿಡುಗಡೆಯಾದ GCC 11.1 ರಚನೆಯಾಗುತ್ತದೆ.

GCC 10.1 C++20 ಸ್ಟ್ಯಾಂಡರ್ಡ್‌ಗಾಗಿ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾದ C++ ಭಾಷೆಯಲ್ಲಿನ ಅನೇಕ ಆವಿಷ್ಕಾರಗಳ ಅನುಷ್ಠಾನಕ್ಕೆ ಗಮನಾರ್ಹವಾಗಿದೆ, ಭವಿಷ್ಯದ C ಭಾಷಾ ಗುಣಮಟ್ಟಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಸುಧಾರಣೆಗಳು (C2x), ಕಂಪೈಲರ್ ಬ್ಯಾಕೆಂಡ್‌ಗಳಲ್ಲಿ ಹೊಸ ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಳು ಮತ್ತು ಪ್ರಾಯೋಗಿಕ ಬೆಂಬಲ ಸ್ಥಿರ ವಿಶ್ಲೇಷಣೆ ಮೋಡ್. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಹೊಸ ಶಾಖೆಯ ತಯಾರಿಕೆಯ ಸಮಯದಲ್ಲಿ, ಯೋಜನೆಯು ರೆಪೊಸಿಟರಿಯನ್ನು SVN ನಿಂದ Git ಗೆ ವರ್ಗಾಯಿಸಿತು.

ಮುಖ್ಯ ಬದಲಾವಣೆಗಳನ್ನು:

  • ಸೇರಿಸಲಾಗಿದೆ ಸ್ಥಿರ ವಿಶ್ಲೇಷಣೆಯ ಪ್ರಾಯೋಗಿಕ ವಿಧಾನ "- ಫ್ಯಾನಲೈಸರ್", ಇದು ಪ್ರೋಗ್ರಾಂನಲ್ಲಿ ಕೋಡ್ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಪಥಗಳು ಮತ್ತು ಡೇಟಾ ಹರಿವುಗಳ ಸಂಪನ್ಮೂಲ-ತೀವ್ರ ಇಂಟರ್ಪ್ರೊಸೆಡ್ಯುರಲ್ ವಿಶ್ಲೇಷಣೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ಒಂದು ಮೆಮೊರಿ ಪ್ರದೇಶಕ್ಕಾಗಿ ಉಚಿತ() ಕಾರ್ಯದ ಡಬಲ್ ಕರೆಗಳು, ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್ ಸೋರಿಕೆಗಳು, ಶೂನ್ಯ ಪಾಯಿಂಟರ್‌ಗಳನ್ನು ಡಿಫರೆನ್ಸಿಂಗ್ ಮತ್ತು ರವಾನಿಸುವುದು, ಮುಕ್ತವಾದ ಮೆಮೊರಿ ಬ್ಲಾಕ್‌ಗಳನ್ನು ಪ್ರವೇಶಿಸುವುದು, ಪ್ರಾರಂಭಿಸದ ಮೌಲ್ಯಗಳನ್ನು ಬಳಸುವುದು ಇತ್ಯಾದಿಗಳಂತಹ ಸಂಕಲನ ಹಂತದಲ್ಲಿ ಸಮಸ್ಯೆಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಮೋಡ್ ಸಮರ್ಥವಾಗಿದೆ. OpenSSL ಕೋಡ್‌ಗಾಗಿ ಹೊಸ ಮೋಡ್‌ನ ಬಳಕೆಯು ಈಗಾಗಲೇ ಗುರುತಿಸಲು ಸಾಧ್ಯವಾಗಿಸಿದೆ ಅಪಾಯಕಾರಿ ದುರ್ಬಲತೆ.
  • ಸುಧಾರಿತ ಇಂಟರ್ಪ್ರೊಸಿಡರಲ್ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳು. IPA-SRA (ಇಂಟರ್‌ಪ್ರೊಸೆಡ್ಯುರಲ್ ಸ್ಕೇಲರ್ ಶೇರ್ಡ್ ರಿಪ್ಲೇಸ್‌ಮೆಂಟ್) ಪಾಸ್ ಅನ್ನು ಬೈಂಡ್ ಸಮಯದಲ್ಲಿ ಕೆಲಸ ಮಾಡಲು ಮರುವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಇತರ ವಿಷಯಗಳ ಜೊತೆಗೆ, ಈಗ ಕಂಪ್ಯೂಟೆಡ್ ಮತ್ತು ಹಿಂತಿರುಗಿಸದ ಬಳಕೆಯ ಮೌಲ್ಯಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ. "-O2" ಆಪ್ಟಿಮೈಸೇಶನ್ ಮೋಡ್‌ನಲ್ಲಿ, "-finline-functions" ಆಯ್ಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ, ಇದು ಕಾರ್ಯನಿರ್ವಹಣೆಯ ಕಾರ್ಯಕ್ಷಮತೆಗಿಂತ ಹೆಚ್ಚು ಕಾಂಪ್ಯಾಕ್ಟ್ ಕೋಡ್‌ಗೆ ಒಲವು ತೋರುತ್ತದೆ. ಇನ್‌ಲೈನ್ ಕಾರ್ಯ ನಿಯೋಜನೆಗಾಗಿ ಹ್ಯೂರಿಸ್ಟಿಕ್‌ನ ಕೆಲಸವನ್ನು ವೇಗಗೊಳಿಸಲಾಗಿದೆ. ಇನ್ಲೈನ್ ​​ವಿಸ್ತರಣೆ ಮತ್ತು ಫಂಕ್ಷನ್ ಕ್ಲೋನಿಂಗ್ ಹ್ಯೂರಿಸ್ಟಿಕ್ಸ್ ಈಗ ವೈಯಕ್ತಿಕ ರೂಪಾಂತರಗಳ ಪರಿಣಾಮಕಾರಿತ್ವವನ್ನು ಊಹಿಸಲು ಮೌಲ್ಯ ಶ್ರೇಣಿಗಳ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಬಳಸಬಹುದು. C++ ಗಾಗಿ, ಟೈಪ್-ಆಧಾರಿತ ಅಲಿಯಾಸ್ ಪಾರ್ಸಿಂಗ್‌ನ ನಿಖರತೆಯನ್ನು ಸುಧಾರಿಸಲಾಗಿದೆ.
  • ವರ್ಧಿತ ಲಿಂಕ್ ಮಾಡುವ ಸಮಯ ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಳು (LTO). ಹೊಸ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಸೇರಿಸಲಾಗಿದೆ ಟು-ಡಂಪ್ LTO ಬೈಟ್‌ಕೋಡ್‌ನೊಂದಿಗೆ ಆಬ್ಜೆಕ್ಟ್ ಫೈಲ್‌ಗಳ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಮರುಹೊಂದಿಸಲು. ಸಮಾನಾಂತರ LTO ಪಾಸ್‌ಗಳು ಏಕಕಾಲದಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿರುವ ಕಾರ್ಯಗಳ ಸಂಖ್ಯೆಯನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿರ್ಧರಿಸುತ್ತವೆ ಮತ್ತು ಅವುಗಳನ್ನು ನಿರ್ಧರಿಸಲಾಗದಿದ್ದರೆ, CPU ಕೋರ್‌ಗಳ ಸಂಖ್ಯೆಯ ಮಾಹಿತಿಯನ್ನು ಸಮಾನಾಂತರ ಅಂಶವಾಗಿ ಬಳಸುತ್ತವೆ. zstd ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು LTO ಬೈಟ್‌ಕೋಡ್ ಅನ್ನು ಕುಗ್ಗಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
  • ಕೋಡ್ ಪ್ರೊಫೈಲಿಂಗ್ (PGO - ಪ್ರೊಫೈಲ್-ಗೈಡೆಡ್ ಆಪ್ಟಿಮೈಸೇಶನ್) ಫಲಿತಾಂಶಗಳ ಆಧಾರದ ಮೇಲೆ ಆಪ್ಟಿಮೈಸೇಶನ್ ಕಾರ್ಯವಿಧಾನವನ್ನು ಸುಧಾರಿಸಲಾಗಿದೆ, ಇದು ಕೋಡ್ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಗುಣಲಕ್ಷಣಗಳ ವಿಶ್ಲೇಷಣೆಯ ಆಧಾರದ ಮೇಲೆ ಹೆಚ್ಚು ಸೂಕ್ತವಾದ ಕೋಡ್ ಅನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ. ಸಂಕಲನ ಮತ್ತು ಹಾಟ್/ಕೋಲ್ಡ್ ಕೋಡ್ ಬೇರ್ಪಡಿಕೆ ಸಮಯದಲ್ಲಿ ಸುಧಾರಿತ ಪ್ರೊಫೈಲ್ ನಿರ್ವಹಣೆ. ಆಯ್ಕೆಯ ಮೂಲಕ "-fprofile-ಮೌಲ್ಯಗಳು» ಈಗ 4 ಪ್ರೊಫೈಲ್ ಮೌಲ್ಯಗಳವರೆಗೆ ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಬಹುದು, ಉದಾಹರಣೆಗೆ ಪರೋಕ್ಷ ಕರೆಗಳಿಗೆ ಮತ್ತು ಹೆಚ್ಚು ನಿಖರವಾದ ಪ್ರೊಫೈಲ್ ಮಾಹಿತಿಯನ್ನು ಒದಗಿಸುತ್ತದೆ.
  • ಸಿ, ಸಿ++ ಮತ್ತು ಫೋರ್ಟ್ರಾನ್ ಭಾಷೆಗಳಿಗೆ ಸಮಾನಾಂತರ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ವಿವರಣೆಯನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ OpenACC 2.6, ಇದು GPU ಗಳು ಮತ್ತು NVIDIA PTX ನಂತಹ ವಿಶೇಷ ಪ್ರೊಸೆಸರ್‌ಗಳಲ್ಲಿ ಆಫ್‌ಲೋಡ್ ಕಾರ್ಯಾಚರಣೆಗಳಿಗಾಗಿ ಪರಿಕರಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. ಮಾನದಂಡದ ಅನುಷ್ಠಾನವು ಬಹುತೇಕ ಪೂರ್ಣಗೊಂಡಿದೆ ಓಪನ್ ಎಂಪಿ 5.0 (ಓಪನ್ ಮಲ್ಟಿ-ಪ್ರೊಸೆಸಿಂಗ್), ಇದು API ಮತ್ತು ಮಲ್ಟಿ-ಕೋರ್ ಮತ್ತು ಹೈಬ್ರಿಡ್ (CPU+GPU/DSP) ಸಿಸ್ಟಮ್‌ಗಳಲ್ಲಿ ಹಂಚಿಕೆಯ ಮೆಮೊರಿ ಮತ್ತು ವೆಕ್ಟರೈಸೇಶನ್ ಯೂನಿಟ್‌ಗಳೊಂದಿಗೆ (SIMD) ಸಮಾನಾಂತರ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ವಿಧಾನಗಳನ್ನು ಅನ್ವಯಿಸುವ ವಿಧಾನಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. ಕೊನೆಯ ಖಾಸಗಿ ಷರತ್ತುಗಳು, ಸ್ಕ್ಯಾನ್ ಮತ್ತು ಲೂಪ್ ನಿರ್ದೇಶನಗಳು, ಆರ್ಡರ್ ಮತ್ತು use_device_addr ಅಭಿವ್ಯಕ್ತಿಗಳಂತಹ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ. OpenMP ಮತ್ತು OpenACC ಗಾಗಿ, ನಾಲ್ಕನೇ ತಲೆಮಾರಿನ (ಫಿಜಿ) ಮತ್ತು ಐದನೇ ತಲೆಮಾರಿನ AMD ರೇಡಿಯನ್ (GCN) GPU ಗಳಲ್ಲಿ (VEGA 10/VEGA 20) ಆಫ್‌ಲೋಡ್ ಕಾರ್ಯಾಚರಣೆಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
  • ಸಿ ಕುಟುಂಬದ ಭಾಷೆಗಳಿಗೆ, ಉಲ್ಲೇಖ ಅಥವಾ ಪಾಯಿಂಟರ್ ಮೂಲಕ ರವಾನಿಸಲಾದ ವಸ್ತುಗಳಿಗೆ ಕಾರ್ಯದ ಪ್ರವೇಶವನ್ನು ವಿವರಿಸಲು ಮತ್ತು ಅಂತಹ ವಸ್ತುಗಳನ್ನು ವಸ್ತುಗಳ ಗಾತ್ರದ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಹೊಂದಿರುವ ಪೂರ್ಣಾಂಕ ವಾದಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸಲು "ಪ್ರವೇಶ" ಕಾರ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ. "ಪ್ರವೇಶ" ದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು, ಬಳಕೆದಾರರ ಕಾರ್ಯಗಳಿಂದ ತಪ್ಪಾದ ಪ್ರವೇಶವನ್ನು ಪತ್ತೆಹಚ್ಚಲು "ಟೈಪ್" ಗುಣಲಕ್ಷಣವನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ, ಉದಾಹರಣೆಗೆ, ರಚನೆಯ ಮಿತಿಯ ಹೊರಗಿನ ಪ್ರದೇಶಕ್ಕೆ ಮೌಲ್ಯಗಳನ್ನು ಬರೆಯುವಾಗ. ನಿರ್ದಿಷ್ಟ ಆವೃತ್ತಿ ಸಂಖ್ಯೆಗಳೊಂದಿಗೆ ELF ಫೈಲ್‌ನಲ್ಲಿ ಅಸೋಸಿಯೇಟ್ ಚಿಹ್ನೆಗಳಿಗೆ "ಸಿಮ್ವರ್" ಗುಣಲಕ್ಷಣವನ್ನು ಸಹ ಸೇರಿಸಲಾಗಿದೆ.
  • ಹೊಸ ಎಚ್ಚರಿಕೆಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ:
    • “-Wstring-compare” (“-Wextra” ನೊಂದಿಗೆ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ) - strcmp ಮತ್ತು strncmp ಕಾರ್ಯಗಳನ್ನು ಕರೆಯುವ ಫಲಿತಾಂಶದೊಂದಿಗೆ ಶೂನ್ಯವನ್ನು ಹೋಲಿಸುವ ಅಭಿವ್ಯಕ್ತಿಗಳ ಉಪಸ್ಥಿತಿಯ ಬಗ್ಗೆ ಎಚ್ಚರಿಸುತ್ತದೆ, ಇದು ಉದ್ದದ ಕಾರಣದಿಂದಾಗಿ ಸ್ಥಿರಕ್ಕೆ ಸಮನಾಗಿರುತ್ತದೆ ಒಂದು ಆರ್ಗ್ಯುಮೆಂಟ್ ಎರಡನೇ ಆರ್ಗ್ಯುಮೆಂಟ್‌ನಲ್ಲಿನ ರಚನೆಯ ಗಾತ್ರಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿರುತ್ತದೆ.
    • "-Wzero-length-bounds" ("-Warray-bounds" ನೊಂದಿಗೆ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ) - ಶೂನ್ಯ ಉದ್ದದ ರಚನೆಯ ಅಂಶಗಳನ್ನು ಪ್ರವೇಶಿಸುವ ಬಗ್ಗೆ ಎಚ್ಚರಿಕೆ ನೀಡುತ್ತದೆ, ಇದು ಇತರ ಡೇಟಾವನ್ನು ಮೇಲ್ಬರಹಕ್ಕೆ ಕಾರಣವಾಗಬಹುದು.
    • "-Warray-bounds", "-Wformat-overflow", "-Wrestrict", "-Wreturn-local-addr" ಮತ್ತು "-Wstringop-overflow" ಎಚ್ಚರಿಕೆಗಳನ್ನು ಮಿತಿ ಮೀರಿದ ಸಂದರ್ಭಗಳ ಸಂಖ್ಯೆಯನ್ನು ವಿಸ್ತರಿಸಲು ವಿಸ್ತರಿಸಲಾಗಿದೆ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ.
  • UCN ಸಂಕೇತ (\uNNNN ಅಥವಾ \UNNNNNN) ಬದಲಿಗೆ ಪ್ರಸ್ತುತ ಎನ್‌ಕೋಡಿಂಗ್ (ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ UTF-8) ಬಳಸಿಕೊಂಡು ಗುರುತಿಸುವಿಕೆಗಳಲ್ಲಿ ವ್ಯಾಪಕ ಅಕ್ಷರಗಳನ್ನು ನೇರವಾಗಿ ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ. ಉದಾಹರಣೆಗೆ:

    ಸ್ಟ್ಯಾಟಿಕ್ ಕಾನ್ಸ್ಟ್ ಇಂಟ್ π = 3;
    int get_naïve_pi() {
    ಹಿಂತಿರುಗಿ π;
    }

  • C ಭಾಷೆಗಾಗಿ, C2X ಮಾನದಂಡದೊಳಗೆ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾದ ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳ ಒಂದು ಭಾಗವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗಿದೆ (-std=c2x ಮತ್ತು -std=gnu2x ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಮೂಲಕ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ): "[[]]" ಸಿಂಟ್ಯಾಕ್ಸ್‌ಗೆ ಬೆಂಬಲವು ಗುಣಲಕ್ಷಣಗಳನ್ನು ವಿವರಿಸಲು ಕಾಣಿಸಿಕೊಂಡಿದೆ C++ (ಉದಾಹರಣೆಗೆ, [[gnu ::const]], [[ಅಸಮ್ಮಿತಗೊಳಿಸಲಾಗಿದೆ]], [[ಫಾಲ್‌ಥ್ರೂ]] ಮತ್ತು [[ಬಹುಶಃ_ಬಳಕೆಯಾಗದ]]. UTF-8 ಅಕ್ಷರಗಳೊಂದಿಗೆ ಸ್ಥಿರಾಂಕಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು "u8" ಸಿಂಟ್ಯಾಕ್ಸ್‌ಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
    ಇದಕ್ಕೆ ಹೊಸ ಮ್ಯಾಕ್ರೋಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ . strftime ಗೆ "%OB" ಮತ್ತು "%Ob" ಪರ್ಯಾಯಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ.

  • C ಗಾಗಿ ಡೀಫಾಲ್ಟ್ ಮೋಡ್ "-fno-common" ಆಗಿದೆ, ಇದು ಕೆಲವು ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಳಲ್ಲಿ ಜಾಗತಿಕ ವೇರಿಯಬಲ್‌ಗಳಿಗೆ ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿ ಪ್ರವೇಶವನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
  • C++ ಗಾಗಿ, ಸುಮಾರು 16 ಬದಲಾವಣೆಗಳು ಮತ್ತು ನಾವೀನ್ಯತೆಗಳನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ, ಇದನ್ನು C++20 ಮಾನದಂಡದಲ್ಲಿ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗಿದೆ. ಸೇರಿಸಲಾಗಿದೆ ಕೀವರ್ಡ್ "constinit" ಸೇರಿದಂತೆ
    ಮತ್ತು ಟೆಂಪ್ಲೇಟ್ ವಿಸ್ತರಣೆಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ "ಪರಿಕಲ್ಪನೆ". ಕಂಪೈಲ್ ಸಮಯದಲ್ಲಿ, ಟೆಂಪ್ಲೇಟ್ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳಾಗಿ ಸ್ವೀಕರಿಸಬಹುದಾದ ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳ ಗುಂಪನ್ನು ಮಿತಿಗೊಳಿಸುವ ಟೆಂಪ್ಲೇಟ್ ಪ್ಯಾರಾಮೀಟರ್ ಅವಶ್ಯಕತೆಗಳ ಗುಂಪನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಪರಿಕಲ್ಪನೆಗಳು ನಿಮಗೆ ಅವಕಾಶ ಮಾಡಿಕೊಡುತ್ತವೆ. ಟೆಂಪ್ಲೇಟ್‌ನಲ್ಲಿ ಬಳಸಲಾದ ಡೇಟಾ ಪ್ರಕಾರಗಳ ಗುಣಲಕ್ಷಣಗಳು ಮತ್ತು ಇನ್‌ಪುಟ್ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳ ಡೇಟಾ ಪ್ರಕಾರದ ಗುಣಲಕ್ಷಣಗಳ ನಡುವಿನ ತಾರ್ಕಿಕ ಅಸಂಗತತೆಯನ್ನು ತಪ್ಪಿಸಲು ಪರಿಕಲ್ಪನೆಗಳನ್ನು ಬಳಸಬಹುದು.

  • G++ constexpr ಮೂಲಕ ಸ್ಥಿರ ವಸ್ತುಗಳನ್ನು ಬದಲಾಯಿಸುವುದರಿಂದ ಉಂಟಾಗುವ ವ್ಯಾಖ್ಯಾನಿಸದ ನಡವಳಿಕೆಯ ಪತ್ತೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ. constexpr ಅನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡುವಾಗ ಕಂಪೈಲರ್‌ನಿಂದ ಮೆಮೊರಿ ಬಳಕೆ ಕಡಿಮೆಯಾಗಿದೆ. "-Wmismatched-tags" ಮತ್ತು "-Wredundant-tags" ಎಂಬ ಹೊಸ ಎಚ್ಚರಿಕೆಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
  • ಹೊಸ ಆಜ್ಞಾ ಸಾಲಿನ ಆಯ್ಕೆಗಳನ್ನು ಪ್ರಸ್ತಾಪಿಸಲಾಗಿದೆ:
    • "ಹೊಸ" ಮತ್ತು "ಅಳಿಸು" ಆಪರೇಟರ್‌ಗಳ ಅನಗತ್ಯ ಜೋಡಿಗಳನ್ನು ತೆಗೆದುಹಾಕಲು "-fallocation-dce".
    • ತರಬೇತಿ ಚಾಲನೆಯನ್ನು ಹೊಂದಿರದ ಕೋಡ್‌ಗಾಗಿ ಗಾತ್ರ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು "-fprofile-partial-training".
    • "-fprofile-ಪ್ರೊಫೈಲ್ ಪುನರುತ್ಪಾದನೆಯ ಮಟ್ಟವನ್ನು ನಿಯಂತ್ರಿಸಲು ಪುನರುತ್ಪಾದಿಸಬಹುದು.
    • "-fprofile-prefix-path" ಪ್ರತ್ಯೇಕ ಪ್ರೊಫೈಲ್ ಉತ್ಪಾದನೆಗೆ ಬಳಸಲಾಗುವ ಮೂಲ ಮೂಲ ನಿರ್ಮಾಣ ಡೈರೆಕ್ಟರಿಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ("-fprofile-generate=profile_dir" ಮತ್ತು "-fprofile-use=profile_dir" ಗಾಗಿ).
  • ಸೂಚಿಸಲಾದ ಆಯ್ಕೆಗಳಿಗೆ ಎಚ್ಚರಿಕೆ ಪಠ್ಯದಲ್ಲಿ, ಈ ಆಯ್ಕೆಗಳಿಗಾಗಿ ದಾಖಲಾತಿಗೆ ಹೋಗಲು ನಿಮಗೆ ಅನುಮತಿಸುವ ಹೈಪರ್ಲಿಂಕ್ಗಳನ್ನು ಒದಗಿಸಲಾಗಿದೆ. URL ಪರ್ಯಾಯವನ್ನು "-fdiagnostics-urls" ಆಯ್ಕೆಯನ್ನು ಬಳಸಿಕೊಂಡು ನಿಯಂತ್ರಿಸಲಾಗುತ್ತದೆ.
  • ಪ್ರಿಪ್ರೊಸೆಸರ್ ಆಪರೇಟರ್ ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ "__ಹ್ಯಾಸ್_ಬಿಲ್ಟಿನ್", ಅಂತರ್ನಿರ್ಮಿತ ಕಾರ್ಯಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಇದನ್ನು ಬಳಸಬಹುದು.
  • ISO/IEC TS 18661 ಸ್ಪೆಸಿಫಿಕೇಶನ್‌ನಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ರೌಂಡಿಂಗ್ ಫಂಕ್ಷನ್‌ನ ಅನುಷ್ಠಾನದೊಂದಿಗೆ ಹೊಸ ಅಂತರ್ನಿರ್ಮಿತ ಕಾರ್ಯ "__builtin_roundeven" ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ, "ರೌಂಡ್" ನಂತೆ, ಆದರೆ ಪೂರ್ಣಾಂಕದ ಭಾಗವು 0.5 ಕ್ಕಿಂತ ಹೆಚ್ಚು (ದೊಡ್ಡ ಮೌಲ್ಯಕ್ಕೆ), 0.5 ಕ್ಕಿಂತ ಕಡಿಮೆ - ಕೆಳಗೆ (ಶೂನ್ಯಕ್ಕೆ), ಮತ್ತು 0.5 ಕ್ಕೆ ಸಮನಾಗಿರುತ್ತದೆ - ಅಂತಿಮ ಅಂಕಿಯ ಸಮಾನತೆಯಿಂದ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ.
  • AArch64 ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗಾಗಿ, SVE2 ವಿಸ್ತರಣೆಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ ಮತ್ತು SVE (ಸ್ಕೇಲೆಬಲ್ ವೆಕ್ಟರ್ ಎಕ್ಸ್‌ಟೆನ್ಶನ್) ಗೆ ಬೆಂಬಲವನ್ನು ಸುಧಾರಿಸಲಾಗಿದೆ, ಅಂತರ್ನಿರ್ಮಿತ SVE ACLE ಕಾರ್ಯಗಳು ಮತ್ತು ಪ್ರಕಾರಗಳಿಗೆ ಹೆಚ್ಚುವರಿ ಬೆಂಬಲ ಮತ್ತು ವೆಕ್ಟರೈಸೇಶನ್ ಬಳಕೆ ಸೇರಿದಂತೆ. LSE (ದೊಡ್ಡ ಸಿಸ್ಟಮ್ ವಿಸ್ತರಣೆಗಳು) ಮತ್ತು TME (ವಹಿವಾಟು ಮೆಮೊರಿ ವಿಸ್ತರಣೆ) ಗಾಗಿ ಬೆಂಬಲವನ್ನು ವಿಸ್ತರಿಸಲಾಗಿದೆ. Armv8.5-A ಮತ್ತು Armv8.6-A ನಲ್ಲಿ ಪ್ರಸ್ತಾಪಿಸಲಾದ ಹೊಸ ಸೂಚನೆಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಇದರಲ್ಲಿ ಯಾದೃಚ್ಛಿಕ ಸಂಖ್ಯೆಯ ಉತ್ಪಾದನೆ, ಪೂರ್ಣಾಂಕ, ಮೆಮೊರಿ ಟ್ಯಾಗ್ ಬೈಂಡಿಂಗ್,
    bfloat16 ಮತ್ತು ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಗುಣಾಕಾರ. ಪ್ರೊಸೆಸರ್ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ
    ಆರ್ಮ್ ಕಾರ್ಟೆಕ್ಸ್-A77,
    ಆರ್ಮ್ ಕಾರ್ಟೆಕ್ಸ್-A76AE,
    ಆರ್ಮ್ ಕಾರ್ಟೆಕ್ಸ್-A65,
    ಆರ್ಮ್ ಕಾರ್ಟೆಕ್ಸ್-A65AE,
    ಆರ್ಮ್ ಕಾರ್ಟೆಕ್ಸ್-A34 ಮತ್ತು
    ಮಾರ್ವೆಲ್ ಥಂಡರ್ ಎಕ್ಸ್ 3.

  • ARM32 ಗಾಗಿ ABI FDPIC (64-ಬಿಟ್ ಫಂಕ್ಷನ್ ಪಾಯಿಂಟರ್‌ಗಳು) ಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ. 64-ಬಿಟ್ ಪೂರ್ಣಾಂಕ ಕಾರ್ಯಾಚರಣೆಗಳ ಮರುವಿನ್ಯಾಸಗೊಳಿಸಲಾದ ಮತ್ತು ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿದ ಪ್ರಕ್ರಿಯೆ. CPU ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ
    ಆರ್ಮ್ ಕಾರ್ಟೆಕ್ಸ್-A77,
    ಆರ್ಮ್ ಕಾರ್ಟೆಕ್ಸ್-A76AE ಮತ್ತು
    ಆರ್ಮ್ ಕಾರ್ಟೆಕ್ಸ್-M35P. 32-ಬಿಟ್ SIMD, 16-ಬಿಟ್ ಗುಣಾಕಾರ, ಲ್ಯಾಚ್ ಅಂಕಗಣಿತ ಮತ್ತು ಇತರ DSP ಅಲ್ಗಾರಿದಮ್ ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ACLE ಡೇಟಾ ಸಂಸ್ಕರಣಾ ಸೂಚನೆಗಳಿಗೆ ವಿಸ್ತೃತ ಬೆಂಬಲ. ACLE CDE (ಕಸ್ಟಮ್ ಡೇಟಾಪಾತ್ ವಿಸ್ತರಣೆ) ಸೂಚನೆಗಳಿಗಾಗಿ ಪ್ರಾಯೋಗಿಕ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ.

  • GCN ಮೈಕ್ರೊ ಆರ್ಕಿಟೆಕ್ಚರ್ ಆಧಾರಿತ AMD GPU ಗಳಿಗಾಗಿ ಬ್ಯಾಕೆಂಡ್‌ನಲ್ಲಿ ಗಮನಾರ್ಹವಾಗಿ ಸುಧಾರಿತ ಕೋಡ್ ಉತ್ಪಾದನೆ ಮತ್ತು ವೆಕ್ಟರೈಸೇಶನ್.
  • AVR ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗಾಗಿ XMEGA-ತರಹದ ಸಾಧನಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ
    ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, AT808mega809,AT1608, ಮೆಗಾ 1609 3208, ATmega3209, ATmega4808 4809, ATmegaXNUMX ಮತ್ತು ATmegaXNUMX.

  • IA-32/x86-64 ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗಳಿಗಾಗಿ ಹೊಸ Intel ENQCMD ಸೂಚನಾ ಸೆಟ್ ಆರ್ಕಿಟೆಕ್ಚರ್ ವಿಸ್ತರಣೆಯನ್ನು (-menqcmd) ಸೇರಿಸಲಾಗಿದೆ. Intel Cooperlake (-march=cooperlake, AVX512BF16 ISA ವಿಸ್ತರಣೆಯನ್ನು ಒಳಗೊಂಡಿದೆ) ಮತ್ತು Tigerlake (-march=tigerlake, MOVDIRI, MOVDIR64B ಮತ್ತು AVX512VP2INTERSECT ISA ವಿಸ್ತರಣೆಗಳನ್ನು ಒಳಗೊಂಡಿದೆ) CPU ಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
  • HSA ಆರ್ಕಿಟೆಕ್ಚರ್‌ನ ಆಧಾರದ ಮೇಲೆ ಭಿನ್ನಜಾತಿಯ ಕಂಪ್ಯೂಟಿಂಗ್ ಸಿಸ್ಟಮ್‌ಗಳಿಗಾಗಿ HSAIL (ಹೆಟೆರೊಜೀನಿಯಸ್ ಸಿಸ್ಟಮ್ ಆರ್ಕಿಟೆಕ್ಚರ್ ಇಂಟರ್ಮೀಡಿಯೇಟ್ ಲ್ಯಾಂಗ್ವೇಜ್) ನ ಅನುಷ್ಠಾನವನ್ನು ಅಸಮ್ಮತಿಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಭವಿಷ್ಯದ ಬಿಡುಗಡೆಯಲ್ಲಿ ತೆಗೆದುಹಾಕಲಾಗುವುದು.

ಮೂಲ: opennet.ru

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