| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
|
|
|
| |
(1) Restore explicit specification of
`group.*.demangler=/opt/compiler-explorer/clang-trunk/bin/llvm-cxxfilt`
for all clang compiler groups, except bpf and windows.
(2) Make the ClangCompiler` constructor adjust the path of
`llvm-cxxfilt`, so that a compiler-local version is preferred, if one
exists.
(3) Pass-by update: bump the version of llvmDisassembler from clang-14
to clang-18.1.
Hopefully this addresses all demangling issues known so far.
|
| |
|
|
|
|
| |
This fixes #6449 - I carelessly ignored the case of empty IR output.
Repro link for verification: https://godbolt.org/z/4d46dahqq
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Fixes #6416. Additionally escapes a dot in another copy of an
`@llvm.dbg` check.
Didn't find any existing tests for IR filtering to update where this
filter applies, but did make sure locally that it does start hiding the
instructions for clang-17 and clang-18.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
dex2oat supports profile-guided compilation. In addition to taking dex
code as an input, it can take a profile as another input, to guide the
compilation. The profile determines which methods need to be compiled,
how calls can be inlined, and so on.
Because Compiler Explorer doesn't support multiple input files, the
profile is added as a comment block in the Java/Kotlin source code. A
post-processor extracts the profile from the comment block into a
separate file, in order to input it to dex2oat.
|
| |
|
|
|
|
|
|
|
|
|
| |
on java <11 (#6397)
This fixes #6388.
---------
Co-authored-by: Rubén Rincón Blanco <git@rinconblanco.es>
|
|
|
| |

|
|
|
| |
Replaces #6310
|
|
|
|
|
| |
- enhanced-ms and fix
- css-loader
- vitest
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
| |

|
|
|
|
|
|
|
|
|
|
|
|
| |
The current Rust formatter on site doesn't support modern rust syntax
like async/await. This is because the formatter in production runs using
Rust 2015. Forcing edition=2018 allows more modern rust code to be
formatted properly.
Rustfmt is also shipped directly as a Rust component now, so we don't
have to install it separately.
For what it's worth, attempting to "Ctrl Shift I" format the code in
this shortlink demonstrates the problem https://godbolt.org/z/aP4669KEW
|
|
|
|
|
|
|
|
|
|
| |
This PR fixes missed demangle cases pointed out in #6348, namely of the
form `mov eax, OFFSET FLAT:_Z...` and `jmp qword ptr [rip + _Z...]`.
Closes #6348.
---------
Co-authored-by: Patrick Quist <partouf@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Updates dex2oat to specify a valid boot image for accurate compilations.
For example, these two methods should now (correctly) compile to the
same native code:
```
static int insertAndReturn(int num) {
int[] arr = {num};
return arr[0];
}
static int justReturn(int num) {
return num;
}
```
|
|
|
|
|
| |
Adds '--copy-dex-files=always', as it is needed in newer versions of
dex2oat. This doesn't affect older versions.
|
|
|
|
|
| |
updates intermediate compiler exe input to refer to the compiler's
getInfo().exe so that paths don't need to be hardcoded in properties.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
<!-- THIS COMMENT IS INVISIBLE IN THE FINAL PR, BUT FEEL FREE TO REMOVE
IT
Thanks for taking the time to improve CE. We really appreciate it.
Before opening the PR, please make sure that the tests & linter pass
their checks,
by running `make check`.
In the best case scenario, you are also adding tests to back up your
changes,
but don't sweat it if you don't. We can discuss them at a later date.
Feel free to append your name to the CONTRIBUTORS.md file
Thanks again, we really appreciate this!
-->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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):

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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
| |
Fixes #6271
|
|
|
|
| |
(#6277)
|
| |
|
|
|
| |
Fixes #5735
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
<!-- THIS COMMENT IS INVISIBLE IN THE FINAL PR, BUT FEEL FREE TO REMOVE
IT
Thanks for taking the time to improve CE. We really appreciate it.
Before opening the PR, please make sure that the tests & linter pass
their checks,
by running `make check`.
In the best case scenario, you are also adding tests to back up your
changes,
but don't sweat it if you don't. We can discuss them at a later date.
Feel free to append your name to the CONTRIBUTORS.md file
Thanks again, we really appreciate this!
-->
Signed-off-by: standstaff <zhengxingru@yeah.net>
|
|
|
|
|
| |
Specifically bpf uses group.bpf.demangler (gcc demangler)
This fix continues #6114.
|
|
|
|
|
|
| |
Reverts compiler-explorer/compiler-explorer#6237.
This PR broke the recommended `make run` workflow. When using `make
run`, the dist folder does not contain the needed resources.
|
|
|
|
|
|
|
|
|
| |
I feel this is the least surprising behaviour most of the time. This
will help when packaging and distributing the application.
It may also make sense to base this at rootDir, but examples/ sits
outside etc/ at the moment and I didn't want to disturb that too much.
Thanks!
|
|
|
| |
Just some minor homekeeping.
|
|
|
|
| |
Port to vitest. Port everything to typescript. Remove chai, mocha and
chai-as-promised. Adds some docs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Long numbers are sometimes hard to read in the numeric tooltip. To
improve readability, this PR adds language-specific digit separators to
the numeric tooltip.
Decimal numbers are grouped into chunks of three digits while
hexadecimal numbers are grouped into chunks of length four.
The digit separator is language-specific and chosen so that the number
is a valid token in the source language.
[Examples](https://godbolt.org/z/s86cMbjeK):
* for C++, hovering the number `8583909746840200552` shows this tooltip:
`8'583'909'746'840'200'552 = 0x7720'2C6F'6C6C'6568 =
6.5188685003648344e+265`
* for Python, hovering the number `-12345678` shows this tooltip:
`-123_456_789 = 0xFFFF_FFFF_F8A4_32EB = -2.66427945e+34f`
For languages that don’t have a `digitSeparator` set, the tooltip is not
changed.
|
| |
|
| |
|