Dimittis de LLVM 9.0 compilator suite

Post sex menses evolutionis presented project emissio LLVM 9.0 - GCC instrumenta compatibles (compilatores, optimizers et codicem generantium), componendo programmata in bitcode intermedia de RISC-similis instructionum virtualium (machina virtualis low-gradu cum multi-gradu optimizationis systematis). Pseudocode generatum converti potest utens compilator JIT in instructiones machinae directe tempore programma executionis.

Nova lineamenta LLVM 9.0 includunt remotionem consilii experimentalis tag a scopo RISC-V suggestu, C++ subsidium OpenCL, facultas scindendi rationem in partibus dynamice oneratis in LLD, et exsecutionem "hibitisque gata", usus est in codice kernel Linux. libc ++ subsidium WASI (WebAssembly System Interface additum), et LLD additamentum initiale pro WebAssembly dynamicam conjunctionem.

Aliquam in Clang 9.0:

  • adiecit exsecutio expressionis GCC-specialis "hibitisque gata", quod permittit te movere a globo inlinei ad pittacium in C codice. Hoc pluma requiritur ut Linux nucleum in "CONFIG_JUMP_LABEL=y" construat modus utendi Clang in systematis architecturae x86_64. Inspecta mutationibus additae in prioribus emissionibus, Linux nucleus nunc aedificari potest in Clang ad architecturae x86_64 (antea solum bracchium, aarch64, ppc32, ppc64, ppcXNUMXle et mips architecturae fultum est). Praeterea consilia Android et ChromeOS iam conversae sunt uti Clang ad nucleos aedificationis, et Google Clang probat sicut principale suggestum ad nucleos aedificandi ad systemata Linux productionis. In futuro, alia LLVM composita in nucleo processus construendi adhiberi possunt, inter LLD, llvm-objcopy, llvm-ar, llvm-um, et llvm-objdump;
  • Addidit auxilium experimentum pro utendo C++ 17 in OpenCL. Notae speciales includunt subsidium pro spatii attributis inscriptionis, interclusio inscriptionis spatium conversionis per speciem operantium emittentem, provisionem specierum vectoris sicut in OpenCL pro C, praesentia specierum specierum OpenCL pro imaginibus, eventis, canalibus, etc.
  • Addidit novus compilator vexilla "-ftimum-trac" et "-time-trac-granularitatis=N" ad generandum relationem in executione temporis variorum graduum anterioris (parsing, initializationis) et regressionis (scaenarum optimarum). Renuntiatio servata est in forma json, compatibilis cum chrome://tractivo et speedscope.app;
  • Addidit processus "__declspec(allocator)" speciem et generationem comitandi debugging informationes quae te permittit ut monitor memoriam consumptionis in Visual Studio environment;
  • Pro lingua C, subsidium pro "__FILE_NAME__" tortor additum est, quod tortor "__FILE__" simile est, sed solum nomen tabella sine plena via includit;
  • C++ subsidia pro spatii inscriptionis dilatavit attributa ut varias C++ lineamenta, inclusa modulo ac argumento exemplaria, rationes referentias, genus reditus consequentiae, obiecta, functiones auto-generatas, in operariorum fabricatas, et plura.
  • Facultates subsidiariae coniunctae pro OpenCL, OpenMP et CUDA dilatatae sunt. Hoc includit initialem subsidium ob inclusionem implicitam functionum aedificatarum in OpenCL (vexillum "-fdeclare-opencl-builtins" additum est), extensio cl_arm_integer_dot_producti effecta est, et instrumenta diagnostica dilatata sunt;
  • Opus analysris statice emendatum est et documentum de analysi static faciendo additum est. Vexilla addita ad ostentationem praesto checker modulorum et optionum sustentatorum ("-analyzer-checker [-option] -help", "analyzer-checker" et "-analyzer-checker] -help "-developer"). Addidit "-analyzer-werror" vexillum ad admonitiones tamquam errores tractandas.
    Novam verificationem modos addidit:

    • security.insecureAPI.DeprecatedOrUnsafeBufferHandling notare tutum exercitia ad operandum cum buffers;
    • osx.MIGChecker ad quaerendas violationes MIG (Mach Interface Generator) regulas vocant;
    • optin.osx.OSObjectCStyleCast invenire conversiones objectas falsas XNU libkern;
    • apiModeling.llvm cum paro of exemplaribus iniecta functionibus ad deprehendendos errores in LLVM codebase;
    • Confirmavit codicem ad reprimendum uninitialized C++ objects (UninitializedObject in the optin.cplusplus sarcina);
  • Utilitas clangoris formativa subsidia in codice formatting in lingua C# addidit et subsidia praebet styli formandi a Microsoft adhibito;
  • clang-cl, jocus interfaciei mandati lineae quae congruentiam cum cl.exe compilator in Studio Visuali inclusa praebet, heuristicos adiecit ut tabulas non exsistentes cum optionum mandatorum praeceptis tractandis et monitionem debitam ostendat (exempli gratia; cum currit "clang-cl /diagnostic :caret /c test.cc");
  • Magna portio novorum compescuum ad linteolum clang-tidy adiectum est, inter quas adiectas formas specificas ad OpenMP API adiecit;
  • Expanded server facultatem clangd (Clang Server), in quo index structurae curriculi modus per defaltam possit, subsidium actionum contextualium cum codice addita est (variabilis retrieval, expansio definitionum auto- rarum, conversio chordarum fugitivorum ad inexcussos), facultas ostentandi monita de Clang-tidy, diagnostica errorum in titulis capitalibus divulgavit et facultatem addidit ad informationes de hierarchia typo proponendas;

Main innovations LLVM 9.0;

  • Partitionum experimentalis pluma LLD ligatoris addita est, quae sinit te unum propositum in plures partes dividere, quarum unaquaeque in file separato ELF sita est. Hoc pluma permittit ut principalem partem programmatis immittat, quae aliis componentibus quae in operatione opus sunt onerabunt (exempli gratia, speculatorem constructum-PDF in fasciculum separatum separare potes, quod tantum oneret cum usor PDF aperit. fasciculus).

    LLD Linker ad praeelegit eam statui aptae ad ligandum nucleum Linux pro arm32_7, arm64, ppc64le et x86_64 architecturae.
    Nova optiones "-" (output to stdout), "-[no-]permitte-shlib-indefinitum", "undefined-globum", "-nmagic", "-omagic", "-dependent-library", "- z ifunc-noplt" et "-z communi-pagina-size". Ad architecturae AArch64, subsidium BTI (Targetum Testis Branch) et PAC (Codice authenticitatis Indicis) additae sunt instructiones. Firmamentum MIPS, RISC-V et PowerPC suggesta signanter emendavit. Addidit initialem subsidium dynamicae conjunctionis pro WebAssembly;

  • In libc ++ implemented functiones ssize, std ::is_constant_evaluated, std :: punctum et std ::lerp, modi "frontem" et "tergum" additae sunt std ::is_unbounded_array et std :: is_bounded_array generum attributa addita sunt , std dilatatae sunt facultates: :atomica. Firmamentum GCC 4.9 discontinuatum est (potest adhiberi cum GCC 5.1 et recentiore emissione). additae firmamentum Wasi (WebAssembly System Interface, interfaciendi ratio utendi WebAssembly extra navigatrum);
  • Novae optimizationes additae sunt. Conversio memcmp vocat ad bcmp in nonnullis rebus. Imminuta omissio extensionis recognitionis pro tabulis salientibus in quibus caudices switch inferiores sunt impossibiles vel cum instructiones non sunt adhibitae, exempli gratia, quando functiones vocant cum specie vacui;
  • Tergum ad architecturae RISC-V stabilitum est, quae iam in experimentis posita est et per defaltam aedificatur. Plenum codicem generationis subsidium praebet pro instructione RV32I et RV64I variantes cum extensionibus MAFDC;
  • Multae emendationes in tergum factae sunt pro X86, AArch64, ARM, SystemZ, MIPS, AMDGPU et PowerPC architecturae. For example, for architecture
    AArch64 subsidium addidit SVE2 (Scalable Vector Tractus 2) et MTE (Memoria Tractus Tagging) instructiones, in ARM backend, subsidium Armv8.1-M architecturae et MVE (M-Profile Vector Tractus) extensio addita est. Firmamentum GFX10 (Navi) architecturae AMDGPU backend additae est, munus vocationis facultates per defaltam capacia sunt, et transitum coniunctum reducitur. DPP (Data-Parallel Primitiva).

  • LLDB debugger nunc colorem inducens pro retrogradis et subsidiis additis pro debug_types DWARF4 et DWARF5 debug_info cuneos habet;
  • Support pro objecto et exsecutabilium in COFF forma, ad llvm-objcopy et llvm-stipe utilitates additum est.

Source: opennet.ru