aboutsummaryrefslogtreecommitdiff
path: root/lib/base-compiler.ts
Commit message (Collapse)AuthorAge
* Fix exception in case of empty IR (#6450)gh-11668Ofek2024-05-07
| | | | This fixes #6449 - I carelessly ignored the case of empty IR output. Repro link for verification: https://godbolt.org/z/4d46dahqq
* Fix #6437: Don't try and generate cfg for incomplete (truncated) IR (#6444)gh-11649Ofek2024-05-06
|
* revert #6297 - fixes #6376gh-11463partouf2024-04-22
|
* Dynamic instruction set for documentation (#6173)gh-11461Patrick Quist2024-04-22
|
* eslint root setting and fixes (#6307)gh-11409Patrick Quist2024-04-16
|
* Add simple filters for llvm optimiziation-remarks (#6354)gh-11322Ofek2024-04-15
| | | ![optremfilters](https://github.com/compiler-explorer/compiler-explorer/assets/73080/1116998b-de9e-400c-a045-412fd59eb8e3)
* [julia] Add LLVM IrView (#6285)gh-11202Mosè Giordano2024-04-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Julia is based on LLVM like other toolchains supported by Compiler Explorer, and it can emit LLVM IR, but at the moment we only expose it via the flag `--format=llvm` to the compiler wrapper. With this PR we add a proper LLVM IR viewer, like the other LLVM-based toolchains. We add a new option for the wrapper to emit the entire LLVM module, which has the benefit of being parsable by Compiler Explorer, so that we can automatically filter out debug information and metadata annotations. Preview (from https://github.com/compiler-explorer/compiler-explorer/issues/4597#issuecomment-2018956112): ![image](https://github.com/compiler-explorer/compiler-explorer/assets/765740/7c2f80b4-9c92-4761-9f6e-393d0ad26935) We removed the custom `<[source code line] [number of output lines] [function name] [method types]>` line in the output of the `code_*` functions, together with the custom ASM parsing, because they invalidate the output (it isn't valid ASM nor LLVM), and create more problems than they solve. This PR was prepared in collaboration with @vchuravy. This should eventually address #4597, once inlined LLVM functions are handled by the IR parser in Compiler Explorer, I think @vchuravy can comment more on that issue. --------- Co-authored-by: Valentin Churavy <v.churavy@gmail.com>
* Optionally show disambiguating hashes in demangled Rust identifiers (#6265)gh-11201narpfel2024-04-01
| | | | | | | | | | | | | | | | | | | | | | Demangled Rust identifiers under the `legacy` name mangling scheme rely on a hash to disambiguate items with the same name, such as different monomorphisations of the same function or different closures’ `call_once` methods. In the `v0` mangling scheme, this is no longer a problem. However, configuring the demangler to show hashes in `legacy` names will include crate-id hashes in `v0` names, which are [mostly unneeded](https://rust-lang.github.io/rfcs/2603-rust-symbol-name-mangling-v0.html#appendix-a---suggested-demangling). This PR introduces a new checkbox *Options...* → *Verbose demangling* that lets the user select if they want to include disambiguating hashes in demangled identifiers. This checkbox is only shown for compilers that support verbose demangling, and deactivated when the *Demangle identifiers* checkbox is unchecked. Resolves #1754. Resolves #6255.
* fix filtergh-11118partouf2024-03-29
|
* Filter linker switches to avoid bogus warnings (#6297)gh-11108Ofek2024-03-28
| | | Fixes #6271
* Replace the deprecated `substr` with `substring` (#6236)gh-10941Ofek2024-03-10
| | | Just some minor homekeeping.
* fix llvm-cov (#6211)gh-10827Patrick Quist2024-03-02
|
* Change getCompilerResultLanguageId prototype (#6148)gh-10765Marc Poulhiès2024-02-24
|
* Clang time trace support in execution pane (#6139)gh-10642Patrick Quist2024-02-14
|
* fixgh-10557partouf2024-02-10
|
* fix inputfilename to be correct for postprocess and move cleanup to the endgh-10556partouf2024-02-10
|
* Add Fortran library support (#5533)gh-10554Patrick Quist2024-02-09
|
* Unify the way tmp dir is used (#6052)gh-10336Matt Godbolt2024-01-28
| | | | | | | Instead of having several globals, set via environment variables, explicitly set the "correct" env var if passed `--tmpDir` and then consistently use it in the rest of the program. See @apmorton's comments in #1707
* Improve typings for the now-global HandlerConfig (#6027)gh-10273Jeremy Rifkin2024-01-21
| | | This PR populates types in the HandlerConfig
* Fix issue with llvm language detection for cfg generation, fixes #6014gh-10232Jeremy2024-01-16
|
* Fix #5630: filter out `--emit mir=..` in RustCompiler.buildExecutable (#5991)gh-10155Ofek2024-01-13
| | | With a small added ts'ification in base-compiler.
* Since ES6 there's no reason to use `underscore`s map and filter (#5989)gh-10149Ofek2024-01-13
| | | | | | | | | | | | Mindless replacements of the form `_.filter(options, option =>...` --> `options.filter(option =>...`. One not *entirely* mindless replacement at the bottom of compiler-dropin-tool.ts : ``` - return _.filter(pathFilteredFlags) as string[]; + return pathFilteredFlags.filter(Boolean) as string[]; ``` 6 files can now stop importing underscore.
* Fix #5411: generate opt-pipeline for failed comilations too (#5938)gh-10059Ofek2024-01-05
|
* Limit exec streams to max string length (#5898)gh-10000J. Ryan Stinnett2023-12-23
| | | | | | | | Some operations set `exec`'s `maxOutput` to a value larger than the max string length. This change ensures we always cap output to the engine's string limit (currently 512 MB in recent Node versions). This also tweaks handling when reaching the string limit to ensure adding the "truncated" message itself does not send us beyond the limit.
* Fix #5854: just filter out `-E` when generating IR (#5885)gh-9955Ofek2023-12-16
|
* Add Racket optimisation pipeline (#5836)gh-9905J. Ryan Stinnett2023-12-11
| | | | | | | | | | | | | | | | | | | | | This adds a Racket optimisation pipeline view by reusing the existing LLVM-focused optimisation pipeline UI. A Racket-specific pass parser translates its output into passes for the UI to present. This new Racket optimisation pipeline view is currently only enabled for Racket nightly, as it depends on [recent changes](https://github.com/racket/racket/pull/4842) to Racket's compiler output to function. This also extends the opt pipeline view to allow customising the function selector label as well as the options and filters for each compiler where needed. ![image](https://github.com/compiler-explorer/compiler-explorer/assets/279572/f540b41e-fd55-4375-bb2d-a0bb977530b3) --------- Co-authored-by: Matt Godbolt <matt@godbolt.org>
* Rename opt pipeline without LLVM prefix (#5828)gh-9794J. Ryan Stinnett2023-12-03
| | | | | | | | | | | This prepares for future work that will reuse the opt pipeline view outside of the LLVM ecosystem by renaming related components to remove the LLVM prefix. The pass dumper keep its LLVM prefix, as it is assumed this part is likely to be customised for each compiler ecosystem. The historical component name has been preserved in the component list as an alias to keep old links working.
* Add gimple front-end syntax option for gcc tree/rtl viewer (#5816)gh-9740Jeremy Rifkin2023-11-29
| | | | | | | This PR adds an option to the gcc tree/rtl dump viewer to dump syntax that the gimple frontend can accept ![image](https://github.com/compiler-explorer/compiler-explorer/assets/51220084/4a5ff503-9420-4fc3-ba6f-6b1dc196e938)
* Changes to support CMake for Windows (#5769)gh-9647Patrick Quist2023-11-22
|
* Fix #5762, along with another cmake warning (#5766)gh-9590Ofek2023-11-18
|
* Fix #4654 (#5749)gh-9567Ofek2023-11-13
| | | | | | | Apparently AST for ldc is an abuse of terminology, as it doesn't produces anything resembling a syntax tree: https://github.com/dlang/dmd/pull/6556#issuecomment-282353400 . It is potentially meaningful only to ldc developers. Anyway the `generateAST` result type is fixed, along with some other small stuff around.
* Execution with heaptrack (#5644)gh-9459Patrick Quist2023-11-07
|
* Fix #5255 (#5700)gh-9387Ofek2023-11-04
|
* store exec+sandbox types (#5696)gh-9351Patrick Quist2023-11-01
| | | prep for #5533 and #5644
* Capture more information in sentry, per @jeremy-rifkin suggestion (#5693)gh-9346Matt Godbolt2023-10-31
|
* Handle errors in the LLVM transform (#5690)gh-9309Matt Godbolt2023-10-30
| | | | | | Previously an error in e.g. YAML parsing would take down the whole process. Part of #5686 but doesn't fix the underlying issue.
* more typesgh-9223partouf2023-10-24
|
* add typesgh-9218partouf2023-10-24
|
* fix typesgh-9217partouf2023-10-24
|
* Fix testgh-9141Matt Godbolt2023-10-19
|
* Thank you @partouf...I spend too much time doing python these days...Matt Godbolt2023-10-19
|
* Hylo fixes; specify PATH, and fix name (#5625)gh-9137Matt Godbolt2023-10-18
| | | | | - Add a general extraPaths for compilers and use it to let Hylo find clang++ Co-authored-by: Nick DeMarco <nickpdemarco@gmail.com>
* make rpath flag easier overridable in compiler classgh-8823partouf2023-09-24
|
* include languageid in resultgh-8679partouf2023-09-04
|
* Support abandoned queued compilations (#5278)gh-8398Matt Godbolt2023-08-07
| | | | | | | | | | | | | | | | | After some time we know either the client or CloudFront will give up on pending compilations. As such, if we continue to process compilations after the client's timed out we're just clogging up the compilation queue with pointless work. As such, this change now supports the notion of "stale" work which will be abandoned once it's made it to the front of the queue. Only compiles coming from the user will be abandoned, so discovery and health checks are unaffected. Hopefully this will mitigate the number of nodes marked unhealthy due to being overloaded: work they were doing was "pointless" anyway, and them being killed by going unhealthy is equivalent to abandoning all the work in flight anyway, but this means there's a fighting chance the node will recover quickly enough to return a "healthy" status.
* Fix execution with library selection in different languages (#5325)gh-8374Patrick Quist2023-08-07
| | | | | | Should fix issues when libraries are selected in other languages than c/c++/circle/rust Example that gave an error https://godbolt.org/z/hTe6EoGez
* Common utilities and type work (#5200)gh-8021Jeremy Rifkin2023-06-28
| | | | | This PR refactors some common utilities out of lib/ and into shared/ and eliminates some use of underscore.js, as well as general type improvements done along the way.
* Improve the type of ExecutionOptions.env (#5206)gh-8009Jeremy Rifkin2023-06-28
|
* Support control flow graphs for more compilers (#5209)gh-8008Jeremy Rifkin2023-06-28
| | | | | This PR should make cfg generation available for all clang compilers, icc, and any compiler whose instructionSet property is x86, arm, or llvm.
* Add the movfuscator (#5193)gh-7994Jeremy Rifkin2023-06-26
| | | | | | Resolves #985 Builder: https://github.com/compiler-explorer/misc-builder/pull/65 Infra: https://github.com/compiler-explorer/infra/pull/1041