| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
<!-- 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>
|
|
|
| |
Just some minor homekeeping.
|
|
|
|
| |
Port to vitest. Port everything to typescript. Remove chai, mocha and
chai-as-promised. Adds some docs.
|
|
|
|
|
|
|
| |
This adds support for filtering tail calls to `llvm.dbg.*` intrinsics
using the regex-based filter mechanism.
Previously, normal calls were filtered out, but tail calls are not
caught by the regex so they remained in the output.
Example with the previous state: https://play.spicelang.com/z/MGGn98
|
|
|
| |
Filter `OpMemberName` as directive, to be consistent with `OpName`.
|
|
|
|
|
|
|
| |
Adds Dex2OatCompiler, which applies to the Android Java and Android
Kotlin languages. Dex2OatCompiler runs on .dex files output by
D8Compiler, which in turn runs on .class files output by JavaCompiler or
KotlinCompiler. A parser has been added for dex2oat optimization passes.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch makes a small change in how functions are handled while
parsing LLVM opt pipeline output. Specifically, it differentiates
between IR function and machine function, and while checking for the
close of function, it only checks if the corresponding function is open.
This was needed because in some targets like hexagon, the machine
functions could contain `BUNDLE`s as part of the dump and `BUNDLE`s are
also represented with opening and closing braces ({}). This was causing
assertion because the close brace for a BUNDLE was considered to be a IR
function close statement.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.

---------
Co-authored-by: Matt Godbolt <matt@godbolt.org>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
same input
|
|
|
|
| |
with relatively short inputs and could be used to freeze a node for extended periods of time
|
| |
|
|
|
| |
also run the lint and format nonsense
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds more data definition directives to be recognized by
`AsmParser` in lib/parsers/asm-parser.ts.
Fixes #5489, as well as inappropriate filtering of `.double` directives
in test/filter-cases/diab.asm which is similar to #5489.
The list of data directives are taken from the "Assembler Directives"
chapter of the [GNU `as` manual][as]. Directives added by this patch
are:
- `.dc[size]`
- `.dcb[size]`
- `.ds[size]`
- `.double`
- `.fill`
- `.float`
- `.int`
- `.single`
- `.skip`
- `.space`
- `.string8`, `.string16`, `.string32`, `.string64`
The `.space` directive is not a data directive when assembling for the
HPPA architecture; this must be fixed if HPPA support is to be added to
Compiler Explorer.
Some of the directives such as `.string64` are pretty unlikely to be
emitted by actual compilers, but we add them because it can't break
existing input (no `as`-compatible compiler can use them as non-data
directives), and will futureproof us against future compilers that do
emit them.
Architecture-specific directives documented in the "Machine Dependent
Features" chapter are not added in this patch, even though it may be
better to add some of them (such as `.stringz`) as well. Existing
directives that are not found on the "Assembler Directives" list are not
removed.
`.sleb128` and `.uleb128` are technically data directives, but aren't
added because we assume they're only used in debuginfo.
[as]: https://sourceware.org/binutils/docs-2.41/as/index.html
<!-- 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!
-->
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
It turns out we still need crossgen2 for net6.0.
So bring crossgen2 back for net6.0 only.
Also fix some bugs around `indexOf`.
No image rebuilding is required.
|
|
|
|
|
|
|
|
|
|
| |
Depends on https://github.com/compiler-explorer/dotnet-builder/pull/4
- Use corerun instead of crossgen2 to do disassemble
- This can skip emitting actual executable by crossgen2 and speed up the
compilation
- Filter disasm to only show disasm for user code
We need to rebuild images for old compilers.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
**Related to:** compiler-explorer/infra#1061
**Goal:-**
To enable back-end support for hexagon clang compiler so that it can be
used on the Compiler Explorer's website
([https://godbolt.org/.](https://godbolt.org/)) This will be
particularly useful to people working on Hexagon Digital Signal
Processor (DSP) developed by Qualcomm Technologies.
**Information about Hexagon DSP:-**
[https://developer.qualcomm.com/software/hexagon-dsp-sdk/dsp-processor](https://developer.qualcomm.com/software/hexagon-dsp-sdk/dsp-processor)
Co-authored-by: Ryan Sam Varghese <rvarghes@qti.qualcomm.com>
|
| |
|
| |
|
| |
|
|
|
|
|
| |
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.
|
| |
|
|
|
| |
This adds the ability to use TI's C2000 compiler with basic directive filtering and assembly code parsing.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Makes the Compiler Explorer app, and all the tooling ESM compatible.
Things that have been done:
1. The package.json has `type: module` now
2. All relative imports have a .js ending
3. All directory imports are now directory/index.js to comply with ESM
standards
4. Dependency node-graceful is now imported into tree, because the
package is broken under esm
5. Dependency p-queue has been bumped to 7.x with ESM support
6. Dependency profanities has been bumped to 3.x with ESM support
7. Webpack config is now both ESM and CommonJS compatible
8. Non-ESM compatible imports have been rewritten
9. ESLint configuration has been tweaked to not fail on .js imports
10. Mocha is now hacked together and ran with ts-node-esm
11. Webpack is now hacked together and ran with ts-node-esm
12. Webpack config is now ESM compatible, so that it can be used in the
dev server
13. Cypress code still runs commonjs, and has been excluded from the
tsconfig
14. All sinon mock tests have been commented out, because sinon module
mocks do not work with ESModules (because ESModules are immutable)
A lot of tests are now giving warnings/errors to stdout, yet still pass.
Docenizer codegenerator scripts have been updated, but I did not re-run
them, and instead just changed their code.
---------
Co-authored-by: Matt Godbolt <matt@godbolt.org>
|
|
|
|
| |
Resolves #4781. Remove the assertion, just allow the bad behavior
silently. Same behavior as before the tsification.
|
|
|
|
|
| |
Make trailing commas more consistent throughout the project, fixes
config conflict between eslint and prettier. Resolves an oversight in
#4766.
|
|
|
| |
Resolves #4195
|
|
|
|
|
|
| |
This PR turns comma-dangle and indent eslint rules on for lib/. These
are rules inherited from the eslint config for static/, this PR just
makes things more consistent. Also turned
@typescript-eslint/no-var-requires back on while I was here.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
<!-- 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!
-->
|
|
|
|
|
| |
This is _very_ similar to ewavr but I chose not to update that. @partouf
points that's proprietary so probably best left alone too.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|