LLVM 11.0 گڏ ڪرڻ وارو سوٽ ڇڏڻ

ڇهن مهينن جي ترقي کان پوء پيش ڪيو پروجيڪٽ ڇڏڻ ايل ايل ايم ايم ايڪسڪس - GCC-مطابقت وارا اوزار (ڪمپائلر، اصلاح ڪندڙ ۽ ڪوڊ جنريٽر)، پروگرامن کي گڏ ڪرڻ RISC جي وچ واري بٽ ڪوڊ ۾ RISC-جهڙوڪ ورچوئل هدايتون (گهٽ-سطح واري ورچوئل مشين سان ملٽي ليول آپٽمائيزيشن سسٽم). ٺاهيل pseudocode کي JIT ڪمپيلر استعمال ڪندي مشين جي هدايتن ۾ سڌو سنئون پروگرام جي عمل جي وقت ۾ تبديل ڪري سگھجي ٿو.

نئين رليز ۾ اهم تبديلي جي شموليت هئي ڦِٽَفورٽران ٻولي لاءِ هڪ فرنٽ اينڊ. Flang Fortran 2018، OpenMP 4.5 ۽ OpenACC 3.0 کي سپورٽ ڪري ٿو، پر پروجيڪٽ جي ترقي اڃا تائين مڪمل نه ڪئي وئي آهي ۽ فرنٽ آخر تائين محدود آهي ڪوڊ پارس ڪرڻ ۽ درستي جي جانچ ڪرڻ تائين. LLVM وچولي ڪوڊ جي پيدائش اڃا تائين سپورٽ نه ڪئي وئي آهي ۽ قابل عمل فائلون پيدا ڪرڻ لاء، ڪيننيڪل ڪوڊ ٺاهيل آهي ۽ هڪ خارجي فورٽران ڪمپلر ڏانهن منتقل ڪيو ويو آهي.

واڌايون ڪلانگ 11.0 ۾:

  • تجريدي نحو جي وڻ کي بحال ڪرڻ جي صلاحيت شامل ڪئي وئي (AST) ٽوٽل C++ ڪوڊ لاءِ، جيڪو استعمال ڪري سگھجي ٿو غلطين جي تشخيص ۾ مدد لاءِ ۽ اضافي معلومات مهيا ڪري ٿو خارجي يوٽيلٽيز جهڙوڪ ڪلانگ-ٽيڊي ۽ ڪلانگڊ. خصوصيت C++ ڪوڊ لاءِ ڊفالٽ طور فعال ڪئي وئي آهي ۽ "-Xclang -f[no-]recovery-ast" اختيارن ذريعي ڪنٽرول ڪئي وئي آهي.
  • شامل ڪيا ويا نوان تشخيصي طريقا:
    • "-Wpointer-to-int-cast" ھڪ انتباہ جو ھڪڙو گروپ آھي پوائنٽرز کي ڪاسٽ ڪرڻ جي باري ۾ ھڪڙي انٽيجر قسم جي int جيڪو سڀني ممڪن قدرن کي گڏ نٿو ڪري.
    • "-Wuninitialized-const-reference" - غير شروع ٿيل متغيرن کي فنڪشن پيرا ميٽرز ۾ پاس ڪرڻ بابت ڊيڄاريندڙ جيڪي "const" وصف سان حوالن جي دليلن کي قبول ڪن ٿا.
    • "-Wimplicit-const-int-float-conversion" - ڊفالٽ ڊيڄاريندڙ طور فعال ڪيو ويو آھي ھڪڙي حقيقي مستقل جي انٽيجر قسم ۾ غير معمولي تبديلي بابت.
  • ARM پليٽ فارم لاءِ، ڪمپلر ۾ ٺهيل سي فنڪشن مهيا ڪيا ويا آهن (اندريون)، تبديل ٿيل موثر ویکٹر هدايتون Arm v8.1-M MVE ۽ CDE. دستياب افعال جي وضاحت ڪئي وئي آهي هيڊر فائلن ۾ arm_mve.h ۽ arm_cde.h.
  • شامل ڪيو ويو وڌايل انٽيجر قسمن جو هڪ سيٽ _ExtInt(N)، توهان کي اجازت ڏئي ٿو ته اهي قسمون ٺاهي سگهن جيڪي ٻن طاقتن جا ضرب نه هجن، جن کي FPGA/HLS تي موثر طريقي سان پروسيس ڪري سگهجي ٿو. مثال طور, _ExtInt(7) هڪ انٽيجر قسم جي وضاحت ڪري ٿو جنهن ۾ 7 بٽ شامل آهن.
  • شامل ڪيل ميڪرو جيڪي ARM SVE (Scalable Vector Extension) جي هدايتن جي بنياد تي بلٽ ان C افعال لاءِ سپورٽ جي وضاحت ڪن ٿا:
    __ARM_FEATURE_SVE، __ARM_FEATURE_SVE_BF16،
    __ARM_FEATURE_SVE_MATMUL_FP32، __ARM_FEATURE_SVE_MATMUL_FP64،
    __ARM_FEATURE_SVE_MATMUL_INT8،
    __ARM_FEATURE_SVE2، __ARM_FEATURE_SVE2_AES،
    __ARM_FEATURE_SVE2_BITPERM،
    __ARM_FEATURE_SVE2_SHA3،
    __ARM_FEATURE_SVE2_SM4. مثال طور، __ARM_FEATURE_SVE ميڪرو بيان ڪيو ويو آهي جڏهن AArch64 ڪوڊ ٺاهيندي ڪمان لائن آپشن "-march=armv8-a+sve" ترتيب ڏيندي.

  • "-O" پرچم ھاڻي "-O1" جي بدران "-O2" اصلاح واري موڊ سان سڃاتل آھي.
  • شامل ڪيو ويو نئون مرتب ڪندڙ جھنڊو:
    • "-fstack-clash-protection" - جي خلاف تحفظ کي چالو ڪري ٿو اسٽيڪ ۽ هيپ جا چونڪ.
    • "-ffp-exception-behavior={ignore,maytrap,strict}" - توھان کي اجازت ڏئي ٿو استثنا ھينڊلر موڊ کي سچل پوائنٽ نمبرن لاءِ.
    • "-ffp-model={precise,strict,fast}" - سچل پوائنٽ نمبرن لاءِ خاص اختيارن جي سيريز تائين رسائي کي آسان بڻائي ٿو.
    • "-fpch-codegen" ۽ "-fpch-debuginfo" ڪوڊ ۽ ڊيبگ انفو لاءِ الڳ اعتراض فائلن سان گڏ اڳ ۾ ٺھيل ھيڊر (PCH) ٺاھيو.
    • "-fsanitize-coverage-allowlist" ۽ "-fsanitize-coverage-blocklist" ڪوريج جانچڻ لاءِ اڇي ۽ ڪاري لسٽن جي جانچ ڪرڻ لاءِ.
    • "-mtls-size={12,24,32,48}" TLS (thread-local storage) سائيز کي چونڊڻ لاءِ.
    • "-Menable-experimental-extension" تجرباتي RISC-V ايڪسٽينشن کي فعال ڪرڻ لاءِ.
  • C لاءِ ڊفالٽ موڊ "-fno-common" آهي، جيڪو ڪجهه پليٽ فارمن تي عالمي متغيرن تائين وڌيڪ موثر رسائي جي اجازت ڏئي ٿو.
  • ڊفالٽ ماڊل ڪيش کي /tmp مان ~/.cache ڊاريڪٽري ۾ منتقل ڪيو ويو آهي. اوور رائڊ ڪرڻ لاءِ، توھان استعمال ڪري سگھو ٿا ”-fmodules-cache-path=“ پرچم.
  • ڊفالٽ سي ٻولي معيار کي اپڊيٽ ڪيو ويو آهي gnu11 کان gnu17 تائين.
  • GNU C واڌ لاءِ ابتدائي سپورٽ شامل ڪئي وئي "asm ان لائن» جمع ڪندڙ داخل ڪرڻ لاءِ. واڌ اڃا تائين تجزيو ڪيو پيو وڃي، پر ڪنهن به طريقي سان عمل نه ڪيو ويو آهي.
  • OpenCL ۽ CUDA سپورٽ سان لاڳاپيل صلاحيتون وڌايو ويو آھي. OpenCL 2.0 بلاڪ جي تشخيص ۽ نئين OpenMP 5.0 خصوصيتن تي عمل درآمد لاء مدد شامل ڪئي وئي.
  • شامل ڪيو ويو IndentExternBlock آپشن کي ڪلانگ فارميٽ يوٽيلٽي لاءِ الائنمينٽ لاءِ ٻاهرين ”سي“ ۽ ٻاهرين ”سي++“ بلاڪ.
  • جامد تجزيي ڪندڙ C++ ۾ وراثت جي تعمير ڪندڙن جي سنڀال کي بهتر بڻائي ڇڏيو آهي. نوان چيڪ شامل ڪيا ويا alpha.core.C11Lock ۽ alpha.fuchsia.Lock کي چيڪ ڪرڻ لاءِ، alpha.security.cert.pos.34c جي غير محفوظ استعمال کي معلوم ڪرڻ لاءِ putenv، webkit.NoUncountedMemberChecker ۽ webkit.RefCntblBaseVirtualDtor جي غير محفوظ قسم جي مسئلن کي ڳولڻ لاءِ. .cplusplus .SmartPtr null smart pointer dereference لاءِ چيڪ ڪرڻ لاءِ.
  • لڪير ۾ ڪلنگ- صاف شامل ڪيو ويو نئين چيڪن جو هڪ وڏو حصو.
  • clangd caching server (Clang Server) ڪارڪردگي بهتر ڪئي آهي ۽ نئين تشخيصي صلاحيتون شامل ڪيون آهن.

مکيه جدت ايل ايل وي ايم 11.0:

  • بلڊ سسٽم کي پٿون 3 استعمال ڪرڻ لاءِ تبديل ڪيو ويو آھي. جيڪڏھن پٿون 3 دستياب نه آھي، اھو ممڪن آھي پٿون 2 استعمال ڪرڻ لاءِ واپس موٽڻ.
  • گو ٻولي (llgo) لاءِ ڪمپيلر سان گڏ اڳيون پڇاڙي ڇڏڻ کان خارج ٿيل آهي، جيڪا مستقبل ۾ ٻيهر ترتيب ڏئي سگهجي ٿي.
  • vector-function-abi-variant انتساب وچولي نمائندگي (IR) ۾ شامل ڪيو ويو آھي اسڪيلر ۽ ویکٹر افعال جي وچ ۾ نقشي کي بيان ڪرڻ لاءِ ڪالن کي ویکٹرائيز ڪرڻ لاءِ. llvm::VectorType کان ٻه الڳ ویکٹر قسم آهن llvm::FixedVectorType ۽ llvm::ScalableVectorType.
  • udef قدرن جي بنياد تي برانچنگ ۽ معياري لائبريري جي ڪمن ۾ undef قدرن کي منتقل ڪرڻ کي اڻ ڄاڻايل رويي طور سڃاتو وڃي ٿو. IN
    memset/memcpy/memmove undef پوائنٽر کي پاس ڪرڻ جي اجازت ڏئي ٿو، پر جيڪڏھن سائيز سان پيٽرولر صفر آھي.

  • LLJIT LLJIT::initialize ۽ LLJIT::deinitialize طريقن جي ذريعي جامد شروعاتن کي انجام ڏيڻ لاءِ مدد شامل ڪئي آھي. StaticLibraryDefinitionGenerator ڪلاس استعمال ڪندي JITDylib ۾ جامد لائبريريون شامل ڪرڻ جي صلاحيت لاڳو ڪئي وئي آھي. شامل ڪيو ويو C API لاءِ ORCv2 (API JIT compilers تعمير ڪرڻ لاء).
  • Cortex-A64، Cortex-A34، Cortex-A77 ۽ Cortex-X78 پروسيسرز لاءِ سپورٽ AArch1 آرڪيٽيڪچر لاءِ پس منظر ۾ شامل ڪئي وئي آھي. لاڳو ٿيل ARMv8.2-BF16 (BFloat16) ۽ ARMv8.6-A ايڪسٽينشن، بشمول RMv8.6-ECV (Enhanced Counter Virtualization)، ARMv8.6-FGT (فائن گرينڊ ٽريپس)، ARMv8.6-AMU (سرگرمي مانيٽرز ورچوئلائيزيشن) ۽ ARMv8.0-DGH (ڊيٽا گڏ ڪرڻ جو اشارو). SVE ویکٹر جي هدايتن تي بلٽ-ان افعال-بائنڊنگز لاءِ ڪوڊ پيدا ڪرڻ جي صلاحيت مهيا ڪئي وئي آهي.
  • Cortex-M55، Cortex-A77، Cortex-A78 ۽ Cortex-X1 پروسيسرز لاءِ سپورٽ ARM آرڪيٽيڪچر لاءِ پس منظر ۾ شامل ڪئي وئي آھي. توسيع لاڳو ڪئي وئي
    Armv8.6-A ميٽرڪس ضرب ۽ RMv8.2-AA32BF16 BFloat16.

  • POWER10 پروسيسرز لاءِ ڪوڊ جنريشن لاءِ سپورٽ پاور پي سي آرڪيٽيڪچر جي پس منظر ۾ شامل ڪئي وئي آھي. لوپ جي اصلاح کي وڌايو ويو آھي ۽ سچل پوائنٽ جي مدد کي بھتر ڪيو ويو آھي.
  • RISC-V آرڪيٽيڪچر لاءِ پسمنظر پيچ جي قبوليت جي اجازت ڏئي ٿو جيڪي تجرباتي توسيع ٿيل هدايتون سيٽن کي سپورٽ ڪن ٿيون جيڪي اڃا تائين سرڪاري طور تي منظور نه ڪيا ويا آهن.
  • AVR فن تعمير جي پس منظر کي تجرباتي درجي مان منتقل ڪيو ويو آهي مستحڪم، بنيادي تقسيم ۾ شامل.
  • x86 آرڪيٽيڪچر لاءِ پس منظر Intel AMX ۽ TSXLDTRK هدايتن کي سپورٽ ڪري ٿو. حملن جي خلاف تحفظ شامل ڪيو ويو ايل وي آءِ (لوڊ ويليو انجيڪشن)، ۽ سي پي يو تي عملن جي قياس آرائي واري عمل جي ڪري حملن کي روڪڻ لاءِ هڪ عام قياس آرائي واري عمل جي ضمني اثر کي دٻائڻ واري ميڪانيزم کي پڻ لاڳو ڪري ٿو.
  • SystemZ فن تعمير جي پس منظر ۾، MemorySanitizer ۽ LeakSanitizer لاءِ سپورٽ شامل ڪئي وئي آھي.
  • Libc++ ۾ رياضياتي مستقل سان هيڊر فائل لاءِ سپورٽ شامل ڪئي وئي .
  • وڌايو ويو ايل ايل ڊي لنڪر صلاحيتون. ELF فارميٽ لاءِ بهتر سپورٽ، شامل ڪيل اختيارن سميت "--lto-emit-asm"، "--lto-سڄي-پروگرام-visibility"، "-print-archive-stats"، "-shuffle-sections"، " -thinlto- واحد-ماڊل، "-منفرد"، "-rosegment"، "-threads=N". شامل ڪيو ويو "--time-trace" آپشن کي فائل ۾ محفوظ ڪرڻ لاء، جيڪو پوء تجزيو ڪري سگهجي ٿو chrome://tracing انٽرفيس ذريعي Chrome ۾.

جو ذريعو: opennet.ru

تبصرو شامل ڪريو